From 0ec91048f65789b6deb9c5496b17276f4515a702 Mon Sep 17 00:00:00 2001 From: a-bochilo <103776395+a-bochilo@users.noreply.github.com> Date: Tue, 9 Jul 2024 14:22:49 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20master=20from=20@=20CodeCavePr?= =?UTF-8?q?o/codecave.pro-new@f2a358aa6db2f5b23d8d7ef35c9199b8dfe0143c=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 355-8ec9d1cf4562de9fd523.js | 26 +++++++++++++++++++ 355-8ec9d1cf4562de9fd523.js.LICENSE.txt | 17 ++++++++++++ 355-8ec9d1cf4562de9fd523.js.map | 1 + 404.html | 10 +++---- 404/index.html | 10 +++---- _gatsby/slices/_gatsby-scripts-1.html | 4 +-- ...816cc020.js => app-7990c3f1d980ee5d9dc0.js | 6 ++--- ...=> app-7990c3f1d980ee5d9dc0.js.LICENSE.txt | 0 ....js.map => app-7990c3f1d980ee5d9dc0.js.map | 2 +- .../index.html | 10 +++---- .../index.html | 10 +++---- .../index.html | 10 +++---- .../index.html | 10 +++---- .../index.html | 10 +++---- .../index.html | 10 +++---- blog/articlename/index.html | 8 +++--- blog/articlename/page/1/index.html | 8 +++--- blog/articlename/page/2/index.html | 8 +++--- blog/azure-devops/index.html | 8 +++--- blog/azure-devops/page/1/index.html | 8 +++--- blog/azure/index.html | 8 +++--- blog/azure/page/1/index.html | 8 +++--- .../index.html | 10 +++---- blog/changelog/index.html | 8 +++--- blog/changelog/page/1/index.html | 8 +++--- blog/cloud-init/index.html | 8 +++--- blog/cloud-init/page/1/index.html | 8 +++--- blog/confluence/index.html | 8 +++--- blog/confluence/page/1/index.html | 8 +++--- blog/devops/index.html | 8 +++--- blog/devops/page/1/index.html | 8 +++--- .../index.html | 10 +++---- .../index.html | 10 +++---- blog/hashtag/index.html | 8 +++--- blog/hashtag/page/1/index.html | 8 +++--- blog/importanttopick/index.html | 8 +++--- blog/importanttopick/page/1/index.html | 8 +++--- blog/importanttopick/page/2/index.html | 8 +++--- blog/index.html | 8 +++--- blog/keywordlong/index.html | 8 +++--- blog/keywordlong/page/1/index.html | 8 +++--- blog/page/1/index.html | 8 +++--- blog/page/2/index.html | 8 +++--- blog/podryabinkina/index.html | 8 +++--- blog/podryabinkina/page/1/index.html | 8 +++--- blog/post/index.html | 8 +++--- blog/post/page/1/index.html | 8 +++--- blog/post/page/2/index.html | 8 +++--- blog/proxmox/index.html | 8 +++--- blog/proxmox/page/1/index.html | 8 +++--- blog/self-hosted-build-agent/index.html | 8 +++--- .../self-hosted-build-agent/page/1/index.html | 8 +++--- blog/virtualization/index.html | 8 +++--- blog/virtualization/page/1/index.html | 8 +++--- blog/vm/index.html | 8 +++--- blog/vm/page/1/index.html | 8 +++--- blog/zhmayev/index.html | 8 +++--- blog/zhmayev/page/1/index.html | 8 +++--- blog/zhmayev/page/2/index.html | 8 +++--- chunk-map.json | 2 +- ...plates-404-tsx-1ec7dcfded6e73efef91.js.map | 2 +- ...-by-author-tsx-c73b629026a3b6d9b6b2.js.map | 2 +- ...by-hashtag-tsx-3a8ada98c121bd3d62f7.js.map | 2 +- ...lates-blog-tsx-91ade5beabd1db3174a4.js.map | 2 +- ...ates-index-tsx-2df0ce267e9edf8b197a.js.map | 2 +- ...templates-post-tsx-679a8c56938c9272bb7a.js | 2 -- ...lates-post-tsx-679a8c56938c9272bb7a.js.map | 1 - ...templates-post-tsx-7870f7000d415f9876f9.js | 2 ++ ...lates-post-tsx-7870f7000d415f9876f9.js.map | 1 + ...s-projects-tsx-efcf98f36bb35506a959.js.map | 2 +- ...s-workflow-tsx-3b5bfd63b270d61e9cb0.js.map | 2 +- cookie-policy/index.html | 8 +++--- index.html | 8 +++--- page-data/app-data.json | 2 +- .../page-data.json | 2 +- .../page-data.json | 2 +- .../page-data.json | 2 +- .../page-data.json | 2 +- .../page-data.json | 2 +- .../page-data.json | 2 +- page-data/blog/articlename/page-data.json | 2 +- .../blog/articlename/page/1/page-data.json | 2 +- .../blog/articlename/page/2/page-data.json | 2 +- page-data/blog/azure-devops/page-data.json | 2 +- .../blog/azure-devops/page/1/page-data.json | 2 +- page-data/blog/azure/page-data.json | 2 +- page-data/blog/azure/page/1/page-data.json | 2 +- .../page-data.json | 2 +- page-data/blog/changelog/page-data.json | 2 +- .../blog/changelog/page/1/page-data.json | 2 +- page-data/blog/cloud-init/page-data.json | 2 +- .../blog/cloud-init/page/1/page-data.json | 2 +- page-data/blog/confluence/page-data.json | 2 +- .../blog/confluence/page/1/page-data.json | 2 +- page-data/blog/devops/page-data.json | 2 +- page-data/blog/devops/page/1/page-data.json | 2 +- .../page-data.json | 2 +- .../page-data.json | 2 +- page-data/blog/hashtag/page-data.json | 2 +- page-data/blog/hashtag/page/1/page-data.json | 2 +- page-data/blog/importanttopick/page-data.json | 2 +- .../importanttopick/page/1/page-data.json | 2 +- .../importanttopick/page/2/page-data.json | 2 +- page-data/blog/keywordlong/page-data.json | 2 +- .../blog/keywordlong/page/1/page-data.json | 2 +- page-data/blog/page-data.json | 2 +- page-data/blog/page/1/page-data.json | 2 +- page-data/blog/page/2/page-data.json | 2 +- page-data/blog/podryabinkina/page-data.json | 2 +- .../blog/podryabinkina/page/1/page-data.json | 2 +- page-data/blog/post/page-data.json | 2 +- page-data/blog/post/page/1/page-data.json | 2 +- page-data/blog/post/page/2/page-data.json | 2 +- page-data/blog/proxmox/page-data.json | 2 +- page-data/blog/proxmox/page/1/page-data.json | 2 +- .../self-hosted-build-agent/page-data.json | 2 +- .../page/1/page-data.json | 2 +- page-data/blog/virtualization/page-data.json | 2 +- .../blog/virtualization/page/1/page-data.json | 2 +- page-data/blog/vm/page-data.json | 2 +- page-data/blog/vm/page/1/page-data.json | 2 +- page-data/blog/zhmayev/page-data.json | 2 +- page-data/blog/zhmayev/page/1/page-data.json | 2 +- page-data/blog/zhmayev/page/2/page-data.json | 2 +- page-data/index/page-data.json | 2 +- .../page-data.json | 2 +- .../page-data.json | 2 +- .../page-data.json | 2 +- .../page-data.json | 2 +- .../page-data.json | 2 +- .../page-data.json | 2 +- .../page-data.json | 2 +- page-data/projects/page-data.json | 2 +- page-data/projects/page/1/page-data.json | 2 +- page-data/services/page-data.json | 2 +- page-data/workflow/page-data.json | 2 +- privacy-policy/index.html | 8 +++--- .../index.html | 8 +++--- .../index.html | 8 +++--- .../index.html | 8 +++--- .../index.html | 8 +++--- .../index.html | 8 +++--- .../index.html | 8 +++--- .../index.html | 8 +++--- projects/index.html | 8 +++--- projects/page/1/index.html | 8 +++--- services/index.html | 8 +++--- styles.2a7450c31650c7d09006.css | 3 --- styles.a5d06edd5f5a703fcb21.css | 3 +++ webpack-runtime-90c320f61741db61aa26.js | 2 ++ webpack-runtime-90c320f61741db61aa26.js.map | 1 + webpack-runtime-fbaf96408a38e72808f3.js | 2 -- webpack-runtime-fbaf96408a38e72808f3.js.map | 1 - webpack.stats.json | 2 +- workflow/index.html | 8 +++--- 155 files changed, 406 insertions(+), 362 deletions(-) create mode 100644 355-8ec9d1cf4562de9fd523.js create mode 100644 355-8ec9d1cf4562de9fd523.js.LICENSE.txt create mode 100644 355-8ec9d1cf4562de9fd523.js.map rename app-f487b6864a0d816cc020.js => app-7990c3f1d980ee5d9dc0.js (99%) rename app-f487b6864a0d816cc020.js.LICENSE.txt => app-7990c3f1d980ee5d9dc0.js.LICENSE.txt (100%) rename app-f487b6864a0d816cc020.js.map => app-7990c3f1d980ee5d9dc0.js.map (99%) delete mode 100644 component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js delete mode 100644 component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js.map create mode 100644 component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js create mode 100644 component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js.map delete mode 100644 styles.2a7450c31650c7d09006.css create mode 100644 styles.a5d06edd5f5a703fcb21.css create mode 100644 webpack-runtime-90c320f61741db61aa26.js create mode 100644 webpack-runtime-90c320f61741db61aa26.js.map delete mode 100644 webpack-runtime-fbaf96408a38e72808f3.js delete mode 100644 webpack-runtime-fbaf96408a38e72808f3.js.map diff --git a/355-8ec9d1cf4562de9fd523.js b/355-8ec9d1cf4562de9fd523.js new file mode 100644 index 00000000..35d37b32 --- /dev/null +++ b/355-8ec9d1cf4562de9fd523.js @@ -0,0 +1,26 @@ +/*! For license information please see 355-8ec9d1cf4562de9fd523.js.LICENSE.txt */ +"use strict";(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[355],{4355:function(t,e,s){s.r(e),s.d(e,{GiscusWidget:function(){return Ct}});const i=globalThis,r=i.ShadowRoot&&(void 0===i.ShadyCSS||i.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,n=Symbol(),o=new WeakMap;let h=class{constructor(t,e,s){if(this._$cssResult$=!0,s!==n)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(r&&void 0===t){const s=void 0!==e&&1===e.length;s&&(t=o.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),s&&o.set(e,t))}return t}toString(){return this.cssText}};const a=r?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return(t=>new h("string"==typeof t?t:t+"",void 0,n))(e)})(t):t,{is:l,defineProperty:c,getOwnPropertyDescriptor:d,getOwnPropertyNames:u,getOwnPropertySymbols:p,getPrototypeOf:_}=Object,$=globalThis,g=$.trustedTypes,f=g?g.emptyScript:"",m=$.reactiveElementPolyfillSupport,v=(t,e)=>t,A={toAttribute(t,e){switch(e){case Boolean:t=t?f:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let s=t;switch(e){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch{s=null}}return s}},y=(t,e)=>!l(t,e),S={attribute:!0,type:String,converter:A,reflect:!1,hasChanged:y};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),$.litPropertyMetadata??($.litPropertyMetadata=new WeakMap);class E extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=S){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const s=Symbol(),i=this.getPropertyDescriptor(t,s,e);void 0!==i&&c(this.prototype,t,i)}}static getPropertyDescriptor(t,e,s){const{get:i,set:r}=d(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get(){return null==i?void 0:i.call(this)},set(e){const n=null==i?void 0:i.call(this);r.call(this,e),this.requestUpdate(t,n,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??S}static _$Ei(){if(this.hasOwnProperty(v("elementProperties")))return;const t=_(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(v("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(v("properties"))){const t=this.properties,e=[...u(t),...p(t)];for(const s of e)this.createProperty(s,t[s])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,s]of e)this.elementProperties.set(t,s)}this._$Eh=new Map;for(const[e,s]of this.elementProperties){const t=this._$Eu(e,s);void 0!==t&&this._$Eh.set(t,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const s=new Set(t.flat(1/0).reverse());for(const t of s)e.unshift(a(t))}else void 0!==t&&e.push(a(t));return e}static _$Eu(t,e){const s=e.attribute;return!1===s?void 0:"string"==typeof s?s:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),null==(t=this.constructor.l)||t.forEach((t=>t(this)))}addController(t){var e;(this._$EO??(this._$EO=new Set)).add(t),void 0!==this.renderRoot&&this.isConnected&&(null==(e=t.hostConnected)||e.call(t))}removeController(t){var e;null==(e=this._$EO)||e.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const s of e.keys())this.hasOwnProperty(s)&&(t.set(s,this[s]),delete this[s]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((t,e)=>{if(r)t.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const s of e){const e=document.createElement("style"),r=i.litNonce;void 0!==r&&e.setAttribute("nonce",r),e.textContent=s.cssText,t.appendChild(e)}})(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null==(t=this._$EO)||t.forEach((t=>{var e;return null==(e=t.hostConnected)?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null==(t=this._$EO)||t.forEach((t=>{var e;return null==(e=t.hostDisconnected)?void 0:e.call(t)}))}attributeChangedCallback(t,e,s){this._$AK(t,s)}_$EC(t,e){var s;const i=this.constructor.elementProperties.get(t),r=this.constructor._$Eu(t,i);if(void 0!==r&&!0===i.reflect){const n=(void 0!==(null==(s=i.converter)?void 0:s.toAttribute)?i.converter:A).toAttribute(e,i.type);this._$Em=t,null==n?this.removeAttribute(r):this.setAttribute(r,n),this._$Em=null}}_$AK(t,e){var s;const i=this.constructor,r=i._$Eh.get(t);if(void 0!==r&&this._$Em!==r){const t=i.getPropertyOptions(r),n="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null==(s=t.converter)?void 0:s.fromAttribute)?t.converter:A;this._$Em=r,this[r]=n.fromAttribute(e,t.type),this._$Em=null}}requestUpdate(t,e,s){if(void 0!==t){if(s??(s=this.constructor.getPropertyOptions(t)),!(s.hasChanged??y)(this[t],e))return;this.P(t,e,s)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,e,s){this._$AL.has(t)||this._$AL.set(t,e),!0===s.reflect&&this._$Em!==t&&(this._$Ej??(this._$Ej=new Set)).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,s]of t)!0!==s.wrapped||this._$AL.has(e)||void 0===this[e]||this.P(e,this[e],s)}let e=!1;const s=this._$AL;try{e=this.shouldUpdate(s),e?(this.willUpdate(s),null==(t=this._$EO)||t.forEach((t=>{var e;return null==(e=t.hostUpdate)?void 0:e.call(t)})),this.update(s)):this._$EU()}catch(i){throw e=!1,this._$EU(),i}e&&this._$AE(s)}willUpdate(t){}_$AE(t){var e;null==(e=this._$EO)||e.forEach((t=>{var e;return null==(e=t.hostUpdated)?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&(this._$Ej=this._$Ej.forEach((t=>this._$EC(t,this[t])))),this._$EU()}updated(t){}firstUpdated(t){}}E.elementStyles=[],E.shadowRootOptions={mode:"open"},E[v("elementProperties")]=new Map,E[v("finalized")]=new Map,null==m||m({ReactiveElement:E}),($.reactiveElementVersions??($.reactiveElementVersions=[])).push("2.0.4");const b=globalThis,w=b.trustedTypes,C=w?w.createPolicy("lit-html",{createHTML:t=>t}):void 0,U="$lit$",P=`lit$${(Math.random()+"").slice(9)}$`,O="?"+P,M=`<${O}>`,T=document,R=()=>T.createComment(""),N=t=>null===t||"object"!=typeof t&&"function"!=typeof t,I=Array.isArray,x="[ \t\n\f\r]",H=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,k=/-->/g,L=/>/g,D=RegExp(`>|${x}(?:([^\\s"'>=/]+)(${x}*=${x}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),j=/'/g,z=/"/g,Y=/^(?:script|style|textarea|title)$/i,G=(K=1,(t,...e)=>({_$litType$:K,strings:t,values:e})),B=Symbol.for("lit-noChange"),W=Symbol.for("lit-nothing"),V=new WeakMap,q=T.createTreeWalker(T,129);var K;function J(t,e){if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==C?C.createHTML(e):e}class F{constructor({strings:t,_$litType$:e},s){let i;this.parts=[];let r=0,n=0;const o=t.length-1,h=this.parts,[a,l]=((t,e)=>{const s=t.length-1,i=[];let r,n=2===e?"":"",o=H;for(let h=0;h"===a[0]?(o=r??H,l=-1):void 0===a[1]?l=-2:(l=o.lastIndex-a[2].length,s=a[1],o=void 0===a[3]?D:'"'===a[3]?z:j):o===z||o===j?o=D:o===k||o===L?o=H:(o=D,r=void 0);const d=o===D&&t[h+1].startsWith("/>")?" ":"";n+=o===H?e+M:l>=0?(i.push(s),e.slice(0,l)+U+e.slice(l)+P+d):e+P+(-2===l?h:d)}return[J(t,n+(t[s]||"")+(2===e?"":"")),i]})(t,e);if(this.el=F.createElement(a,s),q.currentNode=this.el.content,2===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(i=q.nextNode())&&h.length0){i.textContent=w?w.emptyScript:"";for(let s=0;sI(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.k(t):this._(t)}S(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.S(t))}_(t){this._$AH!==W&&N(this._$AH)?this._$AA.nextSibling.data=t:this.T(T.createTextNode(t)),this._$AH=t}$(t){var e;const{values:s,_$litType$:i}=t,r="number"==typeof i?this._$AC(t):(void 0===i.el&&(i.el=F.createElement(J(i.h,i.h[0]),this.options)),i);if((null==(e=this._$AH)?void 0:e._$AD)===r)this._$AH.p(s);else{const t=new class{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:e},parts:s}=this._$AD,i=((null==t?void 0:t.creationScope)??T).importNode(e,!0);q.currentNode=i;let r=q.nextNode(),n=0,o=0,h=s[0];for(;void 0!==h;){if(n===h.index){let e;2===h.type?e=new Z(r,r.nextSibling,this,t):1===h.type?e=new h.ctor(r,h.name,h.strings,this,t):6===h.type&&(e=new it(r,this,t)),this._$AV.push(e),h=s[++o]}n!==(null==h?void 0:h.index)&&(r=q.nextNode(),n++)}return q.currentNode=T,i}p(t){let e=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,e),e+=s.strings.length-2):s._$AI(t[e])),e++}}(r,this),e=t.u(this.options);t.p(s),this.T(e),this._$AH=t}}_$AC(t){let e=V.get(t.strings);return void 0===e&&V.set(t.strings,e=new F(t)),e}k(t){I(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let s,i=0;for(const r of t)i===e.length?e.push(s=new Z(this.S(R()),this.S(R()),this,this.options)):s=e[i],s._$AI(r),i++;i2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=W}_$AI(t,e=this,s,i){const r=this.strings;let n=!1;if(void 0===r)t=Q(this,t,e,0),n=!N(t)||t!==this._$AH&&t!==B,n&&(this._$AH=t);else{const i=t;let o,h;for(t=r[0],o=0;o{const i=(null==s?void 0:s.renderBefore)??e;let r=i._$litPart$;if(void 0===r){const t=(null==s?void 0:s.renderBefore)??null;i._$litPart$=r=new Z(e.insertBefore(R(),t),t,void 0,s??{})}return r._$AI(t),r})(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null==(t=this._$Do)||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null==(t=this._$Do)||t.setConnected(!1)}render(){return B}};var ot;nt._$litElement$=!0,nt.finalized=!0,null==(ot=globalThis.litElementHydrateSupport)||ot.call(globalThis,{LitElement:nt});const ht=globalThis.litElementPolyfillSupport;null==ht||ht({LitElement:nt}),(globalThis.litElementVersions??(globalThis.litElementVersions=[])).push("4.0.4");const at={attribute:!0,type:String,converter:A,reflect:!1,hasChanged:y},lt=(t=at,e,s)=>{const{kind:i,metadata:r}=s;let n=globalThis.litPropertyMetadata.get(r);if(void 0===n&&globalThis.litPropertyMetadata.set(r,n=new Map),n.set(s.name,t),"accessor"===i){const{name:i}=s;return{set(s){const r=e.get.call(this);e.set.call(this,s),this.requestUpdate(i,r,t)},init(e){return void 0!==e&&this.P(i,void 0,t),e}}}if("setter"===i){const{name:i}=s;return function(s){const r=this[i];e.call(this,s),this.requestUpdate(i,r,t)}}throw Error("Unsupported decorator location: "+i)};function ct(t){return(e,s)=>"object"==typeof s?lt(t,e,s):((t,e,s)=>{const i=e.hasOwnProperty(s);return e.constructor.createProperty(s,i?{...t,wrapped:!0}:t),i?Object.getOwnPropertyDescriptor(e,s):void 0})(t,e,s)}const dt=2;let ut=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,s){this._$Ct=t,this._$AM=e,this._$Ci=s}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};const pt=(t,e)=>{var s;const i=t._$AN;if(void 0===i)return!1;for(const r of i)null==(s=r._$AO)||s.call(r,e,!1),pt(r,e);return!0},_t=t=>{let e,s;do{if(void 0===(e=t._$AM))break;s=e._$AN,s.delete(t),t=e}while(0===(null==s?void 0:s.size))},$t=t=>{for(let e;e=t._$AM;t=e){let s=e._$AN;if(void 0===s)e._$AN=s=new Set;else if(s.has(t))break;s.add(t),mt(e)}};function gt(t){void 0!==this._$AN?(_t(this),this._$AM=t,$t(this)):this._$AM=t}function ft(t,e=!1,s=0){const i=this._$AH,r=this._$AN;if(void 0!==r&&0!==r.size)if(e)if(Array.isArray(i))for(let n=s;n{t.type==dt&&(t._$AP??(t._$AP=ft),t._$AQ??(t._$AQ=gt))};class vt extends ut{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,s){super._$AT(t,e,s),$t(this),this.isConnected=t._$AU}_$AO(t,e=!0){var s,i;t!==this.isConnected&&(this.isConnected=t,t?null==(s=this.reconnected)||s.call(this):null==(i=this.disconnected)||i.call(this)),e&&(pt(this,t),_t(this))}setValue(t){if((t=>void 0===t.strings)(this._$Ct))this._$Ct._$AI(t,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=t,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}class At{}const yt=new WeakMap,St=(t=>(...e)=>({_$litDirective$:t,values:e}))(class extends vt{render(t){return W}update(t,[e]){var s;const i=e!==this.Y;return i&&void 0!==this.Y&&this.rt(void 0),(i||this.lt!==this.ct)&&(this.Y=e,this.ht=null==(s=t.options)?void 0:s.host,this.rt(this.ct=t.element)),W}rt(t){if("function"==typeof this.Y){const e=this.ht??globalThis;let s=yt.get(e);void 0===s&&(s=new WeakMap,yt.set(e,s)),void 0!==s.get(this.Y)&&this.Y.call(this.ht,void 0),s.set(this.Y,t),void 0!==t&&this.Y.call(this.ht,t)}else this.Y.value=t}get lt(){var t,e;return"function"==typeof this.Y?null==(t=yt.get(this.ht??globalThis))?void 0:t.get(this.Y):null==(e=this.Y)?void 0:e.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var Et=Object.defineProperty,bt=Object.getOwnPropertyDescriptor,wt=(t,e,s,i)=>{for(var r,n=i>1?void 0:i?bt(e,s):e,o=t.length-1;o>=0;o--)(r=t[o])&&(n=(i?r(e,s,n):r(n))||n);return i&&n&&Et(e,s,n),n};let Ct=class extends nt{constructor(){super(),this.GISCUS_SESSION_KEY="giscus-session",this.GISCUS_DEFAULT_HOST="https://giscus.app",this.ERROR_SUGGESTION="Please consider reporting this error at https://github.com/giscus/giscus/issues/new.",this.__session="",this._iframeRef=new At,this.messageEventHandler=this.handleMessageEvent.bind(this),this.hasLoaded=!1,this.host=this.GISCUS_DEFAULT_HOST,this.strict="0",this.reactionsEnabled="1",this.emitMetadata="0",this.inputPosition="bottom",this.theme="light",this.lang="en",this.loading="eager",this.setupSession(),window.addEventListener("message",this.messageEventHandler)}get iframeRef(){var t;return null==(t=this._iframeRef)?void 0:t.value}get _host(){try{return new URL(this.host),this.host}catch{return this.GISCUS_DEFAULT_HOST}}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("message",this.messageEventHandler)}_formatError(t){return`[giscus] An error occurred. Error message: "${t}".`}setupSession(){const t=location.href,e=new URL(t),s=localStorage.getItem(this.GISCUS_SESSION_KEY),i=e.searchParams.get("giscus")??"";if(this.__session="",i)return localStorage.setItem(this.GISCUS_SESSION_KEY,JSON.stringify(i)),this.__session=i,e.searchParams.delete("giscus"),e.hash="",void history.replaceState(void 0,document.title,e.toString());if(s)try{this.__session=JSON.parse(s)}catch(r){localStorage.removeItem(this.GISCUS_SESSION_KEY),console.warn(`${this._formatError(null==r?void 0:r.message)} Session has been cleared.`)}}signOut(){localStorage.removeItem(this.GISCUS_SESSION_KEY),this.__session="",this.update(new Map)}handleMessageEvent(t){if(t.origin!==this._host)return;const{data:e}=t;if("object"!=typeof e||!e.giscus)return;if(this.iframeRef&&e.giscus.resizeHeight&&(this.iframeRef.style.height=`${e.giscus.resizeHeight}px`),e.giscus.signOut)return console.info("[giscus] User has logged out. Session has been cleared."),void this.signOut();if(!e.giscus.error)return;const s=e.giscus.error;if(s.includes("Bad credentials")||s.includes("Invalid state value")||s.includes("State has expired")){if(null!==localStorage.getItem(this.GISCUS_SESSION_KEY))return console.warn(`${this._formatError(s)} Session has been cleared.`),void this.signOut();console.error(`${this._formatError(s)} No session is stored initially. ${this.ERROR_SUGGESTION}`)}s.includes("Discussion not found")?console.warn(`[giscus] ${s}. A new discussion will be created if a comment/reaction is submitted.`):console.error(`${this._formatError(s)} ${this.ERROR_SUGGESTION}`)}sendMessage(t){var e;null==(e=this.iframeRef)||!e.contentWindow||!this.hasLoaded||this.iframeRef.contentWindow.postMessage({giscus:t},this._host)}updateConfig(){const t={setConfig:{repo:this.repo,repoId:this.repoId,category:this.category,categoryId:this.categoryId,term:this.getTerm(),number:+this.getNumber(),strict:"1"===this.strict,reactionsEnabled:"1"===this.reactionsEnabled,emitMetadata:"1"===this.emitMetadata,inputPosition:this.inputPosition,theme:this.theme,lang:this.lang}};this.sendMessage(t)}firstUpdated(){var t;null==(t=this.iframeRef)||t.addEventListener("load",(()=>{var t;null==(t=this.iframeRef)||t.classList.remove("loading"),this.hasLoaded=!0,this.updateConfig()}))}requestUpdate(t,e,s){this.hasUpdated&&"host"!==t?this.updateConfig():super.requestUpdate(t,e,s)}getMetaContent(t,e=!1){const s=e?`meta[property='og:${t}'],`:"",i=document.querySelector(s+`meta[name='${t}']`);return i?i.content:""}_getCleanedUrl(){const t=new URL(location.href);return t.searchParams.delete("giscus"),t.hash="",t}getTerm(){switch(this.mapping){case"url":return this._getCleanedUrl().toString();case"title":return document.title;case"og:title":return this.getMetaContent("title",!0);case"specific":return this.term??"";case"number":return"";default:return location.pathname.length<2?"index":location.pathname.substring(1).replace(/\.\w+$/,"")}}getNumber(){return"number"===this.mapping?this.term??"":""}getIframeSrc(){const t=this._getCleanedUrl().toString(),e=`${t}${this.id?"#"+this.id:""}`,s=this.getMetaContent("description",!0),i=this.getMetaContent("giscus:backlink")||t,r={origin:e,session:this.__session,repo:this.repo,repoId:this.repoId??"",category:this.category??"",categoryId:this.categoryId??"",term:this.getTerm(),number:this.getNumber(),strict:this.strict,reactionsEnabled:this.reactionsEnabled,emitMetadata:this.emitMetadata,inputPosition:this.inputPosition,theme:this.theme,description:s,backLink:i};return`${this._host}${this.lang?`/${this.lang}`:""}/widget?${new URLSearchParams(r).toString()}`}render(){return G` + + `}};Ct.styles=((t,...e)=>{const s=1===t.length?t[0]:e.reduce(((e,s,i)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+t[i+1]),t[0]);return new h(s,t,n)})` + :host, + iframe { + width: 100%; + border: none; + min-height: 150px; + color-scheme: light dark; + } + + iframe.loading { + opacity: 0; + } + `,wt([ct({reflect:!0})],Ct.prototype,"host",2),wt([ct({reflect:!0})],Ct.prototype,"repo",2),wt([ct({reflect:!0})],Ct.prototype,"repoId",2),wt([ct({reflect:!0})],Ct.prototype,"category",2),wt([ct({reflect:!0})],Ct.prototype,"categoryId",2),wt([ct({reflect:!0})],Ct.prototype,"mapping",2),wt([ct({reflect:!0})],Ct.prototype,"term",2),wt([ct({reflect:!0})],Ct.prototype,"strict",2),wt([ct({reflect:!0})],Ct.prototype,"reactionsEnabled",2),wt([ct({reflect:!0})],Ct.prototype,"emitMetadata",2),wt([ct({reflect:!0})],Ct.prototype,"inputPosition",2),wt([ct({reflect:!0})],Ct.prototype,"theme",2),wt([ct({reflect:!0})],Ct.prototype,"lang",2),wt([ct({reflect:!0})],Ct.prototype,"loading",2),Ct=wt([function(t){return customElements.get(t)?t=>t:(t=>(e,s)=>{void 0!==s?s.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)})(t)}("giscus-widget")],Ct)}}]); +//# sourceMappingURL=355-8ec9d1cf4562de9fd523.js.map \ No newline at end of file diff --git a/355-8ec9d1cf4562de9fd523.js.LICENSE.txt b/355-8ec9d1cf4562de9fd523.js.LICENSE.txt new file mode 100644 index 00000000..419a0614 --- /dev/null +++ b/355-8ec9d1cf4562de9fd523.js.LICENSE.txt @@ -0,0 +1,17 @@ +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ + +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ + +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ diff --git a/355-8ec9d1cf4562de9fd523.js.map b/355-8ec9d1cf4562de9fd523.js.map new file mode 100644 index 00000000..2fb45b64 --- /dev/null +++ b/355-8ec9d1cf4562de9fd523.js.map @@ -0,0 +1 @@ +{"version":3,"file":"355-8ec9d1cf4562de9fd523.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@giscus/react/dist/giscus-BNK3dBIH.js"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst H = globalThis, V = H.ShadowRoot && (H.ShadyCSS === void 0 || H.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype, q = Symbol(), J = /* @__PURE__ */ new WeakMap();\nlet ot = class {\n constructor(t, e, s) {\n if (this._$cssResult$ = !0, s !== q)\n throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t, this.t = e;\n }\n get styleSheet() {\n let t = this.o;\n const e = this.t;\n if (V && t === void 0) {\n const s = e !== void 0 && e.length === 1;\n s && (t = J.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), s && J.set(e, t));\n }\n return t;\n }\n toString() {\n return this.cssText;\n }\n};\nconst ut = (i) => new ot(typeof i == \"string\" ? i : i + \"\", void 0, q), $t = (i, ...t) => {\n const e = i.length === 1 ? i[0] : t.reduce((s, r, o) => s + ((n) => {\n if (n._$cssResult$ === !0)\n return n.cssText;\n if (typeof n == \"number\")\n return n;\n throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + n + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n })(r) + i[o + 1], i[0]);\n return new ot(e, i, q);\n}, _t = (i, t) => {\n if (V)\n i.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);\n else\n for (const e of t) {\n const s = document.createElement(\"style\"), r = H.litNonce;\n r !== void 0 && s.setAttribute(\"nonce\", r), s.textContent = e.cssText, i.appendChild(s);\n }\n}, F = V ? (i) => i : (i) => i instanceof CSSStyleSheet ? ((t) => {\n let e = \"\";\n for (const s of t.cssRules)\n e += s.cssText;\n return ut(e);\n})(i) : i;\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst { is: gt, defineProperty: ft, getOwnPropertyDescriptor: mt, getOwnPropertyNames: At, getOwnPropertySymbols: yt, getPrototypeOf: St } = Object, A = globalThis, Q = A.trustedTypes, vt = Q ? Q.emptyScript : \"\", Y = A.reactiveElementPolyfillSupport, U = (i, t) => i, L = { toAttribute(i, t) {\n switch (t) {\n case Boolean:\n i = i ? vt : null;\n break;\n case Object:\n case Array:\n i = i == null ? i : JSON.stringify(i);\n }\n return i;\n}, fromAttribute(i, t) {\n let e = i;\n switch (t) {\n case Boolean:\n e = i !== null;\n break;\n case Number:\n e = i === null ? null : Number(i);\n break;\n case Object:\n case Array:\n try {\n e = JSON.parse(i);\n } catch {\n e = null;\n }\n }\n return e;\n} }, K = (i, t) => !gt(i, t), Z = { attribute: !0, type: String, converter: L, reflect: !1, hasChanged: K };\nSymbol.metadata ?? (Symbol.metadata = Symbol(\"metadata\")), A.litPropertyMetadata ?? (A.litPropertyMetadata = /* @__PURE__ */ new WeakMap());\nclass E extends HTMLElement {\n static addInitializer(t) {\n this._$Ei(), (this.l ?? (this.l = [])).push(t);\n }\n static get observedAttributes() {\n return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n }\n static createProperty(t, e = Z) {\n if (e.state && (e.attribute = !1), this._$Ei(), this.elementProperties.set(t, e), !e.noAccessor) {\n const s = Symbol(), r = this.getPropertyDescriptor(t, s, e);\n r !== void 0 && ft(this.prototype, t, r);\n }\n }\n static getPropertyDescriptor(t, e, s) {\n const { get: r, set: o } = mt(this.prototype, t) ?? { get() {\n return this[e];\n }, set(n) {\n this[e] = n;\n } };\n return { get() {\n return r == null ? void 0 : r.call(this);\n }, set(n) {\n const a = r == null ? void 0 : r.call(this);\n o.call(this, n), this.requestUpdate(t, a, s);\n }, configurable: !0, enumerable: !0 };\n }\n static getPropertyOptions(t) {\n return this.elementProperties.get(t) ?? Z;\n }\n static _$Ei() {\n if (this.hasOwnProperty(U(\"elementProperties\")))\n return;\n const t = St(this);\n t.finalize(), t.l !== void 0 && (this.l = [...t.l]), this.elementProperties = new Map(t.elementProperties);\n }\n static finalize() {\n if (this.hasOwnProperty(U(\"finalized\")))\n return;\n if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(U(\"properties\"))) {\n const e = this.properties, s = [...At(e), ...yt(e)];\n for (const r of s)\n this.createProperty(r, e[r]);\n }\n const t = this[Symbol.metadata];\n if (t !== null) {\n const e = litPropertyMetadata.get(t);\n if (e !== void 0)\n for (const [s, r] of e)\n this.elementProperties.set(s, r);\n }\n this._$Eh = /* @__PURE__ */ new Map();\n for (const [e, s] of this.elementProperties) {\n const r = this._$Eu(e, s);\n r !== void 0 && this._$Eh.set(r, e);\n }\n this.elementStyles = this.finalizeStyles(this.styles);\n }\n static finalizeStyles(t) {\n const e = [];\n if (Array.isArray(t)) {\n const s = new Set(t.flat(1 / 0).reverse());\n for (const r of s)\n e.unshift(F(r));\n } else\n t !== void 0 && e.push(F(t));\n return e;\n }\n static _$Eu(t, e) {\n const s = e.attribute;\n return s === !1 ? void 0 : typeof s == \"string\" ? s : typeof t == \"string\" ? t.toLowerCase() : void 0;\n }\n constructor() {\n super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();\n }\n _$Ev() {\n var t;\n this._$ES = new Promise((e) => this.enableUpdating = e), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), (t = this.constructor.l) == null || t.forEach((e) => e(this));\n }\n addController(t) {\n var e;\n (this._$EO ?? (this._$EO = /* @__PURE__ */ new Set())).add(t), this.renderRoot !== void 0 && this.isConnected && ((e = t.hostConnected) == null || e.call(t));\n }\n removeController(t) {\n var e;\n (e = this._$EO) == null || e.delete(t);\n }\n _$E_() {\n const t = /* @__PURE__ */ new Map(), e = this.constructor.elementProperties;\n for (const s of e.keys())\n this.hasOwnProperty(s) && (t.set(s, this[s]), delete this[s]);\n t.size > 0 && (this._$Ep = t);\n }\n createRenderRoot() {\n const t = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n return _t(t, this.constructor.elementStyles), t;\n }\n connectedCallback() {\n var t;\n this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), (t = this._$EO) == null || t.forEach((e) => {\n var s;\n return (s = e.hostConnected) == null ? void 0 : s.call(e);\n });\n }\n enableUpdating(t) {\n }\n disconnectedCallback() {\n var t;\n (t = this._$EO) == null || t.forEach((e) => {\n var s;\n return (s = e.hostDisconnected) == null ? void 0 : s.call(e);\n });\n }\n attributeChangedCallback(t, e, s) {\n this._$AK(t, s);\n }\n _$EC(t, e) {\n var o;\n const s = this.constructor.elementProperties.get(t), r = this.constructor._$Eu(t, s);\n if (r !== void 0 && s.reflect === !0) {\n const n = (((o = s.converter) == null ? void 0 : o.toAttribute) !== void 0 ? s.converter : L).toAttribute(e, s.type);\n this._$Em = t, n == null ? this.removeAttribute(r) : this.setAttribute(r, n), this._$Em = null;\n }\n }\n _$AK(t, e) {\n var o;\n const s = this.constructor, r = s._$Eh.get(t);\n if (r !== void 0 && this._$Em !== r) {\n const n = s.getPropertyOptions(r), a = typeof n.converter == \"function\" ? { fromAttribute: n.converter } : ((o = n.converter) == null ? void 0 : o.fromAttribute) !== void 0 ? n.converter : L;\n this._$Em = r, this[r] = a.fromAttribute(e, n.type), this._$Em = null;\n }\n }\n requestUpdate(t, e, s) {\n if (t !== void 0) {\n if (s ?? (s = this.constructor.getPropertyOptions(t)), !(s.hasChanged ?? K)(this[t], e))\n return;\n this.P(t, e, s);\n }\n this.isUpdatePending === !1 && (this._$ES = this._$ET());\n }\n P(t, e, s) {\n this._$AL.has(t) || this._$AL.set(t, e), s.reflect === !0 && this._$Em !== t && (this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Set())).add(t);\n }\n async _$ET() {\n this.isUpdatePending = !0;\n try {\n await this._$ES;\n } catch (e) {\n Promise.reject(e);\n }\n const t = this.scheduleUpdate();\n return t != null && await t, !this.isUpdatePending;\n }\n scheduleUpdate() {\n return this.performUpdate();\n }\n performUpdate() {\n var s;\n if (!this.isUpdatePending)\n return;\n if (!this.hasUpdated) {\n if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {\n for (const [o, n] of this._$Ep)\n this[o] = n;\n this._$Ep = void 0;\n }\n const r = this.constructor.elementProperties;\n if (r.size > 0)\n for (const [o, n] of r)\n n.wrapped !== !0 || this._$AL.has(o) || this[o] === void 0 || this.P(o, this[o], n);\n }\n let t = !1;\n const e = this._$AL;\n try {\n t = this.shouldUpdate(e), t ? (this.willUpdate(e), (s = this._$EO) == null || s.forEach((r) => {\n var o;\n return (o = r.hostUpdate) == null ? void 0 : o.call(r);\n }), this.update(e)) : this._$EU();\n } catch (r) {\n throw t = !1, this._$EU(), r;\n }\n t && this._$AE(e);\n }\n willUpdate(t) {\n }\n _$AE(t) {\n var e;\n (e = this._$EO) == null || e.forEach((s) => {\n var r;\n return (r = s.hostUpdated) == null ? void 0 : r.call(s);\n }), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(t)), this.updated(t);\n }\n _$EU() {\n this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this._$ES;\n }\n shouldUpdate(t) {\n return !0;\n }\n update(t) {\n this._$Ej && (this._$Ej = this._$Ej.forEach((e) => this._$EC(e, this[e]))), this._$EU();\n }\n updated(t) {\n }\n firstUpdated(t) {\n }\n}\nE.elementStyles = [], E.shadowRootOptions = { mode: \"open\" }, E[U(\"elementProperties\")] = /* @__PURE__ */ new Map(), E[U(\"finalized\")] = /* @__PURE__ */ new Map(), Y == null || Y({ ReactiveElement: E }), (A.reactiveElementVersions ?? (A.reactiveElementVersions = [])).push(\"2.0.4\");\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst P = globalThis, k = P.trustedTypes, X = k ? k.createPolicy(\"lit-html\", { createHTML: (i) => i }) : void 0, ht = \"$lit$\", m = `lit$${(Math.random() + \"\").slice(9)}$`, at = \"?\" + m, Et = `<${at}>`, v = document, N = () => v.createComment(\"\"), R = (i) => i === null || typeof i != \"object\" && typeof i != \"function\", ct = Array.isArray, bt = (i) => ct(i) || typeof (i == null ? void 0 : i[Symbol.iterator]) == \"function\", j = `[ \t\n\\f\\r]`, w = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g, tt = /-->/g, et = />/g, y = RegExp(`>|${j}(?:([^\\\\s\"'>=/]+)(${j}*=${j}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\"), st = /'/g, it = /\"/g, lt = /^(?:script|style|textarea|title)$/i, Ct = (i) => (t, ...e) => ({ _$litType$: i, strings: t, values: e }), wt = Ct(1), b = Symbol.for(\"lit-noChange\"), l = Symbol.for(\"lit-nothing\"), rt = /* @__PURE__ */ new WeakMap(), S = v.createTreeWalker(v, 129);\nfunction dt(i, t) {\n if (!Array.isArray(i) || !i.hasOwnProperty(\"raw\"))\n throw Error(\"invalid template strings array\");\n return X !== void 0 ? X.createHTML(t) : t;\n}\nconst Ut = (i, t) => {\n const e = i.length - 1, s = [];\n let r, o = t === 2 ? \"\" : \"\", n = w;\n for (let a = 0; a < e; a++) {\n const h = i[a];\n let d, u, c = -1, g = 0;\n for (; g < h.length && (n.lastIndex = g, u = n.exec(h), u !== null); )\n g = n.lastIndex, n === w ? u[1] === \"!--\" ? n = tt : u[1] !== void 0 ? n = et : u[2] !== void 0 ? (lt.test(u[2]) && (r = RegExp(\"\" ? (n = r ?? w, c = -1) : u[1] === void 0 ? c = -2 : (c = n.lastIndex - u[2].length, d = u[1], n = u[3] === void 0 ? y : u[3] === '\"' ? it : st) : n === it || n === st ? n = y : n === tt || n === et ? n = w : (n = y, r = void 0);\n const f = n === y && i[a + 1].startsWith(\"/>\") ? \" \" : \"\";\n o += n === w ? h + Et : c >= 0 ? (s.push(d), h.slice(0, c) + ht + h.slice(c) + m + f) : h + m + (c === -2 ? a : f);\n }\n return [dt(i, o + (i[e] || \"\") + (t === 2 ? \"\" : \"\")), s];\n};\nclass I {\n constructor({ strings: t, _$litType$: e }, s) {\n let r;\n this.parts = [];\n let o = 0, n = 0;\n const a = t.length - 1, h = this.parts, [d, u] = Ut(t, e);\n if (this.el = I.createElement(d, s), S.currentNode = this.el.content, e === 2) {\n const c = this.el.content.firstChild;\n c.replaceWith(...c.childNodes);\n }\n for (; (r = S.nextNode()) !== null && h.length < a; ) {\n if (r.nodeType === 1) {\n if (r.hasAttributes())\n for (const c of r.getAttributeNames())\n if (c.endsWith(ht)) {\n const g = u[n++], f = r.getAttribute(c).split(m), x = /([.?@])?(.*)/.exec(g);\n h.push({ type: 1, index: o, name: x[2], strings: f, ctor: x[1] === \".\" ? Tt : x[1] === \"?\" ? Ot : x[1] === \"@\" ? Nt : z }), r.removeAttribute(c);\n } else\n c.startsWith(m) && (h.push({ type: 6, index: o }), r.removeAttribute(c));\n if (lt.test(r.tagName)) {\n const c = r.textContent.split(m), g = c.length - 1;\n if (g > 0) {\n r.textContent = k ? k.emptyScript : \"\";\n for (let f = 0; f < g; f++)\n r.append(c[f], N()), S.nextNode(), h.push({ type: 2, index: ++o });\n r.append(c[g], N());\n }\n }\n } else if (r.nodeType === 8)\n if (r.data === at)\n h.push({ type: 2, index: o });\n else {\n let c = -1;\n for (; (c = r.data.indexOf(m, c + 1)) !== -1; )\n h.push({ type: 7, index: o }), c += m.length - 1;\n }\n o++;\n }\n }\n static createElement(t, e) {\n const s = v.createElement(\"template\");\n return s.innerHTML = t, s;\n }\n}\nfunction C(i, t, e = i, s) {\n var n, a;\n if (t === b)\n return t;\n let r = s !== void 0 ? (n = e._$Co) == null ? void 0 : n[s] : e._$Cl;\n const o = R(t) ? void 0 : t._$litDirective$;\n return (r == null ? void 0 : r.constructor) !== o && ((a = r == null ? void 0 : r._$AO) == null || a.call(r, !1), o === void 0 ? r = void 0 : (r = new o(i), r._$AT(i, e, s)), s !== void 0 ? (e._$Co ?? (e._$Co = []))[s] = r : e._$Cl = r), r !== void 0 && (t = C(i, r._$AS(i, t.values), r, s)), t;\n}\nlet Pt = class {\n constructor(t, e) {\n this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e;\n }\n get parentNode() {\n return this._$AM.parentNode;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n u(t) {\n const { el: { content: e }, parts: s } = this._$AD, r = ((t == null ? void 0 : t.creationScope) ?? v).importNode(e, !0);\n S.currentNode = r;\n let o = S.nextNode(), n = 0, a = 0, h = s[0];\n for (; h !== void 0; ) {\n if (n === h.index) {\n let d;\n h.type === 2 ? d = new M(o, o.nextSibling, this, t) : h.type === 1 ? d = new h.ctor(o, h.name, h.strings, this, t) : h.type === 6 && (d = new Rt(o, this, t)), this._$AV.push(d), h = s[++a];\n }\n n !== (h == null ? void 0 : h.index) && (o = S.nextNode(), n++);\n }\n return S.currentNode = v, r;\n }\n p(t) {\n let e = 0;\n for (const s of this._$AV)\n s !== void 0 && (s.strings !== void 0 ? (s._$AI(t, s, e), e += s.strings.length - 2) : s._$AI(t[e])), e++;\n }\n};\nclass M {\n get _$AU() {\n var t;\n return ((t = this._$AM) == null ? void 0 : t._$AU) ?? this._$Cv;\n }\n constructor(t, e, s, r) {\n this.type = 2, this._$AH = l, this._$AN = void 0, this._$AA = t, this._$AB = e, this._$AM = s, this.options = r, this._$Cv = (r == null ? void 0 : r.isConnected) ?? !0;\n }\n get parentNode() {\n let t = this._$AA.parentNode;\n const e = this._$AM;\n return e !== void 0 && (t == null ? void 0 : t.nodeType) === 11 && (t = e.parentNode), t;\n }\n get startNode() {\n return this._$AA;\n }\n get endNode() {\n return this._$AB;\n }\n _$AI(t, e = this) {\n t = C(this, t, e), R(t) ? t === l || t == null || t === \"\" ? (this._$AH !== l && this._$AR(), this._$AH = l) : t !== this._$AH && t !== b && this._(t) : t._$litType$ !== void 0 ? this.$(t) : t.nodeType !== void 0 ? this.T(t) : bt(t) ? this.k(t) : this._(t);\n }\n S(t) {\n return this._$AA.parentNode.insertBefore(t, this._$AB);\n }\n T(t) {\n this._$AH !== t && (this._$AR(), this._$AH = this.S(t));\n }\n _(t) {\n this._$AH !== l && R(this._$AH) ? this._$AA.nextSibling.data = t : this.T(v.createTextNode(t)), this._$AH = t;\n }\n $(t) {\n var o;\n const { values: e, _$litType$: s } = t, r = typeof s == \"number\" ? this._$AC(t) : (s.el === void 0 && (s.el = I.createElement(dt(s.h, s.h[0]), this.options)), s);\n if (((o = this._$AH) == null ? void 0 : o._$AD) === r)\n this._$AH.p(e);\n else {\n const n = new Pt(r, this), a = n.u(this.options);\n n.p(e), this.T(a), this._$AH = n;\n }\n }\n _$AC(t) {\n let e = rt.get(t.strings);\n return e === void 0 && rt.set(t.strings, e = new I(t)), e;\n }\n k(t) {\n ct(this._$AH) || (this._$AH = [], this._$AR());\n const e = this._$AH;\n let s, r = 0;\n for (const o of t)\n r === e.length ? e.push(s = new M(this.S(N()), this.S(N()), this, this.options)) : s = e[r], s._$AI(o), r++;\n r < e.length && (this._$AR(s && s._$AB.nextSibling, r), e.length = r);\n }\n _$AR(t = this._$AA.nextSibling, e) {\n var s;\n for ((s = this._$AP) == null ? void 0 : s.call(this, !1, !0, e); t && t !== this._$AB; ) {\n const r = t.nextSibling;\n t.remove(), t = r;\n }\n }\n setConnected(t) {\n var e;\n this._$AM === void 0 && (this._$Cv = t, (e = this._$AP) == null || e.call(this, t));\n }\n}\nclass z {\n get tagName() {\n return this.element.tagName;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n constructor(t, e, s, r, o) {\n this.type = 1, this._$AH = l, this._$AN = void 0, this.element = t, this.name = e, this._$AM = r, this.options = o, s.length > 2 || s[0] !== \"\" || s[1] !== \"\" ? (this._$AH = Array(s.length - 1).fill(new String()), this.strings = s) : this._$AH = l;\n }\n _$AI(t, e = this, s, r) {\n const o = this.strings;\n let n = !1;\n if (o === void 0)\n t = C(this, t, e, 0), n = !R(t) || t !== this._$AH && t !== b, n && (this._$AH = t);\n else {\n const a = t;\n let h, d;\n for (t = o[0], h = 0; h < o.length - 1; h++)\n d = C(this, a[s + h], e, h), d === b && (d = this._$AH[h]), n || (n = !R(d) || d !== this._$AH[h]), d === l ? t = l : t !== l && (t += (d ?? \"\") + o[h + 1]), this._$AH[h] = d;\n }\n n && !r && this.j(t);\n }\n j(t) {\n t === l ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t ?? \"\");\n }\n}\nclass Tt extends z {\n constructor() {\n super(...arguments), this.type = 3;\n }\n j(t) {\n this.element[this.name] = t === l ? void 0 : t;\n }\n}\nclass Ot extends z {\n constructor() {\n super(...arguments), this.type = 4;\n }\n j(t) {\n this.element.toggleAttribute(this.name, !!t && t !== l);\n }\n}\nclass Nt extends z {\n constructor(t, e, s, r, o) {\n super(t, e, s, r, o), this.type = 5;\n }\n _$AI(t, e = this) {\n if ((t = C(this, t, e, 0) ?? l) === b)\n return;\n const s = this._$AH, r = t === l && s !== l || t.capture !== s.capture || t.once !== s.once || t.passive !== s.passive, o = t !== l && (s === l || r);\n r && this.element.removeEventListener(this.name, this, s), o && this.element.addEventListener(this.name, this, t), this._$AH = t;\n }\n handleEvent(t) {\n var e;\n typeof this._$AH == \"function\" ? this._$AH.call(((e = this.options) == null ? void 0 : e.host) ?? this.element, t) : this._$AH.handleEvent(t);\n }\n}\nclass Rt {\n constructor(t, e, s) {\n this.element = t, this.type = 6, this._$AN = void 0, this._$AM = e, this.options = s;\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AI(t) {\n C(this, t);\n }\n}\nconst B = P.litHtmlPolyfillSupport;\nB == null || B(I, M), (P.litHtmlVersions ?? (P.litHtmlVersions = [])).push(\"3.1.2\");\nconst It = (i, t, e) => {\n const s = (e == null ? void 0 : e.renderBefore) ?? t;\n let r = s._$litPart$;\n if (r === void 0) {\n const o = (e == null ? void 0 : e.renderBefore) ?? null;\n s._$litPart$ = r = new M(t.insertBefore(N(), o), o, void 0, e ?? {});\n }\n return r._$AI(i), r;\n};\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nlet T = class extends E {\n constructor() {\n super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;\n }\n createRenderRoot() {\n var e;\n const t = super.createRenderRoot();\n return (e = this.renderOptions).renderBefore ?? (e.renderBefore = t.firstChild), t;\n }\n update(t) {\n const e = this.render();\n this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do = It(e, this.renderRoot, this.renderOptions);\n }\n connectedCallback() {\n var t;\n super.connectedCallback(), (t = this._$Do) == null || t.setConnected(!0);\n }\n disconnectedCallback() {\n var t;\n super.disconnectedCallback(), (t = this._$Do) == null || t.setConnected(!1);\n }\n render() {\n return b;\n }\n};\nvar nt;\nT._$litElement$ = !0, T.finalized = !0, (nt = globalThis.litElementHydrateSupport) == null || nt.call(globalThis, { LitElement: T });\nconst G = globalThis.litElementPolyfillSupport;\nG == null || G({ LitElement: T });\n(globalThis.litElementVersions ?? (globalThis.litElementVersions = [])).push(\"4.0.4\");\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst Mt = (i) => (t, e) => {\n e !== void 0 ? e.addInitializer(() => {\n customElements.define(i, t);\n }) : customElements.define(i, t);\n};\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst xt = { attribute: !0, type: String, converter: L, reflect: !1, hasChanged: K }, Ht = (i = xt, t, e) => {\n const { kind: s, metadata: r } = e;\n let o = globalThis.litPropertyMetadata.get(r);\n if (o === void 0 && globalThis.litPropertyMetadata.set(r, o = /* @__PURE__ */ new Map()), o.set(e.name, i), s === \"accessor\") {\n const { name: n } = e;\n return { set(a) {\n const h = t.get.call(this);\n t.set.call(this, a), this.requestUpdate(n, h, i);\n }, init(a) {\n return a !== void 0 && this.P(n, void 0, i), a;\n } };\n }\n if (s === \"setter\") {\n const { name: n } = e;\n return function(a) {\n const h = this[n];\n t.call(this, a), this.requestUpdate(n, h, i);\n };\n }\n throw Error(\"Unsupported decorator location: \" + s);\n};\nfunction _(i) {\n return (t, e) => typeof e == \"object\" ? Ht(i, t, e) : ((s, r, o) => {\n const n = r.hasOwnProperty(o);\n return r.constructor.createProperty(o, n ? { ...s, wrapped: !0 } : s), n ? Object.getOwnPropertyDescriptor(r, o) : void 0;\n })(i, t, e);\n}\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst Lt = (i) => i.strings === void 0;\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst kt = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 }, Dt = (i) => (...t) => ({ _$litDirective$: i, values: t });\nlet zt = class {\n constructor(t) {\n }\n get _$AU() {\n return this._$AM._$AU;\n }\n _$AT(t, e, s) {\n this._$Ct = t, this._$AM = e, this._$Ci = s;\n }\n _$AS(t, e) {\n return this.update(t, e);\n }\n update(t, e) {\n return this.render(...e);\n }\n};\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst O = (i, t) => {\n var s;\n const e = i._$AN;\n if (e === void 0)\n return !1;\n for (const r of e)\n (s = r._$AO) == null || s.call(r, t, !1), O(r, t);\n return !0;\n}, D = (i) => {\n let t, e;\n do {\n if ((t = i._$AM) === void 0)\n break;\n e = t._$AN, e.delete(i), i = t;\n } while ((e == null ? void 0 : e.size) === 0);\n}, pt = (i) => {\n for (let t; t = i._$AM; i = t) {\n let e = t._$AN;\n if (e === void 0)\n t._$AN = e = /* @__PURE__ */ new Set();\n else if (e.has(i))\n break;\n e.add(i), Bt(t);\n }\n};\nfunction Yt(i) {\n this._$AN !== void 0 ? (D(this), this._$AM = i, pt(this)) : this._$AM = i;\n}\nfunction jt(i, t = !1, e = 0) {\n const s = this._$AH, r = this._$AN;\n if (r !== void 0 && r.size !== 0)\n if (t)\n if (Array.isArray(s))\n for (let o = e; o < s.length; o++)\n O(s[o], !1), D(s[o]);\n else\n s != null && (O(s, !1), D(s));\n else\n O(this, i);\n}\nconst Bt = (i) => {\n i.type == kt.CHILD && (i._$AP ?? (i._$AP = jt), i._$AQ ?? (i._$AQ = Yt));\n};\nclass Gt extends zt {\n constructor() {\n super(...arguments), this._$AN = void 0;\n }\n _$AT(t, e, s) {\n super._$AT(t, e, s), pt(this), this.isConnected = t._$AU;\n }\n _$AO(t, e = !0) {\n var s, r;\n t !== this.isConnected && (this.isConnected = t, t ? (s = this.reconnected) == null || s.call(this) : (r = this.disconnected) == null || r.call(this)), e && (O(this, t), D(this));\n }\n setValue(t) {\n if (Lt(this._$Ct))\n this._$Ct._$AI(t, this);\n else {\n const e = [...this._$Ct._$AH];\n e[this._$Ci] = t, this._$Ct._$AI(e, this, 0);\n }\n }\n disconnected() {\n }\n reconnected() {\n }\n}\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst Wt = () => new Vt();\nclass Vt {\n}\nconst W = /* @__PURE__ */ new WeakMap(), qt = Dt(class extends Gt {\n render(i) {\n return l;\n }\n update(i, [t]) {\n var s;\n const e = t !== this.Y;\n return e && this.Y !== void 0 && this.rt(void 0), (e || this.lt !== this.ct) && (this.Y = t, this.ht = (s = i.options) == null ? void 0 : s.host, this.rt(this.ct = i.element)), l;\n }\n rt(i) {\n if (typeof this.Y == \"function\") {\n const t = this.ht ?? globalThis;\n let e = W.get(t);\n e === void 0 && (e = /* @__PURE__ */ new WeakMap(), W.set(t, e)), e.get(this.Y) !== void 0 && this.Y.call(this.ht, void 0), e.set(this.Y, i), i !== void 0 && this.Y.call(this.ht, i);\n } else\n this.Y.value = i;\n }\n get lt() {\n var i, t;\n return typeof this.Y == \"function\" ? (i = W.get(this.ht ?? globalThis)) == null ? void 0 : i.get(this.Y) : (t = this.Y) == null ? void 0 : t.value;\n }\n disconnected() {\n this.lt === this.ct && this.rt(void 0);\n }\n reconnected() {\n this.rt(this.ct);\n }\n});\nvar Kt = Object.defineProperty, Jt = Object.getOwnPropertyDescriptor, $ = (i, t, e, s) => {\n for (var r = s > 1 ? void 0 : s ? Jt(t, e) : t, o = i.length - 1, n; o >= 0; o--)\n (n = i[o]) && (r = (s ? n(t, e, r) : n(r)) || r);\n return s && r && Kt(t, e, r), r;\n};\nfunction Ft(i) {\n return customElements.get(i) ? (t) => t : Mt(i);\n}\nlet p = class extends T {\n constructor() {\n super(), this.GISCUS_SESSION_KEY = \"giscus-session\", this.GISCUS_DEFAULT_HOST = \"https://giscus.app\", this.ERROR_SUGGESTION = \"Please consider reporting this error at https://github.com/giscus/giscus/issues/new.\", this.__session = \"\", this._iframeRef = Wt(), this.messageEventHandler = this.handleMessageEvent.bind(this), this.hasLoaded = !1, this.host = this.GISCUS_DEFAULT_HOST, this.strict = \"0\", this.reactionsEnabled = \"1\", this.emitMetadata = \"0\", this.inputPosition = \"bottom\", this.theme = \"light\", this.lang = \"en\", this.loading = \"eager\", this.setupSession(), window.addEventListener(\"message\", this.messageEventHandler);\n }\n get iframeRef() {\n var i;\n return (i = this._iframeRef) == null ? void 0 : i.value;\n }\n get _host() {\n try {\n return new URL(this.host), this.host;\n } catch {\n return this.GISCUS_DEFAULT_HOST;\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback(), window.removeEventListener(\"message\", this.messageEventHandler);\n }\n _formatError(i) {\n return `[giscus] An error occurred. Error message: \"${i}\".`;\n }\n setupSession() {\n const i = location.href, t = new URL(i), e = localStorage.getItem(this.GISCUS_SESSION_KEY), s = t.searchParams.get(\"giscus\") ?? \"\";\n if (this.__session = \"\", s) {\n localStorage.setItem(this.GISCUS_SESSION_KEY, JSON.stringify(s)), this.__session = s, t.searchParams.delete(\"giscus\"), t.hash = \"\", history.replaceState(void 0, document.title, t.toString());\n return;\n }\n if (e)\n try {\n this.__session = JSON.parse(e);\n } catch (r) {\n localStorage.removeItem(this.GISCUS_SESSION_KEY), console.warn(\n `${this._formatError(\n r == null ? void 0 : r.message\n )} Session has been cleared.`\n );\n }\n }\n signOut() {\n localStorage.removeItem(this.GISCUS_SESSION_KEY), this.__session = \"\", this.update(/* @__PURE__ */ new Map());\n }\n handleMessageEvent(i) {\n if (i.origin !== this._host)\n return;\n const { data: t } = i;\n if (!(typeof t == \"object\" && t.giscus))\n return;\n if (this.iframeRef && t.giscus.resizeHeight && (this.iframeRef.style.height = `${t.giscus.resizeHeight}px`), t.giscus.signOut) {\n console.info(\"[giscus] User has logged out. Session has been cleared.\"), this.signOut();\n return;\n }\n if (!t.giscus.error)\n return;\n const e = t.giscus.error;\n if (e.includes(\"Bad credentials\") || e.includes(\"Invalid state value\") || e.includes(\"State has expired\")) {\n if (localStorage.getItem(this.GISCUS_SESSION_KEY) !== null) {\n console.warn(`${this._formatError(e)} Session has been cleared.`), this.signOut();\n return;\n }\n console.error(\n `${this._formatError(e)} No session is stored initially. ${this.ERROR_SUGGESTION}`\n );\n }\n if (e.includes(\"Discussion not found\")) {\n console.warn(\n `[giscus] ${e}. A new discussion will be created if a comment/reaction is submitted.`\n );\n return;\n }\n console.error(`${this._formatError(e)} ${this.ERROR_SUGGESTION}`);\n }\n sendMessage(i) {\n var t;\n !((t = this.iframeRef) != null && t.contentWindow) || !this.hasLoaded || this.iframeRef.contentWindow.postMessage({ giscus: i }, this._host);\n }\n updateConfig() {\n const i = {\n setConfig: {\n repo: this.repo,\n repoId: this.repoId,\n category: this.category,\n categoryId: this.categoryId,\n term: this.getTerm(),\n number: +this.getNumber(),\n strict: this.strict === \"1\",\n reactionsEnabled: this.reactionsEnabled === \"1\",\n emitMetadata: this.emitMetadata === \"1\",\n inputPosition: this.inputPosition,\n theme: this.theme,\n lang: this.lang\n }\n };\n this.sendMessage(i);\n }\n firstUpdated() {\n var i;\n (i = this.iframeRef) == null || i.addEventListener(\"load\", () => {\n var t;\n (t = this.iframeRef) == null || t.classList.remove(\"loading\"), this.hasLoaded = !0, this.updateConfig();\n });\n }\n requestUpdate(i, t, e) {\n if (!this.hasUpdated || i === \"host\") {\n super.requestUpdate(i, t, e);\n return;\n }\n this.updateConfig();\n }\n getMetaContent(i, t = !1) {\n const e = t ? `meta[property='og:${i}'],` : \"\", s = document.querySelector(\n e + `meta[name='${i}']`\n );\n return s ? s.content : \"\";\n }\n _getCleanedUrl() {\n const i = new URL(location.href);\n return i.searchParams.delete(\"giscus\"), i.hash = \"\", i;\n }\n getTerm() {\n switch (this.mapping) {\n case \"url\":\n return this._getCleanedUrl().toString();\n case \"title\":\n return document.title;\n case \"og:title\":\n return this.getMetaContent(\"title\", !0);\n case \"specific\":\n return this.term ?? \"\";\n case \"number\":\n return \"\";\n case \"pathname\":\n default:\n return location.pathname.length < 2 ? \"index\" : location.pathname.substring(1).replace(/\\.\\w+$/, \"\");\n }\n }\n getNumber() {\n return this.mapping === \"number\" ? this.term ?? \"\" : \"\";\n }\n getIframeSrc() {\n const i = this._getCleanedUrl().toString(), t = `${i}${this.id ? \"#\" + this.id : \"\"}`, e = this.getMetaContent(\"description\", !0), s = this.getMetaContent(\"giscus:backlink\") || i, r = {\n origin: t,\n session: this.__session,\n repo: this.repo,\n repoId: this.repoId ?? \"\",\n category: this.category ?? \"\",\n categoryId: this.categoryId ?? \"\",\n term: this.getTerm(),\n number: this.getNumber(),\n strict: this.strict,\n reactionsEnabled: this.reactionsEnabled,\n emitMetadata: this.emitMetadata,\n inputPosition: this.inputPosition,\n theme: this.theme,\n description: e,\n backLink: s\n }, o = this._host, n = this.lang ? `/${this.lang}` : \"\", a = new URLSearchParams(r);\n return `${o}${n}/widget?${a.toString()}`;\n }\n render() {\n return wt`\n \n `;\n }\n};\np.styles = $t`\n :host,\n iframe {\n width: 100%;\n border: none;\n min-height: 150px;\n color-scheme: light dark;\n }\n\n iframe.loading {\n opacity: 0;\n }\n `;\n$([\n _({ reflect: !0 })\n], p.prototype, \"host\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"repo\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"repoId\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"category\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"categoryId\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"mapping\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"term\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"strict\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"reactionsEnabled\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"emitMetadata\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"inputPosition\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"theme\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"lang\", 2);\n$([\n _({ reflect: !0 })\n], p.prototype, \"loading\", 2);\np = $([\n Ft(\"giscus-widget\")\n], p);\nexport {\n p as GiscusWidget\n};\n"],"names":["H","globalThis","V","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","q","Symbol","J","WeakMap","ot","constructor","t","e","s","this","_$cssResult$","Error","cssText","styleSheet","o","length","get","replaceSync","set","toString","F","i","cssRules","ut","is","gt","defineProperty","ft","getOwnPropertyDescriptor","mt","getOwnPropertyNames","At","getOwnPropertySymbols","yt","getPrototypeOf","St","Object","A","Q","trustedTypes","vt","emptyScript","Y","reactiveElementPolyfillSupport","U","L","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","K","Z","attribute","type","String","converter","reflect","hasChanged","metadata","litPropertyMetadata","E","HTMLElement","static","_$Ei","l","push","observedAttributes","finalize","_$Eh","keys","state","elementProperties","noAccessor","r","getPropertyDescriptor","n","call","a","requestUpdate","configurable","enumerable","hasOwnProperty","Map","finalized","properties","createProperty","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","_t","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$EC","removeAttribute","getPropertyOptions","P","_$ET","has","_$Ej","async","reject","scheduleUpdate","performUpdate","wrapped","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","k","X","createPolicy","createHTML","ht","m","Math","random","slice","at","Et","v","N","createComment","R","ct","j","w","tt","et","y","RegExp","st","it","lt","wt","_$litType$","strings","values","b","for","rt","S","createTreeWalker","dt","I","parts","h","d","u","c","g","lastIndex","exec","test","f","startsWith","Ut","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","x","index","name","ctor","Tt","Ot","Nt","z","tagName","append","data","indexOf","innerHTML","C","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","M","_$AU","_$AM","_$Cv","_$AH","_$AN","_$AA","_$AB","options","parentNode","startNode","endNode","_$AI","_$AR","_","$","T","iterator","bt","insertBefore","nextSibling","createTextNode","_$AC","_$AD","p","_$AV","creationScope","importNode","Rt","_$AP","remove","setConnected","element","fill","arguments","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","B","litHtmlPolyfillSupport","litHtmlVersions","renderOptions","_$Do","renderBefore","render","_$litPart$","It","nt","_$litElement$","litElementHydrateSupport","LitElement","G","litElementPolyfillSupport","litElementVersions","xt","Ht","kind","init","kt","zt","_$Ct","_$Ci","O","D","pt","Bt","Yt","jt","_$AQ","Gt","reconnected","disconnected","setValue","Lt","Vt","W","qt","Dt","value","Kt","Jt","GISCUS_SESSION_KEY","GISCUS_DEFAULT_HOST","ERROR_SUGGESTION","__session","_iframeRef","messageEventHandler","handleMessageEvent","bind","hasLoaded","strict","reactionsEnabled","emitMetadata","inputPosition","theme","lang","loading","setupSession","window","iframeRef","_host","URL","_formatError","location","href","localStorage","getItem","searchParams","setItem","hash","history","replaceState","title","removeItem","console","warn","message","signOut","origin","giscus","resizeHeight","style","height","info","error","includes","sendMessage","contentWindow","postMessage","updateConfig","setConfig","repo","repoId","category","categoryId","term","getTerm","number","getNumber","classList","getMetaContent","querySelector","_getCleanedUrl","mapping","pathname","substring","replace","getIframeSrc","id","session","description","backLink","URLSearchParams","reduce","customElements","addInitializer","define","Mt","Ft"],"sourceRoot":""} \ No newline at end of file diff --git a/404.html b/404.html index bafd4714..e6312a54 100644 --- a/404.html +++ b/404.html @@ -1,8 +1,8 @@

404

Nothing to see here, page is under construction

But our blog is always there for you

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

404

Nothing to see here, page is under construction

But our blog is always there for you

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/404/index.html b/404/index.html index 22f2a2c8..f3838a71 100644 --- a/404/index.html +++ b/404/index.html @@ -1,8 +1,8 @@

404

Nothing to see here, page is under construction

But our blog is always there for you

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);

404

Nothing to see here, page is under construction

But our blog is always there for you

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/_gatsby/slices/_gatsby-scripts-1.html b/_gatsby/slices/_gatsby-scripts-1.html index 60cd090e..4484208f 100644 --- a/_gatsby/slices/_gatsby-scripts-1.html +++ b/_gatsby/slices/_gatsby-scripts-1.html @@ -2,6 +2,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app-f487b6864a0d816cc020.js b/app-7990c3f1d980ee5d9dc0.js similarity index 99% rename from app-f487b6864a0d816cc020.js rename to app-7990c3f1d980ee5d9dc0.js index 14c2fffb..3febecde 100644 --- a/app-f487b6864a0d816cc020.js +++ b/app-7990c3f1d980ee5d9dc0.js @@ -1,5 +1,5 @@ -/*! For license information please see app-f487b6864a0d816cc020.js.LICENSE.txt */ -(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[143],{6751:function(e,t,n){"use strict";n.d(t,{Z:function(){return oe}});var r=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?c(w,--y):0,g--,10===b&&(g=1,m--),b}function E(){return b=y2||_(b)>3?"":" "}function j(e,t){for(;--t&&E()&&!(b<48||b>102||b>57&&b<65||b>70&&b<97););return P(e,C()+(t<6&&32==Z()&&32==E()))}function F(e){for(;E();)switch(b){case e:return y;case 34:case 39:34!==e&&39!==e&&F(b);break;case 40:41===e&&F(e);break;case 92:E()}return y}function N(e,t){for(;E()&&e+b!==57&&(e+b!==84||47!==Z()););return"/*"+P(t,y-1)+"*"+a(47===e?e:E())}function $(e){for(;!_(Z());)E();return P(e,y)}var M="-ms-",D="-moz-",L="-webkit-",I="comm",B="rule",z="decl",U="@keyframes";function W(e,t){for(var n="",r=f(e),o=0;o0&&p(D)-v&&h(b>32?G(D+";",r,n,v-1):G(l(D," ","")+";",r,n,v-2),f);break;case 59:D+=";";default:if(h(M=K(D,t,n,m,g,o,d,O,R=[],F=[],v),i),123===_)if(0===g)H(D,t,M,M,R,i,v,d,F);else switch(99===y&&110===c(D,3)?100:y){case 100:case 108:case 109:case 115:H(e,M,M,r&&h(K(e,M,M,0,0,o,d,O,o,R=[],v),F),o,F,v,d,r?R:F);break;default:H(D,M,M,M,[""],F,0,d,F)}}m=g=b=0,x=P=1,O=D="",v=s;break;case 58:v=1+p(D),b=w;default:if(x<1)if(123==_)--x;else if(125==_&&0==x++&&125==k())continue;switch(D+=a(_),_*x){case 38:P=g>0?1:(D+="\f",-1);break;case 44:d[m++]=(p(D)-1)*P,P=1;break;case 64:45===Z()&&(D+=T(E())),y=Z(),g=v=p(O=D+=$(C())),_++;break;case 45:45===w&&2==p(D)&&(x=0)}}return i}function K(e,t,n,r,a,i,u,c,p,h,m){for(var g=a-1,v=0===a?i:[""],y=f(v),b=0,w=0,S=0;b0?v[k]+" "+E:l(E,/&\f/g,v[k])))&&(p[S++]=Z);return x(e,t,n,0===a?B:c,p,h,m)}function J(e,t,n){return x(e,t,n,I,a(b),d(e,2,-2),0)}function G(e,t,n,r){return x(e,t,n,z,d(e,0,r),d(e,r+1,-1),r)}var X=function(e,t,n){for(var r=0,o=0;r=o,o=Z(),38===r&&12===o&&(t[n]=1),!_(o);)E();return P(e,y)},Q=function(e,t){return R(function(e,t){var n=-1,r=44;do{switch(_(r)){case 0:38===r&&12===Z()&&(t[n]=1),e[n]+=X(y-1,t,n);break;case 2:e[n]+=T(r);break;case 4:if(44===r){e[++n]=58===Z()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=a(r)}}while(r=E());return e}(O(e),t))},Y=new WeakMap,ee=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||Y.get(n))&&!r){Y.set(e,!0);for(var o=[],a=Q(t,o),i=n.props,s=0,l=0;s6)switch(c(e,t+1)){case 109:if(45!==c(e,t+4))break;case 102:return l(e,/(.+:)(.+)-([^]+)/,"$1"+L+"$2-$3$1"+D+(108==c(e,t+3)?"$3":"$2-$3"))+e;case 115:return~u(e,"stretch")?ne(l(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==c(e,t+1))break;case 6444:switch(c(e,p(e)-3-(~u(e,"!important")&&10))){case 107:return l(e,":",":"+L)+e;case 101:return l(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+L+(45===c(e,14)?"inline-":"")+"box$3$1"+L+"$2$3$1"+M+"$2box$3")+e}break;case 5936:switch(c(e,t+11)){case 114:return L+e+M+l(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return L+e+M+l(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return L+e+M+l(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return L+e+M+e+e}return e}var re=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case z:e.return=ne(e.value,e.length);break;case U:return W([S(e,{value:l(e.value,"@","@"+L)})],r);case B:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return W([S(e,{props:[l(t,/:(read-\w+)/,":-moz-$1")]})],r);case"::placeholder":return W([S(e,{props:[l(t,/:(plac\w+)/,":"+L+"input-$1")]}),S(e,{props:[l(t,/:(plac\w+)/,":-moz-$1")]}),S(e,{props:[l(t,/:(plac\w+)/,M+"input-$1")]})],r)}return""}))}}],oe=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var o=e.stylisPlugins||re;var a,i,s={},l=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n=4;++r,o-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(o){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(o)+l;return{name:u,styles:o,next:p}}},4316:function(e,t,n){"use strict";n.d(t,{Z:function(){return v}});var r=n(7462),o=n(7294),a=n(5042),i=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,s=(0,a.Z)((function(e){return i.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),l=n(6498),u=n(444),c=n(6797),d=n(7278),p=s,f=function(e){return"theme"!==e},h=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?p:f},m=function(e,t,n){var r;if(t){var o=t.shouldForwardProp;r=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!=typeof r&&n&&(r=e.__emotion_forwardProp),r},g=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return(0,u.hC)(t,n,r),(0,d.L)((function(){return(0,u.My)(t,n,r)})),null},v=function e(t,n){var a,i,s=t.__emotion_real===t,d=s&&t.__emotion_base||t;void 0!==n&&(a=n.label,i=n.target);var p=m(t,n,s),f=p||h(d),v=!f("as");return function(){var y=arguments,b=s&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==a&&b.push("label:"+a+";"),null==y[0]||void 0===y[0].raw)b.push.apply(b,y);else{0,b.push(y[0][0]);for(var w=y.length,x=1;x=n?x.text.primary:w.text.primary}const O=({color:e,name:t,mainShade:n=500,lightShade:o=300,darkShade:i=700})=>{if(!(e=(0,r.Z)({},e)).main&&e[n]&&(e.main=e[n]),!e.hasOwnProperty("main"))throw new Error((0,a.Z)(11,t?` (${t})`:"",n));if("string"!=typeof e.main)throw new Error((0,a.Z)(12,t?` (${t})`:"",JSON.stringify(e.main)));return S(e,"light",o,s),S(e,"dark",i,s),e.contrastText||(e.contrastText=_(e.main)),e},R={dark:x,light:w};return(0,i.Z)((0,r.Z)({common:(0,r.Z)({},d),mode:t,primary:O({color:u,name:"primary"}),secondary:O({color:k,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:O({color:E,name:"error"}),warning:O({color:P,name:"warning"}),info:O({color:Z,name:"info"}),success:O({color:C,name:"success"}),grey:p,contrastThreshold:n,getContrastText:_,augmentColor:O,tonalOffset:s},R[t]),l)}const E=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"];const Z={textTransform:"uppercase"},C='"Roboto", "Helvetica", "Arial", sans-serif';function P(e,t){const n="function"==typeof t?t(e):t,{fontFamily:a=C,fontSize:s=14,fontWeightLight:l=300,fontWeightRegular:u=400,fontWeightMedium:c=500,fontWeightBold:d=700,htmlFontSize:p=16,allVariants:f,pxToRem:h}=n,m=(0,o.Z)(n,E);const g=s/14,v=h||(e=>e/p*g+"rem"),y=(e,t,n,o,i)=>{return(0,r.Z)({fontFamily:a,fontWeight:e,fontSize:v(t),lineHeight:n},a===C?{letterSpacing:(s=o/t,Math.round(1e5*s)/1e5)+"em"}:{},i,f);var s},b={h1:y(l,96,1.167,-1.5),h2:y(l,60,1.2,-.5),h3:y(u,48,1.167,0),h4:y(u,34,1.235,.25),h5:y(u,24,1.334,0),h6:y(c,20,1.6,.15),subtitle1:y(u,16,1.75,.15),subtitle2:y(c,14,1.57,.1),body1:y(u,16,1.5,.15),body2:y(u,14,1.43,.15),button:y(c,14,1.75,.4,Z),caption:y(u,12,1.66,.4),overline:y(u,12,2.66,1,Z),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return(0,i.Z)((0,r.Z)({htmlFontSize:p,pxToRem:v,fontFamily:a,fontSize:s,fontWeightLight:l,fontWeightRegular:u,fontWeightMedium:c,fontWeightBold:d},b),m,{clone:!1})}function _(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,0.2)`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,0.14)`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,0.12)`].join(",")}var O=["none",_(0,2,1,-1,0,1,1,0,0,1,3,0),_(0,3,1,-2,0,2,2,0,0,1,5,0),_(0,3,3,-2,0,3,4,0,0,1,8,0),_(0,2,4,-1,0,4,5,0,0,1,10,0),_(0,3,5,-1,0,5,8,0,0,1,14,0),_(0,3,5,-1,0,6,10,0,0,1,18,0),_(0,4,5,-2,0,7,10,1,0,2,16,1),_(0,5,5,-3,0,8,10,1,0,3,14,2),_(0,5,6,-3,0,9,12,1,0,3,16,2),_(0,6,6,-3,0,10,14,1,0,4,18,3),_(0,6,7,-4,0,11,15,1,0,4,20,3),_(0,7,8,-4,0,12,17,2,0,5,22,4),_(0,7,8,-4,0,13,19,2,0,5,24,4),_(0,7,9,-4,0,14,21,2,0,5,26,4),_(0,8,9,-5,0,15,22,2,0,6,28,5),_(0,8,10,-5,0,16,24,2,0,6,30,5),_(0,8,11,-5,0,17,26,2,0,6,32,5),_(0,9,11,-5,0,18,28,2,0,7,34,6),_(0,9,12,-6,0,19,29,2,0,7,36,6),_(0,10,13,-6,0,20,31,3,0,8,38,7),_(0,10,13,-6,0,21,33,3,0,8,40,7),_(0,10,14,-6,0,22,35,3,0,8,42,7),_(0,11,14,-7,0,23,36,3,0,9,44,8),_(0,11,15,-7,0,24,38,3,0,9,46,8)];const R=["duration","easing","delay"],T={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},A={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function j(e){return`${Math.round(e)}ms`}function F(e){if(!e)return 0;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}function N(e){const t=(0,r.Z)({},T,e.easing),n=(0,r.Z)({},A,e.duration);return(0,r.Z)({getAutoHeightDuration:F,create:(e=["all"],r={})=>{const{duration:a=n.standard,easing:i=t.easeInOut,delay:s=0}=r;(0,o.Z)(r,R);return(Array.isArray(e)?e:[e]).map((e=>`${e} ${"string"==typeof a?a:j(a)} ${i} ${"string"==typeof s?s:j(s)}`)).join(",")}},e,{easing:t,duration:n})}var $={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};const M=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];function D(e={},...t){const{mixins:n={},palette:c={},transitions:d={},typography:p={}}=e,f=(0,o.Z)(e,M);if(e.vars)throw new Error((0,a.Z)(18));const h=k(c),m=(0,u.Z)(e);let g=(0,i.Z)(m,{mixins:(v=m.breakpoints,y=n,(0,r.Z)({toolbar:{minHeight:56,[v.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[v.up("sm")]:{minHeight:64}}},y)),palette:h,shadows:O.slice(),typography:P(h,p),transitions:N(d),zIndex:(0,r.Z)({},$)});var v,y;return g=(0,i.Z)(g,f),g=t.reduce(((e,t)=>(0,i.Z)(e,t)),g),g.unstable_sxConfig=(0,r.Z)({},s.Z,null==f?void 0:f.unstable_sxConfig),g.unstable_sx=function(e){return(0,l.Z)({sx:e,theme:this})},g}var L=D()},606:function(e,t){"use strict";t.Z="$$material"},4136:function(e,t,n){"use strict";var r=n(5536);t.Z=e=>(0,r.Z)(e)&&"classes"!==e},5536:function(e,t){"use strict";t.Z=function(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}},948:function(e,t,n){"use strict";var r=n(8128),o=n(8794),a=n(606),i=n(4136);const s=(0,r.ZP)({themeId:a.Z,defaultTheme:o.Z,rootShouldForwardProp:i.Z});t.ZP=s},1657:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(3207),o=n(8794),a=n(606);function i({props:e,name:t}){return(0,r.Z)({props:e,name:t,defaultTheme:o.Z,themeId:a.Z})}},8216:function(e,t,n){"use strict";var r=n(2908);t.Z=r.Z},5949:function(e,t,n){"use strict";n.d(t,{Z:function(){return b}});var r=n(7462),o=n(7294),a=n(3366),i=n(512),s=n(8510),l=n(8216),u=n(1657),c=n(948),d=n(1977),p=n(3559);function f(e){return(0,p.ZP)("MuiSvgIcon",e)}(0,d.Z)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var h=n(5893);const m=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],g=(0,c.ZP)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"inherit"!==n.color&&t[`color${(0,l.Z)(n.color)}`],t[`fontSize${(0,l.Z)(n.fontSize)}`]]}})((({theme:e,ownerState:t})=>{var n,r,o,a,i,s,l,u,c,d,p,f,h;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(n=e.transitions)||null==(r=n.create)?void 0:r.call(n,"fill",{duration:null==(o=e.transitions)||null==(o=o.duration)?void 0:o.shorter}),fontSize:{inherit:"inherit",small:(null==(a=e.typography)||null==(i=a.pxToRem)?void 0:i.call(a,20))||"1.25rem",medium:(null==(s=e.typography)||null==(l=s.pxToRem)?void 0:l.call(s,24))||"1.5rem",large:(null==(u=e.typography)||null==(c=u.pxToRem)?void 0:c.call(u,35))||"2.1875rem"}[t.fontSize],color:null!=(d=null==(p=(e.vars||e).palette)||null==(p=p[t.color])?void 0:p.main)?d:{action:null==(f=(e.vars||e).palette)||null==(f=f.action)?void 0:f.active,disabled:null==(h=(e.vars||e).palette)||null==(h=h.action)?void 0:h.disabled,inherit:void 0}[t.color]}})),v=o.forwardRef((function(e,t){const n=(0,u.Z)({props:e,name:"MuiSvgIcon"}),{children:c,className:d,color:p="inherit",component:v="svg",fontSize:y="medium",htmlColor:b,inheritViewBox:w=!1,titleAccess:x,viewBox:S="0 0 24 24"}=n,k=(0,a.Z)(n,m),E=o.isValidElement(c)&&"svg"===c.type,Z=(0,r.Z)({},n,{color:p,component:v,fontSize:y,instanceFontSize:e.fontSize,inheritViewBox:w,viewBox:S,hasSvgAsChild:E}),C={};w||(C.viewBox=S);const P=(e=>{const{color:t,fontSize:n,classes:r}=e,o={root:["root","inherit"!==t&&`color${(0,l.Z)(t)}`,`fontSize${(0,l.Z)(n)}`]};return(0,s.Z)(o,f,r)})(Z);return(0,h.jsxs)(g,(0,r.Z)({as:v,className:(0,i.Z)(P.root,d),focusable:"false",color:b,"aria-hidden":!x||void 0,role:x?"img":void 0,ref:t},C,k,E&&c.props,{ownerState:Z,children:[E?c.props.children:c,x?(0,h.jsx)("title",{children:x}):null]}))}));v.muiName="SvgIcon";var y=v;function b(e,t){function n(n,o){return(0,h.jsx)(y,(0,r.Z)({"data-testid":`${t}Icon`,ref:o},n,{children:e}))}return n.muiName=y.muiName,o.memo(o.forwardRef(n))}},1529:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(7294);var o=function({controlled:e,default:t,name:n,state:o="value"}){const{current:a}=r.useRef(void 0!==e),[i,s]=r.useState(t);return[a?e:i,r.useCallback((e=>{a||s(e)}),[])]}},8974:function(e,t,n){"use strict";var r=n(4895);t.Z=r.Z},1705:function(e,t,n){"use strict";var r=n(2760);t.Z=r.Z},1234:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});n(7294);var r=n(917),o=n(5893);function a(e){const{styles:t,defaultTheme:n={}}=e,a="function"==typeof t?e=>{return t(null==(r=e)||0===Object.keys(r).length?n:e);var r}:t;return(0,o.jsx)(r.xB,{styles:a})}},4082:function(e,t,n){"use strict";n.r(t),n.d(t,{GlobalStyles:function(){return d.Z},StyledEngineProvider:function(){return c},ThemeContext:function(){return i.T},css:function(){return a.iv},default:function(){return p},internal_processStyles:function(){return f},keyframes:function(){return a.F4}});var r=n(4316),o=(n(434),n(7294),n(6797),n(7278),r.Z.bind());["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(e){o[e]=o(e)}));var a=n(917),i=n(6498),s=n(6751),l=n(5893);let u;function c(e){const{injectFirst:t,children:n}=e;return t&&u?(0,l.jsx)(i.C,{value:u,children:n}):n}"object"==typeof document&&(u=(0,s.Z)({key:"css",prepend:!0}));var d=n(1234);function p(e,t){return o(e,t)}const f=(e,t)=>{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}},2101:function(e,t,n){"use strict";var r=n(4836);t.Fq=f,t._j=h,t.mi=function(e,t){const n=p(e),r=p(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)},t.$n=m;var o=r(n(743)),a=r(n(7859));function i(e,t=0,n=1){return(0,a.default)(e,t,n)}function s(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map((e=>e+e))),n?`rgb${4===n.length?"a":""}(${n.map(((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3)).join(", ")})`:""}function l(e){if(e.type)return e;if("#"===e.charAt(0))return l(s(e));const t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(n))throw new Error((0,o.default)(9,e));let r,a=e.substring(t+1,e.length-1);if("color"===n){if(a=a.split(" "),r=a.shift(),4===a.length&&"/"===a[3].charAt(0)&&(a[3]=a[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(r))throw new Error((0,o.default)(10,r))}else a=a.split(",");return a=a.map((e=>parseFloat(e))),{type:n,values:a,colorSpace:r}}const u=e=>{const t=l(e);return t.values.slice(0,3).map(((e,n)=>-1!==t.type.indexOf("hsl")&&0!==n?`${e}%`:e)).join(" ")};function c(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return-1!==t.indexOf("rgb")?r=r.map(((e,t)=>t<3?parseInt(e,10):e)):-1!==t.indexOf("hsl")&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=-1!==t.indexOf("color")?`${n} ${r.join(" ")}`:`${r.join(", ")}`,`${t}(${r})`}function d(e){e=l(e);const{values:t}=e,n=t[0],r=t[1]/100,o=t[2]/100,a=r*Math.min(o,1-o),i=(e,t=(e+n/30)%12)=>o-a*Math.max(Math.min(t-3,9-t,1),-1);let s="rgb";const u=[Math.round(255*i(0)),Math.round(255*i(8)),Math.round(255*i(4))];return"hsla"===e.type&&(s+="a",u.push(t[3])),c({type:s,values:u})}function p(e){let t="hsl"===(e=l(e)).type||"hsla"===e.type?l(d(e)).values:e.values;return t=t.map((t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4))),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function f(e,t){return e=l(e),t=i(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,c(e)}function h(e,t){if(e=l(e),t=i(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb")||-1!==e.type.indexOf("color"))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return c(e)}function m(e,t){if(e=l(e),t=i(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(-1!==e.type.indexOf("color"))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return c(e)}function g(e,t=.15){return p(e)>.5?h(e,t):m(e,t)}},8128:function(e,t,n){"use strict";var r=n(4836);t.ZP=function(e={}){const{themeId:t,defaultTheme:n=m,rootShouldForwardProp:r=h,slotShouldForwardProp:l=h}=e,c=e=>(0,u.default)((0,o.default)({},e,{theme:v((0,o.default)({},e,{defaultTheme:n,themeId:t}))}));return c.__mui_systemSx=!0,(e,u={})=>{(0,i.internal_processStyles)(e,(e=>e.filter((e=>!(null!=e&&e.__mui_systemSx)))));const{name:d,slot:f,skipVariantsResolver:m,skipSx:w,overridesResolver:x=y(g(f))}=u,S=(0,a.default)(u,p),k=void 0!==m?m:f&&"Root"!==f&&"root"!==f||!1,E=w||!1;let Z=h;"Root"===f||"root"===f?Z=r:f?Z=l:function(e){return"string"==typeof e&&e.charCodeAt(0)>96}(e)&&(Z=void 0);const C=(0,i.default)(e,(0,o.default)({shouldForwardProp:Z,label:undefined},S)),P=e=>"function"==typeof e&&e.__emotion_real!==e||(0,s.isPlainObject)(e)?r=>b(e,(0,o.default)({},r,{theme:v({theme:r.theme,defaultTheme:n,themeId:t})})):e,_=(r,...a)=>{let i=P(r);const s=a?a.map(P):[];d&&x&&s.push((e=>{const r=v((0,o.default)({},e,{defaultTheme:n,themeId:t}));if(!r.components||!r.components[d]||!r.components[d].styleOverrides)return null;const a=r.components[d].styleOverrides,i={};return Object.entries(a).forEach((([t,n])=>{i[t]=b(n,(0,o.default)({},e,{theme:r}))})),x(e,i)})),d&&!k&&s.push((e=>{var r;const a=v((0,o.default)({},e,{defaultTheme:n,themeId:t}));return b({variants:null==a||null==(r=a.components)||null==(r=r[d])?void 0:r.variants},(0,o.default)({},e,{theme:a}))})),E||s.push(c);const l=s.length-a.length;if(Array.isArray(r)&&l>0){const e=new Array(l).fill("");i=[...r,...e],i.raw=[...r.raw,...e]}const u=C(i,...s);return e.muiName&&(u.muiName=e.muiName),u};return C.withConfig&&(_.withConfig=C.withConfig),_}};var o=r(n(434)),a=r(n(7071)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=f(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r}(n(4082)),s=n(211),l=(r(n(9698)),r(n(2240)),r(n(9926))),u=r(n(386));const c=["ownerState"],d=["variants"],p=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(f=function(e){return e?n:t})(e)}function h(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}const m=(0,l.default)(),g=e=>e?e.charAt(0).toLowerCase()+e.slice(1):e;function v({defaultTheme:e,theme:t,themeId:n}){return r=t,0===Object.keys(r).length?e:t[n]||t;var r}function y(e){return e?(t,n)=>n[e]:null}function b(e,t){let{ownerState:n}=t,r=(0,a.default)(t,c);const i="function"==typeof e?e((0,o.default)({ownerState:n},r)):e;if(Array.isArray(i))return i.flatMap((e=>b(e,(0,o.default)({ownerState:n},r))));if(i&&"object"==typeof i&&Array.isArray(i.variants)){const{variants:e=[]}=i;let t=(0,a.default)(i,d);return e.forEach((e=>{let a=!0;"function"==typeof e.props?a=e.props((0,o.default)({ownerState:n},r,n)):Object.keys(e.props).forEach((t=>{(null==n?void 0:n[t])!==e.props[t]&&r[t]!==e.props[t]&&(a=!1)})),a&&(Array.isArray(t)||(t=[t]),t.push("function"==typeof e.style?e.style((0,o.default)({ownerState:n},r,n)):e.style))})),t}return i}},5408:function(e,t,n){"use strict";n.d(t,{L7:function(){return l},P$:function(){return c},VO:function(){return o},W8:function(){return s},dt:function(){return u},k9:function(){return i}});var r=n(8027);const o={xs:0,sm:600,md:900,lg:1200,xl:1536},a={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${o[e]}px)`};function i(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const e=r.breakpoints||a;return t.reduce(((r,o,a)=>(r[e.up(e.keys[a])]=n(t[a]),r)),{})}if("object"==typeof t){const e=r.breakpoints||a;return Object.keys(t).reduce(((r,a)=>{if(-1!==Object.keys(e.values||o).indexOf(a)){r[e.up(a)]=n(t[a],a)}else{const e=a;r[e]=t[e]}return r}),{})}return n(t)}function s(e={}){var t;return(null==(t=e.keys)?void 0:t.reduce(((t,n)=>(t[e.up(n)]={},t)),{}))||{}}function l(e,t){return e.reduce(((e,t)=>{const n=e[t];return(!n||0===Object.keys(n).length)&&delete e[t],e}),t)}function u(e,...t){const n=s(e),o=[n,...t].reduce(((e,t)=>(0,r.Z)(e,t)),{});return l(Object.keys(n),o)}function c({values:e,breakpoints:t,base:n}){const r=n||function(e,t){if("object"!=typeof e)return{};const n={},r=Object.keys(t);return Array.isArray(e)?r.forEach(((t,r)=>{r{null!=e[t]&&(n[t]=!0)})),n}(e,t),o=Object.keys(r);if(0===o.length)return e;let a;return o.reduce(((t,n,r)=>(Array.isArray(e)?(t[n]=null!=e[r]?e[r]:e[a],a=r):"object"==typeof e?(t[n]=null!=e[n]?e[n]:e[a],a=n):t[n]=e,t)),{})}},7064:function(e,t,n){"use strict";function r(e,t){const n=this;if(n.vars&&"function"==typeof n.getColorSchemeSelector){return{[n.getColorSchemeSelector(e).replace(/(\[[^\]]+\])/,"*:where($1)")]:t}}return n.palette.mode===e?t:{}}n.d(t,{Z:function(){return r}})},1512:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(3366),o=n(7462);const a=["values","unit","step"],i=e=>{const t=Object.keys(e).map((t=>({key:t,val:e[t]})))||[];return t.sort(((e,t)=>e.val-t.val)),t.reduce(((e,t)=>(0,o.Z)({},e,{[t.key]:t.val})),{})};function s(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:s=5}=e,l=(0,r.Z)(e,a),u=i(t),c=Object.keys(u);function d(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n})`}function p(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-s/100}${n})`}function f(e,r){const o=c.indexOf(r);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n}) and (max-width:${(-1!==o&&"number"==typeof t[c[o]]?t[c[o]]:r)-s/100}${n})`}return(0,o.Z)({keys:c,values:u,up:d,down:p,between:f,only:function(e){return c.indexOf(e)+1(0===e.length?[1]:e).map((e=>{const n=t(e);return"number"==typeof n?`${n}px`:n})).join(" ");return n.mui=!0,n}(h);let b=(0,a.Z)({breakpoints:v,direction:"ltr",components:{},palette:(0,r.Z)({mode:"light"},f),spacing:y,shape:(0,r.Z)({},s,m)},g);return b.applyStyles=d.Z,b=t.reduce(((e,t)=>(0,a.Z)(e,t)),b),b.unstable_sxConfig=(0,r.Z)({},c.Z,null==g?void 0:g.unstable_sxConfig),b.unstable_sx=function(e){return(0,u.Z)({sx:e,theme:this})},b}},9926:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r.Z},private_createBreakpoints:function(){return o.Z},unstable_applyStyles:function(){return a.Z}});var r=n(7408),o=n(1512),a=n(7064)},7730:function(e,t,n){"use strict";var r=n(8027);t.Z=function(e,t){return t?(0,r.Z)(e,t,{clone:!1}):e}},2605:function(e,t,n){"use strict";n.d(t,{hB:function(){return h},eI:function(){return f},NA:function(){return m},e6:function(){return y},o3:function(){return b}});var r=n(5408),o=n(4844),a=n(7730);const i={m:"margin",p:"padding"},s={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},l={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},u=function(e){const t={};return n=>(void 0===t[n]&&(t[n]=e(n)),t[n])}((e=>{if(e.length>2){if(!l[e])return[e];e=l[e]}const[t,n]=e.split(""),r=i[t],o=s[n]||"";return Array.isArray(o)?o.map((e=>r+e)):[r+o]})),c=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],d=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],p=[...c,...d];function f(e,t,n,r){var a;const i=null!=(a=(0,o.DW)(e,t,!1))?a:n;return"number"==typeof i?e=>"string"==typeof e?e:i*e:Array.isArray(i)?e=>"string"==typeof e?e:i[e]:"function"==typeof i?i:()=>{}}function h(e){return f(e,"spacing",8)}function m(e,t){if("string"==typeof t||null==t)return t;const n=e(Math.abs(t));return t>=0?n:"number"==typeof n?-n:`-${n}`}function g(e,t,n,o){if(-1===t.indexOf(n))return null;const a=function(e,t){return n=>e.reduce(((e,r)=>(e[r]=m(t,n),e)),{})}(u(n),o),i=e[n];return(0,r.k9)(e,i,a)}function v(e,t){const n=h(e.theme);return Object.keys(e).map((r=>g(e,t,r,n))).reduce(a.Z,{})}function y(e){return v(e,c)}function b(e){return v(e,d)}function w(e){return v(e,p)}y.propTypes={},y.filterProps=c,b.propTypes={},b.filterProps=d,w.propTypes={},w.filterProps=p},4844:function(e,t,n){"use strict";n.d(t,{DW:function(){return a},Jq:function(){return i}});var r=n(2908),o=n(5408);function a(e,t,n=!0){if(!t||"string"!=typeof t)return null;if(e&&e.vars&&n){const n=`vars.${t}`.split(".").reduce(((e,t)=>e&&e[t]?e[t]:null),e);if(null!=n)return n}return t.split(".").reduce(((e,t)=>e&&null!=e[t]?e[t]:null),e)}function i(e,t,n,r=n){let o;return o="function"==typeof e?e(n):Array.isArray(e)?e[n]||r:a(e,n)||r,t&&(o=t(o,r,e)),o}t.ZP=function(e){const{prop:t,cssProperty:n=e.prop,themeKey:s,transform:l}=e,u=e=>{if(null==e[t])return null;const u=e[t],c=a(e.theme,s)||{};return(0,o.k9)(e,u,(e=>{let o=i(c,l,e);return e===o&&"string"==typeof e&&(o=i(c,l,`${t}${"default"===e?"":(0,r.Z)(e)}`,e)),!1===n?o:{[n]:o}}))};return u.propTypes={},u.filterProps=[t],u}},8010:function(e,t,n){"use strict";n.d(t,{Z:function(){return F}});var r=n(2605),o=n(4844),a=n(7730);var i=function(...e){const t=e.reduce(((e,t)=>(t.filterProps.forEach((n=>{e[n]=t})),e)),{}),n=e=>Object.keys(e).reduce(((n,r)=>t[r]?(0,a.Z)(n,t[r](e)):n),{});return n.propTypes={},n.filterProps=e.reduce(((e,t)=>e.concat(t.filterProps)),[]),n},s=n(5408);function l(e){return"number"!=typeof e?e:`${e}px solid`}function u(e,t){return(0,o.ZP)({prop:e,themeKey:"borders",transform:t})}const c=u("border",l),d=u("borderTop",l),p=u("borderRight",l),f=u("borderBottom",l),h=u("borderLeft",l),m=u("borderColor"),g=u("borderTopColor"),v=u("borderRightColor"),y=u("borderBottomColor"),b=u("borderLeftColor"),w=u("outline",l),x=u("outlineColor"),S=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=(0,r.eI)(e.theme,"shape.borderRadius",4,"borderRadius"),n=e=>({borderRadius:(0,r.NA)(t,e)});return(0,s.k9)(e,e.borderRadius,n)}return null};S.propTypes={},S.filterProps=["borderRadius"];i(c,d,p,f,h,m,g,v,y,b,S,w,x);const k=e=>{if(void 0!==e.gap&&null!==e.gap){const t=(0,r.eI)(e.theme,"spacing",8,"gap"),n=e=>({gap:(0,r.NA)(t,e)});return(0,s.k9)(e,e.gap,n)}return null};k.propTypes={},k.filterProps=["gap"];const E=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=(0,r.eI)(e.theme,"spacing",8,"columnGap"),n=e=>({columnGap:(0,r.NA)(t,e)});return(0,s.k9)(e,e.columnGap,n)}return null};E.propTypes={},E.filterProps=["columnGap"];const Z=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=(0,r.eI)(e.theme,"spacing",8,"rowGap"),n=e=>({rowGap:(0,r.NA)(t,e)});return(0,s.k9)(e,e.rowGap,n)}return null};Z.propTypes={},Z.filterProps=["rowGap"];i(k,E,Z,(0,o.ZP)({prop:"gridColumn"}),(0,o.ZP)({prop:"gridRow"}),(0,o.ZP)({prop:"gridAutoFlow"}),(0,o.ZP)({prop:"gridAutoColumns"}),(0,o.ZP)({prop:"gridAutoRows"}),(0,o.ZP)({prop:"gridTemplateColumns"}),(0,o.ZP)({prop:"gridTemplateRows"}),(0,o.ZP)({prop:"gridTemplateAreas"}),(0,o.ZP)({prop:"gridArea"}));function C(e,t){return"grey"===t?t:e}i((0,o.ZP)({prop:"color",themeKey:"palette",transform:C}),(0,o.ZP)({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:C}),(0,o.ZP)({prop:"backgroundColor",themeKey:"palette",transform:C}));function P(e){return e<=1&&0!==e?100*e+"%":e}const _=(0,o.ZP)({prop:"width",transform:P}),O=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const t=t=>{var n,r;const o=(null==(n=e.theme)||null==(n=n.breakpoints)||null==(n=n.values)?void 0:n[t])||s.VO[t];return o?"px"!==(null==(r=e.theme)||null==(r=r.breakpoints)?void 0:r.unit)?{maxWidth:`${o}${e.theme.breakpoints.unit}`}:{maxWidth:o}:{maxWidth:P(t)}};return(0,s.k9)(e,e.maxWidth,t)}return null};O.filterProps=["maxWidth"];const R=(0,o.ZP)({prop:"minWidth",transform:P}),T=(0,o.ZP)({prop:"height",transform:P}),A=(0,o.ZP)({prop:"maxHeight",transform:P}),j=(0,o.ZP)({prop:"minHeight",transform:P});(0,o.ZP)({prop:"size",cssProperty:"width",transform:P}),(0,o.ZP)({prop:"size",cssProperty:"height",transform:P}),i(_,O,R,T,A,j,(0,o.ZP)({prop:"boxSizing"}));var F={border:{themeKey:"borders",transform:l},borderTop:{themeKey:"borders",transform:l},borderRight:{themeKey:"borders",transform:l},borderBottom:{themeKey:"borders",transform:l},borderLeft:{themeKey:"borders",transform:l},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:l},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:S},color:{themeKey:"palette",transform:C},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:C},backgroundColor:{themeKey:"palette",transform:C},p:{style:r.o3},pt:{style:r.o3},pr:{style:r.o3},pb:{style:r.o3},pl:{style:r.o3},px:{style:r.o3},py:{style:r.o3},padding:{style:r.o3},paddingTop:{style:r.o3},paddingRight:{style:r.o3},paddingBottom:{style:r.o3},paddingLeft:{style:r.o3},paddingX:{style:r.o3},paddingY:{style:r.o3},paddingInline:{style:r.o3},paddingInlineStart:{style:r.o3},paddingInlineEnd:{style:r.o3},paddingBlock:{style:r.o3},paddingBlockStart:{style:r.o3},paddingBlockEnd:{style:r.o3},m:{style:r.e6},mt:{style:r.e6},mr:{style:r.e6},mb:{style:r.e6},ml:{style:r.e6},mx:{style:r.e6},my:{style:r.e6},margin:{style:r.e6},marginTop:{style:r.e6},marginRight:{style:r.e6},marginBottom:{style:r.e6},marginLeft:{style:r.e6},marginX:{style:r.e6},marginY:{style:r.e6},marginInline:{style:r.e6},marginInlineStart:{style:r.e6},marginInlineEnd:{style:r.e6},marginBlock:{style:r.e6},marginBlockStart:{style:r.e6},marginBlockEnd:{style:r.e6},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:k},rowGap:{style:Z},columnGap:{style:E},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:P},maxWidth:{style:O},minWidth:{transform:P},height:{transform:P},maxHeight:{transform:P},minHeight:{transform:P},boxSizing:{},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}},9707:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(7462),o=n(3366),a=n(8027),i=n(8010);const s=["sx"],l=e=>{var t,n;const r={systemProps:{},otherProps:{}},o=null!=(t=null==e||null==(n=e.theme)?void 0:n.unstable_sxConfig)?t:i.Z;return Object.keys(e).forEach((t=>{o[t]?r.systemProps[t]=e[t]:r.otherProps[t]=e[t]})),r};function u(e){const{sx:t}=e,n=(0,o.Z)(e,s),{systemProps:i,otherProps:u}=l(n);let c;return c=Array.isArray(t)?[i,...t]:"function"==typeof t?(...e)=>{const n=t(...e);return(0,a.P)(n)?(0,r.Z)({},i,n):i}:(0,r.Z)({},i,t),(0,r.Z)({},u,{sx:c})}},386:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r.Z},extendSxProp:function(){return o.Z},unstable_createStyleFunctionSx:function(){return r.n},unstable_defaultSxConfig:function(){return a.Z}});var r=n(6523),o=n(9707),a=n(8010)},6523:function(e,t,n){"use strict";n.d(t,{n:function(){return l}});var r=n(2908),o=n(7730),a=n(4844),i=n(5408),s=n(8010);function l(){function e(e,t,n,o){const s={[e]:t,theme:n},l=o[e];if(!l)return{[e]:t};const{cssProperty:u=e,themeKey:c,transform:d,style:p}=l;if(null==t)return null;if("typography"===c&&"inherit"===t)return{[e]:t};const f=(0,a.DW)(n,c)||{};if(p)return p(s);return(0,i.k9)(s,t,(t=>{let n=(0,a.Jq)(f,d,t);return t===n&&"string"==typeof t&&(n=(0,a.Jq)(f,d,`${e}${"default"===t?"":(0,r.Z)(t)}`,t)),!1===u?n:{[u]:n}}))}return function t(n){var r;const{sx:a,theme:l={}}=n||{};if(!a)return null;const u=null!=(r=l.unstable_sxConfig)?r:s.Z;function c(n){let r=n;if("function"==typeof n)r=n(l);else if("object"!=typeof n)return n;if(!r)return null;const a=(0,i.W8)(l.breakpoints),s=Object.keys(a);let c=a;return Object.keys(r).forEach((n=>{const a=(s=r[n],d=l,"function"==typeof s?s(d):s);var s,d;if(null!=a)if("object"==typeof a)if(u[n])c=(0,o.Z)(c,e(n,a,l,u));else{const e=(0,i.k9)({theme:l},a,(e=>({[n]:e})));!function(...e){const t=e.reduce(((e,t)=>e.concat(Object.keys(t))),[]),n=new Set(t);return e.every((e=>n.size===Object.keys(e).length))}(e,a)?c=(0,o.Z)(c,e):c[n]=t({sx:a,theme:l})}else c=(0,o.Z)(c,e(n,a,l,u))})),(0,i.L7)(s,c)}return Array.isArray(a)?a.map(c):c(a)}}const u=l();u.filterProps=["sx"],t.Z=u},6631:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var r=n(7408),o=n(7294),a=n(6498);var i=function(e=null){const t=o.useContext(a.T);return t&&(n=t,0!==Object.keys(n).length)?t:e;var n};const s=(0,r.Z)();var l=function(e=s){return i(e)}},3207:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(7462);function o(e,t){const n=(0,r.Z)({},t);return Object.keys(e).forEach((a=>{if(a.toString().match(/^(components|slots)$/))n[a]=(0,r.Z)({},e[a],n[a]);else if(a.toString().match(/^(componentsProps|slotProps)$/)){const i=e[a]||{},s=t[a];n[a]={},s&&Object.keys(s)?i&&Object.keys(i)?(n[a]=(0,r.Z)({},s),Object.keys(i).forEach((e=>{n[a][e]=o(i[e],s[e])}))):n[a]=s:n[a]=i}else void 0===n[a]&&(n[a]=e[a])})),n}function a(e){const{theme:t,name:n,props:r}=e;return t&&t.components&&t.components[n]&&t.components[n].defaultProps?o(t.components[n].defaultProps,r):r}var i=n(6631);function s({props:e,name:t,defaultTheme:n,themeId:r}){let o=(0,i.Z)(n);r&&(o=o[r]||o);return a({theme:o,name:t,props:e})}},2908:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(8758);function o(e){if("string"!=typeof e)throw new Error((0,r.Z)(7));return e.charAt(0).toUpperCase()+e.slice(1)}},9698:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r.Z}});var r=n(2908)},2358:function(e,t){"use strict";t.Z=function(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}},7859:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r.Z}});var r=n(2358)},8510:function(e,t,n){"use strict";function r(e,t,n=void 0){const r={};return Object.keys(e).forEach((o=>{r[o]=e[o].reduce(((e,r)=>{if(r){const o=t(r);""!==o&&e.push(o),n&&n[r]&&e.push(n[r])}return e}),[]).join(" ")})),r}n.d(t,{Z:function(){return r}})},8027:function(e,t,n){"use strict";n.d(t,{P:function(){return o},Z:function(){return i}});var r=n(7462);function o(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function a(e){if(!o(e))return e;const t={};return Object.keys(e).forEach((n=>{t[n]=a(e[n])})),t}function i(e,t,n={clone:!0}){const s=n.clone?(0,r.Z)({},e):e;return o(e)&&o(t)&&Object.keys(t).forEach((r=>{o(t[r])&&Object.prototype.hasOwnProperty.call(e,r)&&o(e[r])?s[r]=i(e[r],t[r],n):n.clone?s[r]=o(t[r])?a(t[r]):t[r]:s[r]=t[r]})),s}},211:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r.Z},isPlainObject:function(){return r.P}});var r=n(8027)},8758:function(e,t,n){"use strict";function r(e){let t="https://mui.com/production-error/?code="+e;for(let n=1;ne;var o=(()=>{let e=r;return{configure(t){e=t},generate(t){return e(t)},reset(){e=r}}})();const a={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function i(e,t,n="Mui"){const r=a[t];return r?`${n}-${r}`:`${o.generate(e)}-${t}`}},1977:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(3559);function o(e,t,n="Mui"){const o={};return t.forEach((t=>{o[t]=(0,r.ZP)(e,t,n)})),o}},2240:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return l},getFunctionName:function(){return a}});var r=n(217);const o=/^\s*function(?:\s|\s*\/\*.*\*\/\s*)+([^(\s/]*)\s*/;function a(e){const t=`${e}`.match(o);return t&&t[1]||""}function i(e,t=""){return e.displayName||e.name||a(e)||t}function s(e,t,n){const r=i(t);return e.displayName||(""!==r?`${n}(${r})`:n)}function l(e){if(null!=e){if("string"==typeof e)return e;if("function"==typeof e)return i(e,"Component");if("object"==typeof e)switch(e.$$typeof){case r.ForwardRef:return s(e,e.render,"ForwardRef");case r.Memo:return s(e,e.type,"memo");default:return}}}},7001:function(e,t){"use strict";var n,r=Symbol.for("react.element"),o=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),u=Symbol.for("react.context"),c=Symbol.for("react.server_context"),d=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),f=Symbol.for("react.suspense_list"),h=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),g=Symbol.for("react.offscreen");function v(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case a:case s:case i:case p:case f:return e;default:switch(e=e&&e.$$typeof){case c:case u:case d:case m:case h:case l:return e;default:return t}}case o:return t}}}n=Symbol.for("react.module.reference"),t.ForwardRef=d,t.Memo=h},217:function(e,t,n){"use strict";e.exports=n(7001)},5091:function(e,t,n){"use strict";function r(e,t){"function"==typeof e?e(t):e&&(e.current=t)}n.d(t,{Z:function(){return r}})},4895:function(e,t,n){"use strict";var r=n(7294);const o="undefined"!=typeof window?r.useLayoutEffect:r.useEffect;t.Z=o},2010:function(e,t,n){"use strict";var r=n(7294),o=n(4895);t.Z=function(e){const t=r.useRef(e);return(0,o.Z)((()=>{t.current=e})),r.useRef(((...e)=>(0,t.current)(...e))).current}},2760:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(7294),o=n(5091);function a(...e){return r.useMemo((()=>e.every((e=>null==e))?null:t=>{e.forEach((e=>{(0,o.Z)(e,t)}))}),e)}},8849:function(e,t,n){"use strict";n.d(t,{V:function(){return i},Z:function(){return s}});var r=n(7294);const o={};const a=[];class i{constructor(){this.currentId=null,this.clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)},this.disposeEffect=()=>this.clear}static create(){return new i}start(e,t){this.clear(),this.currentId=setTimeout((()=>{this.currentId=null,t()}),e)}}function s(){const e=function(e,t){const n=r.useRef(o);return n.current===o&&(n.current=e(t)),n}(i.create).current;var t;return t=e.disposeEffect,r.useEffect(t,a),e}},3821:function(e,t,n){var r=n(9720).w_;e.exports.W=function(e){return r({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{d:"M.05 3.555L8 8.414l7.95-4.859A2 2 0 0014 2H2A2 2 0 00.05 3.555zM16 4.697l-5.875 3.59L16 11.743V4.697zm-.168 8.108L9.157 8.879 8 9.586l-1.157-.707-6.675 3.926A2 2 0 002 14h12a2 2 0 001.832-1.195zM0 11.743l5.875-3.456L0 4.697v7.046z"}}]})(e)}},6577:function(e,t,n){var r=n(9720).w_;e.exports.H=function(e){return r({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M1 2.5A1.5 1.5 0 012.5 1h3A1.5 1.5 0 017 2.5v3A1.5 1.5 0 015.5 7h-3A1.5 1.5 0 011 5.5v-3zm8 0A1.5 1.5 0 0110.5 1h3A1.5 1.5 0 0115 2.5v3A1.5 1.5 0 0113.5 7h-3A1.5 1.5 0 019 5.5v-3zm-8 8A1.5 1.5 0 012.5 9h3A1.5 1.5 0 017 10.5v3A1.5 1.5 0 015.5 15h-3A1.5 1.5 0 011 13.5v-3zm8 0A1.5 1.5 0 0110.5 9h3a1.5 1.5 0 011.5 1.5v3a1.5 1.5 0 01-1.5 1.5h-3A1.5 1.5 0 019 13.5v-3z",clipRule:"evenodd"}}]})(e)}},1121:function(e,t,n){var r=n(9720).w_;e.exports.s=function(e){return r({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z"}}]})(e)}},5337:function(e,t,n){var r=n(9720).w_;e.exports.l=function(e){return r({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"}}]})(e)}},7054:function(e,t,n){var r=n(9720).w_;e.exports.W=function(e){return r({tag:"svg",attr:{viewBox:"0 0 496 512"},child:[{tag:"path",attr:{d:"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z"}}]})(e)}},874:function(e,t,n){var r=n(9720).w_;e.exports.x=function(e){return r({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"}}]})(e)}},9720:function(e,t,n){"use strict";n.d(t,{w_:function(){return u},Pd:function(){return a}});var r=n(7294),o={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},a=r.createContext&&r.createContext(o),i=function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{if("/"===e)return e;const r=e.endsWith("/");return((e,t)=>{for(const n of e)if(t.endsWith(n))return!0;return!1})(n,e)?e:"always"===t?r?e:`${e}/`:"never"===t&&r?e.slice(0,-1):e}},9679:function(e,t,n){"use strict";t.$C=void 0;var r=n(1432);t.$C=r.ScrollHandler,n(4855).useScrollRestoration},1432:function(e,t,n){"use strict";var r=n(4836);t.__esModule=!0,t.ScrollHandler=t.ScrollContext=void 0;var o=r(n(6115)),a=r(n(7867)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=u(t);if(n&&n.has(e))return n.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,n&&n.set(e,r);return r}(n(7294)),s=r(n(5697)),l=n(1142);function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(u=function(e){return e?n:t})(e)}var c=i.createContext(new l.SessionStorage);t.ScrollContext=c,c.displayName="GatsbyScrollContext";var d=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a{}},8611:function(e,t){"use strict";t.__esModule=!0,t.getForwards=function(e){return null==e?void 0:e.flatMap((e=>(null==e?void 0:e.forward)||[]))}},2731:function(e,t,n){"use strict";t.__esModule=!0,t.injectPartytownSnippet=function(e){if(!e.length)return;const t=document.querySelector("script[data-partytown]"),n=document.querySelector('iframe[src*="~partytown/partytown-sandbox-sw"]');t&&t.remove();n&&n.remove();const a=(0,o.getForwards)(e),i=document.createElement("script");i.dataset.partytown="",i.innerHTML=(0,r.partytownSnippet)({forward:a}),document.head.appendChild(i)};var r=n(4987),o=n(8611)},5418:function(e,t,n){t.components={"component---src-pages-templates-404-tsx":()=>n.e(514).then(n.bind(n,4808)),"component---src-pages-templates-blog-by-author-tsx":()=>Promise.all([n.e(403),n.e(748)]).then(n.bind(n,1655)),"component---src-pages-templates-blog-by-hashtag-tsx":()=>Promise.all([n.e(403),n.e(899)]).then(n.bind(n,5029)),"component---src-pages-templates-blog-tsx":()=>Promise.all([n.e(403),n.e(926)]).then(n.bind(n,6906)),"component---src-pages-templates-index-tsx":()=>Promise.all([n.e(532),n.e(403),n.e(577),n.e(602),n.e(832)]).then(n.bind(n,171)),"component---src-pages-templates-policies-tsx":()=>n.e(149).then(n.bind(n,5341)),"component---src-pages-templates-post-tsx":()=>Promise.all([n.e(403),n.e(354)]).then(n.bind(n,3803)),"component---src-pages-templates-project-tsx":()=>Promise.all([n.e(403),n.e(602),n.e(147)]).then(n.bind(n,1880)),"component---src-pages-templates-projects-tsx":()=>Promise.all([n.e(403),n.e(650)]).then(n.bind(n,3997)),"component---src-pages-templates-services-tsx":()=>Promise.all([n.e(403),n.e(577),n.e(602),n.e(417)]).then(n.bind(n,9153)),"component---src-pages-templates-workflow-tsx":()=>Promise.all([n.e(403),n.e(577),n.e(548)]).then(n.bind(n,240))}},4741:function(e,t,n){e.exports=[{plugin:n(2154),options:{plugins:[],maxWidth:650,linkImagesToOriginal:!0,showCaptions:!1,markdownCaptions:!1,backgroundColor:"white",quality:50,withWebp:!1,withAvif:!1,loading:"lazy",decoding:"async",disableBgImageOnAlpha:!1,disableBgImage:!1}},{plugin:n(2154),options:{plugins:[],maxWidth:900,withAvif:!0,withWebp:!0,showCaptions:["alt"],linkImagesToOriginal:!0,markdownCaptions:!1,backgroundColor:"white",quality:50,loading:"lazy",decoding:"async",disableBgImageOnAlpha:!1,disableBgImage:!1}},{plugin:n(2154),options:{plugins:[],maxWidth:900,withAvif:!0,withWebp:!0,showCaptions:["alt"],linkImagesToOriginal:!0,markdownCaptions:!1,backgroundColor:"white",quality:50,loading:"lazy",decoding:"async",disableBgImageOnAlpha:!1,disableBgImage:!1}},{plugin:n(5688),options:{plugins:[],component:"/home/runner/work/codecave.pro-new/codecave.pro-new/src/components/layout/layout.tsx"}},{plugin:n(8101),options:{plugins:[],trackingCode:"21836033",respectDNT:!0,productionOnly:!1}},{plugin:n(127),options:{plugins:[]}},{plugin:n(4094),options:{plugins:[]}}]},3092:function(e,t,n){const r=n(4741),{getResourceURLsForPathname:o,loadPage:a,loadPageSync:i}=n(1975).jN;t.h=function(e,t,n,s){void 0===t&&(t={});let l=r.map((n=>{if(!n.plugin[e])return;t.getResourceURLsForPathname=o,t.loadPage=a,t.loadPageSync=i;const r=n.plugin[e](t,n.options);return r&&s&&(t=s({args:t,result:r,plugin:n})),r}));return l=l.filter((e=>void 0!==e)),l.length>0?l:n?[n]:[]},t.I=(e,t,n)=>r.reduce(((n,r)=>r.plugin[e]?n.then((()=>r.plugin[e](t,r.options))):n),Promise.resolve())},4004:function(e,t){},8299:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});var r=function(e){return e=e||Object.create(null),{on:function(t,n){(e[t]||(e[t]=[])).push(n)},off:function(t,n){e[t]&&e[t].splice(e[t].indexOf(n)>>>0,1)},emit:function(t,n){(e[t]||[]).slice().map((function(e){e(n)})),(e["*"]||[]).slice().map((function(e){e(t,n)}))}}}()},7802:function(e,t,n){"use strict";n.d(t,{UD:function(){return p},Cj:function(){return h},GA:function(){return f},DS:function(){return d}});var r=n(7896),o=n(1505),a=e=>{if(void 0===e)return e;let[t,n=""]=e.split("?");return n&&(n="?"+n),"/"===t?"/"+n:"/"===t.charAt(t.length-1)?t.slice(0,-1)+n:t+n},i=n(6073);const s=new Map;let l=[];const u=e=>{let t=e;if(-1!==e.indexOf("?")){const[n,r]=e.split("?");t=`${n}?${encodeURIComponent(r)}`}const n=decodeURIComponent(t);return(0,o.Z)(n,decodeURIComponent("")).split("#")[0]};function c(e){return e.startsWith("/")||e.startsWith("https://")||e.startsWith("http://")?e:new URL(e,window.location.href+(window.location.href.endsWith("/")?"":"/")).pathname}const d=e=>{l=e},p=e=>{const t=m(e),n=l.map((e=>{let{path:t,matchPath:n}=e;return{path:n,originalPath:t}})),o=(0,r.pick)(n,t);return o?a(o.route.originalPath):null},f=e=>{const t=m(e),n=l.map((e=>{let{path:t,matchPath:n}=e;return{path:n,originalPath:t}})),o=(0,r.pick)(n,t);return o?o.params:{}},h=e=>{const t=u(c(e));if(s.has(t))return s.get(t);const n=(0,i.J)(e);if(n)return h(n.toPath);let r=p(t);return r||(r=m(e)),s.set(t,r),r},m=e=>{let t=u(c(e));return"/index.html"===t&&(t="/"),t=a(t),t}},4160:function(e,t,n){"use strict";n.d(t,{rU:function(){return o.rU},Xf:function(){return i.Script},B9:function(){return a.B9},K2:function(){return a.K2}});var r=n(1975),o=(n(2743),n(9679),n(1562)),a=n(1757);n(7294),n(4004),n(8995);var i=n(3521);r.ZP.enqueue},1975:function(e,t,n){"use strict";n.d(t,{uQ:function(){return d},kL:function(){return x},ZP:function(){return E},Nt:function(){return C},hs:function(){return Z},jN:function(){return k},N1:function(){return S}});var r=n(1721),o=n(5785),a=n(904);const i=function(e){if("undefined"==typeof document)return!1;const t=document.createElement("link");try{if(t.relList&&"function"==typeof t.relList.supports)return t.relList.supports(e)}catch(n){return!1}return!1}("prefetch")?function(e,t){return new Promise(((n,r)=>{if("undefined"==typeof document)return void r();const o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",e),Object.keys(t).forEach((e=>{o.setAttribute(e,t[e])})),o.onload=n,o.onerror=r;(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(o)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.onload=()=>{200===r.status?t():n()},r.send(null)}))},s={};var l=function(e,t){return new Promise((n=>{s[e]?n():i(e,t).then((()=>{n(),s[e]=!0})).catch((()=>{}))}))},u=n(8299),c=n(7802);const d={Error:"error",Success:"success"},p=e=>{const[t,n]=e.split("?");var r;return`/page-data/${"/"===t?"index":(r="/"===(r=t)[0]?r.slice(1):r).endsWith("/")?r.slice(0,-1):r}/page-data.json${n?`?${n}`:""}`},f=e=>e.startsWith("//");function h(e,t){return void 0===t&&(t="GET"),new Promise((n=>{const r=new XMLHttpRequest;r.open(t,e,!0),r.onreadystatechange=()=>{4==r.readyState&&n(r)},r.send(null)}))}const m=/bot|crawler|spider|crawling/i,g=function(e,t,n){var r;void 0===t&&(t=null);const o={componentChunkName:e.componentChunkName,path:e.path,webpackCompilationHash:e.webpackCompilationHash,matchPath:e.matchPath,staticQueryHashes:e.staticQueryHashes,getServerDataError:e.getServerDataError,slicesMap:null!==(r=e.slicesMap)&&void 0!==r?r:{}};return{component:t,head:n,json:e.result,page:o}};function v(e){return new Promise((t=>{try{const n=e.readRoot();t(n)}catch(n){if(!Object.hasOwnProperty.call(n,"_response")||!Object.hasOwnProperty.call(n,"_status"))throw n;setTimeout((()=>{v(e).then(t)}),200)}}))}let y=function(){function e(e,t){this.inFlightNetworkRequests=new Map,this.pageDb=new Map,this.inFlightDb=new Map,this.staticQueryDb={},this.pageDataDb=new Map,this.partialHydrationDb=new Map,this.slicesDataDb=new Map,this.sliceInflightDb=new Map,this.slicesDb=new Map,this.isPrefetchQueueRunning=!1,this.prefetchQueued=[],this.prefetchTriggered=new Set,this.prefetchCompleted=new Set,this.loadComponent=e,(0,c.DS)(t)}var t=e.prototype;return t.memoizedGet=function(e){let t=this.inFlightNetworkRequests.get(e);return t||(t=h(e,"GET"),this.inFlightNetworkRequests.set(e,t)),t.then((t=>(this.inFlightNetworkRequests.delete(e),t))).catch((t=>{throw this.inFlightNetworkRequests.delete(e),t}))},t.setApiRunner=function(e){this.apiRunner=e,this.prefetchDisabled=e("disableCorePrefetching").some((e=>e))},t.fetchPageDataJson=function(e){const{pagePath:t,retries:n=0}=e,r=p(t);return this.memoizedGet(r).then((r=>{const{status:o,responseText:a}=r;if(200===o)try{const n=JSON.parse(a);if(void 0===n.path)throw new Error("not a valid pageData response");const r=t.split("?")[1];return r&&!n.path.includes(r)&&(n.path+=`?${r}`),Object.assign(e,{status:d.Success,payload:n})}catch(i){}return 404===o||200===o?"/404.html"===t||"/500.html"===t?Object.assign(e,{status:d.Error}):this.fetchPageDataJson(Object.assign(e,{pagePath:"/404.html",notFound:!0})):500===o?this.fetchPageDataJson(Object.assign(e,{pagePath:"/500.html",internalServerError:!0})):n<3?this.fetchPageDataJson(Object.assign(e,{retries:n+1})):Object.assign(e,{status:d.Error})}))},t.fetchPartialHydrationJson=function(e){const{pagePath:t,retries:n=0}=e,r=p(t).replace(".json","-rsc.json");return this.memoizedGet(r).then((r=>{const{status:o,responseText:a}=r;if(200===o)try{return Object.assign(e,{status:d.Success,payload:a})}catch(i){}return 404===o||200===o?"/404.html"===t||"/500.html"===t?Object.assign(e,{status:d.Error}):this.fetchPartialHydrationJson(Object.assign(e,{pagePath:"/404.html",notFound:!0})):500===o?this.fetchPartialHydrationJson(Object.assign(e,{pagePath:"/500.html",internalServerError:!0})):n<3?this.fetchPartialHydrationJson(Object.assign(e,{retries:n+1})):Object.assign(e,{status:d.Error})}))},t.loadPageDataJson=function(e){const t=(0,c.Cj)(e);if(this.pageDataDb.has(t)){const e=this.pageDataDb.get(t);return Promise.resolve(e)}return this.fetchPageDataJson({pagePath:t}).then((e=>(this.pageDataDb.set(t,e),e)))},t.loadPartialHydrationJson=function(e){const t=(0,c.Cj)(e);if(this.partialHydrationDb.has(t)){const e=this.partialHydrationDb.get(t);return Promise.resolve(e)}return this.fetchPartialHydrationJson({pagePath:t}).then((e=>(this.partialHydrationDb.set(t,e),e)))},t.loadSliceDataJson=function(e){if(this.slicesDataDb.has(e)){const t=this.slicesDataDb.get(e);return Promise.resolve({sliceName:e,jsonPayload:t})}return h(`/slice-data/${e}.json`,"GET").then((t=>{const n=JSON.parse(t.responseText);return this.slicesDataDb.set(e,n),{sliceName:e,jsonPayload:n}}))},t.findMatchPath=function(e){return(0,c.UD)(e)},t.loadPage=function(e){const t=(0,c.Cj)(e);if(this.pageDb.has(t)){const e=this.pageDb.get(t);return e.error?Promise.resolve({error:e.error,status:e.status}):Promise.resolve(e.payload)}if(this.inFlightDb.has(t))return this.inFlightDb.get(t);const n=[this.loadAppData(),this.loadPageDataJson(t)];const r=Promise.all(n).then((e=>{const[n,r,i]=e;if(r.status===d.Error||(null==i?void 0:i.status)===d.Error)return{status:d.Error};let s=r.payload;const{componentChunkName:l,staticQueryHashes:c=[],slicesMap:p={}}=s,f={},h=Array.from(new Set(Object.values(p))),m=e=>{if(this.slicesDb.has(e.name))return this.slicesDb.get(e.name);if(this.sliceInflightDb.has(e.name))return this.sliceInflightDb.get(e.name);const t=this.loadComponent(e.componentChunkName).then((t=>{return{component:(n=t,n&&n.default||n),sliceContext:e.result.sliceContext,data:e.result.data};var n}));return this.sliceInflightDb.set(e.name,t),t.then((t=>{this.slicesDb.set(e.name,t),this.sliceInflightDb.delete(e.name)})),t};return Promise.all(h.map((e=>this.loadSliceDataJson(e)))).then((e=>{const p=[],h=(0,o.Z)(c);for(const{jsonPayload:t,sliceName:n}of Object.values(e)){p.push({name:n,...t});for(const e of t.staticQueryHashes)h.includes(e)||h.push(e)}const y=[Promise.all(p.map(m)),this.loadComponent(l,"head")];y.push(this.loadComponent(l));const b=Promise.all(y).then((e=>{const[t,o,l]=e;f.createdAt=new Date;for(const n of t)(!n||n instanceof Error)&&(f.status=d.Error,f.error=n);let u;if((!l||l instanceof Error)&&(f.status=d.Error,f.error=l),f.status!==d.Error){if(f.status=d.Success,!0!==r.notFound&&!0!==(null==i?void 0:i.notFound)||(f.notFound=!0),s=Object.assign(s,{webpackCompilationHash:n?n.webpackCompilationHash:""}),"string"==typeof(null==i?void 0:i.payload)){u=g(s,null,o),u.partialHydration=i.payload;const e=new ReadableStream({start(e){const t=new TextEncoder;e.enqueue(t.encode(i.payload))},pull(e){e.close()},cancel(){}});return v((0,a.createFromReadableStream)(e)).then((e=>(u.partialHydration=e,u)))}u=g(s,l,o)}return u})),w=Promise.all(h.map((e=>{if(this.staticQueryDb[e]){const t=this.staticQueryDb[e];return{staticQueryHash:e,jsonPayload:t}}return this.memoizedGet(`/page-data/sq/d/${e}.json`).then((t=>{const n=JSON.parse(t.responseText);return{staticQueryHash:e,jsonPayload:n}})).catch((()=>{throw new Error(`We couldn't load "/page-data/sq/d/${e}.json"`)}))}))).then((e=>{const t={};return e.forEach((e=>{let{staticQueryHash:n,jsonPayload:r}=e;t[n]=r,this.staticQueryDb[n]=r})),t}));return Promise.all([b,w]).then((e=>{let n,[r,o]=e;return r&&(n={...r,staticQueryResults:o},f.payload=n,u.Z.emit("onPostLoadPageResources",{page:n,pageResources:n})),this.pageDb.set(t,f),f.error?{error:f.error,status:f.status}:n})).catch((e=>({error:e,status:d.Error})))}))}));return r.then((()=>{this.inFlightDb.delete(t)})).catch((e=>{throw this.inFlightDb.delete(t),e})),this.inFlightDb.set(t,r),r},t.loadPageSync=function(e,t){void 0===t&&(t={});const n=(0,c.Cj)(e);if(this.pageDb.has(n)){var r;const e=this.pageDb.get(n);if(e.payload)return e.payload;if(null!==(r=t)&&void 0!==r&&r.withErrorDetails)return{error:e.error,status:e.status}}},t.shouldPrefetch=function(e){return!!(()=>{if("connection"in navigator&&void 0!==navigator.connection){if((navigator.connection.effectiveType||"").includes("2g"))return!1;if(navigator.connection.saveData)return!1}return!0})()&&((!navigator.userAgent||!m.test(navigator.userAgent))&&!this.pageDb.has(e))},t.prefetch=function(e){if(!this.shouldPrefetch(e))return{then:e=>e(!1),abort:()=>{}};if(this.prefetchTriggered.has(e))return{then:e=>e(!0),abort:()=>{}};const t={resolve:null,reject:null,promise:null};t.promise=new Promise(((e,n)=>{t.resolve=e,t.reject=n})),this.prefetchQueued.push([e,t]);const n=new AbortController;return n.signal.addEventListener("abort",(()=>{const t=this.prefetchQueued.findIndex((t=>{let[n]=t;return n===e}));-1!==t&&this.prefetchQueued.splice(t,1)})),this.isPrefetchQueueRunning||(this.isPrefetchQueueRunning=!0,setTimeout((()=>{this._processNextPrefetchBatch()}),3e3)),{then:(e,n)=>t.promise.then(e,n),abort:n.abort.bind(n)}},t._processNextPrefetchBatch=function(){(window.requestIdleCallback||(e=>setTimeout(e,0)))((()=>{const e=this.prefetchQueued.splice(0,4),t=Promise.all(e.map((e=>{let[t,n]=e;return this.prefetchTriggered.has(t)||(this.apiRunner("onPrefetchPathname",{pathname:t}),this.prefetchTriggered.add(t)),this.prefetchDisabled?n.resolve(!1):this.doPrefetch((0,c.Cj)(t)).then((()=>{this.prefetchCompleted.has(t)||(this.apiRunner("onPostPrefetchPathname",{pathname:t}),this.prefetchCompleted.add(t)),n.resolve(!0)}))})));this.prefetchQueued.length?t.then((()=>{setTimeout((()=>{this._processNextPrefetchBatch()}),3e3)})):this.isPrefetchQueueRunning=!1}))},t.doPrefetch=function(e){const t=p(e);return l(t,{crossOrigin:"anonymous",as:"fetch"}).then((()=>this.loadPageDataJson(e)))},t.hovering=function(e){this.loadPage(e)},t.getResourceURLsForPathname=function(e){const t=(0,c.Cj)(e),n=this.pageDataDb.get(t);if(n){const e=g(n.payload);return[].concat((0,o.Z)(b(e.page.componentChunkName)),[p(t)])}return null},t.isPageNotFound=function(e){const t=(0,c.Cj)(e),n=this.pageDb.get(t);return!n||n.notFound},t.loadAppData=function(e){return void 0===e&&(e=0),this.memoizedGet("/page-data/app-data.json").then((t=>{const{status:n,responseText:r}=t;let o;if(200!==n&&e<3)return this.loadAppData(e+1);if(200===n)try{const e=JSON.parse(r);if(void 0===e.webpackCompilationHash)throw new Error("not a valid app-data response");o=e}catch(a){}return o}))},e}();const b=e=>(window.___chunkMapping[e]||[]).map((e=>""+e));let w,x=function(e){function t(t,n,r){var o;return o=e.call(this,(function(e,n){if(void 0===n&&(n="components"),!t[n="components"][e])throw new Error(`We couldn't find the correct component chunk with the name "${e}"`);return t[n][e]().catch((e=>e))}),n)||this,r&&o.pageDataDb.set((0,c.Cj)(r.path),{pagePath:r.path,payload:r,status:"success"}),o}(0,r.Z)(t,e);var n=t.prototype;return n.doPrefetch=function(t){return e.prototype.doPrefetch.call(this,t).then((e=>{if(e.status!==d.Success)return Promise.resolve();const t=e.payload,n=t.componentChunkName,r=b(n);return Promise.all(r.map(l)).then((()=>t))}))},n.loadPageDataJson=function(t){return e.prototype.loadPageDataJson.call(this,t).then((e=>e.notFound?f(t)?e:h(t,"HEAD").then((t=>200===t.status?{status:d.Error}:e)):e))},n.loadPartialHydrationJson=function(t){return e.prototype.loadPartialHydrationJson.call(this,t).then((e=>e.notFound?f(t)?e:h(t,"HEAD").then((t=>200===t.status?{status:d.Error}:e)):e))},t}(y);const S=e=>{w=e},k={enqueue:e=>w.prefetch(e),getResourceURLsForPathname:e=>w.getResourceURLsForPathname(e),loadPage:e=>w.loadPage(e),loadPageSync:function(e,t){return void 0===t&&(t={}),w.loadPageSync(e,t)},prefetch:e=>w.prefetch(e),isPageNotFound:e=>w.isPageNotFound(e),hovering:e=>w.hovering(e),loadAppData:()=>w.loadAppData()};var E=k;function Z(){return w?w.staticQueryDb:{}}function C(){return w?w.slicesDb:{}}},4779:function(e,t,n){"use strict";n.d(t,{Z:function(){return Z}});var r=n(7294),o=n(5697),a=n.n(o),i=n(3092),s=n(7802),l=n(5785),u=n(4160),c=n(7896),d=n(4941);function p(e){let{children:t,callback:n}=e;return(0,r.useEffect)((()=>{n()})),t}const f=["link","meta","style","title","base","noscript","script","html","body"];function h(e,t){if(e instanceof HTMLElement&&t instanceof HTMLElement){const n=t.getAttribute("nonce");if(n&&!e.getAttribute("nonce")){const r=t.cloneNode(!0);return r.setAttribute("nonce",""),r.nonce=n,n===e.nonce&&e.isEqualNode(r)}}return e.isEqualNode(t)}function m(e,t){void 0===t&&(t={html:{},body:{}});const n=new Map,r=[];for(const u of e.childNodes){var o,a;const e=u.nodeName.toLowerCase(),c=null===(o=u.attributes)||void 0===o||null===(a=o.id)||void 0===a?void 0:a.value;if(y(u)){if(v(e))if("html"===e||"body"===e)for(const n of u.attributes){const r="style"===n.name;var i;if(t[e]={...t[e]},r||(t[e][n.name]=n.value),r)t[e].style=`${null!==(i=t[e])&&void 0!==i&&i.style?t[e].style:""}${n.value} `}else{let e=u.cloneNode(!0);if(e.setAttribute("data-gatsby-head",!0),"script"===e.nodeName.toLowerCase()&&(e=g(e)),c)if(n.has(c)){var s;const t=n.get(c);null===(s=r[t].parentNode)||void 0===s||s.removeChild(r[t]),r[t]=e}else r.push(e),n.set(c,r.length-1);else r.push(e)}u.childNodes.length&&r.push.apply(r,(0,l.Z)(m(u,t).validHeadNodes))}}return{validHeadNodes:r,htmlAndBodyAttributes:t}}function g(e){const t=document.createElement("script");for(const n of e.attributes)t.setAttribute(n.name,n.value);return t.innerHTML=e.innerHTML,t}function v(e){return f.includes(e)}function y(e){return 1===e.nodeType}var b=n(917);const w=document.createElement("div"),x={html:[],body:[]},S=()=>{var e;const{validHeadNodes:t,htmlAndBodyAttributes:n}=m(w);x.html=Object.keys(n.html),x.body=Object.keys(n.body),function(e){if(!e)return;const{html:t,body:n}=e,r=document.querySelector("html");r&&Object.entries(t).forEach((e=>{let[t,n]=e;r.setAttribute(t,n)}));const o=document.querySelector("body");o&&Object.entries(n).forEach((e=>{let[t,n]=e;o.setAttribute(t,n)}))}(n);const r=document.querySelectorAll("[data-gatsby-head]");var o;if(0===r.length)return void(o=document.head).append.apply(o,(0,l.Z)(t));const a=[];!function(e){let{oldNodes:t,newNodes:n,onStale:r,onNew:o}=e;for(const a of t){const e=n.findIndex((e=>h(e,a)));-1===e?r(a):n.splice(e,1)}for(const a of n)o(a)}({oldNodes:r,newNodes:t,onStale:e=>e.parentNode.removeChild(e),onNew:e=>a.push(e)}),(e=document.head).append.apply(e,a)};function k(e){let{pageComponent:t,staticQueryResults:n,pageComponentProps:o}=e;(0,r.useEffect)((()=>{if(null!=t&&t.Head){!function(e){if("function"!=typeof e)throw new Error(`Expected "Head" export to be a function got "${typeof e}".`)}(t.Head);const{render:r}=(0,d.U)(),a=(0,b.tZ)(t.Head,{location:{pathname:(e=o).location.pathname},params:e.params,data:e.data||{},serverData:e.serverData,pageContext:e.pageContext}),s=(0,i.h)("wrapRootElement",{element:a},a,(e=>{let{result:t}=e;return{element:t}})).pop();r((0,b.tZ)(p,{callback:S},(0,b.tZ)(u.B9.Provider,{value:n},(0,b.tZ)(c.LocationProvider,null,s))),w)}var e;return()=>{!function(){const e=document.querySelectorAll("[data-gatsby-head]");for(const t of e)t.parentNode.removeChild(t)}(),function(e){if(!e)return;const{html:t,body:n}=e;if(t){const e=document.querySelector("html");t.forEach((t=>{e&&e.removeAttribute(t)}))}if(n){const e=document.querySelector("body");n.forEach((t=>{e&&e.removeAttribute(t)}))}}(x)}}))}function E(e){const t={...e,params:{...(0,s.GA)(e.location.pathname),...e.pageResources.json.pageContext.__params}};let n;var o;n=e.pageResources.partialHydration?e.pageResources.partialHydration:(0,r.createElement)((o=e.pageResources.component)&&o.default||o,{...t,key:e.path||e.pageResources.page.path});k({pageComponent:e.pageResources.head,staticQueryResults:e.pageResources.staticQueryResults,pageComponentProps:t});return(0,i.h)("wrapPageElement",{element:n,props:t},n,(e=>{let{result:n}=e;return{element:n,props:t}})).pop()}E.propTypes={location:a().object.isRequired,pageResources:a().object.isRequired,data:a().object,pageContext:a().object.isRequired};var Z=E},5824:function(e,t,n){"use strict";var r=n(7462),o=n(1721),a=n(3092),i=n(7294),s=n(7896),l=n(9679),u=n(1757),c=n(8995),d=n(1975),p=n(6073),f=n(8299);const h={id:"gatsby-announcer",style:{position:"absolute",top:0,width:1,height:1,padding:0,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},"aria-live":"assertive","aria-atomic":"true"};var m=n(1562),g=n(917);function v(e){const t=(0,p.J)(e),{hash:n,search:r}=window.location;return null!=t&&(window.___replace(t.toPath+r+n),!0)}let y="";window.addEventListener("unhandledrejection",(e=>{/loading chunk \d* failed./i.test(e.reason)&&y&&(window.location.pathname=y)}));const b=(e,t)=>{v(e.pathname)||(y=e.pathname,(0,a.h)("onPreRouteUpdate",{location:e,prevLocation:t}))},w=(e,t)=>{v(e.pathname)||(0,a.h)("onRouteUpdate",{location:e,prevLocation:t})},x=function(e,t){if(void 0===t&&(t={}),"number"==typeof e)return void s.globalHistory.navigate(e);const{pathname:n,search:r,hash:o}=(0,m.cP)(e),i=(0,p.J)(n);if(i&&(e=i.toPath+r+o),window.___swUpdated)return void(window.location=n+r+o);const l=setTimeout((()=>{f.Z.emit("onDelayedLoadPageResources",{pathname:n}),(0,a.h)("onRouteUpdateDelayed",{location:window.location})}),1e3);d.ZP.loadPage(n+r).then((a=>{if(!a||a.status===d.uQ.Error)return window.history.replaceState({},"",location.href),window.location=n,void clearTimeout(l);a&&a.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),window.location=n+r+o),(0,s.navigate)(e,t),clearTimeout(l)}))};function S(e,t){let{location:n}=t;const{pathname:r,hash:o}=n,i=(0,a.h)("shouldUpdateScroll",{prevRouterProps:e,pathname:r,routerProps:{location:n},getSavedScrollPosition:e=>[0,this._stateStorage.read(e,e.key)]});if(i.length>0)return i[i.length-1];if(e){const{location:{pathname:t}}=e;if(t===r)return o?decodeURI(o.slice(1)):[0,0]}return!0}let k=function(e){function t(t){var n;return(n=e.call(this,t)||this).announcementRef=i.createRef(),n}(0,o.Z)(t,e);var n=t.prototype;return n.componentDidUpdate=function(e,t){requestAnimationFrame((()=>{let e=`new page at ${this.props.location.pathname}`;document.title&&(e=document.title);const t=document.querySelectorAll("#gatsby-focus-wrapper h1");t&&t.length&&(e=t[0].textContent);const n=`Navigated to ${e}`;if(this.announcementRef.current){this.announcementRef.current.innerText!==n&&(this.announcementRef.current.innerText=n)}}))},n.render=function(){return(0,g.tZ)("div",(0,r.Z)({},h,{ref:this.announcementRef}))},t}(i.Component);const E=(e,t)=>{var n,r;return e.href!==t.href||(null==e||null===(n=e.state)||void 0===n?void 0:n.key)!==(null==t||null===(r=t.state)||void 0===r?void 0:r.key)};let Z=function(e){function t(t){var n;return n=e.call(this,t)||this,b(t.location,null),n}(0,o.Z)(t,e);var n=t.prototype;return n.componentDidMount=function(){w(this.props.location,null)},n.shouldComponentUpdate=function(e){return!!E(this.props.location,e.location)&&(b(e.location,this.props.location),!0)},n.componentDidUpdate=function(e){E(e.location,this.props.location)&&w(this.props.location,e.location)},n.render=function(){return(0,g.tZ)(i.Fragment,null,this.props.children,(0,g.tZ)(k,{location:location}))},t}(i.Component);var C=n(4779),P=n(5418);function _(e,t){for(var n in e)if(!(n in t))return!0;for(var r in t)if(e[r]!==t[r])return!0;return!1}var O=function(e){function t(t){var n;n=e.call(this)||this;const{location:r,pageResources:o}=t;return n.state={location:{...r},pageResources:o||d.ZP.loadPageSync(r.pathname+r.search,{withErrorDetails:!0})},n}(0,o.Z)(t,e),t.getDerivedStateFromProps=function(e,t){let{location:n}=e;if(t.location.href!==n.href){return{pageResources:d.ZP.loadPageSync(n.pathname+n.search,{withErrorDetails:!0}),location:{...n}}}return{location:{...n}}};var n=t.prototype;return n.loadResources=function(e){d.ZP.loadPage(e).then((t=>{t&&t.status!==d.uQ.Error?this.setState({location:{...window.location},pageResources:t}):(window.history.replaceState({},"",location.href),window.location=e)}))},n.shouldComponentUpdate=function(e,t){return t.pageResources?this.state.pageResources!==t.pageResources||(this.state.pageResources.component!==t.pageResources.component||(this.state.pageResources.json!==t.pageResources.json||(!(this.state.location.key===t.location.key||!t.pageResources.page||!t.pageResources.page.matchPath&&!t.pageResources.page.path)||function(e,t,n){return _(e.props,t)||_(e.state,n)}(this,e,t)))):(this.loadResources(e.location.pathname+e.location.search),!1)},n.render=function(){return this.props.children(this.state)},t}(i.Component),R=n(1505),T=n(4941);const A=new d.kL(P,[],window.pageData);(0,d.N1)(A),A.setApiRunner(a.h);const{render:j,hydrate:F}=(0,T.U)();window.asyncRequires=P,window.___emitter=f.Z,window.___loader=d.jN,s.globalHistory.listen((e=>{e.location.action=e.action})),window.___push=e=>x(e,{replace:!1}),window.___replace=e=>x(e,{replace:!0}),window.___navigate=(e,t)=>x(e,t);const N="gatsby-reload-compilation-hash-match";(0,a.I)("onClientEntry").then((()=>{(0,a.h)("registerServiceWorker").filter(Boolean).length>0&&n(9939);const e=e=>(0,g.tZ)(s.BaseContext.Provider,{value:{baseuri:"/",basepath:"/"}},(0,g.tZ)(C.Z,e)),t=i.createContext({}),p={renderEnvironment:"browser"};let f=function(e){function n(){return e.apply(this,arguments)||this}return(0,o.Z)(n,e),n.prototype.render=function(){const{children:e}=this.props;return(0,g.tZ)(s.Location,null,(n=>{let{location:r}=n;return(0,g.tZ)(O,{location:r},(n=>{let{pageResources:r,location:o}=n;const a=(0,d.hs)(),i=(0,d.Nt)();return(0,g.tZ)(u.B9.Provider,{value:a},(0,g.tZ)(c.Bs.Provider,{value:p},(0,g.tZ)(c.m3.Provider,{value:i},(0,g.tZ)(c.u0.Provider,{value:r.page.slicesMap},(0,g.tZ)(t.Provider,{value:{pageResources:r,location:o}},e)))))}))}))},n}(i.Component),h=function(n){function a(){return n.apply(this,arguments)||this}return(0,o.Z)(a,n),a.prototype.render=function(){return(0,g.tZ)(t.Consumer,null,(t=>{let{pageResources:n,location:o}=t;return(0,g.tZ)(Z,{location:o},(0,g.tZ)(l.$C,{location:o,shouldUpdateScroll:S},(0,g.tZ)(s.Router,{basepath:"",location:o,id:"gatsby-focus-wrapper"},(0,g.tZ)(e,(0,r.Z)({path:"/404.html"===n.page.path||"/500.html"===n.page.path?(0,R.Z)(o.pathname,""):encodeURI((n.page.matchPath||n.page.path).split("?")[0])},this.props,{location:o,pageResources:n},n.json)))))}))},a}(i.Component);const{pagePath:m,location:v}=window;m&&""+m!==v.pathname+(m.includes("?")?v.search:"")&&!(A.findMatchPath((0,R.Z)(v.pathname,""))||m.match(/^\/(404|500)(\/?|.html)$/)||m.match(/^\/offline-plugin-app-shell-fallback\/?$/))&&(0,s.navigate)(""+m+(m.includes("?")?"":v.search)+v.hash,{replace:!0});const y=()=>{try{return sessionStorage}catch{return null}};d.jN.loadPage(v.pathname+v.search).then((e=>{var t;const n=y();if(null!=e&&null!==(t=e.page)&&void 0!==t&&t.webpackCompilationHash&&e.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),n)){if(!("1"===n.getItem(N)))return n.setItem(N,"1"),void window.location.reload(!0)}if(n&&n.removeItem(N),!e||e.status===d.uQ.Error){const t=`page resources for ${v.pathname} not found. Not rendering React`;if(e&&e.error)throw console.error(t),e.error;throw new Error(t)}const r=(0,a.h)("wrapRootElement",{element:(0,g.tZ)(h,null)},(0,g.tZ)(h,null),(e=>{let{result:t}=e;return{element:t}})).pop(),o=function(){const e=i.useRef(!1);return i.useEffect((()=>{e.current||(e.current=!0,performance.mark&&performance.mark("onInitialClientRender"),(0,a.h)("onInitialClientRender"))}),[]),(0,g.tZ)(f,null,r)},s=document.getElementById("gatsby-focus-wrapper");let l=j;s&&s.children.length&&(l=F);const u=(0,a.h)("replaceHydrateFunction",void 0,l)[0];function c(){const e="undefined"!=typeof window?document.getElementById("___gatsby"):null;u((0,g.tZ)(o,null),e)}const p=document;if("complete"===p.readyState||"loading"!==p.readyState&&!p.documentElement.doScroll)setTimeout((function(){c()}),0);else{const e=function(){p.removeEventListener("DOMContentLoaded",e,!1),window.removeEventListener("load",e,!1),c()};p.addEventListener("DOMContentLoaded",e,!1),window.addEventListener("load",e,!1)}}))}))},224:function(e,t,n){"use strict";n.r(t);var r=n(7294),o=n(1975),a=n(4779);t.default=e=>{let{location:t}=e;const n=o.ZP.loadPageSync(t.pathname);return n?r.createElement(a.Z,{location:t,pageResources:n,...n.json}):null}},2743:function(e,t,n){var r;e.exports=(r=n(224))&&r.default||r},4941:function(e,t,n){"use strict";n.d(t,{U:function(){return o}});const r=new WeakMap;function o(){const e=n(745);return{render:(t,n)=>{let o=r.get(n);o||r.set(n,o=e.createRoot(n)),o.render(t)},hydrate:(t,n)=>e.hydrateRoot(n,t)}}},6073:function(e,t,n){"use strict";n.d(t,{J:function(){return a}});const r=new Map,o=new Map;function a(e){let t=r.get(e);return t||(t=o.get(e.toLowerCase())),t}[].forEach((e=>{e.ignoreCase?o.set(e.fromPath,e):r.set(e.fromPath,e)}))},9939:function(e,t,n){"use strict";n.r(t);var r=n(3092);"https:"!==window.location.protocol&&"localhost"!==window.location.hostname?console.error("Service workers can only be used over HTTPS, or on localhost for development"):"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.js").then((function(e){e.addEventListener("updatefound",(()=>{(0,r.h)("onServiceWorkerUpdateFound",{serviceWorker:e});const t=e.installing;console.log("installingWorker",t),t.addEventListener("statechange",(()=>{switch(t.state){case"installed":navigator.serviceWorker.controller?(window.___swUpdated=!0,(0,r.h)("onServiceWorkerUpdateReady",{serviceWorker:e}),window.___failedResources&&(console.log("resources failed, SW updated - reloading"),window.location.reload())):(console.log("Content is now available offline!"),(0,r.h)("onServiceWorkerInstalled",{serviceWorker:e}));break;case"redundant":console.error("The installing service worker became redundant."),(0,r.h)("onServiceWorkerRedundant",{serviceWorker:e});break;case"activated":(0,r.h)("onServiceWorkerActive",{serviceWorker:e})}}))}))})).catch((function(e){console.error("Error during service worker registration:",e)}))},8995:function(e,t,n){"use strict";n.d(t,{Bs:function(){return a},m3:function(){return o},u0:function(){return i}});var r=n(7294);const o=r.createContext({}),a=r.createContext({}),i=r.createContext({})},1757:function(e,t,n){"use strict";n.d(t,{B9:function(){return o},K2:function(){return s}});var r=n(7294);const o=(a="StaticQuery",i={},r.createServerContext?function(e,t){return void 0===t&&(t=null),globalThis.__SERVER_CONTEXT||(globalThis.__SERVER_CONTEXT={}),globalThis.__SERVER_CONTEXT[e]||(globalThis.__SERVER_CONTEXT[e]=r.createServerContext(e,t)),globalThis.__SERVER_CONTEXT[e]}(a,i):r.createContext(i));var a,i;const s=e=>{var t;r.useContext;const n=r.useContext(o);if(isNaN(Number(e)))throw new Error(`useStaticQuery was called with a string but expects to be called using \`graphql\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\`${e}\`);\n`);if(null!==(t=n[e])&&void 0!==t&&t.data)return n[e].data;throw new Error("The result of this StaticQuery could not be fetched.\n\nThis is likely a bug in Gatsby and if refreshing the page does not fix it, please open an issue in https://github.com/gatsbyjs/gatsby/issues")}},1505:function(e,t,n){"use strict";function r(e,t){return void 0===t&&(t=""),t?e===t?"/":e.startsWith(`${t}/`)?e.slice(t.length):e:e}n.d(t,{Z:function(){return r}})},9065:function(e,t){"use strict";t.__esModule=!0,t.default=void 0;t.default={respectDNT:!1,productionOnly:!0}},8101:function(e,t,n){"use strict";var r=n(4836);t.__esModule=!0,t.onRouteUpdate=function(e,t){var n=e.location;if(Object.assign({},o.default,t).productionOnly,!Array.isArray(window._hsq))return;var r=function(){var e=n?n.pathname+n.search+n.hash:void 0;window._hsq.push(["setPath",e]),window._hsq.push(["trackPageView"])};"function"==typeof window.requestAnimationFrame?window.requestAnimationFrame((function(){window.requestAnimationFrame(r)})):setTimeout(r,32)};var o=r(n(9065))},5688:function(e,t,n){"use strict";t.wrapPageElement=n(4184)},4184:function(e,t,n){"use strict";var r,o,a=n(7294);try{o=n(2990),r=o&&o.default||o}catch(i){throw-1!==i.toString().indexOf("Error: Cannot find module")?new Error("Couldn't find layout component at \"/home/runner/work/codecave.pro-new/codecave.pro-new/src/components/layout/layout.tsx.\n\nPlease create layout component in that location or specify path to layout component in gatsby-config.js"):(console.error(i),i)}e.exports=function(e){var t=e.element,n=e.props;return a.createElement(r,n,t)}},855:function(e,t){"use strict";t.DEFAULT_OPTIONS={maxWidth:650,wrapperStyle:"",backgroundColor:"white",linkImagesToOriginal:!0,showCaptions:!1,markdownCaptions:!1,withWebp:!1,withAvif:!1,tracedSVG:!1,loading:"lazy",decoding:"async",disableBgImageOnAlpha:!1,disableBgImage:!1},t.EMPTY_ALT="GATSBY_EMPTY_ALT",t.imageClass="gatsby-resp-image-image",t.imageWrapperClass="gatsby-resp-image-wrapper",t.imageBackgroundClass="gatsby-resp-image-background-image"},2154:function(e,t,n){"use strict";var r=n(855),o=r.DEFAULT_OPTIONS,a=r.imageClass,i=r.imageBackgroundClass,s=r.imageWrapperClass;t.onRouteUpdate=function(e,t){for(var n=Object.assign({},o,t),r=document.querySelectorAll("."+s),l=function(){var e=r[u],t=e.querySelector("."+i),o=e.querySelector("."+a),s=function(){t.style.transition="opacity 0.5s 0.5s",o.style.transition="opacity 0.5s",l()},l=function e(){t.style.opacity=0,o.style.opacity=1,o.style.color="inherit",o.style.boxShadow="inset 0px 0px 0px 400px "+n.backgroundColor,o.removeEventListener("load",s),o.removeEventListener("error",e)};o.style.opacity=0,o.addEventListener("load",s),o.addEventListener("error",l),o.complete&&l()},u=0;u{let{children:t,className:n,maxWidthClass:o="max-w-4.5xl"}=e;return(0,r.tZ)("div",{className:`flex w-full mx-auto px-4 lg:px-10 ${o} ${n}`},t)}},9165:function(e,t,n){"use strict";n.d(t,{Ag:function(){return u},Di:function(){return l},Lx:function(){return s}});var r=n(7294),o=n(4160),a=n(917);const i=e=>{var t,n,r,a,i;const s=(0,o.K2)(c),l=null==s||null===(t=s.allMarkdownRemark)||void 0===t||null===(n=t.nodes)||void 0===n||null===(r=n.find((t=>t.fields.language===e)))||void 0===r||null===(a=r.frontmatter)||void 0===a||null===(i=a.layout)||void 0===i?void 0:i.requisites;return l?Object.entries(l).map((e=>{let[t,n]=e;return n})).join(" "):""},s=e=>{let{itemProp:t,lang:n}=e;const r=i(n);return(0,a.tZ)("div",{className:"hidden",itemProp:t,itemScope:!0,itemType:"https://schema.org/LocalBusiness"},(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://facebook.com/codecavepro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://youtube.com/c/CodeCavePro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://twitter.com/codecavepro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://vk.com/codecavepro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://github.com/CodeCavePro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://instagram.com/codecave.pro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://linkedin.com/company/codecavepro"}),(0,a.tZ)("meta",{itemProp:"name",content:"CodeCave"}),(0,a.tZ)("meta",{itemProp:"currenciesAccepted",content:"USD, EUR"}),(0,a.tZ)("meta",{itemProp:"openingHours",content:"Mo-Fr 09:00-18:00"}),(0,a.tZ)("meta",{name:"description",content:"Outsourcing software and web development"}),(0,a.tZ)("meta",{name:"image",content:"/logo.svg"}),(0,a.tZ)("meta",{itemProp:"address",content:r}),(0,a.tZ)("meta",{name:"address",content:r}),(0,a.tZ)("meta",{property:"address",content:r}))},l=e=>{let{lang:t}=e;const n=i(t);return(0,a.tZ)(r.Fragment,null,(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://facebook.com/codecavepro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://youtube.com/c/CodeCavePro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://twitter.com/codecavepro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://vk.com/codecavepro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://github.com/CodeCavePro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://instagram.com/codecave.pro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://linkedin.com/company/codecavepro"}),(0,a.tZ)("meta",{itemProp:"name",content:"CodeCave"}),(0,a.tZ)("meta",{name:"description",content:"Outsourcing software and web development"}),(0,a.tZ)("meta",{name:"og:image",content:"/logo.svg"}),(0,a.tZ)("meta",{itemProp:"address",content:n}),(0,a.tZ)("meta",{property:"address",content:n}),(0,a.tZ)("meta",{name:"address",content:n}))},u=e=>{let{title:t,description:n,img:o,siteUrl:i,path:s,lang:l}=e;const u=null!=n?n:t,c=`${i}${s}`,d=o?`${i}${o}`:`${i}/siteImage.png`,p="ru"===l?"ru_RU":"en_US";return(0,a.tZ)(r.Fragment,null,(0,a.tZ)("link",{rel:"shortcut icon",href:"/favicon.ico"}),(0,a.tZ)("link",{rel:"apple-touch-icon",sizes:"180x180",href:"/apple-touch-icon.png"}),(0,a.tZ)("link",{rel:"icon",type:"image/png",sizes:"32x32",href:"/favicon-32x32.png"}),(0,a.tZ)("link",{rel:"icon",type:"image/png",sizes:"16x16",href:"/favicon-16x16.png"}),(0,a.tZ)("link",{rel:"manifest",href:"/site.webmanifest"}),(0,a.tZ)("link",{rel:"mask-icon",href:"/safari-pinned-tab.svg",color:"#5bbad5"}),(0,a.tZ)("link",{rel:"icon",sizes:"16x16 32x32 64x64",href:"/favicon.ico"}),(0,a.tZ)("meta",{name:"msapplication-TileColor",content:"#da532c"}),(0,a.tZ)("meta",{name:"msapplication-config",content:"/browserconfig.xml"}),(0,a.tZ)("meta",{name:"msapplication-TileImage",content:"/mstile-150x150.png"}),(0,a.tZ)("title",null,t),(0,a.tZ)("meta",{name:"title",content:t}),(0,a.tZ)("meta",{name:"description",content:u}),(0,a.tZ)("meta",{property:"image",content:d}),(0,a.tZ)("meta",{itemProp:"image",content:d}),(0,a.tZ)("meta",{property:"url",content:c}),(0,a.tZ)("meta",{property:"og:locale",content:p}),(0,a.tZ)("meta",{property:"og:type",content:"website"}),(0,a.tZ)("meta",{property:"og:url",content:c}),(0,a.tZ)("meta",{property:"og:title",content:t}),(0,a.tZ)("meta",{property:"og:description",content:u}),(0,a.tZ)("meta",{property:"og:image",content:d}),(0,a.tZ)("meta",{property:"twitter:card",content:"summary_large_image"}),(0,a.tZ)("meta",{property:"twitter:url",content:c}),(0,a.tZ)("meta",{property:"twitter:title",content:t}),(0,a.tZ)("meta",{property:"twitter:description",content:u}),(0,a.tZ)("meta",{property:"twitter:image",content:d}),(0,a.tZ)("meta",{name:"yandex-verification",content:"2f1c8394b4dad72a"}))},c="2595676272"},2531:function(e,t,n){"use strict";n.d(t,{Z:function(){return j}});var r=n(3366),o=n(7462),a=n(7294),i=n(512),s=n(917),l=n(8510);function u(e){return String(e).match(/[\d.\-+]*\s*(.*)/)[1]||""}function c(e){return parseFloat(e)}var d=n(8758),p=n(2358);function f(e,t=0,n=1){return(0,p.Z)(e,t,n)}function h(e){if(e.type)return e;if("#"===e.charAt(0))return h(function(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map((e=>e+e))),n?`rgb${4===n.length?"a":""}(${n.map(((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3)).join(", ")})`:""}(e));const t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(n))throw new Error((0,d.Z)(9,e));let r,o=e.substring(t+1,e.length-1);if("color"===n){if(o=o.split(" "),r=o.shift(),4===o.length&&"/"===o[3].charAt(0)&&(o[3]=o[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(r))throw new Error((0,d.Z)(10,r))}else o=o.split(",");return o=o.map((e=>parseFloat(e))),{type:n,values:o,colorSpace:r}}function m(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return-1!==t.indexOf("rgb")?r=r.map(((e,t)=>t<3?parseInt(e,10):e)):-1!==t.indexOf("hsl")&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=-1!==t.indexOf("color")?`${n} ${r.join(" ")}`:`${r.join(", ")}`,`${t}(${r})`}function g(e,t){return e=h(e),t=f(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,m(e)}var v=n(948),y=n(1657),b=n(1977),w=n(3559);function x(e){return(0,w.ZP)("MuiSkeleton",e)}(0,b.Z)("MuiSkeleton",["root","text","rectangular","rounded","circular","pulse","wave","withChildren","fitContent","heightAuto"]);var S=n(5893);const k=["animation","className","component","height","style","variant","width"];let E,Z,C,P,_=e=>e;const O=(0,s.F4)(E||(E=_` +/*! For license information please see app-7990c3f1d980ee5d9dc0.js.LICENSE.txt */ +(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[143],{6751:function(e,t,n){"use strict";n.d(t,{Z:function(){return oe}});var r=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?c(w,--y):0,g--,10===b&&(g=1,m--),b}function E(){return b=y2||_(b)>3?"":" "}function j(e,t){for(;--t&&E()&&!(b<48||b>102||b>57&&b<65||b>70&&b<97););return P(e,C()+(t<6&&32==Z()&&32==E()))}function F(e){for(;E();)switch(b){case e:return y;case 34:case 39:34!==e&&39!==e&&F(b);break;case 40:41===e&&F(e);break;case 92:E()}return y}function N(e,t){for(;E()&&e+b!==57&&(e+b!==84||47!==Z()););return"/*"+P(t,y-1)+"*"+a(47===e?e:E())}function $(e){for(;!_(Z());)E();return P(e,y)}var M="-ms-",D="-moz-",L="-webkit-",I="comm",B="rule",z="decl",U="@keyframes";function W(e,t){for(var n="",r=f(e),o=0;o0&&p(D)-v&&h(b>32?G(D+";",r,n,v-1):G(l(D," ","")+";",r,n,v-2),f);break;case 59:D+=";";default:if(h(M=K(D,t,n,m,g,o,d,O,R=[],F=[],v),i),123===_)if(0===g)H(D,t,M,M,R,i,v,d,F);else switch(99===y&&110===c(D,3)?100:y){case 100:case 108:case 109:case 115:H(e,M,M,r&&h(K(e,M,M,0,0,o,d,O,o,R=[],v),F),o,F,v,d,r?R:F);break;default:H(D,M,M,M,[""],F,0,d,F)}}m=g=b=0,x=P=1,O=D="",v=s;break;case 58:v=1+p(D),b=w;default:if(x<1)if(123==_)--x;else if(125==_&&0==x++&&125==k())continue;switch(D+=a(_),_*x){case 38:P=g>0?1:(D+="\f",-1);break;case 44:d[m++]=(p(D)-1)*P,P=1;break;case 64:45===Z()&&(D+=T(E())),y=Z(),g=v=p(O=D+=$(C())),_++;break;case 45:45===w&&2==p(D)&&(x=0)}}return i}function K(e,t,n,r,a,i,u,c,p,h,m){for(var g=a-1,v=0===a?i:[""],y=f(v),b=0,w=0,S=0;b0?v[k]+" "+E:l(E,/&\f/g,v[k])))&&(p[S++]=Z);return x(e,t,n,0===a?B:c,p,h,m)}function J(e,t,n){return x(e,t,n,I,a(b),d(e,2,-2),0)}function G(e,t,n,r){return x(e,t,n,z,d(e,0,r),d(e,r+1,-1),r)}var X=function(e,t,n){for(var r=0,o=0;r=o,o=Z(),38===r&&12===o&&(t[n]=1),!_(o);)E();return P(e,y)},Q=function(e,t){return R(function(e,t){var n=-1,r=44;do{switch(_(r)){case 0:38===r&&12===Z()&&(t[n]=1),e[n]+=X(y-1,t,n);break;case 2:e[n]+=T(r);break;case 4:if(44===r){e[++n]=58===Z()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=a(r)}}while(r=E());return e}(O(e),t))},Y=new WeakMap,ee=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||Y.get(n))&&!r){Y.set(e,!0);for(var o=[],a=Q(t,o),i=n.props,s=0,l=0;s6)switch(c(e,t+1)){case 109:if(45!==c(e,t+4))break;case 102:return l(e,/(.+:)(.+)-([^]+)/,"$1"+L+"$2-$3$1"+D+(108==c(e,t+3)?"$3":"$2-$3"))+e;case 115:return~u(e,"stretch")?ne(l(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==c(e,t+1))break;case 6444:switch(c(e,p(e)-3-(~u(e,"!important")&&10))){case 107:return l(e,":",":"+L)+e;case 101:return l(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+L+(45===c(e,14)?"inline-":"")+"box$3$1"+L+"$2$3$1"+M+"$2box$3")+e}break;case 5936:switch(c(e,t+11)){case 114:return L+e+M+l(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return L+e+M+l(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return L+e+M+l(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return L+e+M+e+e}return e}var re=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case z:e.return=ne(e.value,e.length);break;case U:return W([S(e,{value:l(e.value,"@","@"+L)})],r);case B:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return W([S(e,{props:[l(t,/:(read-\w+)/,":-moz-$1")]})],r);case"::placeholder":return W([S(e,{props:[l(t,/:(plac\w+)/,":"+L+"input-$1")]}),S(e,{props:[l(t,/:(plac\w+)/,":-moz-$1")]}),S(e,{props:[l(t,/:(plac\w+)/,M+"input-$1")]})],r)}return""}))}}],oe=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var o=e.stylisPlugins||re;var a,i,s={},l=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n=4;++r,o-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(o){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(o)+l;return{name:u,styles:o,next:p}}},4316:function(e,t,n){"use strict";n.d(t,{Z:function(){return v}});var r=n(7462),o=n(7294),a=n(5042),i=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,s=(0,a.Z)((function(e){return i.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),l=n(6498),u=n(444),c=n(6797),d=n(7278),p=s,f=function(e){return"theme"!==e},h=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?p:f},m=function(e,t,n){var r;if(t){var o=t.shouldForwardProp;r=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!=typeof r&&n&&(r=e.__emotion_forwardProp),r},g=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return(0,u.hC)(t,n,r),(0,d.L)((function(){return(0,u.My)(t,n,r)})),null},v=function e(t,n){var a,i,s=t.__emotion_real===t,d=s&&t.__emotion_base||t;void 0!==n&&(a=n.label,i=n.target);var p=m(t,n,s),f=p||h(d),v=!f("as");return function(){var y=arguments,b=s&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==a&&b.push("label:"+a+";"),null==y[0]||void 0===y[0].raw)b.push.apply(b,y);else{0,b.push(y[0][0]);for(var w=y.length,x=1;x=n?x.text.primary:w.text.primary}const O=({color:e,name:t,mainShade:n=500,lightShade:o=300,darkShade:i=700})=>{if(!(e=(0,r.Z)({},e)).main&&e[n]&&(e.main=e[n]),!e.hasOwnProperty("main"))throw new Error((0,a.Z)(11,t?` (${t})`:"",n));if("string"!=typeof e.main)throw new Error((0,a.Z)(12,t?` (${t})`:"",JSON.stringify(e.main)));return S(e,"light",o,s),S(e,"dark",i,s),e.contrastText||(e.contrastText=_(e.main)),e},R={dark:x,light:w};return(0,i.Z)((0,r.Z)({common:(0,r.Z)({},d),mode:t,primary:O({color:u,name:"primary"}),secondary:O({color:k,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:O({color:E,name:"error"}),warning:O({color:P,name:"warning"}),info:O({color:Z,name:"info"}),success:O({color:C,name:"success"}),grey:p,contrastThreshold:n,getContrastText:_,augmentColor:O,tonalOffset:s},R[t]),l)}const E=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"];const Z={textTransform:"uppercase"},C='"Roboto", "Helvetica", "Arial", sans-serif';function P(e,t){const n="function"==typeof t?t(e):t,{fontFamily:a=C,fontSize:s=14,fontWeightLight:l=300,fontWeightRegular:u=400,fontWeightMedium:c=500,fontWeightBold:d=700,htmlFontSize:p=16,allVariants:f,pxToRem:h}=n,m=(0,o.Z)(n,E);const g=s/14,v=h||(e=>e/p*g+"rem"),y=(e,t,n,o,i)=>{return(0,r.Z)({fontFamily:a,fontWeight:e,fontSize:v(t),lineHeight:n},a===C?{letterSpacing:(s=o/t,Math.round(1e5*s)/1e5)+"em"}:{},i,f);var s},b={h1:y(l,96,1.167,-1.5),h2:y(l,60,1.2,-.5),h3:y(u,48,1.167,0),h4:y(u,34,1.235,.25),h5:y(u,24,1.334,0),h6:y(c,20,1.6,.15),subtitle1:y(u,16,1.75,.15),subtitle2:y(c,14,1.57,.1),body1:y(u,16,1.5,.15),body2:y(u,14,1.43,.15),button:y(c,14,1.75,.4,Z),caption:y(u,12,1.66,.4),overline:y(u,12,2.66,1,Z),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return(0,i.Z)((0,r.Z)({htmlFontSize:p,pxToRem:v,fontFamily:a,fontSize:s,fontWeightLight:l,fontWeightRegular:u,fontWeightMedium:c,fontWeightBold:d},b),m,{clone:!1})}function _(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,0.2)`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,0.14)`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,0.12)`].join(",")}var O=["none",_(0,2,1,-1,0,1,1,0,0,1,3,0),_(0,3,1,-2,0,2,2,0,0,1,5,0),_(0,3,3,-2,0,3,4,0,0,1,8,0),_(0,2,4,-1,0,4,5,0,0,1,10,0),_(0,3,5,-1,0,5,8,0,0,1,14,0),_(0,3,5,-1,0,6,10,0,0,1,18,0),_(0,4,5,-2,0,7,10,1,0,2,16,1),_(0,5,5,-3,0,8,10,1,0,3,14,2),_(0,5,6,-3,0,9,12,1,0,3,16,2),_(0,6,6,-3,0,10,14,1,0,4,18,3),_(0,6,7,-4,0,11,15,1,0,4,20,3),_(0,7,8,-4,0,12,17,2,0,5,22,4),_(0,7,8,-4,0,13,19,2,0,5,24,4),_(0,7,9,-4,0,14,21,2,0,5,26,4),_(0,8,9,-5,0,15,22,2,0,6,28,5),_(0,8,10,-5,0,16,24,2,0,6,30,5),_(0,8,11,-5,0,17,26,2,0,6,32,5),_(0,9,11,-5,0,18,28,2,0,7,34,6),_(0,9,12,-6,0,19,29,2,0,7,36,6),_(0,10,13,-6,0,20,31,3,0,8,38,7),_(0,10,13,-6,0,21,33,3,0,8,40,7),_(0,10,14,-6,0,22,35,3,0,8,42,7),_(0,11,14,-7,0,23,36,3,0,9,44,8),_(0,11,15,-7,0,24,38,3,0,9,46,8)];const R=["duration","easing","delay"],T={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},A={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function j(e){return`${Math.round(e)}ms`}function F(e){if(!e)return 0;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}function N(e){const t=(0,r.Z)({},T,e.easing),n=(0,r.Z)({},A,e.duration);return(0,r.Z)({getAutoHeightDuration:F,create:(e=["all"],r={})=>{const{duration:a=n.standard,easing:i=t.easeInOut,delay:s=0}=r;(0,o.Z)(r,R);return(Array.isArray(e)?e:[e]).map((e=>`${e} ${"string"==typeof a?a:j(a)} ${i} ${"string"==typeof s?s:j(s)}`)).join(",")}},e,{easing:t,duration:n})}var $={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};const M=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];function D(e={},...t){const{mixins:n={},palette:c={},transitions:d={},typography:p={}}=e,f=(0,o.Z)(e,M);if(e.vars)throw new Error((0,a.Z)(18));const h=k(c),m=(0,u.Z)(e);let g=(0,i.Z)(m,{mixins:(v=m.breakpoints,y=n,(0,r.Z)({toolbar:{minHeight:56,[v.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[v.up("sm")]:{minHeight:64}}},y)),palette:h,shadows:O.slice(),typography:P(h,p),transitions:N(d),zIndex:(0,r.Z)({},$)});var v,y;return g=(0,i.Z)(g,f),g=t.reduce(((e,t)=>(0,i.Z)(e,t)),g),g.unstable_sxConfig=(0,r.Z)({},s.Z,null==f?void 0:f.unstable_sxConfig),g.unstable_sx=function(e){return(0,l.Z)({sx:e,theme:this})},g}var L=D()},606:function(e,t){"use strict";t.Z="$$material"},4136:function(e,t,n){"use strict";var r=n(5536);t.Z=e=>(0,r.Z)(e)&&"classes"!==e},5536:function(e,t){"use strict";t.Z=function(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}},948:function(e,t,n){"use strict";var r=n(8128),o=n(8794),a=n(606),i=n(4136);const s=(0,r.ZP)({themeId:a.Z,defaultTheme:o.Z,rootShouldForwardProp:i.Z});t.ZP=s},1657:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(3207),o=n(8794),a=n(606);function i({props:e,name:t}){return(0,r.Z)({props:e,name:t,defaultTheme:o.Z,themeId:a.Z})}},8216:function(e,t,n){"use strict";var r=n(2908);t.Z=r.Z},5949:function(e,t,n){"use strict";n.d(t,{Z:function(){return b}});var r=n(7462),o=n(7294),a=n(3366),i=n(512),s=n(8510),l=n(8216),u=n(1657),c=n(948),d=n(1977),p=n(3559);function f(e){return(0,p.ZP)("MuiSvgIcon",e)}(0,d.Z)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var h=n(5893);const m=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],g=(0,c.ZP)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"inherit"!==n.color&&t[`color${(0,l.Z)(n.color)}`],t[`fontSize${(0,l.Z)(n.fontSize)}`]]}})((({theme:e,ownerState:t})=>{var n,r,o,a,i,s,l,u,c,d,p,f,h;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(n=e.transitions)||null==(r=n.create)?void 0:r.call(n,"fill",{duration:null==(o=e.transitions)||null==(o=o.duration)?void 0:o.shorter}),fontSize:{inherit:"inherit",small:(null==(a=e.typography)||null==(i=a.pxToRem)?void 0:i.call(a,20))||"1.25rem",medium:(null==(s=e.typography)||null==(l=s.pxToRem)?void 0:l.call(s,24))||"1.5rem",large:(null==(u=e.typography)||null==(c=u.pxToRem)?void 0:c.call(u,35))||"2.1875rem"}[t.fontSize],color:null!=(d=null==(p=(e.vars||e).palette)||null==(p=p[t.color])?void 0:p.main)?d:{action:null==(f=(e.vars||e).palette)||null==(f=f.action)?void 0:f.active,disabled:null==(h=(e.vars||e).palette)||null==(h=h.action)?void 0:h.disabled,inherit:void 0}[t.color]}})),v=o.forwardRef((function(e,t){const n=(0,u.Z)({props:e,name:"MuiSvgIcon"}),{children:c,className:d,color:p="inherit",component:v="svg",fontSize:y="medium",htmlColor:b,inheritViewBox:w=!1,titleAccess:x,viewBox:S="0 0 24 24"}=n,k=(0,a.Z)(n,m),E=o.isValidElement(c)&&"svg"===c.type,Z=(0,r.Z)({},n,{color:p,component:v,fontSize:y,instanceFontSize:e.fontSize,inheritViewBox:w,viewBox:S,hasSvgAsChild:E}),C={};w||(C.viewBox=S);const P=(e=>{const{color:t,fontSize:n,classes:r}=e,o={root:["root","inherit"!==t&&`color${(0,l.Z)(t)}`,`fontSize${(0,l.Z)(n)}`]};return(0,s.Z)(o,f,r)})(Z);return(0,h.jsxs)(g,(0,r.Z)({as:v,className:(0,i.Z)(P.root,d),focusable:"false",color:b,"aria-hidden":!x||void 0,role:x?"img":void 0,ref:t},C,k,E&&c.props,{ownerState:Z,children:[E?c.props.children:c,x?(0,h.jsx)("title",{children:x}):null]}))}));v.muiName="SvgIcon";var y=v;function b(e,t){function n(n,o){return(0,h.jsx)(y,(0,r.Z)({"data-testid":`${t}Icon`,ref:o},n,{children:e}))}return n.muiName=y.muiName,o.memo(o.forwardRef(n))}},1529:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(7294);var o=function({controlled:e,default:t,name:n,state:o="value"}){const{current:a}=r.useRef(void 0!==e),[i,s]=r.useState(t);return[a?e:i,r.useCallback((e=>{a||s(e)}),[])]}},8974:function(e,t,n){"use strict";var r=n(4895);t.Z=r.Z},1705:function(e,t,n){"use strict";var r=n(2760);t.Z=r.Z},1234:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});n(7294);var r=n(917),o=n(5893);function a(e){const{styles:t,defaultTheme:n={}}=e,a="function"==typeof t?e=>{return t(null==(r=e)||0===Object.keys(r).length?n:e);var r}:t;return(0,o.jsx)(r.xB,{styles:a})}},4082:function(e,t,n){"use strict";n.r(t),n.d(t,{GlobalStyles:function(){return d.Z},StyledEngineProvider:function(){return c},ThemeContext:function(){return i.T},css:function(){return a.iv},default:function(){return p},internal_processStyles:function(){return f},keyframes:function(){return a.F4}});var r=n(4316),o=(n(434),n(7294),n(6797),n(7278),r.Z.bind());["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(e){o[e]=o(e)}));var a=n(917),i=n(6498),s=n(6751),l=n(5893);let u;function c(e){const{injectFirst:t,children:n}=e;return t&&u?(0,l.jsx)(i.C,{value:u,children:n}):n}"object"==typeof document&&(u=(0,s.Z)({key:"css",prepend:!0}));var d=n(1234);function p(e,t){return o(e,t)}const f=(e,t)=>{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}},2101:function(e,t,n){"use strict";var r=n(4836);t.Fq=f,t._j=h,t.mi=function(e,t){const n=p(e),r=p(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)},t.$n=m;var o=r(n(743)),a=r(n(7859));function i(e,t=0,n=1){return(0,a.default)(e,t,n)}function s(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map((e=>e+e))),n?`rgb${4===n.length?"a":""}(${n.map(((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3)).join(", ")})`:""}function l(e){if(e.type)return e;if("#"===e.charAt(0))return l(s(e));const t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(n))throw new Error((0,o.default)(9,e));let r,a=e.substring(t+1,e.length-1);if("color"===n){if(a=a.split(" "),r=a.shift(),4===a.length&&"/"===a[3].charAt(0)&&(a[3]=a[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(r))throw new Error((0,o.default)(10,r))}else a=a.split(",");return a=a.map((e=>parseFloat(e))),{type:n,values:a,colorSpace:r}}const u=e=>{const t=l(e);return t.values.slice(0,3).map(((e,n)=>-1!==t.type.indexOf("hsl")&&0!==n?`${e}%`:e)).join(" ")};function c(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return-1!==t.indexOf("rgb")?r=r.map(((e,t)=>t<3?parseInt(e,10):e)):-1!==t.indexOf("hsl")&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=-1!==t.indexOf("color")?`${n} ${r.join(" ")}`:`${r.join(", ")}`,`${t}(${r})`}function d(e){e=l(e);const{values:t}=e,n=t[0],r=t[1]/100,o=t[2]/100,a=r*Math.min(o,1-o),i=(e,t=(e+n/30)%12)=>o-a*Math.max(Math.min(t-3,9-t,1),-1);let s="rgb";const u=[Math.round(255*i(0)),Math.round(255*i(8)),Math.round(255*i(4))];return"hsla"===e.type&&(s+="a",u.push(t[3])),c({type:s,values:u})}function p(e){let t="hsl"===(e=l(e)).type||"hsla"===e.type?l(d(e)).values:e.values;return t=t.map((t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4))),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function f(e,t){return e=l(e),t=i(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,c(e)}function h(e,t){if(e=l(e),t=i(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb")||-1!==e.type.indexOf("color"))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return c(e)}function m(e,t){if(e=l(e),t=i(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(-1!==e.type.indexOf("color"))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return c(e)}function g(e,t=.15){return p(e)>.5?h(e,t):m(e,t)}},8128:function(e,t,n){"use strict";var r=n(4836);t.ZP=function(e={}){const{themeId:t,defaultTheme:n=m,rootShouldForwardProp:r=h,slotShouldForwardProp:l=h}=e,c=e=>(0,u.default)((0,o.default)({},e,{theme:v((0,o.default)({},e,{defaultTheme:n,themeId:t}))}));return c.__mui_systemSx=!0,(e,u={})=>{(0,i.internal_processStyles)(e,(e=>e.filter((e=>!(null!=e&&e.__mui_systemSx)))));const{name:d,slot:f,skipVariantsResolver:m,skipSx:w,overridesResolver:x=y(g(f))}=u,S=(0,a.default)(u,p),k=void 0!==m?m:f&&"Root"!==f&&"root"!==f||!1,E=w||!1;let Z=h;"Root"===f||"root"===f?Z=r:f?Z=l:function(e){return"string"==typeof e&&e.charCodeAt(0)>96}(e)&&(Z=void 0);const C=(0,i.default)(e,(0,o.default)({shouldForwardProp:Z,label:undefined},S)),P=e=>"function"==typeof e&&e.__emotion_real!==e||(0,s.isPlainObject)(e)?r=>b(e,(0,o.default)({},r,{theme:v({theme:r.theme,defaultTheme:n,themeId:t})})):e,_=(r,...a)=>{let i=P(r);const s=a?a.map(P):[];d&&x&&s.push((e=>{const r=v((0,o.default)({},e,{defaultTheme:n,themeId:t}));if(!r.components||!r.components[d]||!r.components[d].styleOverrides)return null;const a=r.components[d].styleOverrides,i={};return Object.entries(a).forEach((([t,n])=>{i[t]=b(n,(0,o.default)({},e,{theme:r}))})),x(e,i)})),d&&!k&&s.push((e=>{var r;const a=v((0,o.default)({},e,{defaultTheme:n,themeId:t}));return b({variants:null==a||null==(r=a.components)||null==(r=r[d])?void 0:r.variants},(0,o.default)({},e,{theme:a}))})),E||s.push(c);const l=s.length-a.length;if(Array.isArray(r)&&l>0){const e=new Array(l).fill("");i=[...r,...e],i.raw=[...r.raw,...e]}const u=C(i,...s);return e.muiName&&(u.muiName=e.muiName),u};return C.withConfig&&(_.withConfig=C.withConfig),_}};var o=r(n(434)),a=r(n(7071)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=f(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r}(n(4082)),s=n(211),l=(r(n(9698)),r(n(2240)),r(n(9926))),u=r(n(386));const c=["ownerState"],d=["variants"],p=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(f=function(e){return e?n:t})(e)}function h(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}const m=(0,l.default)(),g=e=>e?e.charAt(0).toLowerCase()+e.slice(1):e;function v({defaultTheme:e,theme:t,themeId:n}){return r=t,0===Object.keys(r).length?e:t[n]||t;var r}function y(e){return e?(t,n)=>n[e]:null}function b(e,t){let{ownerState:n}=t,r=(0,a.default)(t,c);const i="function"==typeof e?e((0,o.default)({ownerState:n},r)):e;if(Array.isArray(i))return i.flatMap((e=>b(e,(0,o.default)({ownerState:n},r))));if(i&&"object"==typeof i&&Array.isArray(i.variants)){const{variants:e=[]}=i;let t=(0,a.default)(i,d);return e.forEach((e=>{let a=!0;"function"==typeof e.props?a=e.props((0,o.default)({ownerState:n},r,n)):Object.keys(e.props).forEach((t=>{(null==n?void 0:n[t])!==e.props[t]&&r[t]!==e.props[t]&&(a=!1)})),a&&(Array.isArray(t)||(t=[t]),t.push("function"==typeof e.style?e.style((0,o.default)({ownerState:n},r,n)):e.style))})),t}return i}},5408:function(e,t,n){"use strict";n.d(t,{L7:function(){return l},P$:function(){return c},VO:function(){return o},W8:function(){return s},dt:function(){return u},k9:function(){return i}});var r=n(8027);const o={xs:0,sm:600,md:900,lg:1200,xl:1536},a={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${o[e]}px)`};function i(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const e=r.breakpoints||a;return t.reduce(((r,o,a)=>(r[e.up(e.keys[a])]=n(t[a]),r)),{})}if("object"==typeof t){const e=r.breakpoints||a;return Object.keys(t).reduce(((r,a)=>{if(-1!==Object.keys(e.values||o).indexOf(a)){r[e.up(a)]=n(t[a],a)}else{const e=a;r[e]=t[e]}return r}),{})}return n(t)}function s(e={}){var t;return(null==(t=e.keys)?void 0:t.reduce(((t,n)=>(t[e.up(n)]={},t)),{}))||{}}function l(e,t){return e.reduce(((e,t)=>{const n=e[t];return(!n||0===Object.keys(n).length)&&delete e[t],e}),t)}function u(e,...t){const n=s(e),o=[n,...t].reduce(((e,t)=>(0,r.Z)(e,t)),{});return l(Object.keys(n),o)}function c({values:e,breakpoints:t,base:n}){const r=n||function(e,t){if("object"!=typeof e)return{};const n={},r=Object.keys(t);return Array.isArray(e)?r.forEach(((t,r)=>{r{null!=e[t]&&(n[t]=!0)})),n}(e,t),o=Object.keys(r);if(0===o.length)return e;let a;return o.reduce(((t,n,r)=>(Array.isArray(e)?(t[n]=null!=e[r]?e[r]:e[a],a=r):"object"==typeof e?(t[n]=null!=e[n]?e[n]:e[a],a=n):t[n]=e,t)),{})}},7064:function(e,t,n){"use strict";function r(e,t){const n=this;if(n.vars&&"function"==typeof n.getColorSchemeSelector){return{[n.getColorSchemeSelector(e).replace(/(\[[^\]]+\])/,"*:where($1)")]:t}}return n.palette.mode===e?t:{}}n.d(t,{Z:function(){return r}})},1512:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(3366),o=n(7462);const a=["values","unit","step"],i=e=>{const t=Object.keys(e).map((t=>({key:t,val:e[t]})))||[];return t.sort(((e,t)=>e.val-t.val)),t.reduce(((e,t)=>(0,o.Z)({},e,{[t.key]:t.val})),{})};function s(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:s=5}=e,l=(0,r.Z)(e,a),u=i(t),c=Object.keys(u);function d(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n})`}function p(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-s/100}${n})`}function f(e,r){const o=c.indexOf(r);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n}) and (max-width:${(-1!==o&&"number"==typeof t[c[o]]?t[c[o]]:r)-s/100}${n})`}return(0,o.Z)({keys:c,values:u,up:d,down:p,between:f,only:function(e){return c.indexOf(e)+1(0===e.length?[1]:e).map((e=>{const n=t(e);return"number"==typeof n?`${n}px`:n})).join(" ");return n.mui=!0,n}(h);let b=(0,a.Z)({breakpoints:v,direction:"ltr",components:{},palette:(0,r.Z)({mode:"light"},f),spacing:y,shape:(0,r.Z)({},s,m)},g);return b.applyStyles=d.Z,b=t.reduce(((e,t)=>(0,a.Z)(e,t)),b),b.unstable_sxConfig=(0,r.Z)({},c.Z,null==g?void 0:g.unstable_sxConfig),b.unstable_sx=function(e){return(0,u.Z)({sx:e,theme:this})},b}},9926:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r.Z},private_createBreakpoints:function(){return o.Z},unstable_applyStyles:function(){return a.Z}});var r=n(7408),o=n(1512),a=n(7064)},7730:function(e,t,n){"use strict";var r=n(8027);t.Z=function(e,t){return t?(0,r.Z)(e,t,{clone:!1}):e}},2605:function(e,t,n){"use strict";n.d(t,{hB:function(){return h},eI:function(){return f},NA:function(){return m},e6:function(){return y},o3:function(){return b}});var r=n(5408),o=n(4844),a=n(7730);const i={m:"margin",p:"padding"},s={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},l={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},u=function(e){const t={};return n=>(void 0===t[n]&&(t[n]=e(n)),t[n])}((e=>{if(e.length>2){if(!l[e])return[e];e=l[e]}const[t,n]=e.split(""),r=i[t],o=s[n]||"";return Array.isArray(o)?o.map((e=>r+e)):[r+o]})),c=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],d=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],p=[...c,...d];function f(e,t,n,r){var a;const i=null!=(a=(0,o.DW)(e,t,!1))?a:n;return"number"==typeof i?e=>"string"==typeof e?e:i*e:Array.isArray(i)?e=>"string"==typeof e?e:i[e]:"function"==typeof i?i:()=>{}}function h(e){return f(e,"spacing",8)}function m(e,t){if("string"==typeof t||null==t)return t;const n=e(Math.abs(t));return t>=0?n:"number"==typeof n?-n:`-${n}`}function g(e,t,n,o){if(-1===t.indexOf(n))return null;const a=function(e,t){return n=>e.reduce(((e,r)=>(e[r]=m(t,n),e)),{})}(u(n),o),i=e[n];return(0,r.k9)(e,i,a)}function v(e,t){const n=h(e.theme);return Object.keys(e).map((r=>g(e,t,r,n))).reduce(a.Z,{})}function y(e){return v(e,c)}function b(e){return v(e,d)}function w(e){return v(e,p)}y.propTypes={},y.filterProps=c,b.propTypes={},b.filterProps=d,w.propTypes={},w.filterProps=p},4844:function(e,t,n){"use strict";n.d(t,{DW:function(){return a},Jq:function(){return i}});var r=n(2908),o=n(5408);function a(e,t,n=!0){if(!t||"string"!=typeof t)return null;if(e&&e.vars&&n){const n=`vars.${t}`.split(".").reduce(((e,t)=>e&&e[t]?e[t]:null),e);if(null!=n)return n}return t.split(".").reduce(((e,t)=>e&&null!=e[t]?e[t]:null),e)}function i(e,t,n,r=n){let o;return o="function"==typeof e?e(n):Array.isArray(e)?e[n]||r:a(e,n)||r,t&&(o=t(o,r,e)),o}t.ZP=function(e){const{prop:t,cssProperty:n=e.prop,themeKey:s,transform:l}=e,u=e=>{if(null==e[t])return null;const u=e[t],c=a(e.theme,s)||{};return(0,o.k9)(e,u,(e=>{let o=i(c,l,e);return e===o&&"string"==typeof e&&(o=i(c,l,`${t}${"default"===e?"":(0,r.Z)(e)}`,e)),!1===n?o:{[n]:o}}))};return u.propTypes={},u.filterProps=[t],u}},8010:function(e,t,n){"use strict";n.d(t,{Z:function(){return F}});var r=n(2605),o=n(4844),a=n(7730);var i=function(...e){const t=e.reduce(((e,t)=>(t.filterProps.forEach((n=>{e[n]=t})),e)),{}),n=e=>Object.keys(e).reduce(((n,r)=>t[r]?(0,a.Z)(n,t[r](e)):n),{});return n.propTypes={},n.filterProps=e.reduce(((e,t)=>e.concat(t.filterProps)),[]),n},s=n(5408);function l(e){return"number"!=typeof e?e:`${e}px solid`}function u(e,t){return(0,o.ZP)({prop:e,themeKey:"borders",transform:t})}const c=u("border",l),d=u("borderTop",l),p=u("borderRight",l),f=u("borderBottom",l),h=u("borderLeft",l),m=u("borderColor"),g=u("borderTopColor"),v=u("borderRightColor"),y=u("borderBottomColor"),b=u("borderLeftColor"),w=u("outline",l),x=u("outlineColor"),S=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=(0,r.eI)(e.theme,"shape.borderRadius",4,"borderRadius"),n=e=>({borderRadius:(0,r.NA)(t,e)});return(0,s.k9)(e,e.borderRadius,n)}return null};S.propTypes={},S.filterProps=["borderRadius"];i(c,d,p,f,h,m,g,v,y,b,S,w,x);const k=e=>{if(void 0!==e.gap&&null!==e.gap){const t=(0,r.eI)(e.theme,"spacing",8,"gap"),n=e=>({gap:(0,r.NA)(t,e)});return(0,s.k9)(e,e.gap,n)}return null};k.propTypes={},k.filterProps=["gap"];const E=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=(0,r.eI)(e.theme,"spacing",8,"columnGap"),n=e=>({columnGap:(0,r.NA)(t,e)});return(0,s.k9)(e,e.columnGap,n)}return null};E.propTypes={},E.filterProps=["columnGap"];const Z=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=(0,r.eI)(e.theme,"spacing",8,"rowGap"),n=e=>({rowGap:(0,r.NA)(t,e)});return(0,s.k9)(e,e.rowGap,n)}return null};Z.propTypes={},Z.filterProps=["rowGap"];i(k,E,Z,(0,o.ZP)({prop:"gridColumn"}),(0,o.ZP)({prop:"gridRow"}),(0,o.ZP)({prop:"gridAutoFlow"}),(0,o.ZP)({prop:"gridAutoColumns"}),(0,o.ZP)({prop:"gridAutoRows"}),(0,o.ZP)({prop:"gridTemplateColumns"}),(0,o.ZP)({prop:"gridTemplateRows"}),(0,o.ZP)({prop:"gridTemplateAreas"}),(0,o.ZP)({prop:"gridArea"}));function C(e,t){return"grey"===t?t:e}i((0,o.ZP)({prop:"color",themeKey:"palette",transform:C}),(0,o.ZP)({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:C}),(0,o.ZP)({prop:"backgroundColor",themeKey:"palette",transform:C}));function P(e){return e<=1&&0!==e?100*e+"%":e}const _=(0,o.ZP)({prop:"width",transform:P}),O=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const t=t=>{var n,r;const o=(null==(n=e.theme)||null==(n=n.breakpoints)||null==(n=n.values)?void 0:n[t])||s.VO[t];return o?"px"!==(null==(r=e.theme)||null==(r=r.breakpoints)?void 0:r.unit)?{maxWidth:`${o}${e.theme.breakpoints.unit}`}:{maxWidth:o}:{maxWidth:P(t)}};return(0,s.k9)(e,e.maxWidth,t)}return null};O.filterProps=["maxWidth"];const R=(0,o.ZP)({prop:"minWidth",transform:P}),T=(0,o.ZP)({prop:"height",transform:P}),A=(0,o.ZP)({prop:"maxHeight",transform:P}),j=(0,o.ZP)({prop:"minHeight",transform:P});(0,o.ZP)({prop:"size",cssProperty:"width",transform:P}),(0,o.ZP)({prop:"size",cssProperty:"height",transform:P}),i(_,O,R,T,A,j,(0,o.ZP)({prop:"boxSizing"}));var F={border:{themeKey:"borders",transform:l},borderTop:{themeKey:"borders",transform:l},borderRight:{themeKey:"borders",transform:l},borderBottom:{themeKey:"borders",transform:l},borderLeft:{themeKey:"borders",transform:l},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:l},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:S},color:{themeKey:"palette",transform:C},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:C},backgroundColor:{themeKey:"palette",transform:C},p:{style:r.o3},pt:{style:r.o3},pr:{style:r.o3},pb:{style:r.o3},pl:{style:r.o3},px:{style:r.o3},py:{style:r.o3},padding:{style:r.o3},paddingTop:{style:r.o3},paddingRight:{style:r.o3},paddingBottom:{style:r.o3},paddingLeft:{style:r.o3},paddingX:{style:r.o3},paddingY:{style:r.o3},paddingInline:{style:r.o3},paddingInlineStart:{style:r.o3},paddingInlineEnd:{style:r.o3},paddingBlock:{style:r.o3},paddingBlockStart:{style:r.o3},paddingBlockEnd:{style:r.o3},m:{style:r.e6},mt:{style:r.e6},mr:{style:r.e6},mb:{style:r.e6},ml:{style:r.e6},mx:{style:r.e6},my:{style:r.e6},margin:{style:r.e6},marginTop:{style:r.e6},marginRight:{style:r.e6},marginBottom:{style:r.e6},marginLeft:{style:r.e6},marginX:{style:r.e6},marginY:{style:r.e6},marginInline:{style:r.e6},marginInlineStart:{style:r.e6},marginInlineEnd:{style:r.e6},marginBlock:{style:r.e6},marginBlockStart:{style:r.e6},marginBlockEnd:{style:r.e6},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:k},rowGap:{style:Z},columnGap:{style:E},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:P},maxWidth:{style:O},minWidth:{transform:P},height:{transform:P},maxHeight:{transform:P},minHeight:{transform:P},boxSizing:{},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}},9707:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(7462),o=n(3366),a=n(8027),i=n(8010);const s=["sx"],l=e=>{var t,n;const r={systemProps:{},otherProps:{}},o=null!=(t=null==e||null==(n=e.theme)?void 0:n.unstable_sxConfig)?t:i.Z;return Object.keys(e).forEach((t=>{o[t]?r.systemProps[t]=e[t]:r.otherProps[t]=e[t]})),r};function u(e){const{sx:t}=e,n=(0,o.Z)(e,s),{systemProps:i,otherProps:u}=l(n);let c;return c=Array.isArray(t)?[i,...t]:"function"==typeof t?(...e)=>{const n=t(...e);return(0,a.P)(n)?(0,r.Z)({},i,n):i}:(0,r.Z)({},i,t),(0,r.Z)({},u,{sx:c})}},386:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r.Z},extendSxProp:function(){return o.Z},unstable_createStyleFunctionSx:function(){return r.n},unstable_defaultSxConfig:function(){return a.Z}});var r=n(6523),o=n(9707),a=n(8010)},6523:function(e,t,n){"use strict";n.d(t,{n:function(){return l}});var r=n(2908),o=n(7730),a=n(4844),i=n(5408),s=n(8010);function l(){function e(e,t,n,o){const s={[e]:t,theme:n},l=o[e];if(!l)return{[e]:t};const{cssProperty:u=e,themeKey:c,transform:d,style:p}=l;if(null==t)return null;if("typography"===c&&"inherit"===t)return{[e]:t};const f=(0,a.DW)(n,c)||{};if(p)return p(s);return(0,i.k9)(s,t,(t=>{let n=(0,a.Jq)(f,d,t);return t===n&&"string"==typeof t&&(n=(0,a.Jq)(f,d,`${e}${"default"===t?"":(0,r.Z)(t)}`,t)),!1===u?n:{[u]:n}}))}return function t(n){var r;const{sx:a,theme:l={}}=n||{};if(!a)return null;const u=null!=(r=l.unstable_sxConfig)?r:s.Z;function c(n){let r=n;if("function"==typeof n)r=n(l);else if("object"!=typeof n)return n;if(!r)return null;const a=(0,i.W8)(l.breakpoints),s=Object.keys(a);let c=a;return Object.keys(r).forEach((n=>{const a=(s=r[n],d=l,"function"==typeof s?s(d):s);var s,d;if(null!=a)if("object"==typeof a)if(u[n])c=(0,o.Z)(c,e(n,a,l,u));else{const e=(0,i.k9)({theme:l},a,(e=>({[n]:e})));!function(...e){const t=e.reduce(((e,t)=>e.concat(Object.keys(t))),[]),n=new Set(t);return e.every((e=>n.size===Object.keys(e).length))}(e,a)?c=(0,o.Z)(c,e):c[n]=t({sx:a,theme:l})}else c=(0,o.Z)(c,e(n,a,l,u))})),(0,i.L7)(s,c)}return Array.isArray(a)?a.map(c):c(a)}}const u=l();u.filterProps=["sx"],t.Z=u},6631:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var r=n(7408),o=n(7294),a=n(6498);var i=function(e=null){const t=o.useContext(a.T);return t&&(n=t,0!==Object.keys(n).length)?t:e;var n};const s=(0,r.Z)();var l=function(e=s){return i(e)}},3207:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var r=n(7462);function o(e,t){const n=(0,r.Z)({},t);return Object.keys(e).forEach((a=>{if(a.toString().match(/^(components|slots)$/))n[a]=(0,r.Z)({},e[a],n[a]);else if(a.toString().match(/^(componentsProps|slotProps)$/)){const i=e[a]||{},s=t[a];n[a]={},s&&Object.keys(s)?i&&Object.keys(i)?(n[a]=(0,r.Z)({},s),Object.keys(i).forEach((e=>{n[a][e]=o(i[e],s[e])}))):n[a]=s:n[a]=i}else void 0===n[a]&&(n[a]=e[a])})),n}function a(e){const{theme:t,name:n,props:r}=e;return t&&t.components&&t.components[n]&&t.components[n].defaultProps?o(t.components[n].defaultProps,r):r}var i=n(6631);function s({props:e,name:t,defaultTheme:n,themeId:r}){let o=(0,i.Z)(n);r&&(o=o[r]||o);return a({theme:o,name:t,props:e})}},2908:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(8758);function o(e){if("string"!=typeof e)throw new Error((0,r.Z)(7));return e.charAt(0).toUpperCase()+e.slice(1)}},9698:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r.Z}});var r=n(2908)},2358:function(e,t){"use strict";t.Z=function(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}},7859:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r.Z}});var r=n(2358)},8510:function(e,t,n){"use strict";function r(e,t,n=void 0){const r={};return Object.keys(e).forEach((o=>{r[o]=e[o].reduce(((e,r)=>{if(r){const o=t(r);""!==o&&e.push(o),n&&n[r]&&e.push(n[r])}return e}),[]).join(" ")})),r}n.d(t,{Z:function(){return r}})},8027:function(e,t,n){"use strict";n.d(t,{P:function(){return o},Z:function(){return i}});var r=n(7462);function o(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)}function a(e){if(!o(e))return e;const t={};return Object.keys(e).forEach((n=>{t[n]=a(e[n])})),t}function i(e,t,n={clone:!0}){const s=n.clone?(0,r.Z)({},e):e;return o(e)&&o(t)&&Object.keys(t).forEach((r=>{o(t[r])&&Object.prototype.hasOwnProperty.call(e,r)&&o(e[r])?s[r]=i(e[r],t[r],n):n.clone?s[r]=o(t[r])?a(t[r]):t[r]:s[r]=t[r]})),s}},211:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return r.Z},isPlainObject:function(){return r.P}});var r=n(8027)},8758:function(e,t,n){"use strict";function r(e){let t="https://mui.com/production-error/?code="+e;for(let n=1;ne;var o=(()=>{let e=r;return{configure(t){e=t},generate(t){return e(t)},reset(){e=r}}})();const a={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function i(e,t,n="Mui"){const r=a[t];return r?`${n}-${r}`:`${o.generate(e)}-${t}`}},1977:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(3559);function o(e,t,n="Mui"){const o={};return t.forEach((t=>{o[t]=(0,r.ZP)(e,t,n)})),o}},2240:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return l},getFunctionName:function(){return a}});var r=n(217);const o=/^\s*function(?:\s|\s*\/\*.*\*\/\s*)+([^(\s/]*)\s*/;function a(e){const t=`${e}`.match(o);return t&&t[1]||""}function i(e,t=""){return e.displayName||e.name||a(e)||t}function s(e,t,n){const r=i(t);return e.displayName||(""!==r?`${n}(${r})`:n)}function l(e){if(null!=e){if("string"==typeof e)return e;if("function"==typeof e)return i(e,"Component");if("object"==typeof e)switch(e.$$typeof){case r.ForwardRef:return s(e,e.render,"ForwardRef");case r.Memo:return s(e,e.type,"memo");default:return}}}},7001:function(e,t){"use strict";var n,r=Symbol.for("react.element"),o=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),u=Symbol.for("react.context"),c=Symbol.for("react.server_context"),d=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),f=Symbol.for("react.suspense_list"),h=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),g=Symbol.for("react.offscreen");function v(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case a:case s:case i:case p:case f:return e;default:switch(e=e&&e.$$typeof){case c:case u:case d:case m:case h:case l:return e;default:return t}}case o:return t}}}n=Symbol.for("react.module.reference"),t.ForwardRef=d,t.Memo=h},217:function(e,t,n){"use strict";e.exports=n(7001)},5091:function(e,t,n){"use strict";function r(e,t){"function"==typeof e?e(t):e&&(e.current=t)}n.d(t,{Z:function(){return r}})},4895:function(e,t,n){"use strict";var r=n(7294);const o="undefined"!=typeof window?r.useLayoutEffect:r.useEffect;t.Z=o},2010:function(e,t,n){"use strict";var r=n(7294),o=n(4895);t.Z=function(e){const t=r.useRef(e);return(0,o.Z)((()=>{t.current=e})),r.useRef(((...e)=>(0,t.current)(...e))).current}},2760:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(7294),o=n(5091);function a(...e){return r.useMemo((()=>e.every((e=>null==e))?null:t=>{e.forEach((e=>{(0,o.Z)(e,t)}))}),e)}},8849:function(e,t,n){"use strict";n.d(t,{V:function(){return i},Z:function(){return s}});var r=n(7294);const o={};const a=[];class i{constructor(){this.currentId=null,this.clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)},this.disposeEffect=()=>this.clear}static create(){return new i}start(e,t){this.clear(),this.currentId=setTimeout((()=>{this.currentId=null,t()}),e)}}function s(){const e=function(e,t){const n=r.useRef(o);return n.current===o&&(n.current=e(t)),n}(i.create).current;var t;return t=e.disposeEffect,r.useEffect(t,a),e}},3821:function(e,t,n){var r=n(9720).w_;e.exports.W=function(e){return r({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{d:"M.05 3.555L8 8.414l7.95-4.859A2 2 0 0014 2H2A2 2 0 00.05 3.555zM16 4.697l-5.875 3.59L16 11.743V4.697zm-.168 8.108L9.157 8.879 8 9.586l-1.157-.707-6.675 3.926A2 2 0 002 14h12a2 2 0 001.832-1.195zM0 11.743l5.875-3.456L0 4.697v7.046z"}}]})(e)}},6577:function(e,t,n){var r=n(9720).w_;e.exports.H=function(e){return r({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M1 2.5A1.5 1.5 0 012.5 1h3A1.5 1.5 0 017 2.5v3A1.5 1.5 0 015.5 7h-3A1.5 1.5 0 011 5.5v-3zm8 0A1.5 1.5 0 0110.5 1h3A1.5 1.5 0 0115 2.5v3A1.5 1.5 0 0113.5 7h-3A1.5 1.5 0 019 5.5v-3zm-8 8A1.5 1.5 0 012.5 9h3A1.5 1.5 0 017 10.5v3A1.5 1.5 0 015.5 15h-3A1.5 1.5 0 011 13.5v-3zm8 0A1.5 1.5 0 0110.5 9h3a1.5 1.5 0 011.5 1.5v3a1.5 1.5 0 01-1.5 1.5h-3A1.5 1.5 0 019 13.5v-3z",clipRule:"evenodd"}}]})(e)}},1121:function(e,t,n){var r=n(9720).w_;e.exports.s=function(e){return r({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z"}}]})(e)}},5337:function(e,t,n){var r=n(9720).w_;e.exports.l=function(e){return r({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"}}]})(e)}},7054:function(e,t,n){var r=n(9720).w_;e.exports.W=function(e){return r({tag:"svg",attr:{viewBox:"0 0 496 512"},child:[{tag:"path",attr:{d:"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z"}}]})(e)}},874:function(e,t,n){var r=n(9720).w_;e.exports.x=function(e){return r({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"}}]})(e)}},9720:function(e,t,n){"use strict";n.d(t,{w_:function(){return u},Pd:function(){return a}});var r=n(7294),o={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},a=r.createContext&&r.createContext(o),i=function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{if("/"===e)return e;const r=e.endsWith("/");return((e,t)=>{for(const n of e)if(t.endsWith(n))return!0;return!1})(n,e)?e:"always"===t?r?e:`${e}/`:"never"===t&&r?e.slice(0,-1):e}},9679:function(e,t,n){"use strict";t.$C=void 0;var r=n(1432);t.$C=r.ScrollHandler,n(4855).useScrollRestoration},1432:function(e,t,n){"use strict";var r=n(4836);t.__esModule=!0,t.ScrollHandler=t.ScrollContext=void 0;var o=r(n(6115)),a=r(n(7867)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=u(t);if(n&&n.has(e))return n.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}r.default=e,n&&n.set(e,r);return r}(n(7294)),s=r(n(5697)),l=n(1142);function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(u=function(e){return e?n:t})(e)}var c=i.createContext(new l.SessionStorage);t.ScrollContext=c,c.displayName="GatsbyScrollContext";var d=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a{}},8611:function(e,t){"use strict";t.__esModule=!0,t.getForwards=function(e){return null==e?void 0:e.flatMap((e=>(null==e?void 0:e.forward)||[]))}},2731:function(e,t,n){"use strict";t.__esModule=!0,t.injectPartytownSnippet=function(e){if(!e.length)return;const t=document.querySelector("script[data-partytown]"),n=document.querySelector('iframe[src*="~partytown/partytown-sandbox-sw"]');t&&t.remove();n&&n.remove();const a=(0,o.getForwards)(e),i=document.createElement("script");i.dataset.partytown="",i.innerHTML=(0,r.partytownSnippet)({forward:a}),document.head.appendChild(i)};var r=n(4987),o=n(8611)},5418:function(e,t,n){t.components={"component---src-pages-templates-404-tsx":()=>n.e(514).then(n.bind(n,4808)),"component---src-pages-templates-blog-by-author-tsx":()=>Promise.all([n.e(403),n.e(748)]).then(n.bind(n,1655)),"component---src-pages-templates-blog-by-hashtag-tsx":()=>Promise.all([n.e(403),n.e(899)]).then(n.bind(n,5029)),"component---src-pages-templates-blog-tsx":()=>Promise.all([n.e(403),n.e(926)]).then(n.bind(n,6906)),"component---src-pages-templates-index-tsx":()=>Promise.all([n.e(532),n.e(403),n.e(577),n.e(602),n.e(832)]).then(n.bind(n,171)),"component---src-pages-templates-policies-tsx":()=>n.e(149).then(n.bind(n,5341)),"component---src-pages-templates-post-tsx":()=>Promise.all([n.e(403),n.e(354)]).then(n.bind(n,7724)),"component---src-pages-templates-project-tsx":()=>Promise.all([n.e(403),n.e(602),n.e(147)]).then(n.bind(n,1880)),"component---src-pages-templates-projects-tsx":()=>Promise.all([n.e(403),n.e(650)]).then(n.bind(n,3997)),"component---src-pages-templates-services-tsx":()=>Promise.all([n.e(403),n.e(577),n.e(602),n.e(417)]).then(n.bind(n,9153)),"component---src-pages-templates-workflow-tsx":()=>Promise.all([n.e(403),n.e(577),n.e(548)]).then(n.bind(n,240))}},4741:function(e,t,n){e.exports=[{plugin:n(2154),options:{plugins:[],maxWidth:650,linkImagesToOriginal:!0,showCaptions:!1,markdownCaptions:!1,backgroundColor:"white",quality:50,withWebp:!1,withAvif:!1,loading:"lazy",decoding:"async",disableBgImageOnAlpha:!1,disableBgImage:!1}},{plugin:n(2154),options:{plugins:[],maxWidth:900,withAvif:!0,withWebp:!0,showCaptions:["alt"],linkImagesToOriginal:!0,markdownCaptions:!1,backgroundColor:"white",quality:50,loading:"lazy",decoding:"async",disableBgImageOnAlpha:!1,disableBgImage:!1}},{plugin:n(2154),options:{plugins:[],maxWidth:900,withAvif:!0,withWebp:!0,showCaptions:["alt"],linkImagesToOriginal:!0,markdownCaptions:!1,backgroundColor:"white",quality:50,loading:"lazy",decoding:"async",disableBgImageOnAlpha:!1,disableBgImage:!1}},{plugin:n(5688),options:{plugins:[],component:"/home/runner/work/codecave.pro-new/codecave.pro-new/src/components/layout/layout.tsx"}},{plugin:n(8101),options:{plugins:[],trackingCode:"21836033",respectDNT:!0,productionOnly:!1}},{plugin:n(127),options:{plugins:[]}},{plugin:n(4094),options:{plugins:[]}}]},3092:function(e,t,n){const r=n(4741),{getResourceURLsForPathname:o,loadPage:a,loadPageSync:i}=n(1975).jN;t.h=function(e,t,n,s){void 0===t&&(t={});let l=r.map((n=>{if(!n.plugin[e])return;t.getResourceURLsForPathname=o,t.loadPage=a,t.loadPageSync=i;const r=n.plugin[e](t,n.options);return r&&s&&(t=s({args:t,result:r,plugin:n})),r}));return l=l.filter((e=>void 0!==e)),l.length>0?l:n?[n]:[]},t.I=(e,t,n)=>r.reduce(((n,r)=>r.plugin[e]?n.then((()=>r.plugin[e](t,r.options))):n),Promise.resolve())},4004:function(e,t){},8299:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});var r=function(e){return e=e||Object.create(null),{on:function(t,n){(e[t]||(e[t]=[])).push(n)},off:function(t,n){e[t]&&e[t].splice(e[t].indexOf(n)>>>0,1)},emit:function(t,n){(e[t]||[]).slice().map((function(e){e(n)})),(e["*"]||[]).slice().map((function(e){e(t,n)}))}}}()},7802:function(e,t,n){"use strict";n.d(t,{UD:function(){return p},Cj:function(){return h},GA:function(){return f},DS:function(){return d}});var r=n(7896),o=n(1505),a=e=>{if(void 0===e)return e;let[t,n=""]=e.split("?");return n&&(n="?"+n),"/"===t?"/"+n:"/"===t.charAt(t.length-1)?t.slice(0,-1)+n:t+n},i=n(6073);const s=new Map;let l=[];const u=e=>{let t=e;if(-1!==e.indexOf("?")){const[n,r]=e.split("?");t=`${n}?${encodeURIComponent(r)}`}const n=decodeURIComponent(t);return(0,o.Z)(n,decodeURIComponent("")).split("#")[0]};function c(e){return e.startsWith("/")||e.startsWith("https://")||e.startsWith("http://")?e:new URL(e,window.location.href+(window.location.href.endsWith("/")?"":"/")).pathname}const d=e=>{l=e},p=e=>{const t=m(e),n=l.map((e=>{let{path:t,matchPath:n}=e;return{path:n,originalPath:t}})),o=(0,r.pick)(n,t);return o?a(o.route.originalPath):null},f=e=>{const t=m(e),n=l.map((e=>{let{path:t,matchPath:n}=e;return{path:n,originalPath:t}})),o=(0,r.pick)(n,t);return o?o.params:{}},h=e=>{const t=u(c(e));if(s.has(t))return s.get(t);const n=(0,i.J)(e);if(n)return h(n.toPath);let r=p(t);return r||(r=m(e)),s.set(t,r),r},m=e=>{let t=u(c(e));return"/index.html"===t&&(t="/"),t=a(t),t}},4160:function(e,t,n){"use strict";n.d(t,{rU:function(){return o.rU},Xf:function(){return i.Script},B9:function(){return a.B9},K2:function(){return a.K2}});var r=n(1975),o=(n(2743),n(9679),n(1562)),a=n(1757);n(7294),n(4004),n(8995);var i=n(3521);r.ZP.enqueue},1975:function(e,t,n){"use strict";n.d(t,{uQ:function(){return d},kL:function(){return x},ZP:function(){return E},Nt:function(){return C},hs:function(){return Z},jN:function(){return k},N1:function(){return S}});var r=n(1721),o=n(5785),a=n(904);const i=function(e){if("undefined"==typeof document)return!1;const t=document.createElement("link");try{if(t.relList&&"function"==typeof t.relList.supports)return t.relList.supports(e)}catch(n){return!1}return!1}("prefetch")?function(e,t){return new Promise(((n,r)=>{if("undefined"==typeof document)return void r();const o=document.createElement("link");o.setAttribute("rel","prefetch"),o.setAttribute("href",e),Object.keys(t).forEach((e=>{o.setAttribute(e,t[e])})),o.onload=n,o.onerror=r;(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(o)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.onload=()=>{200===r.status?t():n()},r.send(null)}))},s={};var l=function(e,t){return new Promise((n=>{s[e]?n():i(e,t).then((()=>{n(),s[e]=!0})).catch((()=>{}))}))},u=n(8299),c=n(7802);const d={Error:"error",Success:"success"},p=e=>{const[t,n]=e.split("?");var r;return`/page-data/${"/"===t?"index":(r="/"===(r=t)[0]?r.slice(1):r).endsWith("/")?r.slice(0,-1):r}/page-data.json${n?`?${n}`:""}`},f=e=>e.startsWith("//");function h(e,t){return void 0===t&&(t="GET"),new Promise((n=>{const r=new XMLHttpRequest;r.open(t,e,!0),r.onreadystatechange=()=>{4==r.readyState&&n(r)},r.send(null)}))}const m=/bot|crawler|spider|crawling/i,g=function(e,t,n){var r;void 0===t&&(t=null);const o={componentChunkName:e.componentChunkName,path:e.path,webpackCompilationHash:e.webpackCompilationHash,matchPath:e.matchPath,staticQueryHashes:e.staticQueryHashes,getServerDataError:e.getServerDataError,slicesMap:null!==(r=e.slicesMap)&&void 0!==r?r:{}};return{component:t,head:n,json:e.result,page:o}};function v(e){return new Promise((t=>{try{const n=e.readRoot();t(n)}catch(n){if(!Object.hasOwnProperty.call(n,"_response")||!Object.hasOwnProperty.call(n,"_status"))throw n;setTimeout((()=>{v(e).then(t)}),200)}}))}let y=function(){function e(e,t){this.inFlightNetworkRequests=new Map,this.pageDb=new Map,this.inFlightDb=new Map,this.staticQueryDb={},this.pageDataDb=new Map,this.partialHydrationDb=new Map,this.slicesDataDb=new Map,this.sliceInflightDb=new Map,this.slicesDb=new Map,this.isPrefetchQueueRunning=!1,this.prefetchQueued=[],this.prefetchTriggered=new Set,this.prefetchCompleted=new Set,this.loadComponent=e,(0,c.DS)(t)}var t=e.prototype;return t.memoizedGet=function(e){let t=this.inFlightNetworkRequests.get(e);return t||(t=h(e,"GET"),this.inFlightNetworkRequests.set(e,t)),t.then((t=>(this.inFlightNetworkRequests.delete(e),t))).catch((t=>{throw this.inFlightNetworkRequests.delete(e),t}))},t.setApiRunner=function(e){this.apiRunner=e,this.prefetchDisabled=e("disableCorePrefetching").some((e=>e))},t.fetchPageDataJson=function(e){const{pagePath:t,retries:n=0}=e,r=p(t);return this.memoizedGet(r).then((r=>{const{status:o,responseText:a}=r;if(200===o)try{const n=JSON.parse(a);if(void 0===n.path)throw new Error("not a valid pageData response");const r=t.split("?")[1];return r&&!n.path.includes(r)&&(n.path+=`?${r}`),Object.assign(e,{status:d.Success,payload:n})}catch(i){}return 404===o||200===o?"/404.html"===t||"/500.html"===t?Object.assign(e,{status:d.Error}):this.fetchPageDataJson(Object.assign(e,{pagePath:"/404.html",notFound:!0})):500===o?this.fetchPageDataJson(Object.assign(e,{pagePath:"/500.html",internalServerError:!0})):n<3?this.fetchPageDataJson(Object.assign(e,{retries:n+1})):Object.assign(e,{status:d.Error})}))},t.fetchPartialHydrationJson=function(e){const{pagePath:t,retries:n=0}=e,r=p(t).replace(".json","-rsc.json");return this.memoizedGet(r).then((r=>{const{status:o,responseText:a}=r;if(200===o)try{return Object.assign(e,{status:d.Success,payload:a})}catch(i){}return 404===o||200===o?"/404.html"===t||"/500.html"===t?Object.assign(e,{status:d.Error}):this.fetchPartialHydrationJson(Object.assign(e,{pagePath:"/404.html",notFound:!0})):500===o?this.fetchPartialHydrationJson(Object.assign(e,{pagePath:"/500.html",internalServerError:!0})):n<3?this.fetchPartialHydrationJson(Object.assign(e,{retries:n+1})):Object.assign(e,{status:d.Error})}))},t.loadPageDataJson=function(e){const t=(0,c.Cj)(e);if(this.pageDataDb.has(t)){const e=this.pageDataDb.get(t);return Promise.resolve(e)}return this.fetchPageDataJson({pagePath:t}).then((e=>(this.pageDataDb.set(t,e),e)))},t.loadPartialHydrationJson=function(e){const t=(0,c.Cj)(e);if(this.partialHydrationDb.has(t)){const e=this.partialHydrationDb.get(t);return Promise.resolve(e)}return this.fetchPartialHydrationJson({pagePath:t}).then((e=>(this.partialHydrationDb.set(t,e),e)))},t.loadSliceDataJson=function(e){if(this.slicesDataDb.has(e)){const t=this.slicesDataDb.get(e);return Promise.resolve({sliceName:e,jsonPayload:t})}return h(`/slice-data/${e}.json`,"GET").then((t=>{const n=JSON.parse(t.responseText);return this.slicesDataDb.set(e,n),{sliceName:e,jsonPayload:n}}))},t.findMatchPath=function(e){return(0,c.UD)(e)},t.loadPage=function(e){const t=(0,c.Cj)(e);if(this.pageDb.has(t)){const e=this.pageDb.get(t);return e.error?Promise.resolve({error:e.error,status:e.status}):Promise.resolve(e.payload)}if(this.inFlightDb.has(t))return this.inFlightDb.get(t);const n=[this.loadAppData(),this.loadPageDataJson(t)];const r=Promise.all(n).then((e=>{const[n,r,i]=e;if(r.status===d.Error||(null==i?void 0:i.status)===d.Error)return{status:d.Error};let s=r.payload;const{componentChunkName:l,staticQueryHashes:c=[],slicesMap:p={}}=s,f={},h=Array.from(new Set(Object.values(p))),m=e=>{if(this.slicesDb.has(e.name))return this.slicesDb.get(e.name);if(this.sliceInflightDb.has(e.name))return this.sliceInflightDb.get(e.name);const t=this.loadComponent(e.componentChunkName).then((t=>{return{component:(n=t,n&&n.default||n),sliceContext:e.result.sliceContext,data:e.result.data};var n}));return this.sliceInflightDb.set(e.name,t),t.then((t=>{this.slicesDb.set(e.name,t),this.sliceInflightDb.delete(e.name)})),t};return Promise.all(h.map((e=>this.loadSliceDataJson(e)))).then((e=>{const p=[],h=(0,o.Z)(c);for(const{jsonPayload:t,sliceName:n}of Object.values(e)){p.push({name:n,...t});for(const e of t.staticQueryHashes)h.includes(e)||h.push(e)}const y=[Promise.all(p.map(m)),this.loadComponent(l,"head")];y.push(this.loadComponent(l));const b=Promise.all(y).then((e=>{const[t,o,l]=e;f.createdAt=new Date;for(const n of t)(!n||n instanceof Error)&&(f.status=d.Error,f.error=n);let u;if((!l||l instanceof Error)&&(f.status=d.Error,f.error=l),f.status!==d.Error){if(f.status=d.Success,!0!==r.notFound&&!0!==(null==i?void 0:i.notFound)||(f.notFound=!0),s=Object.assign(s,{webpackCompilationHash:n?n.webpackCompilationHash:""}),"string"==typeof(null==i?void 0:i.payload)){u=g(s,null,o),u.partialHydration=i.payload;const e=new ReadableStream({start(e){const t=new TextEncoder;e.enqueue(t.encode(i.payload))},pull(e){e.close()},cancel(){}});return v((0,a.createFromReadableStream)(e)).then((e=>(u.partialHydration=e,u)))}u=g(s,l,o)}return u})),w=Promise.all(h.map((e=>{if(this.staticQueryDb[e]){const t=this.staticQueryDb[e];return{staticQueryHash:e,jsonPayload:t}}return this.memoizedGet(`/page-data/sq/d/${e}.json`).then((t=>{const n=JSON.parse(t.responseText);return{staticQueryHash:e,jsonPayload:n}})).catch((()=>{throw new Error(`We couldn't load "/page-data/sq/d/${e}.json"`)}))}))).then((e=>{const t={};return e.forEach((e=>{let{staticQueryHash:n,jsonPayload:r}=e;t[n]=r,this.staticQueryDb[n]=r})),t}));return Promise.all([b,w]).then((e=>{let n,[r,o]=e;return r&&(n={...r,staticQueryResults:o},f.payload=n,u.Z.emit("onPostLoadPageResources",{page:n,pageResources:n})),this.pageDb.set(t,f),f.error?{error:f.error,status:f.status}:n})).catch((e=>({error:e,status:d.Error})))}))}));return r.then((()=>{this.inFlightDb.delete(t)})).catch((e=>{throw this.inFlightDb.delete(t),e})),this.inFlightDb.set(t,r),r},t.loadPageSync=function(e,t){void 0===t&&(t={});const n=(0,c.Cj)(e);if(this.pageDb.has(n)){var r;const e=this.pageDb.get(n);if(e.payload)return e.payload;if(null!==(r=t)&&void 0!==r&&r.withErrorDetails)return{error:e.error,status:e.status}}},t.shouldPrefetch=function(e){return!!(()=>{if("connection"in navigator&&void 0!==navigator.connection){if((navigator.connection.effectiveType||"").includes("2g"))return!1;if(navigator.connection.saveData)return!1}return!0})()&&((!navigator.userAgent||!m.test(navigator.userAgent))&&!this.pageDb.has(e))},t.prefetch=function(e){if(!this.shouldPrefetch(e))return{then:e=>e(!1),abort:()=>{}};if(this.prefetchTriggered.has(e))return{then:e=>e(!0),abort:()=>{}};const t={resolve:null,reject:null,promise:null};t.promise=new Promise(((e,n)=>{t.resolve=e,t.reject=n})),this.prefetchQueued.push([e,t]);const n=new AbortController;return n.signal.addEventListener("abort",(()=>{const t=this.prefetchQueued.findIndex((t=>{let[n]=t;return n===e}));-1!==t&&this.prefetchQueued.splice(t,1)})),this.isPrefetchQueueRunning||(this.isPrefetchQueueRunning=!0,setTimeout((()=>{this._processNextPrefetchBatch()}),3e3)),{then:(e,n)=>t.promise.then(e,n),abort:n.abort.bind(n)}},t._processNextPrefetchBatch=function(){(window.requestIdleCallback||(e=>setTimeout(e,0)))((()=>{const e=this.prefetchQueued.splice(0,4),t=Promise.all(e.map((e=>{let[t,n]=e;return this.prefetchTriggered.has(t)||(this.apiRunner("onPrefetchPathname",{pathname:t}),this.prefetchTriggered.add(t)),this.prefetchDisabled?n.resolve(!1):this.doPrefetch((0,c.Cj)(t)).then((()=>{this.prefetchCompleted.has(t)||(this.apiRunner("onPostPrefetchPathname",{pathname:t}),this.prefetchCompleted.add(t)),n.resolve(!0)}))})));this.prefetchQueued.length?t.then((()=>{setTimeout((()=>{this._processNextPrefetchBatch()}),3e3)})):this.isPrefetchQueueRunning=!1}))},t.doPrefetch=function(e){const t=p(e);return l(t,{crossOrigin:"anonymous",as:"fetch"}).then((()=>this.loadPageDataJson(e)))},t.hovering=function(e){this.loadPage(e)},t.getResourceURLsForPathname=function(e){const t=(0,c.Cj)(e),n=this.pageDataDb.get(t);if(n){const e=g(n.payload);return[].concat((0,o.Z)(b(e.page.componentChunkName)),[p(t)])}return null},t.isPageNotFound=function(e){const t=(0,c.Cj)(e),n=this.pageDb.get(t);return!n||n.notFound},t.loadAppData=function(e){return void 0===e&&(e=0),this.memoizedGet("/page-data/app-data.json").then((t=>{const{status:n,responseText:r}=t;let o;if(200!==n&&e<3)return this.loadAppData(e+1);if(200===n)try{const e=JSON.parse(r);if(void 0===e.webpackCompilationHash)throw new Error("not a valid app-data response");o=e}catch(a){}return o}))},e}();const b=e=>(window.___chunkMapping[e]||[]).map((e=>""+e));let w,x=function(e){function t(t,n,r){var o;return o=e.call(this,(function(e,n){if(void 0===n&&(n="components"),!t[n="components"][e])throw new Error(`We couldn't find the correct component chunk with the name "${e}"`);return t[n][e]().catch((e=>e))}),n)||this,r&&o.pageDataDb.set((0,c.Cj)(r.path),{pagePath:r.path,payload:r,status:"success"}),o}(0,r.Z)(t,e);var n=t.prototype;return n.doPrefetch=function(t){return e.prototype.doPrefetch.call(this,t).then((e=>{if(e.status!==d.Success)return Promise.resolve();const t=e.payload,n=t.componentChunkName,r=b(n);return Promise.all(r.map(l)).then((()=>t))}))},n.loadPageDataJson=function(t){return e.prototype.loadPageDataJson.call(this,t).then((e=>e.notFound?f(t)?e:h(t,"HEAD").then((t=>200===t.status?{status:d.Error}:e)):e))},n.loadPartialHydrationJson=function(t){return e.prototype.loadPartialHydrationJson.call(this,t).then((e=>e.notFound?f(t)?e:h(t,"HEAD").then((t=>200===t.status?{status:d.Error}:e)):e))},t}(y);const S=e=>{w=e},k={enqueue:e=>w.prefetch(e),getResourceURLsForPathname:e=>w.getResourceURLsForPathname(e),loadPage:e=>w.loadPage(e),loadPageSync:function(e,t){return void 0===t&&(t={}),w.loadPageSync(e,t)},prefetch:e=>w.prefetch(e),isPageNotFound:e=>w.isPageNotFound(e),hovering:e=>w.hovering(e),loadAppData:()=>w.loadAppData()};var E=k;function Z(){return w?w.staticQueryDb:{}}function C(){return w?w.slicesDb:{}}},4779:function(e,t,n){"use strict";n.d(t,{Z:function(){return Z}});var r=n(7294),o=n(5697),a=n.n(o),i=n(3092),s=n(7802),l=n(5785),u=n(4160),c=n(7896),d=n(4941);function p(e){let{children:t,callback:n}=e;return(0,r.useEffect)((()=>{n()})),t}const f=["link","meta","style","title","base","noscript","script","html","body"];function h(e,t){if(e instanceof HTMLElement&&t instanceof HTMLElement){const n=t.getAttribute("nonce");if(n&&!e.getAttribute("nonce")){const r=t.cloneNode(!0);return r.setAttribute("nonce",""),r.nonce=n,n===e.nonce&&e.isEqualNode(r)}}return e.isEqualNode(t)}function m(e,t){void 0===t&&(t={html:{},body:{}});const n=new Map,r=[];for(const u of e.childNodes){var o,a;const e=u.nodeName.toLowerCase(),c=null===(o=u.attributes)||void 0===o||null===(a=o.id)||void 0===a?void 0:a.value;if(y(u)){if(v(e))if("html"===e||"body"===e)for(const n of u.attributes){const r="style"===n.name;var i;if(t[e]={...t[e]},r||(t[e][n.name]=n.value),r)t[e].style=`${null!==(i=t[e])&&void 0!==i&&i.style?t[e].style:""}${n.value} `}else{let e=u.cloneNode(!0);if(e.setAttribute("data-gatsby-head",!0),"script"===e.nodeName.toLowerCase()&&(e=g(e)),c)if(n.has(c)){var s;const t=n.get(c);null===(s=r[t].parentNode)||void 0===s||s.removeChild(r[t]),r[t]=e}else r.push(e),n.set(c,r.length-1);else r.push(e)}u.childNodes.length&&r.push.apply(r,(0,l.Z)(m(u,t).validHeadNodes))}}return{validHeadNodes:r,htmlAndBodyAttributes:t}}function g(e){const t=document.createElement("script");for(const n of e.attributes)t.setAttribute(n.name,n.value);return t.innerHTML=e.innerHTML,t}function v(e){return f.includes(e)}function y(e){return 1===e.nodeType}var b=n(917);const w=document.createElement("div"),x={html:[],body:[]},S=()=>{var e;const{validHeadNodes:t,htmlAndBodyAttributes:n}=m(w);x.html=Object.keys(n.html),x.body=Object.keys(n.body),function(e){if(!e)return;const{html:t,body:n}=e,r=document.querySelector("html");r&&Object.entries(t).forEach((e=>{let[t,n]=e;r.setAttribute(t,n)}));const o=document.querySelector("body");o&&Object.entries(n).forEach((e=>{let[t,n]=e;o.setAttribute(t,n)}))}(n);const r=document.querySelectorAll("[data-gatsby-head]");var o;if(0===r.length)return void(o=document.head).append.apply(o,(0,l.Z)(t));const a=[];!function(e){let{oldNodes:t,newNodes:n,onStale:r,onNew:o}=e;for(const a of t){const e=n.findIndex((e=>h(e,a)));-1===e?r(a):n.splice(e,1)}for(const a of n)o(a)}({oldNodes:r,newNodes:t,onStale:e=>e.parentNode.removeChild(e),onNew:e=>a.push(e)}),(e=document.head).append.apply(e,a)};function k(e){let{pageComponent:t,staticQueryResults:n,pageComponentProps:o}=e;(0,r.useEffect)((()=>{if(null!=t&&t.Head){!function(e){if("function"!=typeof e)throw new Error(`Expected "Head" export to be a function got "${typeof e}".`)}(t.Head);const{render:r}=(0,d.U)(),a=(0,b.tZ)(t.Head,{location:{pathname:(e=o).location.pathname},params:e.params,data:e.data||{},serverData:e.serverData,pageContext:e.pageContext}),s=(0,i.h)("wrapRootElement",{element:a},a,(e=>{let{result:t}=e;return{element:t}})).pop();r((0,b.tZ)(p,{callback:S},(0,b.tZ)(u.B9.Provider,{value:n},(0,b.tZ)(c.LocationProvider,null,s))),w)}var e;return()=>{!function(){const e=document.querySelectorAll("[data-gatsby-head]");for(const t of e)t.parentNode.removeChild(t)}(),function(e){if(!e)return;const{html:t,body:n}=e;if(t){const e=document.querySelector("html");t.forEach((t=>{e&&e.removeAttribute(t)}))}if(n){const e=document.querySelector("body");n.forEach((t=>{e&&e.removeAttribute(t)}))}}(x)}}))}function E(e){const t={...e,params:{...(0,s.GA)(e.location.pathname),...e.pageResources.json.pageContext.__params}};let n;var o;n=e.pageResources.partialHydration?e.pageResources.partialHydration:(0,r.createElement)((o=e.pageResources.component)&&o.default||o,{...t,key:e.path||e.pageResources.page.path});k({pageComponent:e.pageResources.head,staticQueryResults:e.pageResources.staticQueryResults,pageComponentProps:t});return(0,i.h)("wrapPageElement",{element:n,props:t},n,(e=>{let{result:n}=e;return{element:n,props:t}})).pop()}E.propTypes={location:a().object.isRequired,pageResources:a().object.isRequired,data:a().object,pageContext:a().object.isRequired};var Z=E},5824:function(e,t,n){"use strict";var r=n(7462),o=n(1721),a=n(3092),i=n(7294),s=n(7896),l=n(9679),u=n(1757),c=n(8995),d=n(1975),p=n(6073),f=n(8299);const h={id:"gatsby-announcer",style:{position:"absolute",top:0,width:1,height:1,padding:0,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0},"aria-live":"assertive","aria-atomic":"true"};var m=n(1562),g=n(917);function v(e){const t=(0,p.J)(e),{hash:n,search:r}=window.location;return null!=t&&(window.___replace(t.toPath+r+n),!0)}let y="";window.addEventListener("unhandledrejection",(e=>{/loading chunk \d* failed./i.test(e.reason)&&y&&(window.location.pathname=y)}));const b=(e,t)=>{v(e.pathname)||(y=e.pathname,(0,a.h)("onPreRouteUpdate",{location:e,prevLocation:t}))},w=(e,t)=>{v(e.pathname)||(0,a.h)("onRouteUpdate",{location:e,prevLocation:t})},x=function(e,t){if(void 0===t&&(t={}),"number"==typeof e)return void s.globalHistory.navigate(e);const{pathname:n,search:r,hash:o}=(0,m.cP)(e),i=(0,p.J)(n);if(i&&(e=i.toPath+r+o),window.___swUpdated)return void(window.location=n+r+o);const l=setTimeout((()=>{f.Z.emit("onDelayedLoadPageResources",{pathname:n}),(0,a.h)("onRouteUpdateDelayed",{location:window.location})}),1e3);d.ZP.loadPage(n+r).then((a=>{if(!a||a.status===d.uQ.Error)return window.history.replaceState({},"",location.href),window.location=n,void clearTimeout(l);a&&a.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),window.location=n+r+o),(0,s.navigate)(e,t),clearTimeout(l)}))};function S(e,t){let{location:n}=t;const{pathname:r,hash:o}=n,i=(0,a.h)("shouldUpdateScroll",{prevRouterProps:e,pathname:r,routerProps:{location:n},getSavedScrollPosition:e=>[0,this._stateStorage.read(e,e.key)]});if(i.length>0)return i[i.length-1];if(e){const{location:{pathname:t}}=e;if(t===r)return o?decodeURI(o.slice(1)):[0,0]}return!0}let k=function(e){function t(t){var n;return(n=e.call(this,t)||this).announcementRef=i.createRef(),n}(0,o.Z)(t,e);var n=t.prototype;return n.componentDidUpdate=function(e,t){requestAnimationFrame((()=>{let e=`new page at ${this.props.location.pathname}`;document.title&&(e=document.title);const t=document.querySelectorAll("#gatsby-focus-wrapper h1");t&&t.length&&(e=t[0].textContent);const n=`Navigated to ${e}`;if(this.announcementRef.current){this.announcementRef.current.innerText!==n&&(this.announcementRef.current.innerText=n)}}))},n.render=function(){return(0,g.tZ)("div",(0,r.Z)({},h,{ref:this.announcementRef}))},t}(i.Component);const E=(e,t)=>{var n,r;return e.href!==t.href||(null==e||null===(n=e.state)||void 0===n?void 0:n.key)!==(null==t||null===(r=t.state)||void 0===r?void 0:r.key)};let Z=function(e){function t(t){var n;return n=e.call(this,t)||this,b(t.location,null),n}(0,o.Z)(t,e);var n=t.prototype;return n.componentDidMount=function(){w(this.props.location,null)},n.shouldComponentUpdate=function(e){return!!E(this.props.location,e.location)&&(b(e.location,this.props.location),!0)},n.componentDidUpdate=function(e){E(e.location,this.props.location)&&w(this.props.location,e.location)},n.render=function(){return(0,g.tZ)(i.Fragment,null,this.props.children,(0,g.tZ)(k,{location:location}))},t}(i.Component);var C=n(4779),P=n(5418);function _(e,t){for(var n in e)if(!(n in t))return!0;for(var r in t)if(e[r]!==t[r])return!0;return!1}var O=function(e){function t(t){var n;n=e.call(this)||this;const{location:r,pageResources:o}=t;return n.state={location:{...r},pageResources:o||d.ZP.loadPageSync(r.pathname+r.search,{withErrorDetails:!0})},n}(0,o.Z)(t,e),t.getDerivedStateFromProps=function(e,t){let{location:n}=e;if(t.location.href!==n.href){return{pageResources:d.ZP.loadPageSync(n.pathname+n.search,{withErrorDetails:!0}),location:{...n}}}return{location:{...n}}};var n=t.prototype;return n.loadResources=function(e){d.ZP.loadPage(e).then((t=>{t&&t.status!==d.uQ.Error?this.setState({location:{...window.location},pageResources:t}):(window.history.replaceState({},"",location.href),window.location=e)}))},n.shouldComponentUpdate=function(e,t){return t.pageResources?this.state.pageResources!==t.pageResources||(this.state.pageResources.component!==t.pageResources.component||(this.state.pageResources.json!==t.pageResources.json||(!(this.state.location.key===t.location.key||!t.pageResources.page||!t.pageResources.page.matchPath&&!t.pageResources.page.path)||function(e,t,n){return _(e.props,t)||_(e.state,n)}(this,e,t)))):(this.loadResources(e.location.pathname+e.location.search),!1)},n.render=function(){return this.props.children(this.state)},t}(i.Component),R=n(1505),T=n(4941);const A=new d.kL(P,[],window.pageData);(0,d.N1)(A),A.setApiRunner(a.h);const{render:j,hydrate:F}=(0,T.U)();window.asyncRequires=P,window.___emitter=f.Z,window.___loader=d.jN,s.globalHistory.listen((e=>{e.location.action=e.action})),window.___push=e=>x(e,{replace:!1}),window.___replace=e=>x(e,{replace:!0}),window.___navigate=(e,t)=>x(e,t);const N="gatsby-reload-compilation-hash-match";(0,a.I)("onClientEntry").then((()=>{(0,a.h)("registerServiceWorker").filter(Boolean).length>0&&n(9939);const e=e=>(0,g.tZ)(s.BaseContext.Provider,{value:{baseuri:"/",basepath:"/"}},(0,g.tZ)(C.Z,e)),t=i.createContext({}),p={renderEnvironment:"browser"};let f=function(e){function n(){return e.apply(this,arguments)||this}return(0,o.Z)(n,e),n.prototype.render=function(){const{children:e}=this.props;return(0,g.tZ)(s.Location,null,(n=>{let{location:r}=n;return(0,g.tZ)(O,{location:r},(n=>{let{pageResources:r,location:o}=n;const a=(0,d.hs)(),i=(0,d.Nt)();return(0,g.tZ)(u.B9.Provider,{value:a},(0,g.tZ)(c.Bs.Provider,{value:p},(0,g.tZ)(c.m3.Provider,{value:i},(0,g.tZ)(c.u0.Provider,{value:r.page.slicesMap},(0,g.tZ)(t.Provider,{value:{pageResources:r,location:o}},e)))))}))}))},n}(i.Component),h=function(n){function a(){return n.apply(this,arguments)||this}return(0,o.Z)(a,n),a.prototype.render=function(){return(0,g.tZ)(t.Consumer,null,(t=>{let{pageResources:n,location:o}=t;return(0,g.tZ)(Z,{location:o},(0,g.tZ)(l.$C,{location:o,shouldUpdateScroll:S},(0,g.tZ)(s.Router,{basepath:"",location:o,id:"gatsby-focus-wrapper"},(0,g.tZ)(e,(0,r.Z)({path:"/404.html"===n.page.path||"/500.html"===n.page.path?(0,R.Z)(o.pathname,""):encodeURI((n.page.matchPath||n.page.path).split("?")[0])},this.props,{location:o,pageResources:n},n.json)))))}))},a}(i.Component);const{pagePath:m,location:v}=window;m&&""+m!==v.pathname+(m.includes("?")?v.search:"")&&!(A.findMatchPath((0,R.Z)(v.pathname,""))||m.match(/^\/(404|500)(\/?|.html)$/)||m.match(/^\/offline-plugin-app-shell-fallback\/?$/))&&(0,s.navigate)(""+m+(m.includes("?")?"":v.search)+v.hash,{replace:!0});const y=()=>{try{return sessionStorage}catch{return null}};d.jN.loadPage(v.pathname+v.search).then((e=>{var t;const n=y();if(null!=e&&null!==(t=e.page)&&void 0!==t&&t.webpackCompilationHash&&e.page.webpackCompilationHash!==window.___webpackCompilationHash&&("serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state&&navigator.serviceWorker.controller.postMessage({gatsbyApi:"clearPathResources"}),n)){if(!("1"===n.getItem(N)))return n.setItem(N,"1"),void window.location.reload(!0)}if(n&&n.removeItem(N),!e||e.status===d.uQ.Error){const t=`page resources for ${v.pathname} not found. Not rendering React`;if(e&&e.error)throw console.error(t),e.error;throw new Error(t)}const r=(0,a.h)("wrapRootElement",{element:(0,g.tZ)(h,null)},(0,g.tZ)(h,null),(e=>{let{result:t}=e;return{element:t}})).pop(),o=function(){const e=i.useRef(!1);return i.useEffect((()=>{e.current||(e.current=!0,performance.mark&&performance.mark("onInitialClientRender"),(0,a.h)("onInitialClientRender"))}),[]),(0,g.tZ)(f,null,r)},s=document.getElementById("gatsby-focus-wrapper");let l=j;s&&s.children.length&&(l=F);const u=(0,a.h)("replaceHydrateFunction",void 0,l)[0];function c(){const e="undefined"!=typeof window?document.getElementById("___gatsby"):null;u((0,g.tZ)(o,null),e)}const p=document;if("complete"===p.readyState||"loading"!==p.readyState&&!p.documentElement.doScroll)setTimeout((function(){c()}),0);else{const e=function(){p.removeEventListener("DOMContentLoaded",e,!1),window.removeEventListener("load",e,!1),c()};p.addEventListener("DOMContentLoaded",e,!1),window.addEventListener("load",e,!1)}}))}))},224:function(e,t,n){"use strict";n.r(t);var r=n(7294),o=n(1975),a=n(4779);t.default=e=>{let{location:t}=e;const n=o.ZP.loadPageSync(t.pathname);return n?r.createElement(a.Z,{location:t,pageResources:n,...n.json}):null}},2743:function(e,t,n){var r;e.exports=(r=n(224))&&r.default||r},4941:function(e,t,n){"use strict";n.d(t,{U:function(){return o}});const r=new WeakMap;function o(){const e=n(745);return{render:(t,n)=>{let o=r.get(n);o||r.set(n,o=e.createRoot(n)),o.render(t)},hydrate:(t,n)=>e.hydrateRoot(n,t)}}},6073:function(e,t,n){"use strict";n.d(t,{J:function(){return a}});const r=new Map,o=new Map;function a(e){let t=r.get(e);return t||(t=o.get(e.toLowerCase())),t}[].forEach((e=>{e.ignoreCase?o.set(e.fromPath,e):r.set(e.fromPath,e)}))},9939:function(e,t,n){"use strict";n.r(t);var r=n(3092);"https:"!==window.location.protocol&&"localhost"!==window.location.hostname?console.error("Service workers can only be used over HTTPS, or on localhost for development"):"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.js").then((function(e){e.addEventListener("updatefound",(()=>{(0,r.h)("onServiceWorkerUpdateFound",{serviceWorker:e});const t=e.installing;console.log("installingWorker",t),t.addEventListener("statechange",(()=>{switch(t.state){case"installed":navigator.serviceWorker.controller?(window.___swUpdated=!0,(0,r.h)("onServiceWorkerUpdateReady",{serviceWorker:e}),window.___failedResources&&(console.log("resources failed, SW updated - reloading"),window.location.reload())):(console.log("Content is now available offline!"),(0,r.h)("onServiceWorkerInstalled",{serviceWorker:e}));break;case"redundant":console.error("The installing service worker became redundant."),(0,r.h)("onServiceWorkerRedundant",{serviceWorker:e});break;case"activated":(0,r.h)("onServiceWorkerActive",{serviceWorker:e})}}))}))})).catch((function(e){console.error("Error during service worker registration:",e)}))},8995:function(e,t,n){"use strict";n.d(t,{Bs:function(){return a},m3:function(){return o},u0:function(){return i}});var r=n(7294);const o=r.createContext({}),a=r.createContext({}),i=r.createContext({})},1757:function(e,t,n){"use strict";n.d(t,{B9:function(){return o},K2:function(){return s}});var r=n(7294);const o=(a="StaticQuery",i={},r.createServerContext?function(e,t){return void 0===t&&(t=null),globalThis.__SERVER_CONTEXT||(globalThis.__SERVER_CONTEXT={}),globalThis.__SERVER_CONTEXT[e]||(globalThis.__SERVER_CONTEXT[e]=r.createServerContext(e,t)),globalThis.__SERVER_CONTEXT[e]}(a,i):r.createContext(i));var a,i;const s=e=>{var t;r.useContext;const n=r.useContext(o);if(isNaN(Number(e)))throw new Error(`useStaticQuery was called with a string but expects to be called using \`graphql\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\`${e}\`);\n`);if(null!==(t=n[e])&&void 0!==t&&t.data)return n[e].data;throw new Error("The result of this StaticQuery could not be fetched.\n\nThis is likely a bug in Gatsby and if refreshing the page does not fix it, please open an issue in https://github.com/gatsbyjs/gatsby/issues")}},1505:function(e,t,n){"use strict";function r(e,t){return void 0===t&&(t=""),t?e===t?"/":e.startsWith(`${t}/`)?e.slice(t.length):e:e}n.d(t,{Z:function(){return r}})},9065:function(e,t){"use strict";t.__esModule=!0,t.default=void 0;t.default={respectDNT:!1,productionOnly:!0}},8101:function(e,t,n){"use strict";var r=n(4836);t.__esModule=!0,t.onRouteUpdate=function(e,t){var n=e.location;if(Object.assign({},o.default,t).productionOnly,!Array.isArray(window._hsq))return;var r=function(){var e=n?n.pathname+n.search+n.hash:void 0;window._hsq.push(["setPath",e]),window._hsq.push(["trackPageView"])};"function"==typeof window.requestAnimationFrame?window.requestAnimationFrame((function(){window.requestAnimationFrame(r)})):setTimeout(r,32)};var o=r(n(9065))},5688:function(e,t,n){"use strict";t.wrapPageElement=n(4184)},4184:function(e,t,n){"use strict";var r,o,a=n(7294);try{o=n(2990),r=o&&o.default||o}catch(i){throw-1!==i.toString().indexOf("Error: Cannot find module")?new Error("Couldn't find layout component at \"/home/runner/work/codecave.pro-new/codecave.pro-new/src/components/layout/layout.tsx.\n\nPlease create layout component in that location or specify path to layout component in gatsby-config.js"):(console.error(i),i)}e.exports=function(e){var t=e.element,n=e.props;return a.createElement(r,n,t)}},855:function(e,t){"use strict";t.DEFAULT_OPTIONS={maxWidth:650,wrapperStyle:"",backgroundColor:"white",linkImagesToOriginal:!0,showCaptions:!1,markdownCaptions:!1,withWebp:!1,withAvif:!1,tracedSVG:!1,loading:"lazy",decoding:"async",disableBgImageOnAlpha:!1,disableBgImage:!1},t.EMPTY_ALT="GATSBY_EMPTY_ALT",t.imageClass="gatsby-resp-image-image",t.imageWrapperClass="gatsby-resp-image-wrapper",t.imageBackgroundClass="gatsby-resp-image-background-image"},2154:function(e,t,n){"use strict";var r=n(855),o=r.DEFAULT_OPTIONS,a=r.imageClass,i=r.imageBackgroundClass,s=r.imageWrapperClass;t.onRouteUpdate=function(e,t){for(var n=Object.assign({},o,t),r=document.querySelectorAll("."+s),l=function(){var e=r[u],t=e.querySelector("."+i),o=e.querySelector("."+a),s=function(){t.style.transition="opacity 0.5s 0.5s",o.style.transition="opacity 0.5s",l()},l=function e(){t.style.opacity=0,o.style.opacity=1,o.style.color="inherit",o.style.boxShadow="inset 0px 0px 0px 400px "+n.backgroundColor,o.removeEventListener("load",s),o.removeEventListener("error",e)};o.style.opacity=0,o.addEventListener("load",s),o.addEventListener("error",l),o.complete&&l()},u=0;u{let{children:t,className:n,maxWidthClass:o="max-w-4.5xl"}=e;return(0,r.tZ)("div",{className:`flex w-full mx-auto px-4 lg:px-10 ${o} ${n}`},t)}},9165:function(e,t,n){"use strict";n.d(t,{Ag:function(){return u},Di:function(){return l},Lx:function(){return s}});var r=n(7294),o=n(4160),a=n(917);const i=e=>{var t,n,r,a,i;const s=(0,o.K2)(c),l=null==s||null===(t=s.allMarkdownRemark)||void 0===t||null===(n=t.nodes)||void 0===n||null===(r=n.find((t=>t.fields.language===e)))||void 0===r||null===(a=r.frontmatter)||void 0===a||null===(i=a.layout)||void 0===i?void 0:i.requisites;return l?Object.entries(l).map((e=>{let[t,n]=e;return n})).join(" "):""},s=e=>{let{itemProp:t,lang:n}=e;const r=i(n);return(0,a.tZ)("div",{className:"hidden",itemProp:t,itemScope:!0,itemType:"https://schema.org/LocalBusiness"},(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://facebook.com/codecavepro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://youtube.com/c/CodeCavePro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://twitter.com/codecavepro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://vk.com/codecavepro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://github.com/CodeCavePro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://instagram.com/codecave.pro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://linkedin.com/company/codecavepro"}),(0,a.tZ)("meta",{itemProp:"name",content:"CodeCave"}),(0,a.tZ)("meta",{itemProp:"currenciesAccepted",content:"USD, EUR"}),(0,a.tZ)("meta",{itemProp:"openingHours",content:"Mo-Fr 09:00-18:00"}),(0,a.tZ)("meta",{name:"description",content:"Outsourcing software and web development"}),(0,a.tZ)("meta",{name:"image",content:"/logo.svg"}),(0,a.tZ)("meta",{itemProp:"address",content:r}),(0,a.tZ)("meta",{name:"address",content:r}),(0,a.tZ)("meta",{property:"address",content:r}))},l=e=>{let{lang:t}=e;const n=i(t);return(0,a.tZ)(r.Fragment,null,(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://facebook.com/codecavepro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://youtube.com/c/CodeCavePro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://twitter.com/codecavepro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://vk.com/codecavepro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://github.com/CodeCavePro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://instagram.com/codecave.pro"}),(0,a.tZ)("meta",{itemProp:"sameAs",content:"https://linkedin.com/company/codecavepro"}),(0,a.tZ)("meta",{itemProp:"name",content:"CodeCave"}),(0,a.tZ)("meta",{name:"description",content:"Outsourcing software and web development"}),(0,a.tZ)("meta",{name:"og:image",content:"/logo.svg"}),(0,a.tZ)("meta",{itemProp:"address",content:n}),(0,a.tZ)("meta",{property:"address",content:n}),(0,a.tZ)("meta",{name:"address",content:n}))},u=e=>{let{title:t,description:n,img:o,siteUrl:i,path:s,lang:l}=e;const u=null!=n?n:t,c=`${i}${s}`,d=o?`${i}${o}`:`${i}/siteImage.png`,p="ru"===l?"ru_RU":"en_US";return(0,a.tZ)(r.Fragment,null,(0,a.tZ)("link",{rel:"shortcut icon",href:"/favicon.ico"}),(0,a.tZ)("link",{rel:"apple-touch-icon",sizes:"180x180",href:"/apple-touch-icon.png"}),(0,a.tZ)("link",{rel:"icon",type:"image/png",sizes:"32x32",href:"/favicon-32x32.png"}),(0,a.tZ)("link",{rel:"icon",type:"image/png",sizes:"16x16",href:"/favicon-16x16.png"}),(0,a.tZ)("link",{rel:"manifest",href:"/site.webmanifest"}),(0,a.tZ)("link",{rel:"mask-icon",href:"/safari-pinned-tab.svg",color:"#5bbad5"}),(0,a.tZ)("link",{rel:"icon",sizes:"16x16 32x32 64x64",href:"/favicon.ico"}),(0,a.tZ)("meta",{name:"msapplication-TileColor",content:"#da532c"}),(0,a.tZ)("meta",{name:"msapplication-config",content:"/browserconfig.xml"}),(0,a.tZ)("meta",{name:"msapplication-TileImage",content:"/mstile-150x150.png"}),(0,a.tZ)("title",null,t),(0,a.tZ)("meta",{name:"title",content:t}),(0,a.tZ)("meta",{name:"description",content:u}),(0,a.tZ)("meta",{property:"image",content:d}),(0,a.tZ)("meta",{itemProp:"image",content:d}),(0,a.tZ)("meta",{property:"url",content:c}),(0,a.tZ)("meta",{property:"og:locale",content:p}),(0,a.tZ)("meta",{property:"og:type",content:"website"}),(0,a.tZ)("meta",{property:"og:url",content:c}),(0,a.tZ)("meta",{property:"og:title",content:t}),(0,a.tZ)("meta",{property:"og:description",content:u}),(0,a.tZ)("meta",{property:"og:image",content:d}),(0,a.tZ)("meta",{property:"twitter:card",content:"summary_large_image"}),(0,a.tZ)("meta",{property:"twitter:url",content:c}),(0,a.tZ)("meta",{property:"twitter:title",content:t}),(0,a.tZ)("meta",{property:"twitter:description",content:u}),(0,a.tZ)("meta",{property:"twitter:image",content:d}),(0,a.tZ)("meta",{name:"yandex-verification",content:"2f1c8394b4dad72a"}))},c="2595676272"},2531:function(e,t,n){"use strict";n.d(t,{Z:function(){return j}});var r=n(3366),o=n(7462),a=n(7294),i=n(512),s=n(917),l=n(8510);function u(e){return String(e).match(/[\d.\-+]*\s*(.*)/)[1]||""}function c(e){return parseFloat(e)}var d=n(8758),p=n(2358);function f(e,t=0,n=1){return(0,p.Z)(e,t,n)}function h(e){if(e.type)return e;if("#"===e.charAt(0))return h(function(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map((e=>e+e))),n?`rgb${4===n.length?"a":""}(${n.map(((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3)).join(", ")})`:""}(e));const t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(n))throw new Error((0,d.Z)(9,e));let r,o=e.substring(t+1,e.length-1);if("color"===n){if(o=o.split(" "),r=o.shift(),4===o.length&&"/"===o[3].charAt(0)&&(o[3]=o[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(r))throw new Error((0,d.Z)(10,r))}else o=o.split(",");return o=o.map((e=>parseFloat(e))),{type:n,values:o,colorSpace:r}}function m(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return-1!==t.indexOf("rgb")?r=r.map(((e,t)=>t<3?parseInt(e,10):e)):-1!==t.indexOf("hsl")&&(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=-1!==t.indexOf("color")?`${n} ${r.join(" ")}`:`${r.join(", ")}`,`${t}(${r})`}function g(e,t){return e=h(e),t=f(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,m(e)}var v=n(948),y=n(1657),b=n(1977),w=n(3559);function x(e){return(0,w.ZP)("MuiSkeleton",e)}(0,b.Z)("MuiSkeleton",["root","text","rectangular","rounded","circular","pulse","wave","withChildren","fitContent","heightAuto"]);var S=n(5893);const k=["animation","className","component","height","style","variant","width"];let E,Z,C,P,_=e=>e;const O=(0,s.F4)(E||(E=_` 0% { opacity: 1; } @@ -50,4 +50,4 @@ top: 0; } `),R,(t.vars||t).palette.action.hover)));var A=a.forwardRef((function(e,t){const n=(0,y.Z)({props:e,name:"MuiSkeleton"}),{animation:a="pulse",className:s,component:u="span",height:c,style:d,variant:p="text",width:f}=n,h=(0,r.Z)(n,k),m=(0,o.Z)({},n,{animation:a,component:u,variant:p,hasChildren:Boolean(h.children)}),g=(e=>{const{classes:t,variant:n,animation:r,hasChildren:o,width:a,height:i}=e,s={root:["root",n,r,o&&"withChildren",o&&!a&&"fitContent",o&&!i&&"heightAuto"]};return(0,l.Z)(s,x,t)})(m);return(0,S.jsx)(T,(0,o.Z)({as:u,ref:t,className:(0,i.Z)(g.root,s),ownerState:m},h,{style:(0,o.Z)({width:f,height:c},d)}))}));var j=()=>(0,s.tZ)(A,{animation:"wave",variant:"rounded",width:"100%",height:"100%",sx:{position:"absolute",inset:"0px",zIndex:9,bgcolor:"rgba(0, 0, 0, 0.1)","::after":{background:"linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent)"}}})},1178:function(e,t,n){"use strict";n.d(t,{sc:function(){return oo},J$:function(){return ao},HN:function(){return ro}});var r=n(4316),o=n(7462),a=n(3366),i=n(7294),s=n.t(i,2),l=n(512),u=n(8510);let c=0;const d=s["useId".toString()];function p(e){if(void 0!==d){const t=d();return null!=e?e:t}return function(e){const[t,n]=i.useState(e),r=e||t;return i.useEffect((()=>{null==t&&(c+=1,n(`mui-${c}`))}),[t]),r}(e)}var f=n(948),h=n(1657),m=n(8027),g=n(8758),v=n(2760);function y(e){return e&&e.ownerDocument||document}function b(e){return y(e).defaultView||window}var w=n(4895);function x(e,t=166){let n;function r(...r){clearTimeout(n),n=setTimeout((()=>{e.apply(this,r)}),t)}return r.clear=()=>{clearTimeout(n)},r}var S=n(5893);const k=["onChange","maxRows","minRows","style","value"];function E(e){return parseInt(e,10)||0}const Z={visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"};const C=i.forwardRef((function(e,t){const{onChange:n,maxRows:r,minRows:s=1,style:l,value:u}=e,c=(0,a.Z)(e,k),{current:d}=i.useRef(null!=u),p=i.useRef(null),f=(0,v.Z)(t,p),h=i.useRef(null),m=i.useCallback((()=>{const t=p.current,n=b(t).getComputedStyle(t);if("0px"===n.width)return{outerHeightStyle:0,overflowing:!1};const o=h.current;o.style.width=n.width,o.value=t.value||e.placeholder||"x","\n"===o.value.slice(-1)&&(o.value+=" ");const a=n.boxSizing,i=E(n.paddingBottom)+E(n.paddingTop),l=E(n.borderBottomWidth)+E(n.borderTopWidth),u=o.scrollHeight;o.value="x";const c=o.scrollHeight;let d=u;s&&(d=Math.max(Number(s)*c,d)),r&&(d=Math.min(Number(r)*c,d)),d=Math.max(d,c);return{outerHeightStyle:d+("border-box"===a?i+l:0),overflowing:Math.abs(d-u)<=1}}),[r,s,e.placeholder]),g=i.useCallback((()=>{const e=m();if(null==(t=e)||0===Object.keys(t).length||0===t.outerHeightStyle&&!t.overflowing)return;var t;const n=p.current;n.style.height=`${e.outerHeightStyle}px`,n.style.overflow=e.overflowing?"hidden":""}),[m]);(0,w.Z)((()=>{const e=()=>{g()};let t;const n=x(e),r=p.current,o=b(r);let a;return o.addEventListener("resize",n),"undefined"!=typeof ResizeObserver&&(a=new ResizeObserver(e),a.observe(r)),()=>{n.clear(),cancelAnimationFrame(t),o.removeEventListener("resize",n),a&&a.disconnect()}}),[m,g]),(0,w.Z)((()=>{g()}));return(0,S.jsxs)(i.Fragment,{children:[(0,S.jsx)("textarea",(0,o.Z)({value:u,onChange:e=>{d||g(),n&&n(e)},ref:f,rows:s,style:l},c)),(0,S.jsx)("textarea",{"aria-hidden":!0,className:e.className,readOnly:!0,ref:h,tabIndex:-1,style:(0,o.Z)({},Z,l,{paddingTop:0,paddingBottom:0})})]})}));function P(e){return"string"==typeof e}function _({props:e,states:t,muiFormControl:n}){return t.reduce(((t,r)=>(t[r]=e[r],n&&void 0===e[r]&&(t[r]=n[r]),t)),{})}var O=n(7167),R=n(4423),T=n(8216),A=n(1705),j=n(8974),F=n(1234),N=n(6631);var $=function({styles:e,themeId:t,defaultTheme:n={}}){const r=(0,N.Z)(n),o="function"==typeof e?e(t&&r[t]||r):e;return(0,S.jsx)(F.Z,{styles:o})},M=n(8794),D=n(606);var L=function(e){return(0,S.jsx)($,(0,o.Z)({},e,{defaultTheme:M.Z,themeId:D.Z}))};function I(e){return null!=e&&!(Array.isArray(e)&&0===e.length)}function B(e,t=!1){return e&&(I(e.value)&&""!==e.value||t&&I(e.defaultValue)&&""!==e.defaultValue)}var z=n(1977),U=n(3559);function W(e){return(0,U.ZP)("MuiInputBase",e)}var V=(0,z.Z)("MuiInputBase",["root","formControl","focused","disabled","adornedStart","adornedEnd","error","sizeSmall","multiline","colorSecondary","fullWidth","hiddenLabel","readOnly","input","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel"]);const q=["aria-describedby","autoComplete","autoFocus","className","color","components","componentsProps","defaultValue","disabled","disableInjectingGlobalStyles","endAdornment","error","fullWidth","id","inputComponent","inputProps","inputRef","margin","maxRows","minRows","multiline","name","onBlur","onChange","onClick","onFocus","onKeyDown","onKeyUp","placeholder","readOnly","renderSuffix","rows","size","slotProps","slots","startAdornment","type","value"],H=(e,t)=>{const{ownerState:n}=e;return[t.root,n.formControl&&t.formControl,n.startAdornment&&t.adornedStart,n.endAdornment&&t.adornedEnd,n.error&&t.error,"small"===n.size&&t.sizeSmall,n.multiline&&t.multiline,n.color&&t[`color${(0,T.Z)(n.color)}`],n.fullWidth&&t.fullWidth,n.hiddenLabel&&t.hiddenLabel]},K=(e,t)=>{const{ownerState:n}=e;return[t.input,"small"===n.size&&t.inputSizeSmall,n.multiline&&t.inputMultiline,"search"===n.type&&t.inputTypeSearch,n.startAdornment&&t.inputAdornedStart,n.endAdornment&&t.inputAdornedEnd,n.hiddenLabel&&t.inputHiddenLabel]},J=(0,f.ZP)("div",{name:"MuiInputBase",slot:"Root",overridesResolver:H})((({theme:e,ownerState:t})=>(0,o.Z)({},e.typography.body1,{color:(e.vars||e).palette.text.primary,lineHeight:"1.4375em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center",[`&.${V.disabled}`]:{color:(e.vars||e).palette.text.disabled,cursor:"default"}},t.multiline&&(0,o.Z)({padding:"4px 0 5px"},"small"===t.size&&{paddingTop:1}),t.fullWidth&&{width:"100%"}))),G=(0,f.ZP)("input",{name:"MuiInputBase",slot:"Input",overridesResolver:K})((({theme:e,ownerState:t})=>{const n="light"===e.palette.mode,r=(0,o.Z)({color:"currentColor"},e.vars?{opacity:e.vars.opacity.inputPlaceholder}:{opacity:n?.42:.5},{transition:e.transitions.create("opacity",{duration:e.transitions.duration.shorter})}),a={opacity:"0 !important"},i=e.vars?{opacity:e.vars.opacity.inputPlaceholder}:{opacity:n?.42:.5};return(0,o.Z)({font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"4px 0 5px",border:0,boxSizing:"content-box",background:"none",height:"1.4375em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%",animationName:"mui-auto-fill-cancel",animationDuration:"10ms","&::-webkit-input-placeholder":r,"&::-moz-placeholder":r,"&:-ms-input-placeholder":r,"&::-ms-input-placeholder":r,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{WebkitAppearance:"none"},[`label[data-shrink=false] + .${V.formControl} &`]:{"&::-webkit-input-placeholder":a,"&::-moz-placeholder":a,"&:-ms-input-placeholder":a,"&::-ms-input-placeholder":a,"&:focus::-webkit-input-placeholder":i,"&:focus::-moz-placeholder":i,"&:focus:-ms-input-placeholder":i,"&:focus::-ms-input-placeholder":i},[`&.${V.disabled}`]:{opacity:1,WebkitTextFillColor:(e.vars||e).palette.text.disabled},"&:-webkit-autofill":{animationDuration:"5000s",animationName:"mui-auto-fill"}},"small"===t.size&&{paddingTop:1},t.multiline&&{height:"auto",resize:"none",padding:0,paddingTop:0},"search"===t.type&&{MozAppearance:"textfield"})})),X=(0,S.jsx)(L,{styles:{"@keyframes mui-auto-fill":{from:{display:"block"}},"@keyframes mui-auto-fill-cancel":{from:{display:"block"}}}}),Q=i.forwardRef((function(e,t){var n;const r=(0,h.Z)({props:e,name:"MuiInputBase"}),{"aria-describedby":s,autoComplete:c,autoFocus:d,className:p,components:f={},componentsProps:m={},defaultValue:v,disabled:y,disableInjectingGlobalStyles:b,endAdornment:w,fullWidth:x=!1,id:k,inputComponent:E="input",inputProps:Z={},inputRef:F,maxRows:N,minRows:$,multiline:M=!1,name:D,onBlur:L,onChange:I,onClick:z,onFocus:U,onKeyDown:V,onKeyUp:H,placeholder:K,readOnly:Q,renderSuffix:Y,rows:ee,slotProps:te={},slots:ne={},startAdornment:re,type:oe="text",value:ae}=r,ie=(0,a.Z)(r,q),se=null!=Z.value?Z.value:ae,{current:le}=i.useRef(null!=se),ue=i.useRef(),ce=i.useCallback((e=>{0}),[]),de=(0,A.Z)(ue,F,Z.ref,ce),[pe,fe]=i.useState(!1),he=(0,R.Z)();const me=_({props:r,muiFormControl:he,states:["color","disabled","error","hiddenLabel","size","required","filled"]});me.focused=he?he.focused:pe,i.useEffect((()=>{!he&&y&&pe&&(fe(!1),L&&L())}),[he,y,pe,L]);const ge=he&&he.onFilled,ve=he&&he.onEmpty,ye=i.useCallback((e=>{B(e)?ge&&ge():ve&&ve()}),[ge,ve]);(0,j.Z)((()=>{le&&ye({value:se})}),[se,ye,le]);i.useEffect((()=>{ye(ue.current)}),[]);let be=E,we=Z;M&&"input"===be&&(we=ee?(0,o.Z)({type:void 0,minRows:ee,maxRows:ee},we):(0,o.Z)({type:void 0,maxRows:N,minRows:$},we),be=C);i.useEffect((()=>{he&&he.setAdornedStart(Boolean(re))}),[he,re]);const xe=(0,o.Z)({},r,{color:me.color||"primary",disabled:me.disabled,endAdornment:w,error:me.error,focused:me.focused,formControl:he,fullWidth:x,hiddenLabel:me.hiddenLabel,multiline:M,size:me.size,startAdornment:re,type:oe}),Se=(e=>{const{classes:t,color:n,disabled:r,error:o,endAdornment:a,focused:i,formControl:s,fullWidth:l,hiddenLabel:c,multiline:d,readOnly:p,size:f,startAdornment:h,type:m}=e,g={root:["root",`color${(0,T.Z)(n)}`,r&&"disabled",o&&"error",l&&"fullWidth",i&&"focused",s&&"formControl",f&&"medium"!==f&&`size${(0,T.Z)(f)}`,d&&"multiline",h&&"adornedStart",a&&"adornedEnd",c&&"hiddenLabel",p&&"readOnly"],input:["input",r&&"disabled","search"===m&&"inputTypeSearch",d&&"inputMultiline","small"===f&&"inputSizeSmall",c&&"inputHiddenLabel",h&&"inputAdornedStart",a&&"inputAdornedEnd",p&&"readOnly"]};return(0,u.Z)(g,W,t)})(xe),ke=ne.root||f.Root||J,Ee=te.root||m.root||{},Ze=ne.input||f.Input||G;return we=(0,o.Z)({},we,null!=(n=te.input)?n:m.input),(0,S.jsxs)(i.Fragment,{children:[!b&&X,(0,S.jsxs)(ke,(0,o.Z)({},Ee,!P(ke)&&{ownerState:(0,o.Z)({},xe,Ee.ownerState)},{ref:t,onClick:e=>{ue.current&&e.currentTarget===e.target&&ue.current.focus(),z&&z(e)}},ie,{className:(0,l.Z)(Se.root,Ee.className,p,Q&&"MuiInputBase-readOnly"),children:[re,(0,S.jsx)(O.Z.Provider,{value:null,children:(0,S.jsx)(Ze,(0,o.Z)({ownerState:xe,"aria-invalid":me.error,"aria-describedby":s,autoComplete:c,autoFocus:d,defaultValue:v,disabled:me.disabled,id:k,onAnimationStart:e=>{ye("mui-auto-fill-cancel"===e.animationName?ue.current:{value:"x"})},name:D,placeholder:K,readOnly:Q,required:me.required,rows:ee,value:se,onKeyDown:V,onKeyUp:H,type:oe},we,!P(Ze)&&{as:be,ownerState:(0,o.Z)({},xe,we.ownerState)},{ref:de,className:(0,l.Z)(Se.input,we.className,Q&&"MuiInputBase-readOnly"),onBlur:e=>{L&&L(e),Z.onBlur&&Z.onBlur(e),he&&he.onBlur?he.onBlur(e):fe(!1)},onChange:(e,...t)=>{if(!le){const t=e.target||ue.current;if(null==t)throw new Error((0,g.Z)(1));ye({value:t.value})}Z.onChange&&Z.onChange(e,...t),I&&I(e,...t)},onFocus:e=>{me.disabled?e.stopPropagation():(U&&U(e),Z.onFocus&&Z.onFocus(e),he&&he.onFocus?he.onFocus(e):fe(!0))}}))}),w,Y?Y((0,o.Z)({},me,{startAdornment:re})):null]}))]})}));var Y=Q,ee=n(4136);function te(e){return(0,U.ZP)("MuiInput",e)}var ne=(0,o.Z)({},V,(0,z.Z)("MuiInput",["root","underline","input"]));const re=["disableUnderline","components","componentsProps","fullWidth","inputComponent","multiline","slotProps","slots","type"],oe=(0,f.ZP)(J,{shouldForwardProp:e=>(0,ee.Z)(e)||"classes"===e,name:"MuiInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[...H(e,t),!n.disableUnderline&&t.underline]}})((({theme:e,ownerState:t})=>{let n="light"===e.palette.mode?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return e.vars&&(n=`rgba(${e.vars.palette.common.onBackgroundChannel} / ${e.vars.opacity.inputUnderline})`),(0,o.Z)({position:"relative"},t.formControl&&{"label + &":{marginTop:16}},!t.disableUnderline&&{"&::after":{borderBottom:`2px solid ${(e.vars||e).palette[t.color].main}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${ne.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${ne.error}`]:{"&::before, &::after":{borderBottomColor:(e.vars||e).palette.error.main}},"&::before":{borderBottom:`1px solid ${n}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:e.transitions.create("border-bottom-color",{duration:e.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${ne.disabled}, .${ne.error}):before`]:{borderBottom:`2px solid ${(e.vars||e).palette.text.primary}`,"@media (hover: none)":{borderBottom:`1px solid ${n}`}},[`&.${ne.disabled}:before`]:{borderBottomStyle:"dotted"}})})),ae=(0,f.ZP)(G,{name:"MuiInput",slot:"Input",overridesResolver:K})({}),ie=i.forwardRef((function(e,t){var n,r,i,s;const l=(0,h.Z)({props:e,name:"MuiInput"}),{disableUnderline:c,components:d={},componentsProps:p,fullWidth:f=!1,inputComponent:g="input",multiline:v=!1,slotProps:y,slots:b={},type:w="text"}=l,x=(0,a.Z)(l,re),k=(e=>{const{classes:t,disableUnderline:n}=e,r={root:["root",!n&&"underline"],input:["input"]},a=(0,u.Z)(r,te,t);return(0,o.Z)({},t,a)})(l),E={root:{ownerState:{disableUnderline:c}}},Z=(null!=y?y:p)?(0,m.Z)(null!=y?y:p,E):E,C=null!=(n=null!=(r=b.root)?r:d.Root)?n:oe,P=null!=(i=null!=(s=b.input)?s:d.Input)?i:ae;return(0,S.jsx)(Y,(0,o.Z)({slots:{root:C,input:P},slotProps:Z,fullWidth:f,inputComponent:g,multiline:v,ref:t,type:w},x,{classes:k}))}));ie.muiName="Input";var se=ie;function le(e){return(0,U.ZP)("MuiFilledInput",e)}var ue=(0,o.Z)({},V,(0,z.Z)("MuiFilledInput",["root","underline","input"]));const ce=["disableUnderline","components","componentsProps","fullWidth","hiddenLabel","inputComponent","multiline","slotProps","slots","type"],de=(0,f.ZP)(J,{shouldForwardProp:e=>(0,ee.Z)(e)||"classes"===e,name:"MuiFilledInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[...H(e,t),!n.disableUnderline&&t.underline]}})((({theme:e,ownerState:t})=>{var n;const r="light"===e.palette.mode,a=r?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)",i=r?"rgba(0, 0, 0, 0.06)":"rgba(255, 255, 255, 0.09)",s=r?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.13)",l=r?"rgba(0, 0, 0, 0.12)":"rgba(255, 255, 255, 0.12)";return(0,o.Z)({position:"relative",backgroundColor:e.vars?e.vars.palette.FilledInput.bg:i,borderTopLeftRadius:(e.vars||e).shape.borderRadius,borderTopRightRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),"&:hover":{backgroundColor:e.vars?e.vars.palette.FilledInput.hoverBg:s,"@media (hover: none)":{backgroundColor:e.vars?e.vars.palette.FilledInput.bg:i}},[`&.${ue.focused}`]:{backgroundColor:e.vars?e.vars.palette.FilledInput.bg:i},[`&.${ue.disabled}`]:{backgroundColor:e.vars?e.vars.palette.FilledInput.disabledBg:l}},!t.disableUnderline&&{"&::after":{borderBottom:`2px solid ${null==(n=(e.vars||e).palette[t.color||"primary"])?void 0:n.main}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${ue.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${ue.error}`]:{"&::before, &::after":{borderBottomColor:(e.vars||e).palette.error.main}},"&::before":{borderBottom:`1px solid ${e.vars?`rgba(${e.vars.palette.common.onBackgroundChannel} / ${e.vars.opacity.inputUnderline})`:a}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:e.transitions.create("border-bottom-color",{duration:e.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${ue.disabled}, .${ue.error}):before`]:{borderBottom:`1px solid ${(e.vars||e).palette.text.primary}`},[`&.${ue.disabled}:before`]:{borderBottomStyle:"dotted"}},t.startAdornment&&{paddingLeft:12},t.endAdornment&&{paddingRight:12},t.multiline&&(0,o.Z)({padding:"25px 12px 8px"},"small"===t.size&&{paddingTop:21,paddingBottom:4},t.hiddenLabel&&{paddingTop:16,paddingBottom:17},t.hiddenLabel&&"small"===t.size&&{paddingTop:8,paddingBottom:9}))})),pe=(0,f.ZP)(G,{name:"MuiFilledInput",slot:"Input",overridesResolver:K})((({theme:e,ownerState:t})=>(0,o.Z)({paddingTop:25,paddingRight:12,paddingBottom:8,paddingLeft:12},!e.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===e.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===e.palette.mode?null:"#fff",caretColor:"light"===e.palette.mode?null:"#fff",borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"}},e.vars&&{"&:-webkit-autofill":{borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"},[e.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},"small"===t.size&&{paddingTop:21,paddingBottom:4},t.hiddenLabel&&{paddingTop:16,paddingBottom:17},t.startAdornment&&{paddingLeft:0},t.endAdornment&&{paddingRight:0},t.hiddenLabel&&"small"===t.size&&{paddingTop:8,paddingBottom:9},t.multiline&&{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0}))),fe=i.forwardRef((function(e,t){var n,r,i,s;const l=(0,h.Z)({props:e,name:"MuiFilledInput"}),{components:c={},componentsProps:d,fullWidth:p=!1,inputComponent:f="input",multiline:g=!1,slotProps:v,slots:y={},type:b="text"}=l,w=(0,a.Z)(l,ce),x=(0,o.Z)({},l,{fullWidth:p,inputComponent:f,multiline:g,type:b}),k=(e=>{const{classes:t,disableUnderline:n}=e,r={root:["root",!n&&"underline"],input:["input"]},a=(0,u.Z)(r,le,t);return(0,o.Z)({},t,a)})(l),E={root:{ownerState:x},input:{ownerState:x}},Z=(null!=v?v:d)?(0,m.Z)(E,null!=v?v:d):E,C=null!=(n=null!=(r=y.root)?r:c.Root)?n:de,P=null!=(i=null!=(s=y.input)?s:c.Input)?i:pe;return(0,S.jsx)(Y,(0,o.Z)({slots:{root:C,input:P},componentsProps:Z,fullWidth:p,inputComponent:f,multiline:g,ref:t,type:b},w,{classes:k}))}));fe.muiName="Input";var he,me=fe;const ge=["children","classes","className","label","notched"],ve=(0,f.ZP)("fieldset",{shouldForwardProp:ee.Z})({textAlign:"left",position:"absolute",bottom:0,right:0,top:-5,left:0,margin:0,padding:"0 8px",pointerEvents:"none",borderRadius:"inherit",borderStyle:"solid",borderWidth:1,overflow:"hidden",minWidth:"0%"}),ye=(0,f.ZP)("legend",{shouldForwardProp:ee.Z})((({ownerState:e,theme:t})=>(0,o.Z)({float:"unset",width:"auto",overflow:"hidden"},!e.withLabel&&{padding:0,lineHeight:"11px",transition:t.transitions.create("width",{duration:150,easing:t.transitions.easing.easeOut})},e.withLabel&&(0,o.Z)({display:"block",padding:0,height:11,fontSize:"0.75em",visibility:"hidden",maxWidth:.01,transition:t.transitions.create("max-width",{duration:50,easing:t.transitions.easing.easeOut}),whiteSpace:"nowrap","& > span":{paddingLeft:5,paddingRight:5,display:"inline-block",opacity:0,visibility:"visible"}},e.notched&&{maxWidth:"100%",transition:t.transitions.create("max-width",{duration:100,easing:t.transitions.easing.easeOut,delay:50})}))));function be(e){return(0,U.ZP)("MuiOutlinedInput",e)}var we=(0,o.Z)({},V,(0,z.Z)("MuiOutlinedInput",["root","notchedOutline","input"]));const xe=["components","fullWidth","inputComponent","label","multiline","notched","slots","type"],Se=(0,f.ZP)(J,{shouldForwardProp:e=>(0,ee.Z)(e)||"classes"===e,name:"MuiOutlinedInput",slot:"Root",overridesResolver:H})((({theme:e,ownerState:t})=>{const n="light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return(0,o.Z)({position:"relative",borderRadius:(e.vars||e).shape.borderRadius,[`&:hover .${we.notchedOutline}`]:{borderColor:(e.vars||e).palette.text.primary},"@media (hover: none)":{[`&:hover .${we.notchedOutline}`]:{borderColor:e.vars?`rgba(${e.vars.palette.common.onBackgroundChannel} / 0.23)`:n}},[`&.${we.focused} .${we.notchedOutline}`]:{borderColor:(e.vars||e).palette[t.color].main,borderWidth:2},[`&.${we.error} .${we.notchedOutline}`]:{borderColor:(e.vars||e).palette.error.main},[`&.${we.disabled} .${we.notchedOutline}`]:{borderColor:(e.vars||e).palette.action.disabled}},t.startAdornment&&{paddingLeft:14},t.endAdornment&&{paddingRight:14},t.multiline&&(0,o.Z)({padding:"16.5px 14px"},"small"===t.size&&{padding:"8.5px 14px"}))})),ke=(0,f.ZP)((function(e){const{className:t,label:n,notched:r}=e,i=(0,a.Z)(e,ge),s=null!=n&&""!==n,l=(0,o.Z)({},e,{notched:r,withLabel:s});return(0,S.jsx)(ve,(0,o.Z)({"aria-hidden":!0,className:t,ownerState:l},i,{children:(0,S.jsx)(ye,{ownerState:l,children:s?(0,S.jsx)("span",{children:n}):he||(he=(0,S.jsx)("span",{className:"notranslate",children:"​"}))})}))}),{name:"MuiOutlinedInput",slot:"NotchedOutline",overridesResolver:(e,t)=>t.notchedOutline})((({theme:e})=>{const t="light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{borderColor:e.vars?`rgba(${e.vars.palette.common.onBackgroundChannel} / 0.23)`:t}})),Ee=(0,f.ZP)(G,{name:"MuiOutlinedInput",slot:"Input",overridesResolver:K})((({theme:e,ownerState:t})=>(0,o.Z)({padding:"16.5px 14px"},!e.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===e.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===e.palette.mode?null:"#fff",caretColor:"light"===e.palette.mode?null:"#fff",borderRadius:"inherit"}},e.vars&&{"&:-webkit-autofill":{borderRadius:"inherit"},[e.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},"small"===t.size&&{padding:"8.5px 14px"},t.multiline&&{padding:0},t.startAdornment&&{paddingLeft:0},t.endAdornment&&{paddingRight:0}))),Ze=i.forwardRef((function(e,t){var n,r,s,l,c;const d=(0,h.Z)({props:e,name:"MuiOutlinedInput"}),{components:p={},fullWidth:f=!1,inputComponent:m="input",label:g,multiline:v=!1,notched:y,slots:b={},type:w="text"}=d,x=(0,a.Z)(d,xe),k=(e=>{const{classes:t}=e,n=(0,u.Z)({root:["root"],notchedOutline:["notchedOutline"],input:["input"]},be,t);return(0,o.Z)({},t,n)})(d),E=(0,R.Z)(),Z=_({props:d,muiFormControl:E,states:["color","disabled","error","focused","hiddenLabel","size","required"]}),C=(0,o.Z)({},d,{color:Z.color||"primary",disabled:Z.disabled,error:Z.error,focused:Z.focused,formControl:E,fullWidth:f,hiddenLabel:Z.hiddenLabel,multiline:v,size:Z.size,type:w}),P=null!=(n=null!=(r=b.root)?r:p.Root)?n:Se,O=null!=(s=null!=(l=b.input)?l:p.Input)?s:Ee;return(0,S.jsx)(Y,(0,o.Z)({slots:{root:P,input:O},renderSuffix:e=>(0,S.jsx)(ke,{ownerState:C,className:k.notchedOutline,label:null!=g&&""!==g&&Z.required?c||(c=(0,S.jsxs)(i.Fragment,{children:[g," ","*"]})):g,notched:void 0!==y?y:Boolean(e.startAdornment||e.filled||e.focused)}),fullWidth:f,inputComponent:m,multiline:v,ref:t,type:w},x,{classes:(0,o.Z)({},k,{notchedOutline:null})}))}));Ze.muiName="Input";var Ce=Ze;function Pe(e){return(0,U.ZP)("MuiFormLabel",e)}var _e=(0,z.Z)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]);const Oe=["children","className","color","component","disabled","error","filled","focused","required"],Re=(0,f.ZP)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:({ownerState:e},t)=>(0,o.Z)({},t.root,"secondary"===e.color&&t.colorSecondary,e.filled&&t.filled)})((({theme:e,ownerState:t})=>(0,o.Z)({color:(e.vars||e).palette.text.secondary},e.typography.body1,{lineHeight:"1.4375em",padding:0,position:"relative",[`&.${_e.focused}`]:{color:(e.vars||e).palette[t.color].main},[`&.${_e.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${_e.error}`]:{color:(e.vars||e).palette.error.main}}))),Te=(0,f.ZP)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:(e,t)=>t.asterisk})((({theme:e})=>({[`&.${_e.error}`]:{color:(e.vars||e).palette.error.main}})));var Ae=i.forwardRef((function(e,t){const n=(0,h.Z)({props:e,name:"MuiFormLabel"}),{children:r,className:i,component:s="label"}=n,c=(0,a.Z)(n,Oe),d=_({props:n,muiFormControl:(0,R.Z)(),states:["color","required","focused","disabled","error","filled"]}),p=(0,o.Z)({},n,{color:d.color||"primary",component:s,disabled:d.disabled,error:d.error,filled:d.filled,focused:d.focused,required:d.required}),f=(e=>{const{classes:t,color:n,focused:r,disabled:o,error:a,filled:i,required:s}=e,l={root:["root",`color${(0,T.Z)(n)}`,o&&"disabled",a&&"error",i&&"filled",r&&"focused",s&&"required"],asterisk:["asterisk",a&&"error"]};return(0,u.Z)(l,Pe,t)})(p);return(0,S.jsxs)(Re,(0,o.Z)({as:s,ownerState:p,className:(0,l.Z)(f.root,i),ref:t},c,{children:[r,d.required&&(0,S.jsxs)(Te,{ownerState:p,"aria-hidden":!0,className:f.asterisk,children:[" ","*"]})]}))}));function je(e){return(0,U.ZP)("MuiInputLabel",e)}(0,z.Z)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);const Fe=["disableAnimation","margin","shrink","variant","className"],Ne=(0,f.ZP)(Ae,{shouldForwardProp:e=>(0,ee.Z)(e)||"classes"===e,name:"MuiInputLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`& .${_e.asterisk}`]:t.asterisk},t.root,n.formControl&&t.formControl,"small"===n.size&&t.sizeSmall,n.shrink&&t.shrink,!n.disableAnimation&&t.animated,n.focused&&t.focused,t[n.variant]]}})((({theme:e,ownerState:t})=>(0,o.Z)({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},t.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},"small"===t.size&&{transform:"translate(0, 17px) scale(1)"},t.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!t.disableAnimation&&{transition:e.transitions.create(["color","transform","max-width"],{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut})},"filled"===t.variant&&(0,o.Z)({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===t.size&&{transform:"translate(12px, 13px) scale(1)"},t.shrink&&(0,o.Z)({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},"small"===t.size&&{transform:"translate(12px, 4px) scale(0.75)"})),"outlined"===t.variant&&(0,o.Z)({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===t.size&&{transform:"translate(14px, 9px) scale(1)"},t.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))));var $e=i.forwardRef((function(e,t){const n=(0,h.Z)({name:"MuiInputLabel",props:e}),{disableAnimation:r=!1,shrink:i,className:s}=n,c=(0,a.Z)(n,Fe),d=(0,R.Z)();let p=i;void 0===p&&d&&(p=d.filled||d.focused||d.adornedStart);const f=_({props:n,muiFormControl:d,states:["size","variant","required","focused"]}),m=(0,o.Z)({},n,{disableAnimation:r,formControl:d,shrink:p,size:f.size,variant:f.variant,required:f.required,focused:f.focused}),g=(e=>{const{classes:t,formControl:n,size:r,shrink:a,disableAnimation:i,variant:s,required:l}=e,c={root:["root",n&&"formControl",!i&&"animated",a&&"shrink",r&&"normal"!==r&&`size${(0,T.Z)(r)}`,s],asterisk:[l&&"asterisk"]},d=(0,u.Z)(c,je,t);return(0,o.Z)({},t,d)})(m);return(0,S.jsx)(Ne,(0,o.Z)({"data-shrink":p,ownerState:m,ref:t,className:(0,l.Z)(g.root,s)},c,{classes:g}))}));var Me=function(e,t){var n,r;return i.isValidElement(e)&&-1!==t.indexOf(null!=(n=e.type.muiName)?n:null==(r=e.type)||null==(r=r._payload)||null==(r=r.value)?void 0:r.muiName)};function De(e){return(0,U.ZP)("MuiFormControl",e)}(0,z.Z)("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);const Le=["children","className","color","component","disabled","error","focused","fullWidth","hiddenLabel","margin","required","size","variant"],Ie=(0,f.ZP)("div",{name:"MuiFormControl",slot:"Root",overridesResolver:({ownerState:e},t)=>(0,o.Z)({},t.root,t[`margin${(0,T.Z)(e.margin)}`],e.fullWidth&&t.fullWidth)})((({ownerState:e})=>(0,o.Z)({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top"},"normal"===e.margin&&{marginTop:16,marginBottom:8},"dense"===e.margin&&{marginTop:8,marginBottom:4},e.fullWidth&&{width:"100%"})));var Be=i.forwardRef((function(e,t){const n=(0,h.Z)({props:e,name:"MuiFormControl"}),{children:r,className:s,color:c="primary",component:d="div",disabled:p=!1,error:f=!1,focused:m,fullWidth:g=!1,hiddenLabel:v=!1,margin:y="none",required:b=!1,size:w="medium",variant:x="outlined"}=n,k=(0,a.Z)(n,Le),E=(0,o.Z)({},n,{color:c,component:d,disabled:p,error:f,fullWidth:g,hiddenLabel:v,margin:y,required:b,size:w,variant:x}),Z=(e=>{const{classes:t,margin:n,fullWidth:r}=e,o={root:["root","none"!==n&&`margin${(0,T.Z)(n)}`,r&&"fullWidth"]};return(0,u.Z)(o,De,t)})(E),[C,P]=i.useState((()=>{let e=!1;return r&&i.Children.forEach(r,(t=>{if(!Me(t,["Input","Select"]))return;const n=Me(t,["Select"])?t.props.input:t;n&&n.props.startAdornment&&(e=!0)})),e})),[_,R]=i.useState((()=>{let e=!1;return r&&i.Children.forEach(r,(t=>{Me(t,["Input","Select"])&&(B(t.props,!0)||B(t.props.inputProps,!0))&&(e=!0)})),e})),[A,j]=i.useState(!1);p&&A&&j(!1);const F=void 0===m||p?A:m;let N;const $=i.useMemo((()=>({adornedStart:C,setAdornedStart:P,color:c,disabled:p,error:f,filled:_,focused:F,fullWidth:g,hiddenLabel:v,size:w,onBlur:()=>{j(!1)},onEmpty:()=>{R(!1)},onFilled:()=>{R(!0)},onFocus:()=>{j(!0)},registerEffect:N,required:b,variant:x})),[C,c,p,f,_,F,g,v,N,b,w,x]);return(0,S.jsx)(O.Z.Provider,{value:$,children:(0,S.jsx)(Ie,(0,o.Z)({as:d,ownerState:E,className:(0,l.Z)(Z.root,s),ref:t},k,{children:r}))})}));function ze(e){return(0,U.ZP)("MuiFormHelperText",e)}var Ue,We=(0,z.Z)("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]);const Ve=["children","className","component","disabled","error","filled","focused","margin","required","variant"],qe=(0,f.ZP)("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.size&&t[`size${(0,T.Z)(n.size)}`],n.contained&&t.contained,n.filled&&t.filled]}})((({theme:e,ownerState:t})=>(0,o.Z)({color:(e.vars||e).palette.text.secondary},e.typography.caption,{textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,[`&.${We.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${We.error}`]:{color:(e.vars||e).palette.error.main}},"small"===t.size&&{marginTop:4},t.contained&&{marginLeft:14,marginRight:14})));var He=i.forwardRef((function(e,t){const n=(0,h.Z)({props:e,name:"MuiFormHelperText"}),{children:r,className:i,component:s="p"}=n,c=(0,a.Z)(n,Ve),d=_({props:n,muiFormControl:(0,R.Z)(),states:["variant","size","disabled","error","filled","focused","required"]}),p=(0,o.Z)({},n,{component:s,contained:"filled"===d.variant||"outlined"===d.variant,variant:d.variant,size:d.size,disabled:d.disabled,error:d.error,filled:d.filled,focused:d.focused,required:d.required}),f=(e=>{const{classes:t,contained:n,size:r,disabled:o,error:a,filled:i,focused:s,required:l}=e,c={root:["root",o&&"disabled",a&&"error",r&&`size${(0,T.Z)(r)}`,n&&"contained",s&&"focused",i&&"filled",l&&"required"]};return(0,u.Z)(c,ze,t)})(p);return(0,S.jsx)(qe,(0,o.Z)({as:s,ownerState:p,className:(0,l.Z)(f.root,i),ref:t},c,{children:" "===r?Ue||(Ue=(0,S.jsx)("span",{className:"notranslate",children:"​"})):r}))})),Ke=(n(6607),y);function Je(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter((n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n))).forEach((t=>{n[t]=e[t]})),n}function Ge(e){if(void 0===e)return{};const t={};return Object.keys(e).filter((t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t]))).forEach((n=>{t[n]=e[n]})),t}const Xe=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];function Qe(e){var t;const{elementType:n,externalSlotProps:r,ownerState:i,skipResolvingSlotProps:s=!1}=e,u=(0,a.Z)(e,Xe),c=s?{}:function(e,t,n){return"function"==typeof e?e(t,n):e}(r,i),{props:d,internalRef:p}=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:a,className:i}=e;if(!t){const e=(0,l.Z)(null==n?void 0:n.className,i,null==a?void 0:a.className,null==r?void 0:r.className),t=(0,o.Z)({},null==n?void 0:n.style,null==a?void 0:a.style,null==r?void 0:r.style),s=(0,o.Z)({},n,a,r);return e.length>0&&(s.className=e),Object.keys(t).length>0&&(s.style=t),{props:s,internalRef:void 0}}const s=Je((0,o.Z)({},a,r)),u=Ge(r),c=Ge(a),d=t(s),p=(0,l.Z)(null==d?void 0:d.className,null==n?void 0:n.className,i,null==a?void 0:a.className,null==r?void 0:r.className),f=(0,o.Z)({},null==d?void 0:d.style,null==n?void 0:n.style,null==a?void 0:a.style,null==r?void 0:r.style),h=(0,o.Z)({},d,n,c,u);return p.length>0&&(h.className=p),Object.keys(f).length>0&&(h.style=f),{props:h,internalRef:d.ref}}((0,o.Z)({},u,{externalSlotProps:c})),f=(0,v.Z)(p,null==c?void 0:c.ref,null==(t=e.additionalProps)?void 0:t.ref),h=function(e,t,n){return void 0===e||P(e)?t:(0,o.Z)({},t,{ownerState:(0,o.Z)({},t.ownerState,n)})}(n,(0,o.Z)({},d,{ref:f}),i);return h}const Ye=i.createContext();var et=n(9773);function tt(e){return(0,U.ZP)("MuiList",e)}(0,z.Z)("MuiList",["root","padding","dense","subheader"]);const nt=["children","className","component","dense","disablePadding","subheader"],rt=(0,f.ZP)("ul",{name:"MuiList",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disablePadding&&t.padding,n.dense&&t.dense,n.subheader&&t.subheader]}})((({ownerState:e})=>(0,o.Z)({listStyle:"none",margin:0,padding:0,position:"relative"},!e.disablePadding&&{paddingTop:8,paddingBottom:8},e.subheader&&{paddingTop:0})));var ot=i.forwardRef((function(e,t){const n=(0,h.Z)({props:e,name:"MuiList"}),{children:r,className:s,component:c="ul",dense:d=!1,disablePadding:p=!1,subheader:f}=n,m=(0,a.Z)(n,nt),g=i.useMemo((()=>({dense:d})),[d]),v=(0,o.Z)({},n,{component:c,dense:d,disablePadding:p}),y=(e=>{const{classes:t,disablePadding:n,dense:r,subheader:o}=e,a={root:["root",!n&&"padding",r&&"dense",o&&"subheader"]};return(0,u.Z)(a,tt,t)})(v);return(0,S.jsx)(et.Z.Provider,{value:g,children:(0,S.jsxs)(rt,(0,o.Z)({as:c,className:(0,l.Z)(y.root,s),ref:t,ownerState:v},m,{children:[f,r]}))})}));function at(e){const t=e.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}var it=at;const st=["actions","autoFocus","autoFocusItem","children","className","disabledItemsFocusable","disableListWrap","onKeyDown","variant"];function lt(e,t,n){return e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:n?null:e.firstChild}function ut(e,t,n){return e===t?n?e.firstChild:e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:n?null:e.lastChild}function ct(e,t){if(void 0===t)return!0;let n=e.innerText;return void 0===n&&(n=e.textContent),n=n.trim().toLowerCase(),0!==n.length&&(t.repeating?n[0]===t.keys[0]:0===n.indexOf(t.keys.join("")))}function dt(e,t,n,r,o,a){let i=!1,s=o(e,t,!!t&&n);for(;s;){if(s===e.firstChild){if(i)return!1;i=!0}const t=!r&&(s.disabled||"true"===s.getAttribute("aria-disabled"));if(s.hasAttribute("tabindex")&&ct(s,a)&&!t)return s.focus(),!0;s=o(e,s,n)}return!1}var pt=i.forwardRef((function(e,t){const{actions:n,autoFocus:r=!1,autoFocusItem:s=!1,children:l,className:u,disabledItemsFocusable:c=!1,disableListWrap:d=!1,onKeyDown:p,variant:f="selectedMenu"}=e,h=(0,a.Z)(e,st),m=i.useRef(null),g=i.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});(0,j.Z)((()=>{r&&m.current.focus()}),[r]),i.useImperativeHandle(n,(()=>({adjustStyleForScrollbar:(e,{direction:t})=>{const n=!m.current.style.width;if(e.clientHeight{i.isValidElement(e)?(e.props.disabled||("selectedMenu"===f&&e.props.selected||-1===y)&&(y=t),y===t&&(e.props.disabled||e.props.muiSkipListHighlight||e.type.muiSkipListHighlight)&&(y+=1,y>=l.length&&(y=-1))):y===t&&(y+=1,y>=l.length&&(y=-1))}));const b=i.Children.map(l,((e,t)=>{if(t===y){const t={};return s&&(t.autoFocus=!0),void 0===e.props.tabIndex&&"selectedMenu"===f&&(t.tabIndex=0),i.cloneElement(e,t)}return e}));return(0,S.jsx)(ot,(0,o.Z)({role:"menu",ref:v,className:u,onKeyDown:e=>{const t=m.current,n=e.key,r=Ke(t).activeElement;if("ArrowDown"===n)e.preventDefault(),dt(t,r,d,c,lt);else if("ArrowUp"===n)e.preventDefault(),dt(t,r,d,c,ut);else if("Home"===n)e.preventDefault(),dt(t,null,d,c,lt);else if("End"===n)e.preventDefault(),dt(t,null,d,c,ut);else if(1===n.length){const o=g.current,a=n.toLowerCase(),i=performance.now();o.keys.length>0&&(i-o.lastTime>500?(o.keys=[],o.repeating=!0,o.previousKeyMatched=!0):o.repeating&&a!==o.keys[0]&&(o.repeating=!1)),o.lastTime=i,o.keys.push(a);const s=r&&!o.repeating&&ct(r,o);o.previousKeyMatched&&(s||dt(t,r,!1,c,lt,o))?e.preventDefault():o.previousKeyMatched=!1}p&&p(e)},tabIndex:r?0:-1},h,{children:b}))})),ft=x,ht=b,mt=n(8849),gt=n(1721),vt=n(3935),yt=!1,bt=n(220),wt="unmounted",xt="exited",St="entering",kt="entered",Et="exiting",Zt=function(e){function t(t,n){var r;r=e.call(this,t,n)||this;var o,a=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?a?(o=xt,r.appearStatus=St):o=kt:o=t.unmountOnExit||t.mountOnEnter?wt:xt,r.state={status:o},r.nextCallback=null,r}(0,gt.Z)(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===wt?{status:xt}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==St&&n!==kt&&(t=St):n!==St&&n!==kt||(t=Et)}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!=typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===St){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:vt.findDOMNode(this);n&&function(e){e.scrollTop}(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===xt&&this.setState({status:wt})},n.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,o=this.props.nodeRef?[r]:[vt.findDOMNode(this),r],a=o[0],i=o[1],s=this.getTimeouts(),l=r?s.appear:s.enter;!e&&!n||yt?this.safeSetState({status:kt},(function(){t.props.onEntered(a)})):(this.props.onEnter(a,i),this.safeSetState({status:St},(function(){t.props.onEntering(a,i),t.onTransitionEnd(l,(function(){t.safeSetState({status:kt},(function(){t.props.onEntered(a,i)}))}))})))},n.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:vt.findDOMNode(this);t&&!yt?(this.props.onExit(r),this.safeSetState({status:Et},(function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,(function(){e.safeSetState({status:xt},(function(){e.props.onExited(r)}))}))}))):this.safeSetState({status:xt},(function(){e.props.onExited(r)}))},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:vt.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var o=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],a=o[0],i=o[1];this.props.addEndListener(a,i)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===wt)return null;var t=this.props,n=t.children,r=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,(0,a.Z)(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return i.createElement(bt.Z.Provider,{value:null},"function"==typeof n?n(e,r):i.cloneElement(i.Children.only(n),r))},t}(i.Component);function Ct(){}Zt.contextType=bt.Z,Zt.propTypes={},Zt.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:Ct,onEntering:Ct,onEntered:Ct,onExit:Ct,onExiting:Ct,onExited:Ct},Zt.UNMOUNTED=wt,Zt.EXITED=xt,Zt.ENTERING=St,Zt.ENTERED=kt,Zt.EXITING=Et;var Pt=Zt;function _t(){const e=(0,N.Z)(M.Z);return e[D.Z]||e}const Ot=e=>e.scrollTop;function Rt(e,t){var n,r;const{timeout:o,easing:a,style:i={}}=e;return{duration:null!=(n=i.transitionDuration)?n:"number"==typeof o?o:o[t.mode]||0,easing:null!=(r=i.transitionTimingFunction)?r:"object"==typeof a?a[t.mode]:a,delay:i.transitionDelay}}const Tt=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function At(e){return`scale(${e}, ${e**2})`}const jt={entering:{opacity:1,transform:At(1)},entered:{opacity:1,transform:"none"}},Ft="undefined"!=typeof navigator&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),Nt=i.forwardRef((function(e,t){const{addEndListener:n,appear:r=!0,children:s,easing:l,in:u,onEnter:c,onEntered:d,onEntering:p,onExit:f,onExited:h,onExiting:m,style:g,timeout:v="auto",TransitionComponent:y=Pt}=e,b=(0,a.Z)(e,Tt),w=(0,mt.Z)(),x=i.useRef(),k=_t(),E=i.useRef(null),Z=(0,A.Z)(E,s.ref,t),C=e=>t=>{if(e){const n=E.current;void 0===t?e(n):e(n,t)}},P=C(p),_=C(((e,t)=>{Ot(e);const{duration:n,delay:r,easing:o}=Rt({style:g,timeout:v,easing:l},{mode:"enter"});let a;"auto"===v?(a=k.transitions.getAutoHeightDuration(e.clientHeight),x.current=a):a=n,e.style.transition=[k.transitions.create("opacity",{duration:a,delay:r}),k.transitions.create("transform",{duration:Ft?a:.666*a,delay:r,easing:o})].join(","),c&&c(e,t)})),O=C(d),R=C(m),T=C((e=>{const{duration:t,delay:n,easing:r}=Rt({style:g,timeout:v,easing:l},{mode:"exit"});let o;"auto"===v?(o=k.transitions.getAutoHeightDuration(e.clientHeight),x.current=o):o=t,e.style.transition=[k.transitions.create("opacity",{duration:o,delay:n}),k.transitions.create("transform",{duration:Ft?o:.666*o,delay:Ft?n:n||.333*o,easing:r})].join(","),e.style.opacity=0,e.style.transform=At(.75),f&&f(e)})),j=C(h);return(0,S.jsx)(y,(0,o.Z)({appear:r,in:u,nodeRef:E,onEnter:_,onEntered:O,onEntering:P,onExit:T,onExited:j,onExiting:R,addEndListener:e=>{"auto"===v&&w.start(x.current||0,e),n&&n(E.current,e)},timeout:"auto"===v?null:v},b,{children:(e,t)=>i.cloneElement(s,(0,o.Z)({style:(0,o.Z)({opacity:0,transform:At(.75),visibility:"exited"!==e||u?void 0:"hidden"},jt[e],g,s.props.style),ref:Z},t))}))}));Nt.muiSupportAuto=!0;var $t=Nt,Mt=n(2010);function Dt(...e){return e.reduce(((e,t)=>null==t?e:function(...n){e.apply(this,n),t.apply(this,n)}),(()=>{}))}function Lt(e,t){t?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function It(e){return parseInt(b(e).getComputedStyle(e).paddingRight,10)||0}function Bt(e,t,n,r,o){const a=[t,n,...r];[].forEach.call(e.children,(e=>{const t=-1===a.indexOf(e),n=!function(e){const t=-1!==["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].indexOf(e.tagName),n="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return t||n}(e);t&&n&&Lt(e,o)}))}function zt(e,t){let n=-1;return e.some(((e,r)=>!!t(e)&&(n=r,!0))),n}function Ut(e,t){const n=[],r=e.container;if(!t.disableScrollLock){if(function(e){const t=y(e);return t.body===e?b(e).innerWidth>t.documentElement.clientWidth:e.scrollHeight>e.clientHeight}(r)){const e=at(y(r));n.push({value:r.style.paddingRight,property:"padding-right",el:r}),r.style.paddingRight=`${It(r)+e}px`;const t=y(r).querySelectorAll(".mui-fixed");[].forEach.call(t,(t=>{n.push({value:t.style.paddingRight,property:"padding-right",el:t}),t.style.paddingRight=`${It(t)+e}px`}))}let e;if(r.parentNode instanceof DocumentFragment)e=y(r).body;else{const t=r.parentElement,n=b(r);e="HTML"===(null==t?void 0:t.nodeName)&&"scroll"===n.getComputedStyle(t).overflowY?t:r}n.push({value:e.style.overflow,property:"overflow",el:e},{value:e.style.overflowX,property:"overflow-x",el:e},{value:e.style.overflowY,property:"overflow-y",el:e}),e.style.overflow="hidden"}return()=>{n.forEach((({value:e,el:t,property:n})=>{e?t.style.setProperty(n,e):t.style.removeProperty(n)}))}}const Wt=new class{constructor(){this.containers=void 0,this.modals=void 0,this.modals=[],this.containers=[]}add(e,t){let n=this.modals.indexOf(e);if(-1!==n)return n;n=this.modals.length,this.modals.push(e),e.modalRef&&Lt(e.modalRef,!1);const r=function(e){const t=[];return[].forEach.call(e.children,(e=>{"true"===e.getAttribute("aria-hidden")&&t.push(e)})),t}(t);Bt(t,e.mount,e.modalRef,r,!0);const o=zt(this.containers,(e=>e.container===t));return-1!==o?(this.containers[o].modals.push(e),n):(this.containers.push({modals:[e],container:t,restore:null,hiddenSiblings:r}),n)}mount(e,t){const n=zt(this.containers,(t=>-1!==t.modals.indexOf(e))),r=this.containers[n];r.restore||(r.restore=Ut(r,t))}remove(e,t=!0){const n=this.modals.indexOf(e);if(-1===n)return n;const r=zt(this.containers,(t=>-1!==t.modals.indexOf(e))),o=this.containers[r];if(o.modals.splice(o.modals.indexOf(e),1),this.modals.splice(n,1),0===o.modals.length)o.restore&&o.restore(),e.modalRef&&Lt(e.modalRef,t),Bt(o.container,e.mount,e.modalRef,o.hiddenSiblings,!1),this.containers.splice(r,1);else{const e=o.modals[o.modals.length-1];e.modalRef&&Lt(e.modalRef,!1)}return n}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}};function Vt(e){const{container:t,disableEscapeKeyDown:n=!1,disableScrollLock:r=!1,manager:a=Wt,closeAfterTransition:s=!1,onTransitionEnter:l,onTransitionExited:u,children:c,onClose:d,open:p,rootRef:f}=e,h=i.useRef({}),m=i.useRef(null),g=i.useRef(null),b=(0,v.Z)(g,f),[w,x]=i.useState(!p),S=function(e){return!!e&&e.props.hasOwnProperty("in")}(c);let k=!0;"false"!==e["aria-hidden"]&&!1!==e["aria-hidden"]||(k=!1);const E=()=>(h.current.modalRef=g.current,h.current.mount=m.current,h.current),Z=()=>{a.mount(E(),{disableScrollLock:r}),g.current&&(g.current.scrollTop=0)},C=(0,Mt.Z)((()=>{const e=function(e){return"function"==typeof e?e():e}(t)||y(m.current).body;a.add(E(),e),g.current&&Z()})),P=i.useCallback((()=>a.isTopModal(E())),[a]),_=(0,Mt.Z)((e=>{m.current=e,e&&(p&&P()?Z():g.current&&Lt(g.current,k))})),O=i.useCallback((()=>{a.remove(E(),k)}),[k,a]);i.useEffect((()=>()=>{O()}),[O]),i.useEffect((()=>{p?C():S&&s||O()}),[p,O,S,s,C]);const R=e=>t=>{var r;null==(r=e.onKeyDown)||r.call(e,t),"Escape"===t.key&&229!==t.which&&P()&&(n||(t.stopPropagation(),d&&d(t,"escapeKeyDown")))},T=e=>t=>{var n;null==(n=e.onClick)||n.call(e,t),t.target===t.currentTarget&&d&&d(t,"backdropClick")};return{getRootProps:(t={})=>{const n=Je(e);delete n.onTransitionEnter,delete n.onTransitionExited;const r=(0,o.Z)({},n,t);return(0,o.Z)({role:"presentation"},r,{onKeyDown:R(r),ref:b})},getBackdropProps:(e={})=>{const t=e;return(0,o.Z)({"aria-hidden":!0},t,{onClick:T(t),open:p})},getTransitionProps:()=>({onEnter:Dt((()=>{x(!1),l&&l()}),null==c?void 0:c.props.onEnter),onExited:Dt((()=>{x(!0),u&&u(),s&&O()}),null==c?void 0:c.props.onExited)}),rootRef:b,portalRef:_,isTopModal:P,exited:w,hasTransition:S}}const qt=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function Ht(e){const t=[],n=[];return Array.from(e.querySelectorAll(qt)).forEach(((e,r)=>{const o=function(e){const t=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(t)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:t}(e);-1!==o&&function(e){return!(e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||function(e){if("INPUT"!==e.tagName||"radio"!==e.type)return!1;if(!e.name)return!1;const t=t=>e.ownerDocument.querySelector(`input[type="radio"]${t}`);let n=t(`[name="${e.name}"]:checked`);return n||(n=t(`[name="${e.name}"]`)),n!==e}(e))}(e)&&(0===o?t.push(e):n.push({documentOrder:r,tabIndex:o,node:e}))})),n.sort(((e,t)=>e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex)).map((e=>e.node)).concat(t)}function Kt(){return!0}function Jt(e){const{children:t,disableAutoFocus:n=!1,disableEnforceFocus:r=!1,disableRestoreFocus:o=!1,getTabbable:a=Ht,isEnabled:s=Kt,open:l}=e,u=i.useRef(!1),c=i.useRef(null),d=i.useRef(null),p=i.useRef(null),f=i.useRef(null),h=i.useRef(!1),m=i.useRef(null),g=(0,v.Z)(t.ref,m),b=i.useRef(null);i.useEffect((()=>{l&&m.current&&(h.current=!n)}),[n,l]),i.useEffect((()=>{if(!l||!m.current)return;const e=y(m.current);return m.current.contains(e.activeElement)||(m.current.hasAttribute("tabIndex")||m.current.setAttribute("tabIndex","-1"),h.current&&m.current.focus()),()=>{o||(p.current&&p.current.focus&&(u.current=!0,p.current.focus()),p.current=null)}}),[l]),i.useEffect((()=>{if(!l||!m.current)return;const e=y(m.current),t=t=>{b.current=t,!r&&s()&&"Tab"===t.key&&e.activeElement===m.current&&t.shiftKey&&(u.current=!0,d.current&&d.current.focus())},n=()=>{const t=m.current;if(null===t)return;if(!e.hasFocus()||!s()||u.current)return void(u.current=!1);if(t.contains(e.activeElement))return;if(r&&e.activeElement!==c.current&&e.activeElement!==d.current)return;if(e.activeElement!==f.current)f.current=null;else if(null!==f.current)return;if(!h.current)return;let n=[];if(e.activeElement!==c.current&&e.activeElement!==d.current||(n=a(m.current)),n.length>0){var o,i;const e=Boolean((null==(o=b.current)?void 0:o.shiftKey)&&"Tab"===(null==(i=b.current)?void 0:i.key)),t=n[0],r=n[n.length-1];"string"!=typeof t&&"string"!=typeof r&&(e?r.focus():t.focus())}else t.focus()};e.addEventListener("focusin",n),e.addEventListener("keydown",t,!0);const o=setInterval((()=>{e.activeElement&&"BODY"===e.activeElement.tagName&&n()}),50);return()=>{clearInterval(o),e.removeEventListener("focusin",n),e.removeEventListener("keydown",t,!0)}}),[n,r,o,s,l,a]);const w=e=>{null===p.current&&(p.current=e.relatedTarget),h.current=!0};return(0,S.jsxs)(i.Fragment,{children:[(0,S.jsx)("div",{tabIndex:l?0:-1,onFocus:w,ref:c,"data-testid":"sentinelStart"}),i.cloneElement(t,{ref:g,onFocus:e=>{null===p.current&&(p.current=e.relatedTarget),h.current=!0,f.current=e.target;const n=t.props.onFocus;n&&n(e)}}),(0,S.jsx)("div",{tabIndex:l?0:-1,onFocus:w,ref:d,"data-testid":"sentinelEnd"})]})}var Gt=n(5091);const Xt=i.forwardRef((function(e,t){const{children:n,container:r,disablePortal:o=!1}=e,[a,s]=i.useState(null),l=(0,v.Z)(i.isValidElement(n)?n.ref:null,t);if((0,w.Z)((()=>{o||s(function(e){return"function"==typeof e?e():e}(r)||document.body)}),[r,o]),(0,w.Z)((()=>{if(a&&!o)return(0,Gt.Z)(t,a),()=>{(0,Gt.Z)(t,null)}}),[t,a,o]),o){if(i.isValidElement(n)){const e={ref:l};return i.cloneElement(n,e)}return(0,S.jsx)(i.Fragment,{children:n})}return(0,S.jsx)(i.Fragment,{children:a?vt.createPortal(n,a):a})}));const Qt=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],Yt={entering:{opacity:1},entered:{opacity:1}},en=i.forwardRef((function(e,t){const n=_t(),r={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:s,appear:l=!0,children:u,easing:c,in:d,onEnter:p,onEntered:f,onEntering:h,onExit:m,onExited:g,onExiting:v,style:y,timeout:b=r,TransitionComponent:w=Pt}=e,x=(0,a.Z)(e,Qt),k=i.useRef(null),E=(0,A.Z)(k,u.ref,t),Z=e=>t=>{if(e){const n=k.current;void 0===t?e(n):e(n,t)}},C=Z(h),P=Z(((e,t)=>{Ot(e);const r=Rt({style:y,timeout:b,easing:c},{mode:"enter"});e.style.webkitTransition=n.transitions.create("opacity",r),e.style.transition=n.transitions.create("opacity",r),p&&p(e,t)})),_=Z(f),O=Z(v),R=Z((e=>{const t=Rt({style:y,timeout:b,easing:c},{mode:"exit"});e.style.webkitTransition=n.transitions.create("opacity",t),e.style.transition=n.transitions.create("opacity",t),m&&m(e)})),T=Z(g);return(0,S.jsx)(w,(0,o.Z)({appear:l,in:d,nodeRef:k,onEnter:P,onEntered:_,onEntering:C,onExit:R,onExited:T,onExiting:O,addEndListener:e=>{s&&s(k.current,e)},timeout:b},x,{children:(e,t)=>i.cloneElement(u,(0,o.Z)({style:(0,o.Z)({opacity:0,visibility:"exited"!==e||d?void 0:"hidden"},Yt[e],y,u.props.style),ref:E},t))}))}));var tn=en;function nn(e){return(0,U.ZP)("MuiBackdrop",e)}(0,z.Z)("MuiBackdrop",["root","invisible"]);const rn=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],on=(0,f.ZP)("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.invisible&&t.invisible]}})((({ownerState:e})=>(0,o.Z)({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},e.invisible&&{backgroundColor:"transparent"})));var an=i.forwardRef((function(e,t){var n,r,i;const s=(0,h.Z)({props:e,name:"MuiBackdrop"}),{children:c,className:d,component:p="div",components:f={},componentsProps:m={},invisible:g=!1,open:v,slotProps:y={},slots:b={},TransitionComponent:w=tn,transitionDuration:x}=s,k=(0,a.Z)(s,rn),E=(0,o.Z)({},s,{component:p,invisible:g}),Z=(e=>{const{classes:t,invisible:n}=e,r={root:["root",n&&"invisible"]};return(0,u.Z)(r,nn,t)})(E),C=null!=(n=y.root)?n:m.root;return(0,S.jsx)(w,(0,o.Z)({in:v,timeout:x},k,{children:(0,S.jsx)(on,(0,o.Z)({"aria-hidden":!0},C,{as:null!=(r=null!=(i=b.root)?i:f.Root)?r:p,className:(0,l.Z)(Z.root,d,null==C?void 0:C.className),ownerState:(0,o.Z)({},E,null==C?void 0:C.ownerState),classes:Z,ref:t,children:c}))}))}));function sn(e){return(0,U.ZP)("MuiModal",e)}(0,z.Z)("MuiModal",["root","hidden","backdrop"]);const ln=["BackdropComponent","BackdropProps","classes","className","closeAfterTransition","children","container","component","components","componentsProps","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onBackdropClick","onClose","onTransitionEnter","onTransitionExited","open","slotProps","slots","theme"],un=(0,f.ZP)("div",{name:"MuiModal",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.open&&n.exited&&t.hidden]}})((({theme:e,ownerState:t})=>(0,o.Z)({position:"fixed",zIndex:(e.vars||e).zIndex.modal,right:0,bottom:0,top:0,left:0},!t.open&&t.exited&&{visibility:"hidden"}))),cn=(0,f.ZP)(an,{name:"MuiModal",slot:"Backdrop",overridesResolver:(e,t)=>t.backdrop})({zIndex:-1}),dn=i.forwardRef((function(e,t){var n,r,s,c,d,p;const f=(0,h.Z)({name:"MuiModal",props:e}),{BackdropComponent:m=cn,BackdropProps:g,className:v,closeAfterTransition:y=!1,children:b,container:w,component:x,components:k={},componentsProps:E={},disableAutoFocus:Z=!1,disableEnforceFocus:C=!1,disableEscapeKeyDown:P=!1,disablePortal:_=!1,disableRestoreFocus:O=!1,disableScrollLock:R=!1,hideBackdrop:T=!1,keepMounted:A=!1,onBackdropClick:j,open:F,slotProps:N,slots:$}=f,M=(0,a.Z)(f,ln),D=(0,o.Z)({},f,{closeAfterTransition:y,disableAutoFocus:Z,disableEnforceFocus:C,disableEscapeKeyDown:P,disablePortal:_,disableRestoreFocus:O,disableScrollLock:R,hideBackdrop:T,keepMounted:A}),{getRootProps:L,getBackdropProps:I,getTransitionProps:B,portalRef:z,isTopModal:U,exited:W,hasTransition:V}=Vt((0,o.Z)({},D,{rootRef:t})),q=(0,o.Z)({},D,{exited:W}),H=(e=>{const{open:t,exited:n,classes:r}=e,o={root:["root",!t&&n&&"hidden"],backdrop:["backdrop"]};return(0,u.Z)(o,sn,r)})(q),K={};if(void 0===b.props.tabIndex&&(K.tabIndex="-1"),V){const{onEnter:e,onExited:t}=B();K.onEnter=e,K.onExited=t}const J=null!=(n=null!=(r=null==$?void 0:$.root)?r:k.Root)?n:un,G=null!=(s=null!=(c=null==$?void 0:$.backdrop)?c:k.Backdrop)?s:m,X=null!=(d=null==N?void 0:N.root)?d:E.root,Q=null!=(p=null==N?void 0:N.backdrop)?p:E.backdrop,Y=Qe({elementType:J,externalSlotProps:X,externalForwardedProps:M,getSlotProps:L,additionalProps:{ref:t,as:x},ownerState:q,className:(0,l.Z)(v,null==X?void 0:X.className,null==H?void 0:H.root,!q.open&&q.exited&&(null==H?void 0:H.hidden))}),ee=Qe({elementType:G,externalSlotProps:Q,additionalProps:g,getSlotProps:e=>I((0,o.Z)({},e,{onClick:t=>{j&&j(t),null!=e&&e.onClick&&e.onClick(t)}})),className:(0,l.Z)(null==Q?void 0:Q.className,null==g?void 0:g.className,null==H?void 0:H.backdrop),ownerState:q});return A||F||V&&!W?(0,S.jsx)(Xt,{ref:z,container:w,disablePortal:_,children:(0,S.jsxs)(J,(0,o.Z)({},Y,{children:[!T&&m?(0,S.jsx)(G,(0,o.Z)({},ee)):null,(0,S.jsx)(Jt,{disableEnforceFocus:C,disableAutoFocus:Z,disableRestoreFocus:O,isEnabled:U,open:F,children:i.cloneElement(b,K)})]}))}):null}));var pn=dn,fn=n(2101);var hn=e=>{let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,(t/100).toFixed(2)};function mn(e){return(0,U.ZP)("MuiPaper",e)}(0,z.Z)("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);const gn=["className","component","elevation","square","variant"],vn=(0,f.ZP)("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,"elevation"===n.variant&&t[`elevation${n.elevation}`]]}})((({theme:e,ownerState:t})=>{var n;return(0,o.Z)({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow")},!t.square&&{borderRadius:e.shape.borderRadius},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.divider}`},"elevation"===t.variant&&(0,o.Z)({boxShadow:(e.vars||e).shadows[t.elevation]},!e.vars&&"dark"===e.palette.mode&&{backgroundImage:`linear-gradient(${(0,fn.Fq)("#fff",hn(t.elevation))}, ${(0,fn.Fq)("#fff",hn(t.elevation))})`},e.vars&&{backgroundImage:null==(n=e.vars.overlays)?void 0:n[t.elevation]}))}));var yn=i.forwardRef((function(e,t){const n=(0,h.Z)({props:e,name:"MuiPaper"}),{className:r,component:i="div",elevation:s=1,square:c=!1,variant:d="elevation"}=n,p=(0,a.Z)(n,gn),f=(0,o.Z)({},n,{component:i,elevation:s,square:c,variant:d}),m=(e=>{const{square:t,elevation:n,variant:r,classes:o}=e,a={root:["root",r,!t&&"rounded","elevation"===r&&`elevation${n}`]};return(0,u.Z)(a,mn,o)})(f);return(0,S.jsx)(vn,(0,o.Z)({as:i,ownerState:f,className:(0,l.Z)(m.root,r),ref:t},p))}));function bn(e){return(0,U.ZP)("MuiPopover",e)}(0,z.Z)("MuiPopover",["root","paper"]);const wn=["onEntering"],xn=["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","className","container","elevation","marginThreshold","open","PaperProps","slots","slotProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps","disableScrollLock"],Sn=["slotProps"];function kn(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.height/2:"bottom"===t&&(n=e.height),n}function En(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.width/2:"right"===t&&(n=e.width),n}function Zn(e){return[e.horizontal,e.vertical].map((e=>"number"==typeof e?`${e}px`:e)).join(" ")}function Cn(e){return"function"==typeof e?e():e}const Pn=(0,f.ZP)(pn,{name:"MuiPopover",slot:"Root",overridesResolver:(e,t)=>t.root})({}),_n=(0,f.ZP)(yn,{name:"MuiPopover",slot:"Paper",overridesResolver:(e,t)=>t.paper})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0});var On=i.forwardRef((function(e,t){var n,r,s;const c=(0,h.Z)({props:e,name:"MuiPopover"}),{action:d,anchorEl:p,anchorOrigin:f={vertical:"top",horizontal:"left"},anchorPosition:m,anchorReference:g="anchorEl",children:v,className:y,container:b,elevation:w=8,marginThreshold:x=16,open:k,PaperProps:E={},slots:Z,slotProps:C,transformOrigin:_={vertical:"top",horizontal:"left"},TransitionComponent:O=$t,transitionDuration:R="auto",TransitionProps:{onEntering:T}={},disableScrollLock:j=!1}=c,F=(0,a.Z)(c.TransitionProps,wn),N=(0,a.Z)(c,xn),$=null!=(n=null==C?void 0:C.paper)?n:E,M=i.useRef(),D=(0,A.Z)(M,$.ref),L=(0,o.Z)({},c,{anchorOrigin:f,anchorReference:g,elevation:w,marginThreshold:x,externalPaperSlotProps:$,transformOrigin:_,TransitionComponent:O,transitionDuration:R,TransitionProps:F}),I=(e=>{const{classes:t}=e;return(0,u.Z)({root:["root"],paper:["paper"]},bn,t)})(L),B=i.useCallback((()=>{if("anchorPosition"===g)return m;const e=Cn(p),t=(e&&1===e.nodeType?e:Ke(M.current).body).getBoundingClientRect();return{top:t.top+kn(t,f.vertical),left:t.left+En(t,f.horizontal)}}),[p,f.horizontal,f.vertical,m,g]),z=i.useCallback((e=>({vertical:kn(e,_.vertical),horizontal:En(e,_.horizontal)})),[_.horizontal,_.vertical]),U=i.useCallback((e=>{const t={width:e.offsetWidth,height:e.offsetHeight},n=z(t);if("none"===g)return{top:null,left:null,transformOrigin:Zn(n)};const r=B();let o=r.top-n.vertical,a=r.left-n.horizontal;const i=o+t.height,s=a+t.width,l=ht(Cn(p)),u=l.innerHeight-x,c=l.innerWidth-x;if(null!==x&&ou){const e=i-u;o-=e,n.vertical+=e}if(null!==x&&ac){const e=s-c;a-=e,n.horizontal+=e}return{top:`${Math.round(o)}px`,left:`${Math.round(a)}px`,transformOrigin:Zn(n)}}),[p,g,B,z,x]),[W,V]=i.useState(k),q=i.useCallback((()=>{const e=M.current;if(!e)return;const t=U(e);null!==t.top&&(e.style.top=t.top),null!==t.left&&(e.style.left=t.left),e.style.transformOrigin=t.transformOrigin,V(!0)}),[U]);i.useEffect((()=>(j&&window.addEventListener("scroll",q),()=>window.removeEventListener("scroll",q))),[p,j,q]);i.useEffect((()=>{k&&q()})),i.useImperativeHandle(d,(()=>k?{updatePosition:()=>{q()}}:null),[k,q]),i.useEffect((()=>{if(!k)return;const e=ft((()=>{q()})),t=ht(p);return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}}),[p,k,q]);let H=R;"auto"!==R||O.muiSupportAuto||(H=void 0);const K=b||(p?Ke(Cn(p)).body:void 0),J=null!=(r=null==Z?void 0:Z.root)?r:Pn,G=null!=(s=null==Z?void 0:Z.paper)?s:_n,X=Qe({elementType:G,externalSlotProps:(0,o.Z)({},$,{style:W?$.style:(0,o.Z)({},$.style,{opacity:0})}),additionalProps:{elevation:w,ref:D},ownerState:L,className:(0,l.Z)(I.paper,null==$?void 0:$.className)}),Q=Qe({elementType:J,externalSlotProps:(null==C?void 0:C.root)||{},externalForwardedProps:N,additionalProps:{ref:t,slotProps:{backdrop:{invisible:!0}},container:K,open:k},ownerState:L,className:(0,l.Z)(I.root,y)}),{slotProps:Y}=Q,ee=(0,a.Z)(Q,Sn);return(0,S.jsx)(J,(0,o.Z)({},ee,!P(J)&&{slotProps:Y,disableScrollLock:j},{children:(0,S.jsx)(O,(0,o.Z)({appear:!0,in:k,onEntering:(e,t)=>{T&&T(e,t),q()},onExited:()=>{V(!1)},timeout:H},F,{children:(0,S.jsx)(G,(0,o.Z)({},X,{children:v}))}))}))}));function Rn(e){return(0,U.ZP)("MuiMenu",e)}(0,z.Z)("MuiMenu",["root","paper","list"]);const Tn=["onEntering"],An=["autoFocus","children","className","disableAutoFocusItem","MenuListProps","onClose","open","PaperProps","PopoverClasses","transitionDuration","TransitionProps","variant","slots","slotProps"],jn={vertical:"top",horizontal:"right"},Fn={vertical:"top",horizontal:"left"},Nn=(0,f.ZP)(On,{shouldForwardProp:e=>(0,ee.Z)(e)||"classes"===e,name:"MuiMenu",slot:"Root",overridesResolver:(e,t)=>t.root})({}),$n=(0,f.ZP)(_n,{name:"MuiMenu",slot:"Paper",overridesResolver:(e,t)=>t.paper})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),Mn=(0,f.ZP)(pt,{name:"MuiMenu",slot:"List",overridesResolver:(e,t)=>t.list})({outline:0});var Dn=i.forwardRef((function(e,t){var n,r;const s=(0,h.Z)({props:e,name:"MuiMenu"}),{autoFocus:c=!0,children:d,className:p,disableAutoFocusItem:f=!1,MenuListProps:m={},onClose:g,open:v,PaperProps:y={},PopoverClasses:b,transitionDuration:w="auto",TransitionProps:{onEntering:x}={},variant:k="selectedMenu",slots:E={},slotProps:Z={}}=s,C=(0,a.Z)(s.TransitionProps,Tn),P=(0,a.Z)(s,An),_=(()=>{const e=i.useContext(Ye);return null!=e&&e})(),O=(0,o.Z)({},s,{autoFocus:c,disableAutoFocusItem:f,MenuListProps:m,onEntering:x,PaperProps:y,transitionDuration:w,TransitionProps:C,variant:k}),R=(e=>{const{classes:t}=e;return(0,u.Z)({root:["root"],paper:["paper"],list:["list"]},Rn,t)})(O),T=c&&!f&&v,A=i.useRef(null);let j=-1;i.Children.map(d,((e,t)=>{i.isValidElement(e)&&(e.props.disabled||("selectedMenu"===k&&e.props.selected||-1===j)&&(j=t))}));const F=null!=(n=E.paper)?n:$n,N=null!=(r=Z.paper)?r:y,$=Qe({elementType:E.root,externalSlotProps:Z.root,ownerState:O,className:[R.root,p]}),M=Qe({elementType:F,externalSlotProps:N,ownerState:O,className:R.paper});return(0,S.jsx)(Nn,(0,o.Z)({onClose:g,anchorOrigin:{vertical:"bottom",horizontal:_?"right":"left"},transformOrigin:_?jn:Fn,slots:{paper:F,root:E.root},slotProps:{root:$,paper:M},open:v,ref:t,transitionDuration:w,TransitionProps:(0,o.Z)({onEntering:(e,t)=>{A.current&&A.current.adjustStyleForScrollbar(e,{direction:_?"rtl":"ltr"}),x&&x(e,t)}},C),ownerState:O},P,{classes:b,children:(0,S.jsx)(Mn,(0,o.Z)({onKeyDown:e=>{"Tab"===e.key&&(e.preventDefault(),g&&g(e,"tabKeyDown"))},actions:A,autoFocus:c&&(-1===j||f),autoFocusItem:T,variant:k},m,{className:(0,l.Z)(R.list,m.className),children:d}))}))}));function Ln(e){return(0,U.ZP)("MuiNativeSelect",e)}var In=(0,z.Z)("MuiNativeSelect",["root","select","multiple","filled","outlined","standard","disabled","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]);const Bn=["className","disabled","error","IconComponent","inputRef","variant"],zn=({ownerState:e,theme:t})=>(0,o.Z)({MozAppearance:"none",WebkitAppearance:"none",userSelect:"none",borderRadius:0,cursor:"pointer","&:focus":(0,o.Z)({},t.vars?{backgroundColor:`rgba(${t.vars.palette.common.onBackgroundChannel} / 0.05)`}:{backgroundColor:"light"===t.palette.mode?"rgba(0, 0, 0, 0.05)":"rgba(255, 255, 255, 0.05)"},{borderRadius:0}),"&::-ms-expand":{display:"none"},[`&.${In.disabled}`]:{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:(t.vars||t).palette.background.paper},"&&&":{paddingRight:24,minWidth:16}},"filled"===e.variant&&{"&&&":{paddingRight:32}},"outlined"===e.variant&&{borderRadius:(t.vars||t).shape.borderRadius,"&:focus":{borderRadius:(t.vars||t).shape.borderRadius},"&&&":{paddingRight:32}}),Un=(0,f.ZP)("select",{name:"MuiNativeSelect",slot:"Select",shouldForwardProp:ee.Z,overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.select,t[n.variant],n.error&&t.error,{[`&.${In.multiple}`]:t.multiple}]}})(zn),Wn=({ownerState:e,theme:t})=>(0,o.Z)({position:"absolute",right:0,top:"calc(50% - .5em)",pointerEvents:"none",color:(t.vars||t).palette.action.active,[`&.${In.disabled}`]:{color:(t.vars||t).palette.action.disabled}},e.open&&{transform:"rotate(180deg)"},"filled"===e.variant&&{right:7},"outlined"===e.variant&&{right:7}),Vn=(0,f.ZP)("svg",{name:"MuiNativeSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.icon,n.variant&&t[`icon${(0,T.Z)(n.variant)}`],n.open&&t.iconOpen]}})(Wn);var qn=i.forwardRef((function(e,t){const{className:n,disabled:r,error:s,IconComponent:c,inputRef:d,variant:p="standard"}=e,f=(0,a.Z)(e,Bn),h=(0,o.Z)({},e,{disabled:r,variant:p,error:s}),m=(e=>{const{classes:t,variant:n,disabled:r,multiple:o,open:a,error:i}=e,s={select:["select",n,r&&"disabled",o&&"multiple",i&&"error"],icon:["icon",`icon${(0,T.Z)(n)}`,a&&"iconOpen",r&&"disabled"]};return(0,u.Z)(s,Ln,t)})(h);return(0,S.jsxs)(i.Fragment,{children:[(0,S.jsx)(Un,(0,o.Z)({ownerState:h,className:(0,l.Z)(m.select,n),disabled:r,ref:d||t},f)),e.multiple?null:(0,S.jsx)(Vn,{as:c,ownerState:h,className:m.icon})]})})),Hn=n(5536),Kn=n(1529);function Jn(e){return(0,U.ZP)("MuiSelect",e)}var Gn,Xn=(0,z.Z)("MuiSelect",["root","select","multiple","filled","outlined","standard","disabled","focused","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]);const Qn=["aria-describedby","aria-label","autoFocus","autoWidth","children","className","defaultOpen","defaultValue","disabled","displayEmpty","error","IconComponent","inputRef","labelId","MenuProps","multiple","name","onBlur","onChange","onClose","onFocus","onOpen","open","readOnly","renderValue","SelectDisplayProps","tabIndex","type","value","variant"],Yn=(0,f.ZP)("div",{name:"MuiSelect",slot:"Select",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`&.${Xn.select}`]:t.select},{[`&.${Xn.select}`]:t[n.variant]},{[`&.${Xn.error}`]:t.error},{[`&.${Xn.multiple}`]:t.multiple}]}})(zn,{[`&.${Xn.select}`]:{height:"auto",minHeight:"1.4375em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}}),er=(0,f.ZP)("svg",{name:"MuiSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.icon,n.variant&&t[`icon${(0,T.Z)(n.variant)}`],n.open&&t.iconOpen]}})(Wn),tr=(0,f.ZP)("input",{shouldForwardProp:e=>(0,Hn.Z)(e)&&"classes"!==e,name:"MuiSelect",slot:"NativeInput",overridesResolver:(e,t)=>t.nativeInput})({bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%",boxSizing:"border-box"});function nr(e,t){return"object"==typeof t&&null!==t?e===t:String(e)===String(t)}function rr(e){return null==e||"string"==typeof e&&!e.trim()}var or=i.forwardRef((function(e,t){var n;const{"aria-describedby":r,"aria-label":s,autoFocus:c,autoWidth:d,children:f,className:h,defaultOpen:m,defaultValue:v,disabled:y,displayEmpty:b,error:w=!1,IconComponent:x,inputRef:k,labelId:E,MenuProps:Z={},multiple:C,name:P,onBlur:_,onChange:O,onClose:R,onFocus:j,onOpen:F,open:N,readOnly:$,renderValue:M,SelectDisplayProps:D={},tabIndex:L,value:I,variant:z="standard"}=e,U=(0,a.Z)(e,Qn),[W,V]=(0,Kn.Z)({controlled:I,default:v,name:"Select"}),[q,H]=(0,Kn.Z)({controlled:N,default:m,name:"Select"}),K=i.useRef(null),J=i.useRef(null),[G,X]=i.useState(null),{current:Q}=i.useRef(null!=N),[Y,ee]=i.useState(),te=(0,A.Z)(t,k),ne=i.useCallback((e=>{J.current=e,e&&X(e)}),[]),re=null==G?void 0:G.parentNode;i.useImperativeHandle(te,(()=>({focus:()=>{J.current.focus()},node:K.current,value:W})),[W]),i.useEffect((()=>{m&&q&&G&&!Q&&(ee(d?null:re.clientWidth),J.current.focus())}),[G,d]),i.useEffect((()=>{c&&J.current.focus()}),[c]),i.useEffect((()=>{if(!E)return;const e=Ke(J.current).getElementById(E);if(e){const t=()=>{getSelection().isCollapsed&&J.current.focus()};return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}}),[E]);const oe=(e,t)=>{e?F&&F(t):R&&R(t),Q||(ee(d?null:re.clientWidth),H(e))},ae=i.Children.toArray(f),ie=e=>t=>{let n;if(t.currentTarget.hasAttribute("tabindex")){if(C){n=Array.isArray(W)?W.slice():[];const t=W.indexOf(e.props.value);-1===t?n.push(e.props.value):n.splice(t,1)}else n=e.props.value;if(e.props.onClick&&e.props.onClick(t),W!==n&&(V(n),O)){const r=t.nativeEvent||t,o=new r.constructor(r.type,r);Object.defineProperty(o,"target",{writable:!0,value:{value:n,name:P}}),O(o,e)}C||oe(!1,t)}},se=null!==G&&q;let le,ue;delete U["aria-invalid"];const ce=[];let de=!1,pe=!1;(B({value:W})||b)&&(M?le=M(W):de=!0);const fe=ae.map((e=>{if(!i.isValidElement(e))return null;let t;if(C){if(!Array.isArray(W))throw new Error((0,g.Z)(2));t=W.some((t=>nr(t,e.props.value))),t&&de&&ce.push(e.props.children)}else t=nr(W,e.props.value),t&&de&&(ue=e.props.children);return t&&(pe=!0),i.cloneElement(e,{"aria-selected":t?"true":"false",onClick:ie(e),onKeyUp:t=>{" "===t.key&&t.preventDefault(),e.props.onKeyUp&&e.props.onKeyUp(t)},role:"option",selected:t,value:void 0,"data-value":e.props.value})}));de&&(le=C?0===ce.length?null:ce.reduce(((e,t,n)=>(e.push(t),n{const{classes:t,variant:n,disabled:r,multiple:o,open:a,error:i}=e,s={select:["select",n,r&&"disabled",o&&"multiple",i&&"error"],icon:["icon",`icon${(0,T.Z)(n)}`,a&&"iconOpen",r&&"disabled"],nativeInput:["nativeInput"]};return(0,u.Z)(s,Jn,t)})(ve),be=(0,o.Z)({},Z.PaperProps,null==(n=Z.slotProps)?void 0:n.paper),we=p();return(0,S.jsxs)(i.Fragment,{children:[(0,S.jsx)(Yn,(0,o.Z)({ref:ne,tabIndex:he,role:"combobox","aria-controls":we,"aria-disabled":y?"true":void 0,"aria-expanded":se?"true":"false","aria-haspopup":"listbox","aria-label":s,"aria-labelledby":[E,ge].filter(Boolean).join(" ")||void 0,"aria-describedby":r,onKeyDown:e=>{if(!$){-1!==[" ","ArrowUp","ArrowDown","Enter"].indexOf(e.key)&&(e.preventDefault(),oe(!0,e))}},onMouseDown:y||$?null:e=>{0===e.button&&(e.preventDefault(),J.current.focus(),oe(!0,e))},onBlur:e=>{!se&&_&&(Object.defineProperty(e,"target",{writable:!0,value:{value:W,name:P}}),_(e))},onFocus:j},D,{ownerState:ve,className:(0,l.Z)(D.className,ye.select,h),id:ge,children:rr(le)?Gn||(Gn=(0,S.jsx)("span",{className:"notranslate",children:"​"})):le})),(0,S.jsx)(tr,(0,o.Z)({"aria-invalid":w,value:Array.isArray(W)?W.join(","):W,name:P,ref:K,"aria-hidden":!0,onChange:e=>{const t=ae.find((t=>t.props.value===e.target.value));void 0!==t&&(V(t.props.value),O&&O(e,t))},tabIndex:-1,disabled:y,className:ye.nativeInput,autoFocus:c,ownerState:ve},U)),(0,S.jsx)(er,{as:x,className:ye.icon,ownerState:ve}),(0,S.jsx)(Dn,(0,o.Z)({id:`menu-${P||""}`,anchorEl:re,open:se,onClose:e=>{oe(!1,e)},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"}},Z,{MenuListProps:(0,o.Z)({"aria-labelledby":E,role:"listbox","aria-multiselectable":C?"true":void 0,disableListWrap:!0,id:we},Z.MenuListProps),slotProps:(0,o.Z)({},Z.slotProps,{paper:(0,o.Z)({},be,{style:(0,o.Z)({minWidth:me},null!=be?be.style:null)})}),children:fe}))]})})),ar=(0,n(5949).Z)((0,S.jsx)("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown");const ir=["autoWidth","children","classes","className","defaultOpen","displayEmpty","IconComponent","id","input","inputProps","label","labelId","MenuProps","multiple","native","onClose","onOpen","open","renderValue","SelectDisplayProps","variant"],sr=["root"],lr={name:"MuiSelect",overridesResolver:(e,t)=>t.root,shouldForwardProp:e=>(0,ee.Z)(e)&&"variant"!==e,slot:"Root"},ur=(0,f.ZP)(se,lr)(""),cr=(0,f.ZP)(Ce,lr)(""),dr=(0,f.ZP)(me,lr)(""),pr=i.forwardRef((function(e,t){const n=(0,h.Z)({name:"MuiSelect",props:e}),{autoWidth:r=!1,children:s,classes:u={},className:c,defaultOpen:d=!1,displayEmpty:p=!1,IconComponent:f=ar,id:g,input:v,inputProps:y,label:b,labelId:w,MenuProps:x,multiple:k=!1,native:E=!1,onClose:Z,onOpen:C,open:P,renderValue:O,SelectDisplayProps:T,variant:j="outlined"}=n,F=(0,a.Z)(n,ir),N=E?qn:or,$=_({props:n,muiFormControl:(0,R.Z)(),states:["variant","error"]}),M=$.variant||j,D=(0,o.Z)({},n,{variant:M,classes:u}),L=(e=>{const{classes:t}=e;return t})(D),I=(0,a.Z)(L,sr),B=v||{standard:(0,S.jsx)(ur,{ownerState:D}),outlined:(0,S.jsx)(cr,{label:b,ownerState:D}),filled:(0,S.jsx)(dr,{ownerState:D})}[M],z=(0,A.Z)(t,B.ref);return(0,S.jsx)(i.Fragment,{children:i.cloneElement(B,(0,o.Z)({inputComponent:N,inputProps:(0,o.Z)({children:s,error:$.error,IconComponent:f,variant:M,type:void 0,multiple:k},E?{id:g}:{autoWidth:r,defaultOpen:d,displayEmpty:p,labelId:w,MenuProps:x,onClose:Z,onOpen:C,open:P,renderValue:O,SelectDisplayProps:(0,o.Z)({id:g},T)},y,{classes:y?(0,m.Z)(I,y.classes):I},v?v.props.inputProps:{})},(k&&E||p)&&"outlined"===M?{notched:!0}:{},{ref:z,className:(0,l.Z)(B.props.className,c,L.root)},!v&&{variant:M},F))})}));pr.muiName="Select";var fr=pr;function hr(e){return(0,U.ZP)("MuiTextField",e)}(0,z.Z)("MuiTextField",["root"]);const mr=["autoComplete","autoFocus","children","className","color","defaultValue","disabled","error","FormHelperTextProps","fullWidth","helperText","id","InputLabelProps","inputProps","InputProps","inputRef","label","maxRows","minRows","multiline","name","onBlur","onChange","onFocus","placeholder","required","rows","select","SelectProps","type","value","variant"],gr={standard:se,filled:me,outlined:Ce},vr=(0,f.ZP)(Be,{name:"MuiTextField",slot:"Root",overridesResolver:(e,t)=>t.root})({});var yr=i.forwardRef((function(e,t){const n=(0,h.Z)({props:e,name:"MuiTextField"}),{autoComplete:r,autoFocus:i=!1,children:s,className:c,color:d="primary",defaultValue:f,disabled:m=!1,error:g=!1,FormHelperTextProps:v,fullWidth:y=!1,helperText:b,id:w,InputLabelProps:x,inputProps:k,InputProps:E,inputRef:Z,label:C,maxRows:P,minRows:_,multiline:O=!1,name:R,onBlur:T,onChange:A,onFocus:j,placeholder:F,required:N=!1,rows:$,select:M=!1,SelectProps:D,type:L,value:I,variant:B="outlined"}=n,z=(0,a.Z)(n,mr),U=(0,o.Z)({},n,{autoFocus:i,color:d,disabled:m,error:g,fullWidth:y,multiline:O,required:N,select:M,variant:B}),W=(e=>{const{classes:t}=e;return(0,u.Z)({root:["root"]},hr,t)})(U);const V={};"outlined"===B&&(x&&void 0!==x.shrink&&(V.notched=x.shrink),V.label=C),M&&(D&&D.native||(V.id=void 0),V["aria-describedby"]=void 0);const q=p(w),H=b&&q?`${q}-helper-text`:void 0,K=C&&q?`${q}-label`:void 0,J=gr[B],G=(0,S.jsx)(J,(0,o.Z)({"aria-describedby":H,autoComplete:r,autoFocus:i,defaultValue:f,fullWidth:y,multiline:O,name:R,rows:$,maxRows:P,minRows:_,type:L,value:I,id:q,inputRef:Z,onBlur:T,onChange:A,onFocus:j,placeholder:F,inputProps:k},V,E));return(0,S.jsxs)(vr,(0,o.Z)({className:(0,l.Z)(W.root,c),disabled:m,error:g,fullWidth:y,ref:t,required:N,color:d,variant:B,ownerState:U},z,{children:[null!=C&&""!==C&&(0,S.jsx)($e,(0,o.Z)({htmlFor:q,id:K},x,{children:C})),M?(0,S.jsx)(fr,(0,o.Z)({"aria-describedby":H,id:q,labelId:K,value:I,input:G},D,{children:s})):G,b&&(0,S.jsx)(He,(0,o.Z)({id:H},v,{children:b}))]}))})),br=n(4082),wr=n(7408),xr=n(6523);const Sr=["ownerState"],kr=["variants"],Er=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function Zr(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}const Cr=(0,wr.Z)(),Pr=e=>e?e.charAt(0).toLowerCase()+e.slice(1):e;function _r({defaultTheme:e,theme:t,themeId:n}){return r=t,0===Object.keys(r).length?e:t[n]||t;var r}function Or(e){return e?(t,n)=>n[e]:null}function Rr(e,t){let{ownerState:n}=t,r=(0,a.Z)(t,Sr);const i="function"==typeof e?e((0,o.Z)({ownerState:n},r)):e;if(Array.isArray(i))return i.flatMap((e=>Rr(e,(0,o.Z)({ownerState:n},r))));if(i&&"object"==typeof i&&Array.isArray(i.variants)){const{variants:e=[]}=i;let t=(0,a.Z)(i,kr);return e.forEach((e=>{let a=!0;"function"==typeof e.props?a=e.props((0,o.Z)({ownerState:n},r,n)):Object.keys(e.props).forEach((t=>{(null==n?void 0:n[t])!==e.props[t]&&r[t]!==e.props[t]&&(a=!1)})),a&&(Array.isArray(t)||(t=[t]),t.push("function"==typeof e.style?e.style((0,o.Z)({ownerState:n},r,n)):e.style))})),t}return i}const Tr=function(e={}){const{themeId:t,defaultTheme:n=Cr,rootShouldForwardProp:r=Zr,slotShouldForwardProp:i=Zr}=e,s=e=>(0,xr.Z)((0,o.Z)({},e,{theme:_r((0,o.Z)({},e,{defaultTheme:n,themeId:t}))}));return s.__mui_systemSx=!0,(e,l={})=>{(0,br.internal_processStyles)(e,(e=>e.filter((e=>!(null!=e&&e.__mui_systemSx)))));const{name:u,slot:c,skipVariantsResolver:d,skipSx:p,overridesResolver:f=Or(Pr(c))}=l,h=(0,a.Z)(l,Er),g=void 0!==d?d:c&&"Root"!==c&&"root"!==c||!1,v=p||!1;let y=Zr;"Root"===c||"root"===c?y=r:c?y=i:function(e){return"string"==typeof e&&e.charCodeAt(0)>96}(e)&&(y=void 0);const b=(0,br.default)(e,(0,o.Z)({shouldForwardProp:y,label:undefined},h)),w=e=>"function"==typeof e&&e.__emotion_real!==e||(0,m.P)(e)?r=>Rr(e,(0,o.Z)({},r,{theme:_r({theme:r.theme,defaultTheme:n,themeId:t})})):e,x=(r,...a)=>{let i=w(r);const l=a?a.map(w):[];u&&f&&l.push((e=>{const r=_r((0,o.Z)({},e,{defaultTheme:n,themeId:t}));if(!r.components||!r.components[u]||!r.components[u].styleOverrides)return null;const a=r.components[u].styleOverrides,i={};return Object.entries(a).forEach((([t,n])=>{i[t]=Rr(n,(0,o.Z)({},e,{theme:r}))})),f(e,i)})),u&&!g&&l.push((e=>{var r;const a=_r((0,o.Z)({},e,{defaultTheme:n,themeId:t}));return Rr({variants:null==a||null==(r=a.components)||null==(r=r[u])?void 0:r.variants},(0,o.Z)({},e,{theme:a}))})),v||l.push(s);const c=l.length-a.length;if(Array.isArray(r)&&c>0){const e=new Array(c).fill("");i=[...r,...e],i.raw=[...r.raw,...e]}const d=b(i,...l);return e.muiName&&(d.muiName=e.muiName),d};return b.withConfig&&(x.withConfig=b.withConfig),x}}();var Ar=Tr,jr=n(3207),Fr=n(9707),Nr=n(5408),$r=n(2605);const Mr=["component","direction","spacing","divider","children","className","useFlexGap"],Dr=(0,wr.Z)(),Lr=Ar("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root});function Ir(e){return(0,jr.Z)({props:e,name:"MuiStack",defaultTheme:Dr})}function Br(e,t){const n=i.Children.toArray(e).filter(Boolean);return n.reduce(((e,r,o)=>(e.push(r),o{let n=(0,o.Z)({display:"flex",flexDirection:"column"},(0,Nr.k9)({theme:t},(0,Nr.P$)({values:e.direction,breakpoints:t.breakpoints.values}),(e=>({flexDirection:e}))));if(e.spacing){const r=(0,$r.hB)(t),o=Object.keys(t.breakpoints.values).reduce(((t,n)=>(("object"==typeof e.spacing&&null!=e.spacing[n]||"object"==typeof e.direction&&null!=e.direction[n])&&(t[n]=!0),t)),{}),a=(0,Nr.P$)({values:e.direction,base:o}),i=(0,Nr.P$)({values:e.spacing,base:o});"object"==typeof a&&Object.keys(a).forEach(((e,t,n)=>{if(!a[e]){const r=t>0?a[n[t-1]]:"column";a[e]=r}}));const s=(t,n)=>{return e.useFlexGap?{gap:(0,$r.NA)(r,t)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":{[`margin${o=n?a[n]:e.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[o]}`]:(0,$r.NA)(r,t)}};var o};n=(0,m.Z)(n,(0,Nr.k9)({theme:t},i,s))}return n=(0,Nr.dt)(t.breakpoints,n),n};const Ur=function(e={}){const{createStyledComponent:t=Lr,useThemeProps:n=Ir,componentName:r="MuiStack"}=e,s=t(zr),c=i.forwardRef((function(e,t){const i=n(e),c=(0,Fr.Z)(i),{component:d="div",direction:p="column",spacing:f=0,divider:h,children:m,className:g,useFlexGap:v=!1}=c,y=(0,a.Z)(c,Mr),b={direction:p,spacing:f,useFlexGap:v},w=(0,u.Z)({root:["root"]},(e=>(0,U.ZP)(r,e)),{});return(0,S.jsx)(s,(0,o.Z)({as:d,ownerState:b,ref:t,className:(0,l.Z)(w.root,g)},y,{children:h?Br(m,h):m}))}));return c}({createStyledComponent:(0,f.ZP)("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root}),useThemeProps:e=>(0,h.Z)({props:e,name:"MuiStack"})});var Wr=Ur;function Vr(e){return(0,U.ZP)("MuiTypography",e)}(0,z.Z)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);const qr=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],Hr=(0,f.ZP)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.variant&&t[n.variant],"inherit"!==n.align&&t[`align${(0,T.Z)(n.align)}`],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom,n.paragraph&&t.paragraph]}})((({theme:e,ownerState:t})=>(0,o.Z)({margin:0},"inherit"===t.variant&&{font:"inherit"},"inherit"!==t.variant&&e.typography[t.variant],"inherit"!==t.align&&{textAlign:t.align},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.paragraph&&{marginBottom:16}))),Kr={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},Jr={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"};var Gr=i.forwardRef((function(e,t){const n=(0,h.Z)({props:e,name:"MuiTypography"}),r=(e=>Jr[e]||e)(n.color),i=(0,Fr.Z)((0,o.Z)({},n,{color:r})),{align:s="inherit",className:c,component:d,gutterBottom:p=!1,noWrap:f=!1,paragraph:m=!1,variant:g="body1",variantMapping:v=Kr}=i,y=(0,a.Z)(i,qr),b=(0,o.Z)({},i,{align:s,color:r,className:c,component:d,gutterBottom:p,noWrap:f,paragraph:m,variant:g,variantMapping:v}),w=d||(m?"p":v[g]||Kr[g])||"span",x=(e=>{const{align:t,gutterBottom:n,noWrap:r,paragraph:o,variant:a,classes:i}=e,s={root:["root",a,"inherit"!==e.align&&`align${(0,T.Z)(t)}`,n&&"gutterBottom",r&&"noWrap",o&&"paragraph"]};return(0,u.Z)(s,Vr,i)})(b);return(0,S.jsx)(Hr,(0,o.Z)({as:w,ref:t,ownerState:b,className:(0,l.Z)(x.root,c)},y))}));function Xr(e){return(0,U.ZP)("MuiFormControlLabel",e)}var Qr=(0,z.Z)("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"]);const Yr=["checked","className","componentsProps","control","disabled","disableTypography","inputRef","label","labelPlacement","name","onChange","required","slotProps","value"],eo=(0,f.ZP)("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{[`& .${Qr.label}`]:t.label},t.root,t[`labelPlacement${(0,T.Z)(n.labelPlacement)}`]]}})((({theme:e,ownerState:t})=>(0,o.Z)({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16,[`&.${Qr.disabled}`]:{cursor:"default"}},"start"===t.labelPlacement&&{flexDirection:"row-reverse",marginLeft:16,marginRight:-11},"top"===t.labelPlacement&&{flexDirection:"column-reverse",marginLeft:16},"bottom"===t.labelPlacement&&{flexDirection:"column",marginLeft:16},{[`& .${Qr.label}`]:{[`&.${Qr.disabled}`]:{color:(e.vars||e).palette.text.disabled}}}))),to=(0,f.ZP)("span",{name:"MuiFormControlLabel",slot:"Asterisk",overridesResolver:(e,t)=>t.asterisk})((({theme:e})=>({[`&.${Qr.error}`]:{color:(e.vars||e).palette.error.main}})));var no=i.forwardRef((function(e,t){var n,r;const s=(0,h.Z)({props:e,name:"MuiFormControlLabel"}),{className:c,componentsProps:d={},control:p,disabled:f,disableTypography:m,label:g,labelPlacement:v="end",required:y,slotProps:b={}}=s,w=(0,a.Z)(s,Yr),x=(0,R.Z)(),k=null!=(n=null!=f?f:p.props.disabled)?n:null==x?void 0:x.disabled,E=null!=y?y:p.props.required,Z={disabled:k,required:E};["checked","name","onChange","value","inputRef"].forEach((e=>{void 0===p.props[e]&&void 0!==s[e]&&(Z[e]=s[e])}));const C=_({props:s,muiFormControl:x,states:["error"]}),P=(0,o.Z)({},s,{disabled:k,labelPlacement:v,required:E,error:C.error}),O=(e=>{const{classes:t,disabled:n,labelPlacement:r,error:o,required:a}=e,i={root:["root",n&&"disabled",`labelPlacement${(0,T.Z)(r)}`,o&&"error",a&&"required"],label:["label",n&&"disabled"],asterisk:["asterisk",o&&"error"]};return(0,u.Z)(i,Xr,t)})(P),A=null!=(r=b.typography)?r:d.typography;let j=g;return null==j||j.type===Gr||m||(j=(0,S.jsx)(Gr,(0,o.Z)({component:"span"},A,{className:(0,l.Z)(O.label,null==A?void 0:A.className),children:j}))),(0,S.jsxs)(eo,(0,o.Z)({className:(0,l.Z)(O.root,c),ownerState:P,ref:t},w,{children:[i.cloneElement(p,Z),E?(0,S.jsxs)(Wr,{display:"block",children:[j,(0,S.jsxs)(to,{ownerState:P,"aria-hidden":!0,className:O.asterisk,children:[" ","*"]})]}):j]}))}));const ro=(0,r.Z)(yr,{target:"e12vak7u2"})({name:"1fgxa5o",styles:"& label{color:#E4E4E4;font-family:Montserrat Variable, Helvetica, Arial, sans-serif;font-size:14px;font-weight:500;line-height:16px;}& label.Mui-focused{color:#E4E4E4;}& label.Mui-error{color:#E4E4E4;}& .MuiInput-underline:after{border-bottom-color:#2D2D2D;}& .MuiOutlinedInput-root{font-family:Montserrat Variable, Helvetica, Arial, sans-serif;font-size:14px;font-weight:500;line-height:16px;color:#E4E4E4;&:hover input{border-radius:10px;background-color:#2D2D2D;}& fieldset{border-color:#2D2D2D;border-radius:10px;}&:hover fieldset{border-color:#2D2D2D;border-radius:10px;}&.Mui-focused fieldset{border-color:#2D2D2D;border-radius:10px;}}"}),oo=(0,r.Z)(yr,{target:"e12vak7u1"})({name:"1ekl6eh",styles:"& label{font-size:14px;font-weight:500;line-height:16px;color:#111;font-family:Montserrat Variable, Helvetica, Arial, sans-serif;}& label.Mui-focused{color:#111;}& label.Mui-error{color:#111;}& .MuiInput-underline:after{border-bottom-color:#2D2D2D;}&::placeholder{color:#111;}& .MuiOutlinedInput-root{font-family:Montserrat Variable, Helvetica, Arial, sans-serif;font-size:14px;font-weight:500;line-height:16px;color:#111;& fieldset{border-color:#2D2D2D;border-radius:10px;}&:hover fieldset{border-color:#2D2D2D;border-radius:10px;}&.Mui-focused fieldset{border-color:#2D2D2D;border-radius:10px;}}"}),ao=(0,r.Z)(no,{target:"e12vak7u0"})({name:"9jp76r",styles:"& span.MuiFormControlLabel-label{font-size:12px;line-height:12px;color:#111;font-family:Montserrat Variable, Helvetica, Arial, sans-serif;}& span.MuiCheckbox-root{padding:0px 8px 0px 9px;}& .MuiSvgIcon-root{font-size:20px;}"})},2990:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return D},query:function(){return L}});var r=n(7294),o=n(4160),a=n(6577),i=n(1164),s=n(3279),l=n.n(s),u=n(917);var c=()=>{const{0:e,1:t}=(0,r.useState)(0),n=l()((()=>{const e=document.documentElement.scrollTop,n=document.documentElement.scrollHeight-document.documentElement.clientHeight,r=Math.floor(e/n*100);t(r)}),10);return(0,r.useEffect)((()=>(n(),window.addEventListener("scroll",n),()=>window.removeEventListener("scroll",n))),[]),(0,u.tZ)("div",{className:"h-1 w-full bg-secondary-100 absolute bottom-0 left-0"},(0,u.tZ)("div",{className:"h-full w-0 bg-main-100 transition-all ease-linear duration-300",style:{width:`${e}%`}}))};var d=e=>{let{path:t,link:n,title:a,className:i}=e;const{0:s,1:l}=(0,r.useState)(!1);(0,r.useEffect)((()=>{l(null==t?void 0:t.includes(c))}),[t]);const c=`${n.toLowerCase().split(" ").join("-")}`;return(0,u.tZ)("li",null,(0,u.tZ)(o.rU,{to:`/${c}`,"aria-label":`CodeCave ${a.toLowerCase()}`,itemProp:"url",className:`group text-lg font-semibold text-main-100 hover:text-main-10 relative ${i}`},(0,u.tZ)("span",{itemProp:"name"},a.toLowerCase()),(0,u.tZ)("span",{className:"absolute -bottom-1 -left-2 -right-2 h-1 border-b-2 border-solid border-main-100 group-hover:border-main-10 "+(s?"block":"hidden")})))};var p=e=>{let{title:t,className:n}=e;return(0,u.tZ)(o.rU,{to:"/#contact-form","aria-label":t,itemProp:"url",className:`px-0 sm:px-5 md:px-6 font-bold whitespace-nowrap rounded-lg mx-0 bg-main-100 text-secondary-100 h-12 flex items-center justify-center hover:bg-main-70 ${n}`},(0,u.tZ)("span",{itemProp:"name"},t.toUpperCase()))};var f=e=>{let{path:t,layoutMarkup:n}=e;const{0:s,1:l}=(0,r.useState)(!1),f=(0,r.useRef)(null),h=()=>l(!1);return(0,r.useEffect)((()=>{var e;if(window)return null===(e=f.current)||void 0===e||e.addEventListener("click",h,{capture:!0}),()=>{var e;return null===(e=f.current)||void 0===e?void 0:e.removeEventListener("click",h)}}),[]),(0,u.tZ)("nav",{className:"sticky top-0 z-50 bg-secondary-100"},(0,u.tZ)(i.Z,{maxWidthClass:"max-w-[1280px]",className:"mx-auto w-full relative h-16 items-center justify-between px-6"},(0,u.tZ)("div",{className:"flex w-full items-center justify-between"},(0,u.tZ)(o.rU,{to:"/","aria-label":n.homePageLinkLabel},(0,u.tZ)("img",{src:"/logo.svg",alt:"logo",itemProp:"image",className:"w-40 sm:w-64 object-contain"})),(0,u.tZ)("ul",{className:"hidden md:flex w-max justify-between space-x-10 mx-5",itemScope:!0,itemType:"https://schema.org/SiteNavigationElement"},Object.entries(n.links).map((e=>{let[n,r]=e;return(0,u.tZ)(d,{key:n,path:t,link:n,title:r})}))),(0,u.tZ)(p,{title:n.discussProject,className:"hidden md:flex"})),(0,u.tZ)("button",{type:"button",className:"flex items-center justify-center text-main-100 hover:bg-secondary-30 md:hidden","aria-controls":"mobile-menu","aria-expanded":"false","aria-label":"menu",onClick:()=>l(!s)},(0,u.tZ)(a.H,{className:"text-4xl"})),(0,u.tZ)("ul",{className:"md:hidden absolute right-0 top-full w-full z-50 bg-secondary-100 flex flex-col p-2.5 gap-2 rounded-b-2xl "+(s?"":"hidden"),ref:f,id:"mobile-menu",itemScope:!0,itemType:"https://schema.org/SiteNavigationElement"},Object.entries(n.links).map((e=>{let[n,r]=e;return(0,u.tZ)(d,{key:n,path:t,link:n,title:r,className:"h-12 w-full border border-solid border-main-100 flex items-center justify-center rounded-md"})})),(0,u.tZ)("li",null,(0,u.tZ)(p,{title:n.discussProject})))),(0,u.tZ)(c,null))},h=n(7054),m=n(874),g=n(5337),v=n(3821);var y=e=>{let{invert:t,size:n}=e;const a=t?"white":"black",i=n?`${n}px`:"26px",s="flex items-center justify-center hover:brightness-75 rounded";return(0,u.tZ)(r.Fragment,null,(0,u.tZ)(o.rU,{to:"/services#formtarget",title:"Email",className:s},(0,u.tZ)(v.W,{size:i,color:a})),(0,u.tZ)("a",{href:"https://t.me/CodeCaveSupportBot",target:"_blank",rel:"noopener noreferrer",title:"Telegram",itemProp:"contactOption",className:s},(0,u.tZ)(h.W,{size:i,color:a})),(0,u.tZ)("a",{href:"https://wa.me/13023640193",target:"_blank",rel:"noopener noreferrer",title:"Whatsapp",itemProp:"contactOption",className:s},(0,u.tZ)(m.x,{size:i,color:a})),(0,u.tZ)("a",{href:"https://www.linkedin.com/company/codecave/about/?viewAsMember=true",target:"_blank",rel:"noopener noreferrer",title:"Linkedin",itemProp:"contactOption",className:s},(0,u.tZ)(g.l,{size:i,color:a})))};var b=e=>{let{requisites:{ein:t,companyCode:n,street:r,city:o,postalCode:a,country:i,phone:s}}=e;return(0,u.tZ)("div",{className:"text-xs text-secondary-100 w-full sm:w-max whitespace-pre"},(0,u.tZ)("p",null,`${t}${n?",":""} ${n}`),(0,u.tZ)("p",{className:"inline sm:block"},`${r}`),(0,u.tZ)("p",null,`${o}, ${a}, ${i}`),(0,u.tZ)("p",{className:"hidden md:block"}," "),(0,u.tZ)("a",{className:"block",href:`tel:${s.split(" ").join("")}`,title:`call ${s}`},s),(0,u.tZ)("div",{className:"flex flex-wrap justify-around md:justify-start shrink pt-8 gap-x-5 w-full sm:w-auto",itemScope:!0,itemType:"https://schema.org/ContactPoint",itemProp:"contactPoint"},(0,u.tZ)(y,{invert:!0,size:20})))};var w=e=>{let{policies:{privacy:t,cookie:n}}=e;return(0,u.tZ)("p",{className:"mt-3 flex flex-col items-start w-full text-secondary-100 text-xs justify-center sm:justify-start"},(0,u.tZ)(o.rU,{to:t.link,title:t.title,className:"text-center hover:brightness-75 -ml-2 px-2 py-1.5"},t.title),(0,u.tZ)(o.rU,{to:n.link,title:n.title,className:"text-center hover:brightness-75 -ml-2 px-2 py-1.5"},n.title))};var x=e=>{let{links:t,className:n}=e;return(0,u.tZ)("nav",{className:`w-full ${n}`},(0,u.tZ)("ul",{className:"w-full flex items-center sm:gap-x-10 lg:gap-x-12 justify-between sm:justify-start"},Object.entries(t).map(((e,t)=>{let[n,r]=e;return(0,u.tZ)("li",{key:`mainLinks-${t}`,className:"w-max"},(0,u.tZ)(o.rU,{to:`/${n.toLowerCase().split(" ").join("-")}`,"aria-label":`CodeCave ${r.toLowerCase()}`,className:"text-sm sm:text-lg font-bold text-secondary-100 hover:brightness-75"},r.toUpperCase()))}))))},S=n(7462),k=n(7536),E=n(2305),Z=n(1213),C=n(2359),P=n(7356),_=n(2531),O=n(3072),R=n(1178);var T=e=>{var t,n;let{markup:o,validationMarkup:a}=e;const{0:i,1:s}=(0,r.useState)(!1),{register:l,handleSubmit:c,reset:d,formState:{errors:p,isValid:f}}=(0,k.cI)({mode:"onBlur",resolver:(0,E.X)(Z.H)});return(0,u.tZ)("form",{onSubmit:c((async e=>{s(!0);const t=(0,P.e)("hubspotutk"),n=(0,O.AY)(e,t);try{200===(await C.l.post("/0e8123a1-58ac-4be1-90d8-b7193a9fc124",n)).status&&d()}catch(a){var r,o;console.log("request err>>",null===(r=a.response)||void 0===r||null===(o=r.data)||void 0===o?void 0:o.message)}s(!1)})),className:"text-secondary-100 flex flex-col gap-y-5"},(0,u.tZ)("p",{className:"text-2xl font-light w-full max-w-72 whitespace-normal"},o.title),(0,u.tZ)("div",{className:"flex gap-5 items-center w-full lg:w-max flex-col lg:flex-row"},(0,u.tZ)("div",{className:"flex flex-col gap-3 w-full lg:w-80"},(0,u.tZ)(R.HN,(0,S.Z)({id:"firstname",label:o.name,variant:"outlined",error:!(null===(t=p.firstname)||void 0===t||!t.message),helperText:(0,O.OZ)("firstname",p,a),"aria-label":"firstname",fullWidth:!0,size:"small"},l("firstname"))),(0,u.tZ)(R.HN,(0,S.Z)({id:"email",label:o.email,variant:"outlined",error:!(null===(n=p.email)||void 0===n||!n.message),helperText:(0,O.OZ)("email",p,a),"aria-label":"email",fullWidth:!0,size:"small"},l("email")))),(0,u.tZ)("button",{type:"submit",disabled:!f||i,className:"bg-main-70 px-8 md:px-3 lg:px-8 rounded-lg text-sm font-bold tracking-wide h-12 whitespace-nowrap relative hover:brightness-75"},i?(0,u.tZ)(_.Z,null):null,(0,u.tZ)("span",{className:"z-20"},o.buttonLabel.toUpperCase()))))};var A=e=>{let{links:t,markup:n,validationMarkup:r,className:o}=e;return(0,u.tZ)("div",{className:`flex flex-col gap-y-8 md:gap-y-5 ${o}`},(0,u.tZ)(x,{links:t}),(0,u.tZ)("div",{className:"h-full flex items-end"},(0,u.tZ)(T,{markup:n,validationMarkup:r})))};var j=e=>{let{markup:t,validationMarkup:n}=e;const{contactsLabel:r,links:o,requisites:a,policies:s}=t;return(0,u.tZ)("footer",{className:"bg-main-100 border-t-2 border-secondary-70 border-solid"},(0,u.tZ)(i.Z,{maxWidthClass:"max-w-[1280px]",className:"flex-col flex-col-reverse md:flex-row !lg:px-12 py-10 gap-x-24 gap-y-8 md:justify-between lg:justify-start"},(0,u.tZ)("div",{className:"flex flex-col gap-4 md:gap-5 w-full sm:w-auto"},(0,u.tZ)("span",{className:"text-sm sm:text-lg font-bold text-secondary-100"},r.toUpperCase()),(0,u.tZ)(b,{requisites:a}),(0,u.tZ)(w,{policies:s})),(0,u.tZ)(A,{links:o,markup:t.getPortfolioForm,validationMarkup:n,className:"flex"})))},F=n(9165),N=n(1121);var $=()=>{const e=(0,r.useRef)(!0),{0:t,1:n}=(0,r.useState)(!1),o=()=>{const e=window.innerHeight{if(window&&e.current)return e.current=!1,window.addEventListener("scroll",o),()=>window.removeEventListener("scroll",o)}),[]);return(0,u.tZ)(r.Fragment,null,t?(0,u.tZ)("button",{"aria-label":"scroll up",className:"fixed left-[2%] bottom-[5%] z-20 bg-secondary-10 h-14 w-14 rounded-full flex items-center justify-center opacity-50",onClick:()=>{window&&window.scrollTo({top:0,behavior:"smooth"})}},(0,u.tZ)(N.s,{size:"25px"})):null)};var M=e=>{let{gtagId:t}=e;return(0,u.tZ)(r.Fragment,null,(0,u.tZ)(o.Xf,{strategy:"idle"},'\n console.log("hs widget");\n setTimeout(function() {\n if (!!window?.HubSpotConversations?.widget \n && !window?.HubSpotConversations?.widget?.status()?.loaded) {\n console.log("widget loading");\n window.HubSpotConversations.widget.load();\n }\n }, 50000);\n '),(0,u.tZ)(o.Xf,{strategy:"off-main-thread",forward:["dataLayer.push"]},"\n console.log(\"gtag config\");\n window.dataLayer = window.dataLayer || [];\n window.gtag = function gtag() {\n dataLayer.push(arguments);\n }\n gtag('consent', 'default', {\n 'ad_storage': 'denied',\n 'ad_user_data': 'denied',\n 'ad_personalization': 'denied',\n 'analytics_storage': 'denied'\n });"),(0,u.tZ)(o.Xf,{src:`https://www.googletagmanager.com/gtag/js?id=${t}`,strategy:"off-main-thread",forward:["dataLayer.push"]}),(0,u.tZ)(o.Xf,{strategy:"off-main-thread",forward:["gtag"],dangerouslySetInnerHTML:{__html:`\n console.log("gtag enabling");\n window.dataLayer = window.dataLayer || [];\n window.gtag = function gtag() {\n dataLayer.push(arguments);\n }\n gtag('js', new Date());\n\n gtag('config', '${t}', {\n "anonymize_ip":false\n });`}}),(0,u.tZ)(o.Xf,{strategy:"off-main-thread",forward:["gtag"],dangerouslySetInnerHTML:{__html:"\n console.log(\"hs consent\");\n var _hsp = (window._hsp = window._hsp || []);\n _hsp.push([\"addPrivacyConsentListener\", function (consent) {\n if (consent?.categories?.analytics) {\n console.log(\"hs analytics consent +\");\n window.clarity('consent');\n\n gtag('consent', 'update', {\n 'analytics_storage': 'granted'\n });\n\n } else {\n console.log(\"hs analytics consent -\");\n window.clarity('consent', false); \n\n gtag('consent', 'update', {\n 'analytics_storage': 'denied'\n });\n \n }\n\n if (consent?.categories?.advertisement) {\n console.log(\"hs analytics advertisement +\");\n gtag('consent', 'update', {\n 'ad_storage': 'granted',\n 'ad_user_data': 'granted',\n 'ad_personalization': 'granted'\n });\n } else {\n console.log(\"hs analytics advertisement -\");\n gtag('consent', 'update', {\n 'ad_storage': 'denied',\n 'ad_user_data': 'denied',\n 'ad_personalization': 'denied'\n });\n \n }\n }]);"}}))};var D=e=>{var t,n,a,i,s,l;let{path:c,children:d,pageContext:{lang:p}}=e;const h=(0,o.K2)(L),m=null==h||null===(t=h.allMarkdownRemark)||void 0===t||null===(n=t.nodes)||void 0===n||null===(a=n.find((e=>e.fields.language===p)))||void 0===a?void 0:a.frontmatter,g=null!==(i=null==m?void 0:m.layout)&&void 0!==i?i:{discussProject:"CONTACT US",links:{services:"Services",workflow:"Workflow",projects:"Projects",blog:"Blog"},contactsLabel:"CONTACTS",requisites:{ein:"EIN: 35-2654711",companyCode:"Company Code: 7296176",street:"8 The Green STE B",city:"Dover",postalCode:"DE 19901-3618",country:"United States",phone:"+1 302 364 0193"},homePageLinkLabel:"CodeCave home page",getPortfolioForm:{title:"Leave your contact to get our portfolio",name:"Name",email:"Email*",buttonLabel:"get portfolio"},policies:{privacy:{title:"Privacy Policy",link:"https://www.codecave.it/privacy-policy"},cookie:{title:"Cookie Policy",link:"https://www.codecave.it/cookie-policy"}}},v=null==m?void 0:m.validation,y=null==h||null===(s=h.site)||void 0===s||null===(l=s.siteMetadata)||void 0===l?void 0:l.analyticsId;return(0,u.tZ)(r.Fragment,null,(0,u.tZ)(M,{gtagId:y}),(0,u.tZ)("main",{className:"h-full min-h-screen bg-secondary-100 flex flex-col",itemScope:!0,itemType:"https://schema.org/LocalBusiness"},(0,u.tZ)(F.Di,{lang:p}),(0,u.tZ)(f,{path:c,layoutMarkup:g}),d,(0,u.tZ)(j,{lang:p,markup:g,validationMarkup:v}),(0,u.tZ)($,null)))};const L="637289409"},2359:function(e,t,n){"use strict";n.d(t,{l:function(){return mt}});var r={};function o(e,t){return function(){return e.apply(t,arguments)}}n.r(r),n.d(r,{hasBrowserEnv:function(){return se},hasStandardBrowserEnv:function(){return le},hasStandardBrowserWebWorkerEnv:function(){return ce},origin:function(){return de}});const{toString:a}=Object.prototype,{getPrototypeOf:i}=Object,s=(l=Object.create(null),e=>{const t=a.call(e);return l[t]||(l[t]=t.slice(8,-1).toLowerCase())});var l;const u=e=>(e=e.toLowerCase(),t=>s(t)===e),c=e=>t=>typeof t===e,{isArray:d}=Array,p=c("undefined");const f=u("ArrayBuffer");const h=c("string"),m=c("function"),g=c("number"),v=e=>null!==e&&"object"==typeof e,y=e=>{if("object"!==s(e))return!1;const t=i(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},b=u("Date"),w=u("File"),x=u("Blob"),S=u("FileList"),k=u("URLSearchParams"),[E,Z,C,P]=["ReadableStream","Request","Response","Headers"].map(u);function _(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),d(e))for(r=0,o=e.length;r0;)if(r=n[o],t===r.toLowerCase())return r;return null}const R="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,T=e=>!p(e)&&e!==R;const A=(j="undefined"!=typeof Uint8Array&&i(Uint8Array),e=>j&&e instanceof j);var j;const F=u("HTMLFormElement"),N=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),$=u("RegExp"),M=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};_(n,((n,o)=>{let a;!1!==(a=t(n,o,e))&&(r[o]=a||n)})),Object.defineProperties(e,r)},D="abcdefghijklmnopqrstuvwxyz",L="0123456789",I={DIGIT:L,ALPHA:D,ALPHA_DIGIT:D+D.toUpperCase()+L};const B=u("AsyncFunction");var z={isArray:d,isArrayBuffer:f,isBuffer:function(e){return null!==e&&!p(e)&&null!==e.constructor&&!p(e.constructor)&&m(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||m(e.append)&&("formdata"===(t=s(e))||"object"===t&&m(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&f(e.buffer),t},isString:h,isNumber:g,isBoolean:e=>!0===e||!1===e,isObject:v,isPlainObject:y,isReadableStream:E,isRequest:Z,isResponse:C,isHeaders:P,isUndefined:p,isDate:b,isFile:w,isBlob:x,isRegExp:$,isFunction:m,isStream:e=>v(e)&&m(e.pipe),isURLSearchParams:k,isTypedArray:A,isFileList:S,forEach:_,merge:function e(){const{caseless:t}=T(this)&&this||{},n={},r=(r,o)=>{const a=t&&O(n,o)||o;y(n[a])&&y(r)?n[a]=e(n[a],r):y(r)?n[a]=e({},r):d(r)?n[a]=r.slice():n[a]=r};for(let o=0,a=arguments.length;o(_(t,((t,r)=>{n&&m(t)?e[r]=o(t,n):e[r]=t}),{allOwnKeys:r}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,r)=>{let o,a,s;const l={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),a=o.length;a-- >0;)s=o[a],r&&!r(s,e,t)||l[s]||(t[s]=e[s],l[s]=!0);e=!1!==n&&i(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:s,kindOfTest:u,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(d(e))return e;let t=e.length;if(!g(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:F,hasOwnProperty:N,hasOwnProp:N,reduceDescriptors:M,freezeMethods:e=>{M(e,((t,n)=>{if(m(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];m(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return d(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:O,global:R,isContextDefined:T,ALPHABET:I,generateString:(e=16,t=I.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&m(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(v(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=d(e)?[]:{};return _(e,((e,t)=>{const a=n(e,r+1);!p(a)&&(o[t]=a)})),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:B,isThenable:e=>e&&(v(e)||m(e))&&m(e.then)&&m(e.catch)};function U(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}z.inherits(U,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:z.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const W=U.prototype,V={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{V[e]={value:e}})),Object.defineProperties(U,V),Object.defineProperty(W,"isAxiosError",{value:!0}),U.from=(e,t,n,r,o,a)=>{const i=Object.create(W);return z.toFlatObject(e,i,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),U.call(i,e.message,t,n,r,o),i.cause=e,i.name=e.name,a&&Object.assign(i,a),i};var q=U;function H(e){return z.isPlainObject(e)||z.isArray(e)}function K(e){return z.endsWith(e,"[]")?e.slice(0,-2):e}function J(e,t,n){return e?e.concat(t).map((function(e,t){return e=K(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const G=z.toFlatObject(z,{},null,(function(e){return/^is[A-Z]/.test(e)}));var X=function(e,t,n){if(!z.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=z.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!z.isUndefined(t[e])}))).metaTokens,o=n.visitor||u,a=n.dots,i=n.indexes,s=(n.Blob||"undefined"!=typeof Blob&&Blob)&&z.isSpecCompliantForm(t);if(!z.isFunction(o))throw new TypeError("visitor must be a function");function l(e){if(null===e)return"";if(z.isDate(e))return e.toISOString();if(!s&&z.isBlob(e))throw new q("Blob is not supported. Use a Buffer instead.");return z.isArrayBuffer(e)||z.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function u(e,n,o){let s=e;if(e&&!o&&"object"==typeof e)if(z.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(z.isArray(e)&&function(e){return z.isArray(e)&&!e.some(H)}(e)||(z.isFileList(e)||z.endsWith(n,"[]"))&&(s=z.toArray(e)))return n=K(n),s.forEach((function(e,r){!z.isUndefined(e)&&null!==e&&t.append(!0===i?J([n],r,a):null===i?n:n+"[]",l(e))})),!1;return!!H(e)||(t.append(J(o,n,a),l(e)),!1)}const c=[],d=Object.assign(G,{defaultVisitor:u,convertValue:l,isVisitable:H});if(!z.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!z.isUndefined(n)){if(-1!==c.indexOf(n))throw Error("Circular reference detected in "+r.join("."));c.push(n),z.forEach(n,(function(n,a){!0===(!(z.isUndefined(n)||null===n)&&o.call(t,n,z.isString(a)?a.trim():a,r,d))&&e(n,r?r.concat(a):[a])})),c.pop()}}(e),t};function Q(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Y(e,t){this._pairs=[],e&&X(e,this,t)}const ee=Y.prototype;ee.append=function(e,t){this._pairs.push([e,t])},ee.toString=function(e){const t=e?function(t){return e.call(this,t,Q)}:Q;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var te=Y;function ne(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function re(e,t,n){if(!t)return e;const r=n&&n.encode||ne,o=n&&n.serialize;let a;if(a=o?o(t,n):z.isURLSearchParams(t)?t.toString():new te(t,n).toString(r),a){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+a}return e}var oe=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){z.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},ae={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ie={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:te,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const se="undefined"!=typeof window&&"undefined"!=typeof document,le=(ue="undefined"!=typeof navigator&&navigator.product,se&&["ReactNative","NativeScript","NS"].indexOf(ue)<0);var ue;const ce="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,de=se&&window.location.href||"http://localhost";var pe={...r,...ie};var fe=function(e){function t(e,n,r,o){let a=e[o++];if("__proto__"===a)return!0;const i=Number.isFinite(+a),s=o>=e.length;if(a=!a&&z.isArray(r)?r.length:a,s)return z.hasOwnProp(r,a)?r[a]=[r[a],n]:r[a]=n,!i;r[a]&&z.isObject(r[a])||(r[a]=[]);return t(e,n,r[a],o)&&z.isArray(r[a])&&(r[a]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let a;for(r=0;r{t(function(e){return z.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null};const he={transitional:ae,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=z.isObject(e);o&&z.isHTMLForm(e)&&(e=new FormData(e));if(z.isFormData(e))return r?JSON.stringify(fe(e)):e;if(z.isArrayBuffer(e)||z.isBuffer(e)||z.isStream(e)||z.isFile(e)||z.isBlob(e)||z.isReadableStream(e))return e;if(z.isArrayBufferView(e))return e.buffer;if(z.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let a;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return X(e,new pe.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return pe.isNode&&z.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((a=z.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return X(a?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(z.isString(e))try{return(t||JSON.parse)(e),z.trim(e)}catch(r){if("SyntaxError"!==r.name)throw r}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||he.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(z.isResponse(e)||z.isReadableStream(e))return e;if(e&&z.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(o){if(n){if("SyntaxError"===o.name)throw q.from(o,q.ERR_BAD_RESPONSE,this,null,this.response);throw o}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:pe.classes.FormData,Blob:pe.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};z.forEach(["delete","get","head","post","put","patch"],(e=>{he.headers[e]={}}));var me=he;const ge=z.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const ve=Symbol("internals");function ye(e){return e&&String(e).trim().toLowerCase()}function be(e){return!1===e||null==e?e:z.isArray(e)?e.map(be):String(e)}function we(e,t,n,r,o){return z.isFunction(r)?r.call(this,t,n):(o&&(t=n),z.isString(t)?z.isString(r)?-1!==t.indexOf(r):z.isRegExp(r)?r.test(t):void 0:void 0)}class xe{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=ye(t);if(!o)throw new Error("header name must be a non-empty string");const a=z.findKey(r,o);(!a||void 0===r[a]||!0===n||void 0===n&&!1!==r[a])&&(r[a||t]=be(e))}const a=(e,t)=>z.forEach(e,((e,n)=>o(e,n,t)));if(z.isPlainObject(e)||e instanceof this.constructor)a(e,t);else if(z.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))a((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&ge[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t);else if(z.isHeaders(e))for(const[i,s]of e.entries())o(s,i,n);else null!=e&&o(t,e,n);return this}get(e,t){if(e=ye(e)){const n=z.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(z.isFunction(t))return t.call(this,e,n);if(z.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=ye(e)){const n=z.findKey(this,e);return!(!n||void 0===this[n]||t&&!we(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=ye(e)){const o=z.findKey(n,e);!o||t&&!we(0,n[o],o,t)||(delete n[o],r=!0)}}return z.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!we(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return z.forEach(this,((r,o)=>{const a=z.findKey(n,o);if(a)return t[a]=be(r),void delete t[o];const i=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(o):String(o).trim();i!==o&&delete t[o],t[i]=be(r),n[i]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return z.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&z.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[ve]=this[ve]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=ye(e);t[r]||(!function(e,t){const n=z.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}(n,e),t[r]=!0)}return z.isArray(e)?e.forEach(r):r(e),this}}xe.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),z.reduceDescriptors(xe.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),z.freezeMethods(xe);var Se=xe;function ke(e,t){const n=this||me,r=t||n,o=Se.from(r.headers);let a=r.data;return z.forEach(e,(function(e){a=e.call(n,a,o.normalize(),t?t.status:void 0)})),o.normalize(),a}function Ee(e){return!(!e||!e.__CANCEL__)}function Ze(e,t,n){q.call(this,null==e?"canceled":e,q.ERR_CANCELED,t,n),this.name="CanceledError"}z.inherits(Ze,q,{__CANCEL__:!0});var Ce=Ze;function Pe(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new q("Request failed with status code "+n.status,[q.ERR_BAD_REQUEST,q.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}var _e=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,a=0,i=0;return t=void 0!==t?t:1e3,function(s){const l=Date.now(),u=r[i];o||(o=l),n[a]=s,r[a]=l;let c=i,d=0;for(;c!==a;)d+=n[c++],c%=e;if(a=(a+1)%e,a===i&&(i=(i+1)%e),l-or)return o&&(clearTimeout(o),o=null),n=a,e.apply(null,arguments);o||(o=setTimeout((()=>(o=null,n=Date.now(),e.apply(null,arguments))),r-(a-n)))}},Re=(e,t,n=3)=>{let r=0;const o=_e(50,250);return Oe((n=>{const a=n.loaded,i=n.lengthComputable?n.total:void 0,s=a-r,l=o(s);r=a;const u={loaded:a,total:i,progress:i?a/i:void 0,bytes:s,rate:l||void 0,estimated:l&&i&&a<=i?(i-a)/l:void 0,event:n,lengthComputable:null!=i};u[t?"download":"upload"]=!0,e(u)}),n)},Te=pe.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=z.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0},Ae=pe.hasStandardBrowserEnv?{write(e,t,n,r,o,a){const i=[e+"="+encodeURIComponent(t)];z.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),z.isString(r)&&i.push("path="+r),z.isString(o)&&i.push("domain="+o),!0===a&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function je(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Fe=e=>e instanceof Se?{...e}:e;function Ne(e,t){t=t||{};const n={};function r(e,t,n){return z.isPlainObject(e)&&z.isPlainObject(t)?z.merge.call({caseless:n},e,t):z.isPlainObject(t)?z.merge({},t):z.isArray(t)?t.slice():t}function o(e,t,n){return z.isUndefined(t)?z.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function a(e,t){if(!z.isUndefined(t))return r(void 0,t)}function i(e,t){return z.isUndefined(t)?z.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function s(n,o,a){return a in t?r(n,o):a in e?r(void 0,n):void 0}const l={url:a,method:a,data:a,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:s,headers:(e,t)=>o(Fe(e),Fe(t),!0)};return z.forEach(Object.keys(Object.assign({},e,t)),(function(r){const a=l[r]||o,i=a(e[r],t[r],r);z.isUndefined(i)&&a!==s||(n[r]=i)})),n}var $e=e=>{const t=Ne({},e);let n,{data:r,withXSRFToken:o,xsrfHeaderName:a,xsrfCookieName:i,headers:s,auth:l}=t;if(t.headers=s=Se.from(s),t.url=re(je(t.baseURL,t.url),e.params,e.paramsSerializer),l&&s.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),z.isFormData(r))if(pe.hasStandardBrowserEnv||pe.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(!1!==(n=s.getContentType())){const[e,...t]=n?n.split(";").map((e=>e.trim())).filter(Boolean):[];s.setContentType([e||"multipart/form-data",...t].join("; "))}if(pe.hasStandardBrowserEnv&&(o&&z.isFunction(o)&&(o=o(t)),o||!1!==o&&Te(t.url))){const e=a&&i&&Ae.read(i);e&&s.set(a,e)}return t};var Me="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){const r=$e(e);let o=r.data;const a=Se.from(r.headers).normalize();let i,{responseType:s}=r;function l(){r.cancelToken&&r.cancelToken.unsubscribe(i),r.signal&&r.signal.removeEventListener("abort",i)}let u=new XMLHttpRequest;function c(){if(!u)return;const r=Se.from("getAllResponseHeaders"in u&&u.getAllResponseHeaders());Pe((function(e){t(e),l()}),(function(e){n(e),l()}),{data:s&&"text"!==s&&"json"!==s?u.response:u.responseText,status:u.status,statusText:u.statusText,headers:r,config:e,request:u}),u=null}u.open(r.method.toUpperCase(),r.url,!0),u.timeout=r.timeout,"onloadend"in u?u.onloadend=c:u.onreadystatechange=function(){u&&4===u.readyState&&(0!==u.status||u.responseURL&&0===u.responseURL.indexOf("file:"))&&setTimeout(c)},u.onabort=function(){u&&(n(new q("Request aborted",q.ECONNABORTED,r,u)),u=null)},u.onerror=function(){n(new q("Network Error",q.ERR_NETWORK,r,u)),u=null},u.ontimeout=function(){let e=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const t=r.transitional||ae;r.timeoutErrorMessage&&(e=r.timeoutErrorMessage),n(new q(e,t.clarifyTimeoutError?q.ETIMEDOUT:q.ECONNABORTED,r,u)),u=null},void 0===o&&a.setContentType(null),"setRequestHeader"in u&&z.forEach(a.toJSON(),(function(e,t){u.setRequestHeader(t,e)})),z.isUndefined(r.withCredentials)||(u.withCredentials=!!r.withCredentials),s&&"json"!==s&&(u.responseType=r.responseType),"function"==typeof r.onDownloadProgress&&u.addEventListener("progress",Re(r.onDownloadProgress,!0)),"function"==typeof r.onUploadProgress&&u.upload&&u.upload.addEventListener("progress",Re(r.onUploadProgress)),(r.cancelToken||r.signal)&&(i=t=>{u&&(n(!t||t.type?new Ce(null,e,u):t),u.abort(),u=null)},r.cancelToken&&r.cancelToken.subscribe(i),r.signal&&(r.signal.aborted?i():r.signal.addEventListener("abort",i)));const d=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(r.url);d&&-1===pe.protocols.indexOf(d)?n(new q("Unsupported protocol "+d+":",q.ERR_BAD_REQUEST,e)):u.send(o||null)}))};var De=(e,t)=>{let n,r=new AbortController;const o=function(e){if(!n){n=!0,i();const t=e instanceof Error?e:this.reason;r.abort(t instanceof q?t:new Ce(t instanceof Error?t.message:t))}};let a=t&&setTimeout((()=>{o(new q(`timeout ${t} of ms exceeded`,q.ETIMEDOUT))}),t);const i=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach((e=>{e&&(e.removeEventListener?e.removeEventListener("abort",o):e.unsubscribe(o))})),e=null)};e.forEach((e=>e&&e.addEventListener&&e.addEventListener("abort",o)));const{signal:s}=r;return s.unsubscribe=i,[s,()=>{a&&clearTimeout(a),a=null}]};const Le=function*(e,t){let n=e.byteLength;if(!t||n{const a=async function*(e,t,n){for await(const r of e)yield*Le(ArrayBuffer.isView(r)?r:await n(String(r)),t)}(e,t,o);let i=0;return new ReadableStream({type:"bytes",async pull(e){const{done:t,value:o}=await a.next();if(t)return e.close(),void r();let s=o.byteLength;n&&n(i+=s),e.enqueue(new Uint8Array(o))},cancel(e){return r(e),a.return()}},{highWaterMark:2})},Be=(e,t)=>{const n=null!=e;return r=>setTimeout((()=>t({lengthComputable:n,total:e,loaded:r})))},ze="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,Ue=ze&&"function"==typeof ReadableStream,We=ze&&("function"==typeof TextEncoder?(Ve=new TextEncoder,e=>Ve.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Ve;const qe=Ue&&(()=>{let e=!1;const t=new Request(pe.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t})(),He=Ue&&!!(()=>{try{return z.isReadableStream(new Response("").body)}catch(e){}})(),Ke={stream:He&&(e=>e.body)};var Je;ze&&(Je=new Response,["text","arrayBuffer","blob","formData","stream"].forEach((e=>{!Ke[e]&&(Ke[e]=z.isFunction(Je[e])?t=>t[e]():(t,n)=>{throw new q(`Response type '${e}' is not supported`,q.ERR_NOT_SUPPORT,n)})})));const Ge=async(e,t)=>{const n=z.toFiniteNumber(e.getContentLength());return null==n?(async e=>null==e?0:z.isBlob(e)?e.size:z.isSpecCompliantForm(e)?(await new Request(e).arrayBuffer()).byteLength:z.isArrayBufferView(e)?e.byteLength:(z.isURLSearchParams(e)&&(e+=""),z.isString(e)?(await We(e)).byteLength:void 0))(t):n};const Xe={http:null,xhr:Me,fetch:ze&&(async e=>{let{url:t,method:n,data:r,signal:o,cancelToken:a,timeout:i,onDownloadProgress:s,onUploadProgress:l,responseType:u,headers:c,withCredentials:d="same-origin",fetchOptions:p}=$e(e);u=u?(u+"").toLowerCase():"text";let f,h,[m,g]=o||a||i?De([o,a],i):[];const v=()=>{!f&&setTimeout((()=>{m&&m.unsubscribe()})),f=!0};let y;try{if(l&&qe&&"get"!==n&&"head"!==n&&0!==(y=await Ge(c,r))){let e,n=new Request(t,{method:"POST",body:r,duplex:"half"});z.isFormData(r)&&(e=n.headers.get("content-type"))&&c.setContentType(e),n.body&&(r=Ie(n.body,65536,Be(y,Re(l)),null,We))}z.isString(d)||(d=d?"cors":"omit"),h=new Request(t,{...p,signal:m,method:n.toUpperCase(),headers:c.normalize().toJSON(),body:r,duplex:"half",withCredentials:d});let o=await fetch(h);const a=He&&("stream"===u||"response"===u);if(He&&(s||a)){const e={};["status","statusText","headers"].forEach((t=>{e[t]=o[t]}));const t=z.toFiniteNumber(o.headers.get("content-length"));o=new Response(Ie(o.body,65536,s&&Be(t,Re(s,!0)),a&&v,We),e)}u=u||"text";let i=await Ke[z.findKey(Ke,u)||"text"](o,e);return!a&&v(),g&&g(),await new Promise(((t,n)=>{Pe(t,n,{data:i,headers:Se.from(o.headers),status:o.status,statusText:o.statusText,config:e,request:h})}))}catch(b){if(v(),b&&"TypeError"===b.name&&/fetch/i.test(b.message))throw Object.assign(new q("Network Error",q.ERR_NETWORK,e,h),{cause:b.cause||b});throw q.from(b,b&&b.code,e,h)}})};z.forEach(Xe,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(n){}Object.defineProperty(e,"adapterName",{value:t})}}));const Qe=e=>`- ${e}`,Ye=e=>z.isFunction(e)||null===e||!1===e;var et=e=>{e=z.isArray(e)?e:[e];const{length:t}=e;let n,r;const o={};for(let a=0;a`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));let n=t?e.length>1?"since :\n"+e.map(Qe).join("\n"):" "+Qe(e[0]):"as no adapter specified";throw new q("There is no suitable adapter to dispatch the request "+n,"ERR_NOT_SUPPORT")}return r};function tt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ce(null,e)}function nt(e){tt(e),e.headers=Se.from(e.headers),e.data=ke.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return et(e.adapter||me.adapter)(e).then((function(t){return tt(e),t.data=ke.call(e,e.transformResponse,t),t.headers=Se.from(t.headers),t}),(function(t){return Ee(t)||(tt(e),t&&t.response&&(t.response.data=ke.call(e,e.transformResponse,t.response),t.response.headers=Se.from(t.response.headers))),Promise.reject(t)}))}const rt="1.7.2",ot={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{ot[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const at={};ot.transitional=function(e,t,n){function r(e,t){return"[Axios v1.7.2] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,a)=>{if(!1===e)throw new q(r(o," has been removed"+(t?" in "+t:"")),q.ERR_DEPRECATED);return t&&!at[o]&&(at[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,a)}};var it={assertOptions:function(e,t,n){if("object"!=typeof e)throw new q("options must be an object",q.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const a=r[o],i=t[a];if(i){const t=e[a],n=void 0===t||i(t,a,e);if(!0!==n)throw new q("option "+a+" must be "+n,q.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new q("Unknown option "+a,q.ERR_BAD_OPTION)}},validators:ot};const st=it.validators;class lt{constructor(e){this.defaults=e,this.interceptors={request:new oe,response:new oe}}async request(e,t){try{return await this._request(e,t)}catch(n){if(n instanceof Error){let e;Error.captureStackTrace?Error.captureStackTrace(e={}):e=new Error;const t=e.stack?e.stack.replace(/^.+\n/,""):"";try{n.stack?t&&!String(n.stack).endsWith(t.replace(/^.+\n.+\n/,""))&&(n.stack+="\n"+t):n.stack=t}catch(r){}}throw n}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Ne(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&it.assertOptions(n,{silentJSONParsing:st.transitional(st.boolean),forcedJSONParsing:st.transitional(st.boolean),clarifyTimeoutError:st.transitional(st.boolean)},!1),null!=r&&(z.isFunction(r)?t.paramsSerializer={serialize:r}:it.assertOptions(r,{encode:st.function,serialize:st.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let a=o&&z.merge(o.common,o[t.method]);o&&z.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=Se.concat(a,o);const i=[];let s=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,i.unshift(e.fulfilled,e.rejected))}));const l=[];let u;this.interceptors.response.forEach((function(e){l.push(e.fulfilled,e.rejected)}));let c,d=0;if(!s){const e=[nt.bind(this),void 0];for(e.unshift.apply(e,i),e.push.apply(e,l),c=e.length,u=Promise.resolve(t);d{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new Ce(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new ct((function(t){e=t})),cancel:e}}}var dt=ct;const pt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(pt).forEach((([e,t])=>{pt[t]=e}));var ft=pt;const ht=function e(t){const n=new ut(t),r=o(ut.prototype.request,n);return z.extend(r,ut.prototype,n,{allOwnKeys:!0}),z.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(Ne(t,n))},r}(me);ht.Axios=ut,ht.CanceledError=Ce,ht.CancelToken=dt,ht.isCancel=Ee,ht.VERSION=rt,ht.toFormData=X,ht.AxiosError=q,ht.Cancel=ht.CanceledError,ht.all=function(e){return Promise.all(e)},ht.spread=function(e){return function(t){return e.apply(null,t)}},ht.isAxiosError=function(e){return z.isObject(e)&&!0===e.isAxiosError},ht.mergeConfig=Ne,ht.AxiosHeaders=Se,ht.formToJSON=e=>fe(z.isHTMLForm(e)?new FormData(e):e),ht.getAdapter=et,ht.HttpStatusCode=ft,ht.default=ht;const mt=ht.create({baseURL:"https://api.hsforms.com/submissions/v3/integration/submit/21836033/",headers:{"Content-type":"application/json"}})},7356:function(e,t,n){"use strict";function r(e){var t=document.cookie.match("(^|;)\\s*"+e+"\\s*=\\s*([^;]+)");return t?t.pop():""}n.d(t,{e:function(){return r}})},1213:function(e,t,n){"use strict";n.d(t,{h:function(){return pe},H:function(){return de}});var r=n(5760),o=n(9885),a=n(4633),i=n.n(a);const s=Object.prototype.toString,l=Error.prototype.toString,u=RegExp.prototype.toString,c="undefined"!=typeof Symbol?Symbol.prototype.toString:()=>"",d=/^Symbol\((.*)\)(.*)$/;function p(e,t=!1){if(null==e||!0===e||!1===e)return""+e;const n=typeof e;if("number"===n)return function(e){return e!=+e?"NaN":0===e&&1/e<0?"-0":""+e}(e);if("string"===n)return t?`"${e}"`:e;if("function"===n)return"[Function "+(e.name||"anonymous")+"]";if("symbol"===n)return c.call(e).replace(d,"Symbol($1)");const r=s.call(e).slice(8,-1);return"Date"===r?isNaN(e.getTime())?""+e:e.toISOString(e):"Error"===r||e instanceof Error?"["+l.call(e)+"]":"RegExp"===r?u.call(e):null}function f(e,t){let n=p(e,t);return null!==n?n:JSON.stringify(e,(function(e,n){let r=p(this[e],t);return null!==r?r:n}),2)}function h(e){return null==e?[]:[].concat(e)}let m,g,v,y=/\$\{\s*(\w+)\s*\}/g;m=Symbol.toStringTag;class b{constructor(e,t,n,r){this.name=void 0,this.message=void 0,this.value=void 0,this.path=void 0,this.type=void 0,this.params=void 0,this.errors=void 0,this.inner=void 0,this[m]="Error",this.name="ValidationError",this.value=t,this.path=n,this.type=r,this.errors=[],this.inner=[],h(e).forEach((e=>{if(w.isError(e)){this.errors.push(...e.errors);const t=e.inner.length?e.inner:[e];this.inner.push(...t)}else this.errors.push(e)})),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0]}}g=Symbol.hasInstance,v=Symbol.toStringTag;class w extends Error{static formatError(e,t){const n=t.label||t.path||"this";return n!==t.path&&(t=Object.assign({},t,{path:n})),"string"==typeof e?e.replace(y,((e,n)=>f(t[n]))):"function"==typeof e?e(t):e}static isError(e){return e&&"ValidationError"===e.name}constructor(e,t,n,r,o){const a=new b(e,t,n,r);if(o)return a;super(),this.value=void 0,this.path=void 0,this.type=void 0,this.params=void 0,this.errors=[],this.inner=[],this[v]="Error",this.name=a.name,this.message=a.message,this.type=a.type,this.value=a.value,this.path=a.path,this.errors=a.errors,this.inner=a.inner,Error.captureStackTrace&&Error.captureStackTrace(this,w)}static[g](e){return b[Symbol.hasInstance](e)||super[Symbol.hasInstance](e)}}let x={default:"${path} is invalid",required:"${path} is a required field",defined:"${path} must be defined",notNull:"${path} cannot be null",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:e,type:t,value:n,originalValue:r})=>{const o=null!=r&&r!==n?` (cast from the value \`${f(r,!0)}\`).`:".";return"mixed"!==t?`${e} must be a \`${t}\` type, but the final value was: \`${f(n,!0)}\``+o:`${e} must match the configured type. The validated value was: \`${f(n,!0)}\``+o}},S={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",datetime:"${path} must be a valid ISO date-time",datetime_precision:"${path} must be a valid ISO date-time with a sub-second precision of exactly ${precision} digits",datetime_offset:'${path} must be a valid ISO date-time with UTC "Z" timezone',trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"},k={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"},E={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"},Z={isValue:"${path} field must be ${value}"},C={noUnknown:"${path} field has unspecified keys: ${unknown}"},P={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must have ${length} items"},_={notType:e=>{const{path:t,value:n,spec:r}=e,o=r.types.length;if(Array.isArray(n)){if(n.lengtho)return`${t} tuple value has too many items, expected a length of ${o} but got ${n.length} for value: \`${f(n,!0)}\``}return w.formatError(x.notType,e)}};Object.assign(Object.create(null),{mixed:x,string:S,number:k,date:E,object:C,array:P,boolean:Z,tuple:_});const O=e=>e&&e.__isYupSchema__;class R{static fromOptions(e,t){if(!t.then&&!t.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:n,then:r,otherwise:o}=t,a="function"==typeof n?n:(...e)=>e.every((e=>e===n));return new R(e,((e,t)=>{var n;let i=a(...e)?r:o;return null!=(n=null==i?void 0:i(t))?n:t}))}constructor(e,t){this.fn=void 0,this.refs=e,this.refs=e,this.fn=t}resolve(e,t){let n=this.refs.map((e=>e.getValue(null==t?void 0:t.value,null==t?void 0:t.parent,null==t?void 0:t.context))),r=this.fn(n,e,t);if(void 0===r||r===e)return e;if(!O(r))throw new TypeError("conditions must return a schema object");return r.resolve(t)}}const T="$",A=".";class j{constructor(e,t={}){if(this.key=void 0,this.isContext=void 0,this.isValue=void 0,this.isSibling=void 0,this.path=void 0,this.getter=void 0,this.map=void 0,"string"!=typeof e)throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),""===e)throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===T,this.isValue=this.key[0]===A,this.isSibling=!this.isContext&&!this.isValue;let n=this.isContext?T:this.isValue?A:"";this.path=this.key.slice(n.length),this.getter=this.path&&(0,r.getter)(this.path,!0),this.map=t.map}getValue(e,t,n){let r=this.isContext?n:this.isValue?e:t;return this.getter&&(r=this.getter(r||{})),this.map&&(r=this.map(r)),r}cast(e,t){return this.getValue(e,null==t?void 0:t.parent,null==t?void 0:t.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}}j.prototype.__isYupRef=!0;const F=e=>null==e;function N(e){function t({value:t,path:n="",options:r,originalValue:o,schema:a},i,s){const{name:l,test:u,params:c,message:d,skipAbsent:p}=e;let{parent:f,context:h,abortEarly:m=a.spec.abortEarly,disableStackTrace:g=a.spec.disableStackTrace}=r;function v(e){return j.isRef(e)?e.getValue(t,f,h):e}function y(e={}){const r=Object.assign({value:t,originalValue:o,label:a.spec.label,path:e.path||n,spec:a.spec,disableStackTrace:e.disableStackTrace||g},c,e.params);for(const t of Object.keys(r))r[t]=v(r[t]);const i=new w(w.formatError(e.message||d,r),t,r.path,e.type||l,r.disableStackTrace);return i.params=r,i}const b=m?i:s;let x={path:n,parent:f,type:l,from:r.from,createError:y,resolve:v,options:r,originalValue:o,schema:a};const S=e=>{w.isError(e)?b(e):e?s(null):b(y())},k=e=>{w.isError(e)?b(e):i(e)};if(p&&F(t))return S(!0);let E;try{var Z;if(E=u.call(x,t,x),"function"==typeof(null==(Z=E)?void 0:Z.then)){if(r.sync)throw new Error(`Validation test of type: "${x.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`);return Promise.resolve(E).then(S,k)}}catch(C){return void k(C)}S(E)}return t.OPTIONS=e,t}function $(e,t,n,o=n){let a,i,s;return t?((0,r.forEach)(t,((r,l,u)=>{let c=l?r.slice(1,r.length-1):r,d="tuple"===(e=e.resolve({context:o,parent:a,value:n})).type,p=u?parseInt(c,10):0;if(e.innerType||d){if(d&&!u)throw new Error(`Yup.reach cannot implicitly index into a tuple type. the path part "${s}" must contain an index to the tuple element, e.g. "${s}[0]"`);if(n&&p>=n.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${r}, in the path: ${t}. because there is no value at that index. `);a=n,n=n&&n[p],e=d?e.spec.types[p]:e.innerType}if(!u){if(!e.fields||!e.fields[c])throw new Error(`The schema does not contain the path: ${t}. (failed at: ${s} which is a type: "${e.type}")`);a=n,n=n&&n[c],e=e.fields[c]}i=c,s=l?"["+r+"]":"."+r})),{schema:e,parent:a,parentPath:i}):{parent:a,parentPath:t,schema:e}}class M extends Set{describe(){const e=[];for(const t of this.values())e.push(j.isRef(t)?t.describe():t);return e}resolveAll(e){let t=[];for(const n of this.values())t.push(e(n));return t}clone(){return new M(this.values())}merge(e,t){const n=this.clone();return e.forEach((e=>n.add(e))),t.forEach((e=>n.delete(e))),n}}function D(e,t=new Map){if(O(e)||!e||"object"!=typeof e)return e;if(t.has(e))return t.get(e);let n;if(e instanceof Date)n=new Date(e.getTime()),t.set(e,n);else if(e instanceof RegExp)n=new RegExp(e),t.set(e,n);else if(Array.isArray(e)){n=new Array(e.length),t.set(e,n);for(let r=0;r{this.typeError(x.notType)})),this.type=e.type,this._typeCheck=e.check,this.spec=Object.assign({strip:!1,strict:!1,abortEarly:!0,recursive:!0,disableStackTrace:!1,nullable:!1,optional:!0,coerce:!0},null==e?void 0:e.spec),this.withMutation((e=>{e.nonNullable()}))}get _type(){return this.type}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;const t=Object.create(Object.getPrototypeOf(this));return t.type=this.type,t._typeCheck=this._typeCheck,t._whitelist=this._whitelist.clone(),t._blacklist=this._blacklist.clone(),t.internalTests=Object.assign({},this.internalTests),t.exclusiveTests=Object.assign({},this.exclusiveTests),t.deps=[...this.deps],t.conditions=[...this.conditions],t.tests=[...this.tests],t.transforms=[...this.transforms],t.spec=D(Object.assign({},this.spec,e)),t}label(e){let t=this.clone();return t.spec.label=e,t}meta(...e){if(0===e.length)return this.spec.meta;let t=this.clone();return t.spec.meta=Object.assign(t.spec.meta||{},e[0]),t}withMutation(e){let t=this._mutate;this._mutate=!0;let n=e(this);return this._mutate=t,n}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&"mixed"!==this.type)throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let t=this,n=e.clone();const r=Object.assign({},t.spec,n.spec);return n.spec=r,n.internalTests=Object.assign({},t.internalTests,n.internalTests),n._whitelist=t._whitelist.merge(e._whitelist,e._blacklist),n._blacklist=t._blacklist.merge(e._blacklist,e._whitelist),n.tests=t.tests,n.exclusiveTests=t.exclusiveTests,n.withMutation((t=>{e.tests.forEach((e=>{t.test(e.OPTIONS)}))})),n.transforms=[...t.transforms,...n.transforms],n}isType(e){return null==e?!(!this.spec.nullable||null!==e)||!(!this.spec.optional||void 0!==e):this._typeCheck(e)}resolve(e){let t=this;if(t.conditions.length){let n=t.conditions;t=t.clone(),t.conditions=[],t=n.reduce(((t,n)=>n.resolve(t,e)),t),t=t.resolve(e)}return t}resolveOptions(e){var t,n,r,o;return Object.assign({},e,{from:e.from||[],strict:null!=(t=e.strict)?t:this.spec.strict,abortEarly:null!=(n=e.abortEarly)?n:this.spec.abortEarly,recursive:null!=(r=e.recursive)?r:this.spec.recursive,disableStackTrace:null!=(o=e.disableStackTrace)?o:this.spec.disableStackTrace})}cast(e,t={}){let n=this.resolve(Object.assign({value:e},t)),r="ignore-optionality"===t.assert,o=n._cast(e,t);if(!1!==t.assert&&!n.isType(o)){if(r&&F(o))return o;let a=f(e),i=f(o);throw new TypeError(`The value of ${t.path||"field"} could not be cast to a value that satisfies the schema type: "${n.type}". \n\nattempted value: ${a} \n`+(i!==a?`result of cast: ${i}`:""))}return o}_cast(e,t){let n=void 0===e?e:this.transforms.reduce(((t,n)=>n.call(this,t,e,this)),e);return void 0===n&&(n=this.getDefault(t)),n}_validate(e,t={},n,r){let{path:o,originalValue:a=e,strict:i=this.spec.strict}=t,s=e;i||(s=this._cast(s,Object.assign({assert:!1},t)));let l=[];for(let u of Object.values(this.internalTests))u&&l.push(u);this.runTests({path:o,value:s,originalValue:a,options:t,tests:l},n,(e=>{if(e.length)return r(e,s);this.runTests({path:o,value:s,originalValue:a,options:t,tests:this.tests},n,r)}))}runTests(e,t,n){let r=!1,{tests:o,value:a,originalValue:i,path:s,options:l}=e,u=e=>{r||(r=!0,t(e,a))},c=e=>{r||(r=!0,n(e,a))},d=o.length,p=[];if(!d)return c([]);let f={value:a,originalValue:i,path:s,options:l,schema:this};for(let h=0;hthis.resolve(u)._validate(l,u,t,n)}validate(e,t){var n;let r=this.resolve(Object.assign({},t,{value:e})),o=null!=(n=null==t?void 0:t.disableStackTrace)?n:r.spec.disableStackTrace;return new Promise(((n,a)=>r._validate(e,t,((e,t)=>{w.isError(e)&&(e.value=t),a(e)}),((e,t)=>{e.length?a(new w(e,t,void 0,void 0,o)):n(t)}))))}validateSync(e,t){var n;let r,o=this.resolve(Object.assign({},t,{value:e})),a=null!=(n=null==t?void 0:t.disableStackTrace)?n:o.spec.disableStackTrace;return o._validate(e,Object.assign({},t,{sync:!0}),((e,t)=>{throw w.isError(e)&&(e.value=t),e}),((t,n)=>{if(t.length)throw new w(t,e,void 0,void 0,a);r=n})),r}isValid(e,t){return this.validate(e,t).then((()=>!0),(e=>{if(w.isError(e))return!1;throw e}))}isValidSync(e,t){try{return this.validateSync(e,t),!0}catch(n){if(w.isError(n))return!1;throw n}}_getDefault(e){let t=this.spec.default;return null==t?t:"function"==typeof t?t.call(this,e):D(t)}getDefault(e){return this.resolve(e||{})._getDefault(e)}default(e){if(0===arguments.length)return this._getDefault();return this.clone({default:e})}strict(e=!0){return this.clone({strict:e})}nullability(e,t){const n=this.clone({nullable:e});return n.internalTests.nullable=N({message:t,name:"nullable",test(e){return null!==e||this.schema.spec.nullable}}),n}optionality(e,t){const n=this.clone({optional:e});return n.internalTests.optionality=N({message:t,name:"optionality",test(e){return void 0!==e||this.schema.spec.optional}}),n}optional(){return this.optionality(!0)}defined(e=x.defined){return this.optionality(!1,e)}nullable(){return this.nullability(!0)}nonNullable(e=x.notNull){return this.nullability(!1,e)}required(e=x.required){return this.clone().withMutation((t=>t.nonNullable(e).defined(e)))}notRequired(){return this.clone().withMutation((e=>e.nullable().optional()))}transform(e){let t=this.clone();return t.transforms.push(e),t}test(...e){let t;if(t=1===e.length?"function"==typeof e[0]?{test:e[0]}:e[0]:2===e.length?{name:e[0],test:e[1]}:{name:e[0],message:e[1],test:e[2]},void 0===t.message&&(t.message=x.default),"function"!=typeof t.test)throw new TypeError("`test` is a required parameters");let n=this.clone(),r=N(t),o=t.exclusive||t.name&&!0===n.exclusiveTests[t.name];if(t.exclusive&&!t.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return t.name&&(n.exclusiveTests[t.name]=!!t.exclusive),n.tests=n.tests.filter((e=>{if(e.OPTIONS.name===t.name){if(o)return!1;if(e.OPTIONS.test===r.OPTIONS.test)return!1}return!0})),n.tests.push(r),n}when(e,t){Array.isArray(e)||"string"==typeof e||(t=e,e=".");let n=this.clone(),r=h(e).map((e=>new j(e)));return r.forEach((e=>{e.isSibling&&n.deps.push(e.key)})),n.conditions.push("function"==typeof t?new R(r,t):R.fromOptions(r,t)),n}typeError(e){let t=this.clone();return t.internalTests.typeError=N({message:e,name:"typeError",skipAbsent:!0,test(e){return!!this.schema._typeCheck(e)||this.createError({params:{type:this.schema.type}})}}),t}oneOf(e,t=x.oneOf){let n=this.clone();return e.forEach((e=>{n._whitelist.add(e),n._blacklist.delete(e)})),n.internalTests.whiteList=N({message:t,name:"oneOf",skipAbsent:!0,test(e){let t=this.schema._whitelist,n=t.resolveAll(this.resolve);return!!n.includes(e)||this.createError({params:{values:Array.from(t).join(", "),resolved:n}})}}),n}notOneOf(e,t=x.notOneOf){let n=this.clone();return e.forEach((e=>{n._blacklist.add(e),n._whitelist.delete(e)})),n.internalTests.blacklist=N({message:t,name:"notOneOf",test(e){let t=this.schema._blacklist,n=t.resolveAll(this.resolve);return!n.includes(e)||this.createError({params:{values:Array.from(t).join(", "),resolved:n}})}}),n}strip(e=!0){let t=this.clone();return t.spec.strip=e,t}describe(e){const t=(e?this.resolve(e):this).clone(),{label:n,meta:r,optional:o,nullable:a}=t.spec;return{meta:r,label:n,optional:o,nullable:a,default:t.getDefault(e),type:t.type,oneOf:t._whitelist.describe(),notOneOf:t._blacklist.describe(),tests:t.tests.map((e=>({name:e.OPTIONS.name,params:e.OPTIONS.params}))).filter(((e,t,n)=>n.findIndex((t=>t.name===e.name))===t))}}}L.prototype.__isYupSchema__=!0;for(const fe of["validate","validateSync"])L.prototype[`${fe}At`]=function(e,t,n={}){const{parent:r,parentPath:o,schema:a}=$(this,e,t,n.context);return a[fe](r&&r[o],Object.assign({},n,{parent:r,path:e}))};for(const fe of["equals","is"])L.prototype[fe]=L.prototype.oneOf;for(const fe of["not","nope"])L.prototype[fe]=L.prototype.notOneOf;function I(){return new B}class B extends L{constructor(){super({type:"boolean",check(e){return e instanceof Boolean&&(e=e.valueOf()),"boolean"==typeof e}}),this.withMutation((()=>{this.transform(((e,t,n)=>{if(n.spec.coerce&&!n.isType(e)){if(/^(true|1)$/i.test(String(e)))return!0;if(/^(false|0)$/i.test(String(e)))return!1}return e}))}))}isTrue(e=Z.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"true"},test(e){return F(e)||!0===e}})}isFalse(e=Z.isValue){return this.test({message:e,name:"is-value",exclusive:!0,params:{value:"false"},test(e){return F(e)||!1===e}})}default(e){return super.default(e)}defined(e){return super.defined(e)}optional(){return super.optional()}required(e){return super.required(e)}notRequired(){return super.notRequired()}nullable(){return super.nullable()}nonNullable(e){return super.nonNullable(e)}strip(e){return super.strip(e)}}I.prototype=B.prototype;const z=/^(\d{4}|[+-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,.](\d{1,}))?)?(?:(Z)|([+-])(\d{2})(?::?(\d{2}))?)?)?$/;function U(e){var t,n;const r=z.exec(e);return r?{year:W(r[1]),month:W(r[2],1)-1,day:W(r[3],1),hour:W(r[4]),minute:W(r[5]),second:W(r[6]),millisecond:r[7]?W(r[7].substring(0,3)):0,precision:null!=(t=null==(n=r[7])?void 0:n.length)?t:void 0,z:r[8]||void 0,plusMinus:r[9]||void 0,hourOffset:W(r[10]),minuteOffset:W(r[11])}:null}function W(e,t=0){return Number(e)||t}let V=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,q=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,H=/^(?:[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,K=new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"),J=e=>F(e)||e===e.trim(),G={}.toString();function X(){return new Q}class Q extends L{constructor(){super({type:"string",check(e){return e instanceof String&&(e=e.valueOf()),"string"==typeof e}}),this.withMutation((()=>{this.transform(((e,t,n)=>{if(!n.spec.coerce||n.isType(e))return e;if(Array.isArray(e))return e;const r=null!=e&&e.toString?e.toString():e;return r===G?e:r}))}))}required(e){return super.required(e).withMutation((t=>t.test({message:e||x.required,name:"required",skipAbsent:!0,test:e=>!!e.length})))}notRequired(){return super.notRequired().withMutation((e=>(e.tests=e.tests.filter((e=>"required"!==e.OPTIONS.name)),e)))}length(e,t=S.length){return this.test({message:t,name:"length",exclusive:!0,params:{length:e},skipAbsent:!0,test(t){return t.length===this.resolve(e)}})}min(e,t=S.min){return this.test({message:t,name:"min",exclusive:!0,params:{min:e},skipAbsent:!0,test(t){return t.length>=this.resolve(e)}})}max(e,t=S.max){return this.test({name:"max",exclusive:!0,message:t,params:{max:e},skipAbsent:!0,test(t){return t.length<=this.resolve(e)}})}matches(e,t){let n,r,o=!1;return t&&("object"==typeof t?({excludeEmptyString:o=!1,message:n,name:r}=t):n=t),this.test({name:r||"matches",message:n||S.matches,params:{regex:e},skipAbsent:!0,test:t=>""===t&&o||-1!==t.search(e)})}email(e=S.email){return this.matches(V,{name:"email",message:e,excludeEmptyString:!0})}url(e=S.url){return this.matches(q,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=S.uuid){return this.matches(H,{name:"uuid",message:e,excludeEmptyString:!1})}datetime(e){let t,n,r="";return e&&("object"==typeof e?({message:r="",allowOffset:t=!1,precision:n}=e):r=e),this.matches(K,{name:"datetime",message:r||S.datetime,excludeEmptyString:!0}).test({name:"datetime_offset",message:r||S.datetime_offset,params:{allowOffset:t},skipAbsent:!0,test:e=>{if(!e||t)return!0;const n=U(e);return!!n&&!!n.z}}).test({name:"datetime_precision",message:r||S.datetime_precision,params:{precision:n},skipAbsent:!0,test:e=>{if(!e||null==n)return!0;const t=U(e);return!!t&&t.precision===n}})}ensure(){return this.default("").transform((e=>null===e?"":e))}trim(e=S.trim){return this.transform((e=>null!=e?e.trim():e)).test({message:e,name:"trim",test:J})}lowercase(e=S.lowercase){return this.transform((e=>F(e)?e:e.toLowerCase())).test({message:e,name:"string_case",exclusive:!0,skipAbsent:!0,test:e=>F(e)||e===e.toLowerCase()})}uppercase(e=S.uppercase){return this.transform((e=>F(e)?e:e.toUpperCase())).test({message:e,name:"string_case",exclusive:!0,skipAbsent:!0,test:e=>F(e)||e===e.toUpperCase()})}}X.prototype=Q.prototype;let Y=new Date("");function ee(){return new te}class te extends L{constructor(){super({type:"date",check(e){return t=e,"[object Date]"===Object.prototype.toString.call(t)&&!isNaN(e.getTime());var t}}),this.withMutation((()=>{this.transform(((e,t,n)=>!n.spec.coerce||n.isType(e)||null===e?e:(e=function(e){const t=U(e);if(!t)return Date.parse?Date.parse(e):Number.NaN;if(void 0===t.z&&void 0===t.plusMinus)return new Date(t.year,t.month,t.day,t.hour,t.minute,t.second,t.millisecond).valueOf();let n=0;return"Z"!==t.z&&void 0!==t.plusMinus&&(n=60*t.hourOffset+t.minuteOffset,"+"===t.plusMinus&&(n=0-n)),Date.UTC(t.year,t.month,t.day,t.hour,t.minute+n,t.second,t.millisecond)}(e),isNaN(e)?te.INVALID_DATE:new Date(e))))}))}prepareParam(e,t){let n;if(j.isRef(e))n=e;else{let r=this.cast(e);if(!this._typeCheck(r))throw new TypeError(`\`${t}\` must be a Date or a value that can be \`cast()\` to a Date`);n=r}return n}min(e,t=E.min){let n=this.prepareParam(e,"min");return this.test({message:t,name:"min",exclusive:!0,params:{min:e},skipAbsent:!0,test(e){return e>=this.resolve(n)}})}max(e,t=E.max){let n=this.prepareParam(e,"max");return this.test({message:t,name:"max",exclusive:!0,params:{max:e},skipAbsent:!0,test(e){return e<=this.resolve(n)}})}}function ne(e,t){let n=1/0;return e.some(((e,r)=>{var o;if(null!=(o=t.path)&&o.includes(e))return n=r,!0})),n}function re(e){return(t,n)=>ne(e,t)-ne(e,n)}te.INVALID_DATE=Y,ee.prototype=te.prototype,ee.INVALID_DATE=Y;const oe=(e,t,n)=>{if("string"!=typeof e)return e;let r=e;try{r=JSON.parse(e)}catch(o){}return n.isType(r)?r:e};function ae(e){if("fields"in e){const t={};for(const[n,r]of Object.entries(e.fields))t[n]=ae(r);return e.setFields(t)}if("array"===e.type){const t=e.optional();return t.innerType&&(t.innerType=ae(t.innerType)),t}return"tuple"===e.type?e.optional().clone({types:e.spec.types.map(ae)}):"optional"in e?e.optional():e}let ie=e=>"[object Object]"===Object.prototype.toString.call(e);const se=re([]);function le(e){return new ue(e)}class ue extends L{constructor(e){super({type:"object",check(e){return ie(e)||"function"==typeof e}}),this.fields=Object.create(null),this._sortErrors=se,this._nodes=[],this._excludedEdges=[],this.withMutation((()=>{e&&this.shape(e)}))}_cast(e,t={}){var n;let r=super._cast(e,t);if(void 0===r)return this.getDefault(t);if(!this._typeCheck(r))return r;let o=this.fields,a=null!=(n=t.stripUnknown)?n:this.spec.noUnknown,i=[].concat(this._nodes,Object.keys(r).filter((e=>!this._nodes.includes(e)))),s={},l=Object.assign({},t,{parent:s,__validating:t.__validating||!1}),u=!1;for(const c of i){let e=o[c],n=c in r;if(e){let n,o=r[c];l.path=(t.path?`${t.path}.`:"")+c,e=e.resolve({value:o,context:t.context,parent:s});let a=e instanceof L?e.spec:void 0,i=null==a?void 0:a.strict;if(null!=a&&a.strip){u=u||c in r;continue}n=t.__validating&&i?r[c]:e.cast(r[c],l),void 0!==n&&(s[c]=n)}else n&&!a&&(s[c]=r[c]);n===c in s&&s[c]===r[c]||(u=!0)}return u?s:r}_validate(e,t={},n,r){let{from:o=[],originalValue:a=e,recursive:i=this.spec.recursive}=t;t.from=[{schema:this,value:a},...o],t.__validating=!0,t.originalValue=a,super._validate(e,t,n,((e,o)=>{if(!i||!ie(o))return void r(e,o);a=a||o;let s=[];for(let n of this._nodes){let e=this.fields[n];e&&!j.isRef(e)&&s.push(e.asNestedTest({options:t,key:n,parent:o,parentPath:t.path,originalParent:a}))}this.runTests({tests:s,value:o,originalValue:a,options:t},n,(t=>{r(t.sort(this._sortErrors).concat(e),o)}))}))}clone(e){const t=super.clone(e);return t.fields=Object.assign({},this.fields),t._nodes=this._nodes,t._excludedEdges=this._excludedEdges,t._sortErrors=this._sortErrors,t}concat(e){let t=super.concat(e),n=t.fields;for(let[r,o]of Object.entries(this.fields)){const e=n[r];n[r]=void 0===e?o:e}return t.withMutation((t=>t.setFields(n,[...this._excludedEdges,...e._excludedEdges])))}_getDefault(e){if("default"in this.spec)return super._getDefault(e);if(!this._nodes.length)return;let t={};return this._nodes.forEach((n=>{var r;const o=this.fields[n];let a=e;null!=(r=a)&&r.value&&(a=Object.assign({},a,{parent:a.value,value:a.value[n]})),t[n]=o&&"getDefault"in o?o.getDefault(a):void 0})),t}setFields(e,t){let n=this.clone();return n.fields=e,n._nodes=function(e,t=[]){let n=[],o=new Set,a=new Set(t.map((([e,t])=>`${e}-${t}`)));function s(e,t){let i=(0,r.split)(e)[0];o.add(i),a.has(`${t}-${i}`)||n.push([t,i])}for(const r of Object.keys(e)){let t=e[r];o.add(r),j.isRef(t)&&t.isSibling?s(t.path,r):O(t)&&"deps"in t&&t.deps.forEach((e=>s(e,r)))}return i().array(Array.from(o),n).reverse()}(e,t),n._sortErrors=re(Object.keys(e)),t&&(n._excludedEdges=t),n}shape(e,t=[]){return this.clone().withMutation((n=>{let r=n._excludedEdges;return t.length&&(Array.isArray(t[0])||(t=[t]),r=[...n._excludedEdges,...t]),n.setFields(Object.assign(n.fields,e),r)}))}partial(){const e={};for(const[t,n]of Object.entries(this.fields))e[t]="optional"in n&&n.optional instanceof Function?n.optional():n;return this.setFields(e)}deepPartial(){return ae(this)}pick(e){const t={};for(const n of e)this.fields[n]&&(t[n]=this.fields[n]);return this.setFields(t,this._excludedEdges.filter((([t,n])=>e.includes(t)&&e.includes(n))))}omit(e){const t=[];for(const n of Object.keys(this.fields))e.includes(n)||t.push(n);return this.pick(t)}from(e,t,n){let o=(0,r.getter)(e,!0);return this.transform((a=>{if(!a)return a;let i=a;return((e,t)=>{const n=[...(0,r.normalizePath)(t)];if(1===n.length)return n[0]in e;let o=n.pop(),a=(0,r.getter)((0,r.join)(n),!0)(e);return!(!a||!(o in a))})(a,e)&&(i=Object.assign({},a),n||delete i[e],i[t]=o(a)),i}))}json(){return this.transform(oe)}noUnknown(e=!0,t=C.noUnknown){"boolean"!=typeof e&&(t=e,e=!0);let n=this.test({name:"noUnknown",exclusive:!0,message:t,test(t){if(null==t)return!0;const n=function(e,t){let n=Object.keys(e.fields);return Object.keys(t).filter((e=>-1===n.indexOf(e)))}(this.schema,t);return!e||0===n.length||this.createError({params:{unknown:n.join(", ")}})}});return n.spec.noUnknown=e,n}unknown(e=!0,t=C.noUnknown){return this.noUnknown(!e,t)}transformKeys(e){return this.transform((t=>{if(!t)return t;const n={};for(const r of Object.keys(t))n[e(r)]=t[r];return n}))}camelCase(){return this.transformKeys(o.camelCase)}snakeCase(){return this.transformKeys(o.snakeCase)}constantCase(){return this.transformKeys((e=>(0,o.snakeCase)(e).toUpperCase()))}describe(e){const t=(e?this.resolve(e):this).clone(),n=super.describe(e);n.fields={};for(const[o,a]of Object.entries(t.fields)){var r;let t=e;null!=(r=t)&&r.value&&(t=Object.assign({},t,{parent:t.value,value:t.value[o]})),n.fields[o]=a.describe(t)}return n}}le.prototype=ue.prototype;var ce=n(2518);const de=le({email:X().min(1,ce.CW.required).email(ce.CW.email).required(ce.CW.required),firstname:X().nullable()}).required(),pe=le({email:X().min(1,ce.CW.required).email(ce.CW.email).required(ce.CW.required),company:X().nullable(),firstname:X().nullable(),describe_your_project:X().nullable(),consentToProcess:I().oneOf([!0],ce.CW.consent).required(ce.CW.required)}).required()},3072:function(e,t,n){"use strict";n.d(t,{AY:function(){return o},OZ:function(){return i},WU:function(){return a}});var r=n(2518);const o=(e,t)=>({fields:Object.entries(e).map((e=>{let[t,n]=e;return{objectTypeId:"0-1",name:t,value:n}})),context:{hutk:t},legalConsentOptions:{consent:{consentToProcess:!0,text:"I agree to allow Example Company to store and process my personal data."}}}),a=(e,t)=>({fields:Object.entries(e).filter((e=>{let[t,n]=e;return"consentToProcess"!==t})).map((e=>{let[t,n]=e;return{objectTypeId:"0-1",name:t,value:n}})),context:{hutk:t},legalConsentOptions:{consent:{consentToProcess:e.consentToProcess,text:"I agree to allow Example Company to store and process my personal data."}}});function i(e,t,n){var o,a;return null!==(o=t[e])&&void 0!==o&&o.message&&Object.values(r.CW).includes(t[e].message)?null==n?void 0:n[null===(a=t[e])||void 0===a?void 0:a.message]:null}},2518:function(e,t,n){"use strict";n.d(t,{CW:function(){return r},D9:function(){return a},U5:function(){return o}});let r=function(e){return e.email="invalidEmail",e.required="required",e.consent="consent",e}({}),o=function(e){return e.web_dev="web_dev",e.mobile_dev="mobile_dev",e.qa="qa",e.devops="devops",e.ui_ux="ui_ux",e.ba="ba",e.add_ins="add_ins",e.vr_ar="vr_ar",e.support="support",e.consulting="consulting",e}({}),a=function(e){return e._1500_2500="_1500_2500",e._2500_5000="_2500_5000",e._5000_10000="_5000_10000",e._10000_="_10000_",e.not_decided="not_decided",e}({})},8679:function(e,t,n){"use strict";var r=n(9864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=f(n);o&&o!==h&&e(t,o,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var s=l(t),m=l(n),g=0;g=t||n<0||g&&e-h>=c}function w(){var e=o();if(b(e))return x(e);p=setTimeout(w,function(e){var n=t-(e-f);return g?s(n,c-(e-h)):n}(e))}function x(e){return p=void 0,v&&l?y(e):(l=u=void 0,d)}function S(){var e=o(),n=b(e);if(l=arguments,u=this,f=e,n){if(void 0===p)return function(e){return h=e,p=setTimeout(w,t),m?y(e):d}(f);if(g)return clearTimeout(p),p=setTimeout(w,t),y(f)}return void 0===p&&(p=setTimeout(w,t)),d}return t=a(t)||0,r(n)&&(m=!!n.leading,c=(g="maxWait"in n)?i(a(n.maxWait)||0,t):c,v="trailing"in n?!!n.trailing:v),S.cancel=function(){void 0!==p&&clearTimeout(p),h=0,l=f=u=p=void 0},S.flush=function(){return void 0===p?d:x(o())},S}},3218:function(e){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},7005:function(e){e.exports=function(e){return null!=e&&"object"==typeof e}},3448:function(e,t,n){var r=n(4239),o=n(7005);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},7771:function(e,t,n){var r=n(5639);e.exports=function(){return r.Date.now()}},4841:function(e,t,n){var r=n(7561),o=n(3218),a=n(3448),i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(a(e))return NaN;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=s.test(e);return n||l.test(e)?u(e.slice(2),n?2:8):i.test(e)?NaN:+e}},5760:function(e){"use strict";function t(e){this._maxSize=e,this.clear()}t.prototype.clear=function(){this._size=0,this._values=Object.create(null)},t.prototype.get=function(e){return this._values[e]},t.prototype.set=function(e,t){return this._size>=this._maxSize&&this.clear(),e in this._values||this._size++,this._values[e]=t};var n=/[^.^\]^[]+|(?=\[\]|\.\.)/g,r=/^\d+$/,o=/^\d/,a=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,i=/^\s*(['"]?)(.*?)(\1)\s*$/,s=new t(512),l=new t(512),u=new t(512);function c(e){return s.get(e)||s.set(e,d(e).map((function(e){return e.replace(i,"$2")})))}function d(e){return e.match(n)||[""]}function p(e){return"string"==typeof e&&e&&-1!==["'",'"'].indexOf(e.charAt(0))}function f(e){return!p(e)&&(function(e){return e.match(o)&&!e.match(r)}(e)||function(e){return a.test(e)}(e))}e.exports={Cache:t,split:d,normalizePath:c,setter:function(e){var t=c(e);return l.get(e)||l.set(e,(function(e,n){for(var r=0,o=t.length,a=e;re.match(t)||[],r=e=>e[0].toUpperCase()+e.slice(1),o=(e,t)=>n(e).join(t).toLowerCase(),a=e=>n(e).reduce(((e,t)=>`${e}${e?t[0].toUpperCase()+t.slice(1).toLowerCase():t.toLowerCase()}`),"");e.exports={words:n,upperFirst:r,camelCase:a,pascalCase:e=>r(a(e)),snakeCase:e=>o(e,"_"),kebabCase:e=>o(e,"-"),sentenceCase:e=>r(o(e," ")),titleCase:e=>n(e).map(r).join(" ")}},4633:function(e){function t(e,t){var n=e.length,r=new Array(n),o={},a=n,i=function(e){for(var t=new Map,n=0,r=e.length;n=0)continue;n[r]=e[r]}return n},e.exports.__esModule=!0,e.exports.default=e.exports},6015:function(e){function t(n,r){return e.exports=t=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,t(n,r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},4987:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.SCRIPT_TYPE="text/partytown",t.partytownSnippet=e=>((e,t)=>{const{forward:n=[],...r}=e||{},o=JSON.stringify(r,((e,t)=>("function"==typeof t&&(t=String(t)).startsWith(e+"(")&&(t="function "+t),t)));return["!(function(w,p,f,c){",Object.keys(r).length>0?`c=w[p]=Object.assign(w[p]||{},${o});`:"c=w[p]=w[p]||{};","c[f]=(c[f]||[])",n.length>0?`.concat(${JSON.stringify(n)})`:"","})(window,'partytown','forward');",t].join("")})(e,'/* Partytown 0.7.6 - MIT builder.io */\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,"/"==(a=(o.lib||"/~partytown/")+(o.debug?"debug/":""))[0]&&(s=e.querySelectorAll(\'script[type="text/partytown"]\'),i!=t?i.dispatchEvent(new CustomEvent("pt1",{detail:t})):(d=setTimeout(f,1e4),e.addEventListener("pt0",w),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||"partytown-sw.js"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener("statechange",(function(t){"activated"==t.target.state&&h()}))}),console.error):f())))}function h(t){c=e.createElement(t?"script":"iframe"),t||(c.setAttribute("style","display:block;width:0;height:0;border:0;visibility:hidden"),c.setAttribute("aria-hidden",!0)),c.src=a+"partytown-"+(t?"atomics.js?v=0.7.6":"sandbox-sw.html?"+Date.now()),e.body.appendChild(c)}function f(n,r){for(w(),i==t&&(o.forward||[]).map((function(e){delete t[e.split(".")[0]]})),n=0;n=0)continue;n[r]=e[r]}return n}n.d(t,{Z:function(){return r}})},5785:function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}const u=e=>{const{search:t,hash:n,href:r,origin:o,protocol:a,host:i,hostname:s,port:l}=e.location;let{pathname:u}=e.location;return!u&&r&&p&&(u=new URL(r).pathname),{pathname:encodeURI(decodeURI(u)),search:t,hash:n,href:r,origin:o,protocol:a,host:i,hostname:s,port:l,state:e.history.state,key:e.history.state&&e.history.state.key||"initial"}},c=(e,t)=>{let n=[],r=u(e),o=!1,a=()=>{};return{get location(){return r},get transitioning(){return o},_onTransitionComplete(){o=!1,a()},listen(t){n.push(t);const o=()=>{r=u(e),t({location:r,action:"POP"})};return e.addEventListener("popstate",o),()=>{e.removeEventListener("popstate",o),n=n.filter((e=>e!==t))}},navigate(t,{state:i,replace:l=!1}={}){if("number"==typeof t)e.history.go(t);else{i=s({},i,{key:Date.now()+""});try{o||l?e.history.replaceState(i,null,t):e.history.pushState(i,null,t)}catch(n){e.location[l?"replace":"assign"](t)}}r=u(e),o=!0;const c=new Promise((e=>a=e));return n.forEach((e=>e({location:r,action:"PUSH"}))),c}}},d=(e="/")=>{const t=e.indexOf("?"),n={pathname:t>-1?e.substr(0,t):e,search:t>-1?e.substr(t):""};let r=0;const o=[n],a=[null];return{get location(){return o[r]},addEventListener(e,t){},removeEventListener(e,t){},history:{get entries(){return o},get index(){return r},get state(){return a[r]},pushState(e,t,n){const[i,s=""]=n.split("?");r++,o.push({pathname:i,search:s.length?`?${s}`:s}),a.push(e)},replaceState(e,t,n){const[i,s=""]=n.split("?");o[r]={pathname:i,search:s},a[r]=e},go(e){const t=r+e;t<0||t>a.length-1||(r=t)}}}},p=!("undefined"==typeof window||!window.document||!window.document.createElement),f=c(p?window:d()),{navigate:h}=f;function m(e,t){return o.createServerContext?((e,t=null)=>(globalThis.__SERVER_CONTEXT||(globalThis.__SERVER_CONTEXT={}),globalThis.__SERVER_CONTEXT[e]||(globalThis.__SERVER_CONTEXT[e]=o.createServerContext(e,t)),globalThis.__SERVER_CONTEXT[e]))(e,t):o.createContext(t)}const g=m("Base",{baseuri:"/",basepath:"/"}),v=m("Location"),y=()=>o.useContext(g),b=()=>o.useContext(v);function w(e){this.uri=e}const x=e=>e instanceof w,S=e=>{throw new w(e)};function k(e){const{to:t,replace:n=!0,state:r,noThrow:a,baseuri:i}=e;o.useEffect((()=>{Promise.resolve().then((()=>{const o=_(t,i);h(O(o,e),{replace:n,state:r})}))}),[]);const s=_(t,i);return a||S(O(s,e)),null}const E=e=>{const t=b(),{baseuri:n}=y();return o.createElement(k,s({},t,{baseuri:n},e))};E.propTypes={from:a.string,to:a.string.isRequired};const Z=(e,t)=>e.substr(0,t.length)===t,C=(e,t)=>{let n,r;const[o]=t.split("?"),a=$(o),s=""===a[0],l=N(e);for(let u=0,c=l.length;u dynamic segment "${r[1]}" is a reserved name. Please use a different name in path "${o.path}".`);const t=decodeURIComponent(n);d[r[1]]=t}else if(t!==n){e=!0;break}}if(!e){n={route:o,params:d,uri:"/"+a.slice(0,f).join("/")};break}}return n||r||null},P=(e,t)=>C([{path:e}],t),_=(e,t)=>{if(Z(e,"/"))return e;const[n,r]=e.split("?"),[o]=t.split("?"),a=$(n),i=$(o);if(""===a[0])return M(o,r);if(!Z(a[0],".")){const e=i.concat(a).join("/");return M(("/"===o?"":"/")+e,r)}const s=i.concat(a),l=[];for(let u=0,c=s.length;u{const[n,r=""]=e.split("?");let o="/"+$(n).map((e=>{const n=T.exec(e);return n?t[n[1]]:e})).join("/");const{location:{search:a=""}={}}=t,i=a.split("?")[1]||"";return o=M(o,r,i),o},R=(e,t)=>{const n=e=>A(e);return $(e).filter(n).sort().join("/")===$(t).filter(n).sort().join("/")},T=/^:(.+)/,A=e=>T.test(e),j=e=>e&&"*"===e[0],F=(e,t)=>({route:e,score:e.default?0:$(e.path).reduce(((e,t)=>(e+=4,(e=>""===e)(t)?e+=1:A(t)?e+=2:j(t)?e-=5:e+=3,e)),0),index:t}),N=e=>e.map(F).sort(((e,t)=>e.scoret.score?-1:e.index-t.index)),$=e=>e.replace(/(^\/+|\/+$)/g,"").split("/"),M=(e,...t)=>e+((t=t.filter((e=>e&&e.length>0)))&&t.length>0?`?${t.join("&")}`:""),D=["uri","path"],L=(e,t)=>{const n=Object.keys(e);return n.length===Object.keys(t).length&&n.every((n=>t.hasOwnProperty(n)&&e[n]===t[n]))},I=e=>e.replace(/(^\/+|\/+$)/g,""),B=e=>t=>{if(!t)return null;if(t.type===o.Fragment&&t.props.children)return o.Children.map(t.props.children,B(e));if(i(t.props.path||t.props.default||t.type===E,`: Children of must have a \`path\` or \`default\` prop, or be a \`\`. None found on element type \`${t.type}\``),i(!!(t.type!==E||t.props.from&&t.props.to),` requires both "from" and "to" props when inside a .`),i(!(t.type===E&&!R(t.props.from,t.props.to)),` has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.`),t.props.default)return{value:t,default:!0};const n=t.type===E?t.props.from:t.props.path,r="/"===n?e:`${I(e)}/${I(n)}`;return{value:t,default:t.props.default,path:t.props.children?`${I(r)}/*`:r}},z=["innerRef"],U=["to","state","replace","getProps"],W=["key"];let{forwardRef:V}=r||(r=n.t(o,2));void 0===V&&(V=e=>e);const q=()=>{},H=V(((e,t)=>{let{innerRef:n}=e,r=l(e,z);const{baseuri:a}=y(),{location:i}=b(),{to:u,state:c,replace:d,getProps:p=q}=r,f=l(r,U),m=_(u,a),g=encodeURI(m),v=i.pathname===g,w=Z(i.pathname,g);return o.createElement("a",s({ref:t||n,"aria-current":v?"page":void 0},f,p({isCurrent:v,isPartiallyCurrent:w,href:m,location:i}),{href:m,onClick:e=>{if(f.onClick&&f.onClick(e),(e=>!e.defaultPrevented&&0===e.button&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey))(e)){e.preventDefault();let t=d;if("boolean"!=typeof d&&v){const e=l(s({},i.state),W);t=L(s({},c),e)}h(m,{state:c,replace:t})}}}))}));H.displayName="Link",H.propTypes={to:a.string.isRequired};class K extends o.Component{constructor(...e){super(...e),this.displayName="ReactUseErrorBoundary"}componentDidCatch(...e){this.setState({}),this.props.onError(...e)}render(){return this.props.children}}const J=o.createContext({componentDidCatch:{current:void 0},error:void 0,setError:()=>!1});function G({children:e}){const[t,n]=o.useState(),r=o.useRef(),a=o.useMemo((()=>({componentDidCatch:r,error:t,setError:n})),[t]);return o.createElement(J.Provider,{value:a},o.createElement(K,{error:t,onError:(e,t)=>{n(e),null==r.current||r.current(e,t)}},e))}G.displayName="ReactUseErrorBoundaryContext";const X=function(e){var t,n;function r(t){return o.createElement(G,null,o.createElement(e,s({key:"WrappedComponent"},t)))}return r.displayName=`WithErrorBoundary(${null!=(t=null!=(n=e.displayName)?n:e.name)?t:"Component"})`,r}((({history:e=f,children:t})=>{const{location:n}=e,[r,a]=o.useState({location:n}),[i]=function(e){const t=o.useContext(J);t.componentDidCatch.current=void 0;const n=o.useCallback((()=>{t.setError(void 0)}),[]);return[t.error,n]}();if(o.useEffect((()=>{e._onTransitionComplete()}),[r.location]),o.useEffect((()=>{let t=!1;const n=e.listen((({location:e})=>{Promise.resolve().then((()=>{requestAnimationFrame((()=>{t||a({location:e})}))}))}));return()=>{t=!0,n()}}),[]),i){if(!x(i))throw i;h(i.uri,{replace:!0})}return o.createElement(v.Provider,{value:r},"function"==typeof t?t(r):t||null)})),Q=({children:e})=>{const t=b();return t?e(t):o.createElement(X,null,e)},Y=({url:e,children:t})=>{const n=e.indexOf("?");let r,a="";return n>-1?(r=e.substring(0,n),a=e.substring(n)):r=e,o.createElement(v.Provider,{value:{location:{pathname:r,search:a,hash:""}}},t)},ee=({path:e,children:t})=>{const{baseuri:n}=y(),{location:r}=b(),o=_(e,n),a=P(o,r.pathname);return t({location:r,match:a?s({},a.params,{uri:a.uri,path:e}):null})},te=["uri","location","component"],ne=["children","style","component","uri","location"],re=e=>{let{uri:t,location:n,component:r}=e,a=l(e,te);return o.createElement(ae,s({},a,{component:r,uri:t,location:n}))};let oe=0;const ae=e=>{let{children:t,style:n,component:r="div",uri:a,location:i}=e,u=l(e,ne);const c=o.useRef(),d=o.useRef(!0),p=o.useRef(a),f=o.useRef(i.pathname),h=o.useRef(!1);o.useEffect((()=>(oe++,m(),()=>{oe--,0===oe&&(d.current=!0)})),[]),o.useEffect((()=>{let e=!1,t=!1;a!==p.current&&(p.current=a,e=!0),i.pathname!==f.current&&(f.current=i.pathname,t=!0),h.current=e||t&&i.pathname===a,h.current&&m()}),[a,i]);const m=o.useCallback((()=>{var e;d.current?d.current=!1:(e=c.current,h.current&&e&&e.focus())}),[]);return o.createElement(r,s({style:s({outline:"none"},n),tabIndex:"-1",ref:c},u),t)},ie=["location","primary","children","basepath","baseuri","component"],se=e=>{const t=y(),n=b();return o.createElement(le,s({},t,n,e))};function le(e){const{location:t,primary:n=!0,children:r,basepath:a,component:i="div"}=e,u=l(e,ie),c=o.Children.toArray(r).reduce(((e,t)=>{const n=B(a)(t);return e.concat(n)}),[]),{pathname:d}=t,p=C(c,d);if(p){const{params:e,uri:r,route:l,route:{value:c}}=p,d=l.default?a:l.path.replace(/\*$/,""),f=s({},e,{uri:r,location:t}),h=o.cloneElement(c,f,c.props.children?o.createElement(se,{location:t,primary:n},c.props.children):void 0),m=n?re:i,v=n?s({uri:r,location:t,component:i},u):u;return o.createElement(g.Provider,{value:{baseuri:r,basepath:d}},o.createElement(m,v,h))}return null}const ue=()=>{const e=b();if(!e)throw new Error("useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");return e.location},ce=()=>{throw new Error("useNavigate is removed. Use import { navigate } from 'gatsby' instead")},de=()=>{const e=y();if(!e)throw new Error("useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");const t=ue(),n=P(e.basepath,t.pathname);return n?n.params:null},pe=e=>{if(!e)throw new Error("useMatch(path: string) requires an argument of a string to match against");const t=y();if(!t)throw new Error("useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");const n=ue(),r=_(e,t.baseuri),o=P(r,n.pathname);return o?s({},o.params,{uri:o.uri,path:e}):null}},2305:function(e,t,n){"use strict";n.d(t,{X:function(){return c}});var r=n(7536),o=function(e,t,n){if(e&&"reportValidity"in e){var o=(0,r.U2)(n,t);e.setCustomValidity(o&&o.message||""),e.reportValidity()}},a=function(e,t){var n=function(n){var r=t.fields[n];r&&r.ref&&"reportValidity"in r.ref?o(r.ref,n,e):r.refs&&r.refs.forEach((function(t){return o(t,n,e)}))};for(var r in t.fields)n(r)},i=function(e){return!function(e){return null==e}(e)&&!Array.isArray(e)&&function(e){return"object"==typeof e}(e)&&!function(e){return e instanceof Date}(e)},s=function(e,t,n){for(var r=-1,o=function(e){return/^\w*$/.test(e)}(t)?[t]:function(e){return t=e.replace(/["|']|\]/g,"").split(/\.|\[/),Array.isArray(t)?t.filter(Boolean):[];var t}(t),a=o.length,s=a-1;++r{if("string"==typeof e)return!(e=>u.test(e))(e)},d=()=>"",p=()=>"";function f(e,t=d()){var n;if(!c(e))return e;if(e.startsWith("./")||e.startsWith("../"))return e;const r=null!=(n=null!=t?t:p())?n:"/";return`${null!=r&&r.endsWith("/")?r.slice(0,-1):r}${e.startsWith("/")?e:`/${e}`}`}const h=e=>null==e?void 0:e.startsWith("/");function m(e,t){const{pathname:n,search:r,hash:o}=l(e);return`${(0,i.H)(n,t)}${r}${o}`}const g=(e,t)=>"number"==typeof e?e:c(e)?h(e)?function(e){const t=f(e),n="always";return m(t,n)}(e):function(e,t){if(h(e))return e;const n="always",r=(0,a.resolve)(e,t);return m(r,n)}(e,t):e,v=["to","getProps","onClick","onMouseEnter","activeClassName","activeStyle","innerRef","partiallyActive","state","replace","_location"];const y={activeClassName:r.string,activeStyle:r.object,partiallyActive:r.bool};function b(e){return o.createElement(a.Location,null,(({location:t})=>o.createElement(w,s({},e,{_location:t}))))}class w extends o.Component{constructor(e){super(e),this.defaultGetProps=({isPartiallyCurrent:e,isCurrent:t})=>(this.props.partiallyActive?e:t)?{className:[this.props.className,this.props.activeClassName].filter(Boolean).join(" "),style:s({},this.props.style,this.props.activeStyle)}:null;let t=!1;"undefined"!=typeof window&&window.IntersectionObserver&&(t=!0),this.state={IOSupported:t},this.abortPrefetch=null,this.handleRef=this.handleRef.bind(this)}_prefetch(){let e=window.location.pathname+window.location.search;this.props._location&&this.props._location.pathname&&(e=this.props._location.pathname+this.props._location.search);const t=l(g(this.props.to,e)),n=t.pathname+t.search;if(e!==n)return ___loader.enqueue(n)}componentWillUnmount(){if(!this.io)return;const{instance:e,el:t}=this.io;this.abortPrefetch&&this.abortPrefetch.abort(),e.unobserve(t),e.disconnect()}handleRef(e){this.props.innerRef&&Object.prototype.hasOwnProperty.call(this.props.innerRef,"current")?this.props.innerRef.current=e:this.props.innerRef&&this.props.innerRef(e),this.state.IOSupported&&e&&(this.io=((e,t)=>{const n=new window.IntersectionObserver((n=>{n.forEach((n=>{e===n.target&&t(n.isIntersecting||n.intersectionRatio>0)}))}));return n.observe(e),{instance:n,el:e}})(e,(e=>{e?this.abortPrefetch=this._prefetch():this.abortPrefetch&&this.abortPrefetch.abort()})))}render(){const e=this.props,{to:t,getProps:n=this.defaultGetProps,onClick:r,onMouseEnter:i,state:u,replace:d,_location:p}=e,f=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,v),h=g(t,p.pathname);return c(h)?o.createElement(a.Link,s({to:h,state:u,getProps:n,innerRef:this.handleRef,onMouseEnter:e=>{i&&i(e);const t=l(h);___loader.hovering(t.pathname+t.search)},onClick:e=>{if(r&&r(e),!(0!==e.button||this.props.target||e.defaultPrevented||e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)){e.preventDefault();let t=d;const n=encodeURI(h)===p.pathname;"boolean"!=typeof d&&n&&(t=!0),window.___navigate(h,{state:u,replace:t})}return!0}},f)):o.createElement("a",s({href:h},f))}}w.propTypes=s({},y,{onClick:r.func,to:r.string.isRequired,replace:r.bool,state:r.object});const x=o.forwardRef(((e,t)=>o.createElement(b,s({innerRef:t},e))))},3521:function(e,t,n){"use strict";n.r(t),n.d(t,{Script:function(){return h},ScriptStrategy:function(){return u},collectedScriptsByPage:function(){return s},scriptCache:function(){return p},scriptCallbackCache:function(){return f}});var r=n(7294),o=n(7896);function a(){return a=Object.assign?Object.assign.bind():function(e){for(var t=1;ti.get(e)||[],set(e,t){const n=i.get(e)||[];n.push(t),i.set(e,n)},delete(e){i.delete(e)}},l="undefined"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){const t=Date.now();return setTimeout((function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})}),1)};var u,c;(c=u||(u={})).postHydrate="post-hydrate",c.idle="idle",c.offMainThread="off-main-thread";const d=new Set(["src","strategy","dangerouslySetInnerHTML","children","onLoad","onError"]),p=new Set,f=new Map;function h(e){return r.createElement(o.Location,null,(()=>r.createElement(m,e)))}function m(e){const{src:t,strategy:n=u.postHydrate}=e||{},{pathname:i}=(0,o.useLocation)();if((0,r.useEffect)((()=>{let t;switch(n){case u.postHydrate:t=g(e);break;case u.idle:l((()=>{t=g(e)}));break;case u.offMainThread:{const t=y(e);s.set(i,t)}}return()=>{const{script:e,loadCallback:n,errorCallback:r}=t||{};n&&(null==e||e.removeEventListener("load",n)),r&&(null==e||e.removeEventListener("error",r)),null==e||e.remove()}}),[]),n===u.offMainThread){const o=v(e),l=y(e);return"undefined"==typeof window&&s.set(i,l),r.createElement("script",o?a({type:"text/partytown","data-strategy":n,crossOrigin:"anonymous"},l,{dangerouslySetInnerHTML:{__html:v(e)}}):a({type:"text/partytown",src:b(t),"data-strategy":n,crossOrigin:"anonymous"},l))}return null}function g(e){const{id:t,src:n,strategy:r=u.postHydrate,onLoad:o,onError:i}=e||{},s=t||n,l=["load","error"],c={load:o,error:i};if(s){for(const e of l)if(null!=c&&c[e]){var d;const t=f.get(s)||{},{callbacks:n=[]}=(null==t?void 0:t[e])||{};var h,m;n.push(null==c?void 0:c[e]),null!=t&&null!=(d=t[e])&&d.event?null==c||null==(h=c[e])||h.call(c,null==t||null==(m=t[e])?void 0:m.event):f.set(s,a({},t,{[e]:{callbacks:n}}))}if(p.has(s))return null}const g=v(e),b=y(e),x=document.createElement("script");t&&(x.id=t),x.dataset.strategy=r;for(const[a,u]of Object.entries(b))x.setAttribute(a,u);g&&(x.textContent=g),n&&(x.src=n);const S={};if(s){for(const e of l){const t=t=>w(t,s,e);x.addEventListener(e,t),S[`${e}Callback`]=t}p.add(s)}return document.body.appendChild(x),{script:x,loadCallback:S.loadCallback,errorCallback:S.errorCallback}}function v(e){const{dangerouslySetInnerHTML:t,children:n=""}=e||{},{__html:r=""}=t||{};return r||n}function y(e){const t={};for(const[n,r]of Object.entries(e))d.has(n)||(t[n]=r);return t}function b(e){if(e)return`/__third-party-proxy?url=${encodeURIComponent(e)}`}function w(e,t,n){const r=f.get(t)||{};for(const a of(null==r||null==(o=r[n])?void 0:o.callbacks)||[]){var o;a(e)}f.set(t,{[n]:{event:e}})}},7536:function(e,t,n){"use strict";n.d(t,{KN:function(){return z},Qr:function(){return B},U2:function(){return g},cI:function(){return _e}});var r=n(7294),o=e=>"checkbox"===e.type,a=e=>e instanceof Date,i=e=>null==e;const s=e=>"object"==typeof e;var l=e=>!i(e)&&!Array.isArray(e)&&s(e)&&!a(e),u=e=>l(e)&&e.target?o(e.target)?e.target.checked:e.target.value:e,c=(e,t)=>e.has((e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e)(t)),d=e=>{const t=e.constructor&&e.constructor.prototype;return l(t)&&t.hasOwnProperty("isPrototypeOf")},p="undefined"!=typeof window&&void 0!==window.HTMLElement&&"undefined"!=typeof document;function f(e){let t;const n=Array.isArray(e);if(e instanceof Date)t=new Date(e);else if(e instanceof Set)t=new Set(e);else{if(p&&(e instanceof Blob||e instanceof FileList)||!n&&!l(e))return e;if(t=n?[]:{},n||d(e))for(const n in e)e.hasOwnProperty(n)&&(t[n]=f(e[n]));else t=e}return t}var h=e=>Array.isArray(e)?e.filter(Boolean):[],m=e=>void 0===e,g=(e,t,n)=>{if(!t||!l(e))return n;const r=h(t.split(/[,[\].]+?/)).reduce(((e,t)=>i(e)?e:e[t]),e);return m(r)||r===e?m(e[t])?n:e[t]:r},v=e=>"boolean"==typeof e,y=e=>/^\w*$/.test(e),b=e=>h(e.replace(/["|']|\]/g,"").split(/\.|\[/)),w=(e,t,n)=>{let r=-1;const o=y(t)?[t]:b(t),a=o.length,i=a-1;for(;++rr.useContext(R);var A=(e,t,n,r=!0)=>{const o={defaultValues:t._defaultValues};for(const a in e)Object.defineProperty(o,a,{get:()=>{const o=a;return t._proxyFormState[o]!==S.all&&(t._proxyFormState[o]=!r||S.all),n&&(n[o]=!0),e[o]}});return o},j=e=>l(e)&&!Object.keys(e).length,F=(e,t,n,r)=>{n(e);const{name:o,...a}=e;return j(a)||Object.keys(a).length>=Object.keys(t).length||Object.keys(a).find((e=>t[e]===(!r||S.all)))},N=e=>Array.isArray(e)?e:[e],$=(e,t,n)=>!e||!t||e===t||N(e).some((e=>e&&(n?e===t:e.startsWith(t)||t.startsWith(e))));function M(e){const t=r.useRef(e);t.current=e,r.useEffect((()=>{const n=!e.disabled&&t.current.subject&&t.current.subject.subscribe({next:t.current.next});return()=>{n&&n.unsubscribe()}}),[e.disabled])}var D=e=>"string"==typeof e,L=(e,t,n,r,o)=>D(e)?(r&&t.watch.add(e),g(n,e,o)):Array.isArray(e)?e.map((e=>(r&&t.watch.add(e),g(n,e)))):(r&&(t.watchAll=!0),n);function I(e){const t=T(),{name:n,disabled:o,control:a=t.control,shouldUnregister:i}=e,s=c(a._names.array,n),l=function(e){const t=T(),{control:n=t.control,name:o,defaultValue:a,disabled:i,exact:s}=e||{},l=r.useRef(o);l.current=o,M({disabled:i,subject:n._subjects.values,next:e=>{$(l.current,e.name,s)&&c(f(L(l.current,n._names,e.values||n._formValues,!1,a)))}});const[u,c]=r.useState(n._getWatch(o,a));return r.useEffect((()=>n._removeUnmounted())),u}({control:a,name:n,defaultValue:g(a._formValues,n,g(a._defaultValues,n,e.defaultValue)),exact:!0}),d=function(e){const t=T(),{control:n=t.control,disabled:o,name:a,exact:i}=e||{},[s,l]=r.useState(n._formState),u=r.useRef(!0),c=r.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1}),d=r.useRef(a);return d.current=a,M({disabled:o,next:e=>u.current&&$(d.current,e.name,i)&&F(e,c.current,n._updateFormState)&&l({...n._formState,...e}),subject:n._subjects.state}),r.useEffect((()=>(u.current=!0,c.current.isValid&&n._updateValid(!0),()=>{u.current=!1})),[n]),A(s,n,c.current,!1)}({control:a,name:n}),p=r.useRef(a.register(n,{...e.rules,value:l,...v(e.disabled)?{disabled:e.disabled}:{}}));return r.useEffect((()=>{const e=a._options.shouldUnregister||i,t=(e,t)=>{const n=g(a._fields,e);n&&n._f&&(n._f.mount=t)};if(t(n,!0),e){const e=f(g(a._options.defaultValues,n));w(a._defaultValues,n,e),m(g(a._formValues,n))&&w(a._formValues,n,e)}return()=>{(s?e&&!a._state.action:e)?a.unregister(n):t(n,!1)}}),[n,a,s,i]),r.useEffect((()=>{g(a._fields,n)&&a._updateDisabledField({disabled:o,fields:a._fields,name:n,value:g(a._fields,n)._f.value})}),[o,n,a]),{field:{name:n,value:l,...v(o)||d.disabled?{disabled:d.disabled||o}:{},onChange:r.useCallback((e=>p.current.onChange({target:{value:u(e),name:n},type:x.CHANGE})),[n]),onBlur:r.useCallback((()=>p.current.onBlur({target:{value:g(a._formValues,n),name:n},type:x.BLUR})),[n,a]),ref:e=>{const t=g(a._fields,n);t&&e&&(t._f.ref={focus:()=>e.focus(),select:()=>e.select(),setCustomValidity:t=>e.setCustomValidity(t),reportValidity:()=>e.reportValidity()})}},formState:d,fieldState:Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!g(d.errors,n)},isDirty:{enumerable:!0,get:()=>!!g(d.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!g(d.touchedFields,n)},isValidating:{enumerable:!0,get:()=>!!g(d.validatingFields,n)},error:{enumerable:!0,get:()=>g(d.errors,n)}})}}const B=e=>e.render(I(e));var z=(e,t,n,r,o)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:o||!0}}:{},U=e=>({isOnSubmit:!e||e===S.onSubmit,isOnBlur:e===S.onBlur,isOnChange:e===S.onChange,isOnAll:e===S.all,isOnTouch:e===S.onTouched}),W=(e,t,n)=>!n&&(t.watchAll||t.watch.has(e)||[...t.watch].some((t=>e.startsWith(t)&&/^\.\w+/.test(e.slice(t.length)))));const V=(e,t,n,r)=>{for(const o of n||Object.keys(e)){const n=g(e,o);if(n){const{_f:e,...a}=n;if(e){if(e.refs&&e.refs[0]&&t(e.refs[0],o)&&!r)break;if(e.ref&&t(e.ref,e.name)&&!r)break;V(a,t)}else l(a)&&V(a,t)}}};var q=(e,t,n)=>{const r=h(g(e,n));return w(r,"root",t[n]),w(e,n,r),e},H=e=>"file"===e.type,K=e=>"function"==typeof e,J=e=>{if(!p)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},G=e=>D(e),X=e=>"radio"===e.type,Q=e=>e instanceof RegExp;const Y={value:!1,isValid:!1},ee={value:!0,isValid:!0};var te=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter((e=>e&&e.checked&&!e.disabled)).map((e=>e.value));return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!m(e[0].attributes.value)?m(e[0].value)||""===e[0].value?ee:{value:e[0].value,isValid:!0}:ee:Y}return Y};const ne={isValid:!1,value:null};var re=e=>Array.isArray(e)?e.reduce(((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e),ne):ne;function oe(e,t,n="validate"){if(G(e)||Array.isArray(e)&&e.every(G)||v(e)&&!e)return{type:n,message:G(e)?e:"",ref:t}}var ae=e=>l(e)&&!Q(e)?e:{value:e,message:""},ie=async(e,t,n,r,a)=>{const{ref:s,refs:u,required:c,maxLength:d,minLength:p,min:f,max:h,pattern:y,validate:b,name:w,valueAsNumber:x,mount:S,disabled:R}=e._f,T=g(t,w);if(!S||R)return{};const A=u?u[0]:s,F=e=>{r&&A.reportValidity&&(A.setCustomValidity(v(e)?"":e||""),A.reportValidity())},N={},$=X(s),M=o(s),L=$||M,I=(x||H(s))&&m(s.value)&&m(T)||J(s)&&""===s.value||""===T||Array.isArray(T)&&!T.length,B=z.bind(null,w,n,N),U=(e,t,n,r=Z,o=C)=>{const a=e?t:n;N[w]={type:e?r:o,message:a,ref:s,...B(e?r:o,a)}};if(a?!Array.isArray(T)||!T.length:c&&(!L&&(I||i(T))||v(T)&&!T||M&&!te(u).isValid||$&&!re(u).isValid)){const{value:e,message:t}=G(c)?{value:!!c,message:c}:ae(c);if(e&&(N[w]={type:_,message:t,ref:A,...B(_,t)},!n))return F(t),N}if(!(I||i(f)&&i(h))){let e,t;const r=ae(h),o=ae(f);if(i(T)||isNaN(T)){const n=s.valueAsDate||new Date(T),a=e=>new Date((new Date).toDateString()+" "+e),i="time"==s.type,l="week"==s.type;D(r.value)&&T&&(e=i?a(T)>a(r.value):l?T>r.value:n>new Date(r.value)),D(o.value)&&T&&(t=i?a(T)r.value),i(o.value)||(t=n+e.value,o=!i(t.value)&&T.length<+t.value;if((r||o)&&(U(r,e.message,t.message),!n))return F(N[w].message),N}if(y&&!I&&D(T)){const{value:e,message:t}=ae(y);if(Q(e)&&!T.match(e)&&(N[w]={type:P,message:t,ref:s,...B(P,t)},!n))return F(t),N}if(b)if(K(b)){const e=oe(await b(T,t),A);if(e&&(N[w]={...e,...B(O,e.message)},!n))return F(e.message),N}else if(l(b)){let e={};for(const r in b){if(!j(e)&&!n)break;const o=oe(await b[r](T,t),A,r);o&&(e={...o,...B(r,o.message)},F(o.message),n&&(N[w]=e))}if(!j(e)&&(N[w]={ref:A,...e},!n))return N}return F(!0),N};function se(e,t){const n=Array.isArray(t)?t:y(t)?[t]:b(t),r=1===n.length?e:function(e,t){const n=t.slice(0,-1).length;let r=0;for(;r{let e=[];return{get observers(){return e},next:t=>{for(const n of e)n.next&&n.next(t)},subscribe:t=>(e.push(t),{unsubscribe:()=>{e=e.filter((e=>e!==t))}}),unsubscribe:()=>{e=[]}}},ue=e=>i(e)||!s(e);function ce(e,t){if(ue(e)||ue(t))return e===t;if(a(e)&&a(t))return e.getTime()===t.getTime();const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(const o of n){const n=e[o];if(!r.includes(o))return!1;if("ref"!==o){const e=t[o];if(a(n)&&a(e)||l(n)&&l(e)||Array.isArray(n)&&Array.isArray(e)?!ce(n,e):n!==e)return!1}}return!0}var de=e=>"select-multiple"===e.type,pe=e=>X(e)||o(e),fe=e=>J(e)&&e.isConnected,he=e=>{for(const t in e)if(K(e[t]))return!0;return!1};function me(e,t={}){const n=Array.isArray(e);if(l(e)||n)for(const r in e)Array.isArray(e[r])||l(e[r])&&!he(e[r])?(t[r]=Array.isArray(e[r])?[]:{},me(e[r],t[r])):i(e[r])||(t[r]=!0);return t}function ge(e,t,n){const r=Array.isArray(e);if(l(e)||r)for(const o in e)Array.isArray(e[o])||l(e[o])&&!he(e[o])?m(t)||ue(n[o])?n[o]=Array.isArray(e[o])?me(e[o],[]):{...me(e[o])}:ge(e[o],i(t)?{}:t[o],n[o]):n[o]=!ce(e[o],t[o]);return n}var ve=(e,t)=>ge(e,t,me(t)),ye=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:r})=>m(e)?e:t?""===e?NaN:e?+e:e:n&&D(e)?new Date(e):r?r(e):e;function be(e){const t=e.ref;if(!(e.refs?e.refs.every((e=>e.disabled)):t.disabled))return H(t)?t.files:X(t)?re(e.refs).value:de(t)?[...t.selectedOptions].map((({value:e})=>e)):o(t)?te(e.refs).value:ye(m(t.value)?e.ref.value:t.value,e)}var we=(e,t,n,r)=>{const o={};for(const a of e){const e=g(t,a);e&&w(o,a,e._f)}return{criteriaMode:n,names:[...e],fields:o,shouldUseNativeValidation:r}},xe=e=>m(e)?e:Q(e)?e.source:l(e)?Q(e.value)?e.value.source:e.value:e,Se=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate);function ke(e,t,n){const r=g(e,n);if(r||y(n))return{error:r,name:n};const o=n.split(".");for(;o.length;){const r=o.join("."),a=g(t,r),i=g(e,r);if(a&&!Array.isArray(a)&&n!==r)return{name:n};if(i&&i.type)return{name:r,error:i};o.pop()}return{name:n}}var Ee=(e,t,n,r,o)=>!o.isOnAll&&(!n&&o.isOnTouch?!(t||e):(n?r.isOnBlur:o.isOnBlur)?!e:!(n?r.isOnChange:o.isOnChange)||e),Ze=(e,t)=>!h(g(e,t)).length&&se(e,t);const Ce={mode:S.onSubmit,reValidateMode:S.onChange,shouldFocusError:!0};function Pe(e={}){let t,n={...Ce,...e},r={submitCount:0,isDirty:!1,isLoading:K(n.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:n.errors||{},disabled:n.disabled||!1},s={},d=(l(n.defaultValues)||l(n.values))&&f(n.defaultValues||n.values)||{},y=n.shouldUnregister?{}:f(d),b={action:!1,mount:!1,watch:!1},k={mount:new Set,unMount:new Set,array:new Set,watch:new Set},E=0;const Z={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},C={values:le(),array:le(),state:le()},P=U(n.mode),_=U(n.reValidateMode),O=n.criteriaMode===S.all,R=async e=>{if(Z.isValid||e){const e=n.resolver?j((await M()).errors):await I(s,!0);e!==r.isValid&&C.state.next({isValid:e})}},T=(e,t)=>{(Z.isValidating||Z.validatingFields)&&((e||Array.from(k.mount)).forEach((e=>{e&&(t?w(r.validatingFields,e,t):se(r.validatingFields,e))})),C.state.next({validatingFields:r.validatingFields,isValidating:!j(r.validatingFields)}))},A=(e,t,n,r)=>{const o=g(s,e);if(o){const a=g(y,e,m(n)?g(d,e):n);m(a)||r&&r.defaultChecked||t?w(y,e,t?a:be(o._f)):G(e,a),b.mount&&R()}},F=(e,t,n,o,a)=>{let i=!1,l=!1;const u={name:e},c=!!(g(s,e)&&g(s,e)._f&&g(s,e)._f.disabled);if(!n||o){Z.isDirty&&(l=r.isDirty,r.isDirty=u.isDirty=B(),i=l!==u.isDirty);const n=c||ce(g(d,e),t);l=!(c||!g(r.dirtyFields,e)),n||c?se(r.dirtyFields,e):w(r.dirtyFields,e,!0),u.dirtyFields=r.dirtyFields,i=i||Z.dirtyFields&&l!==!n}if(n){const t=g(r.touchedFields,e);t||(w(r.touchedFields,e,n),u.touchedFields=r.touchedFields,i=i||Z.touchedFields&&t!==n)}return i&&a&&C.state.next(u),i?u:{}},$=(n,o,a,i)=>{const s=g(r.errors,n),l=Z.isValid&&v(o)&&r.isValid!==o;var u;if(e.delayError&&a?(u=()=>((e,t)=>{w(r.errors,e,t),C.state.next({errors:r.errors})})(n,a),t=e=>{clearTimeout(E),E=setTimeout(u,e)},t(e.delayError)):(clearTimeout(E),t=null,a?w(r.errors,n,a):se(r.errors,n)),(a?!ce(s,a):s)||!j(i)||l){const e={...i,...l&&v(o)?{isValid:o}:{},errors:r.errors,name:n};r={...r,...e},C.state.next(e)}},M=async e=>{T(e,!0);const t=await n.resolver(y,n.context,we(e||k.mount,s,n.criteriaMode,n.shouldUseNativeValidation));return T(e),t},I=async(e,t,o={valid:!0})=>{for(const a in e){const i=e[a];if(i){const{_f:e,...s}=i;if(e){const s=k.array.has(e.name);T([a],!0);const l=await ie(i,y,O,n.shouldUseNativeValidation&&!t,s);if(T([a]),l[e.name]&&(o.valid=!1,t))break;!t&&(g(l,e.name)?s?q(r.errors,l,e.name):w(r.errors,e.name,l[e.name]):se(r.errors,e.name))}s&&await I(s,t,o)}}return o.valid},B=(e,t)=>(e&&t&&w(y,e,t),!ce(ne(),d)),z=(e,t,n)=>L(e,k,{...b.mount?y:m(t)?d:D(e)?{[e]:t}:t},n,t),G=(e,t,n={})=>{const r=g(s,e);let a=t;if(r){const n=r._f;n&&(!n.disabled&&w(y,e,ye(t,n)),a=J(n.ref)&&i(t)?"":t,de(n.ref)?[...n.ref.options].forEach((e=>e.selected=a.includes(e.value))):n.refs?o(n.ref)?n.refs.length>1?n.refs.forEach((e=>(!e.defaultChecked||!e.disabled)&&(e.checked=Array.isArray(a)?!!a.find((t=>t===e.value)):a===e.value))):n.refs[0]&&(n.refs[0].checked=!!a):n.refs.forEach((e=>e.checked=e.value===a)):H(n.ref)?n.ref.value="":(n.ref.value=a,n.ref.type||C.values.next({name:e,values:{...y}})))}(n.shouldDirty||n.shouldTouch)&&F(e,a,n.shouldTouch,n.shouldDirty,!0),n.shouldValidate&&te(e)},X=(e,t,n)=>{for(const r in t){const o=t[r],i=`${e}.${r}`,l=g(s,i);!k.array.has(e)&&ue(o)&&(!l||l._f)||a(o)?G(i,o,n):X(i,o,n)}},Q=(e,t,n={})=>{const o=g(s,e),a=k.array.has(e),l=f(t);w(y,e,l),a?(C.array.next({name:e,values:{...y}}),(Z.isDirty||Z.dirtyFields)&&n.shouldDirty&&C.state.next({name:e,dirtyFields:ve(d,y),isDirty:B(e,l)})):!o||o._f||i(l)?G(e,l,n):X(e,l,n),W(e,k)&&C.state.next({...r}),C.values.next({name:b.mount?e:void 0,values:{...y}})},Y=async e=>{b.mount=!0;const o=e.target;let a=o.name,i=!0;const l=g(s,a),c=e=>{i=Number.isNaN(e)||e===g(y,a,e)};if(l){let d,p;const f=o.type?be(l._f):u(e),h=e.type===x.BLUR||e.type===x.FOCUS_OUT,m=!Se(l._f)&&!n.resolver&&!g(r.errors,a)&&!l._f.deps||Ee(h,g(r.touchedFields,a),r.isSubmitted,_,P),v=W(a,k,h);w(y,a,f),h?(l._f.onBlur&&l._f.onBlur(e),t&&t(0)):l._f.onChange&&l._f.onChange(e);const b=F(a,f,h,!1),S=!j(b)||v;if(!h&&C.values.next({name:a,type:e.type,values:{...y}}),m)return Z.isValid&&R(),S&&C.state.next({name:a,...v?{}:b});if(!h&&v&&C.state.next({...r}),n.resolver){const{errors:e}=await M([a]);if(c(f),i){const t=ke(r.errors,s,a),n=ke(e,s,t.name||a);d=n.error,a=n.name,p=j(e)}}else T([a],!0),d=(await ie(l,y,O,n.shouldUseNativeValidation))[a],T([a]),c(f),i&&(d?p=!1:Z.isValid&&(p=await I(s,!0)));i&&(l._f.deps&&te(l._f.deps),$(a,p,d,b))}},ee=(e,t)=>{if(g(r.errors,t)&&e.focus)return e.focus(),1},te=async(e,t={})=>{let o,a;const i=N(e);if(n.resolver){const t=await(async e=>{const{errors:t}=await M(e);if(e)for(const n of e){const e=g(t,n);e?w(r.errors,n,e):se(r.errors,n)}else r.errors=t;return t})(m(e)?e:i);o=j(t),a=e?!i.some((e=>g(t,e))):o}else e?(a=(await Promise.all(i.map((async e=>{const t=g(s,e);return await I(t&&t._f?{[e]:t}:t)})))).every(Boolean),(a||r.isValid)&&R()):a=o=await I(s);return C.state.next({...!D(e)||Z.isValid&&o!==r.isValid?{}:{name:e},...n.resolver||!e?{isValid:o}:{},errors:r.errors}),t.shouldFocus&&!a&&V(s,ee,e?i:k.mount),a},ne=e=>{const t={...b.mount?y:d};return m(e)?t:D(e)?g(t,e):e.map((e=>g(t,e)))},re=(e,t)=>({invalid:!!g((t||r).errors,e),isDirty:!!g((t||r).dirtyFields,e),error:g((t||r).errors,e),isValidating:!!g(r.validatingFields,e),isTouched:!!g((t||r).touchedFields,e)}),oe=(e,t,n)=>{const o=(g(s,e,{_f:{}})._f||{}).ref,a=g(r.errors,e)||{},{ref:i,message:l,type:u,...c}=a;w(r.errors,e,{...c,...t,ref:o}),C.state.next({name:e,errors:r.errors,isValid:!1}),n&&n.shouldFocus&&o&&o.focus&&o.focus()},ae=(e,t={})=>{for(const o of e?N(e):k.mount)k.mount.delete(o),k.array.delete(o),t.keepValue||(se(s,o),se(y,o)),!t.keepError&&se(r.errors,o),!t.keepDirty&&se(r.dirtyFields,o),!t.keepTouched&&se(r.touchedFields,o),!t.keepIsValidating&&se(r.validatingFields,o),!n.shouldUnregister&&!t.keepDefaultValue&&se(d,o);C.values.next({values:{...y}}),C.state.next({...r,...t.keepDirty?{isDirty:B()}:{}}),!t.keepIsValid&&R()},he=({disabled:e,name:t,field:n,fields:r,value:o})=>{if(v(e)&&b.mount||e){const a=e?void 0:m(o)?be(n?n._f:g(r,t)._f):o;w(y,t,a),F(t,a,!1,!1,!0)}},me=(e,t={})=>{let r=g(s,e);const o=v(t.disabled);return w(s,e,{...r||{},_f:{...r&&r._f?r._f:{ref:{name:e}},name:e,mount:!0,...t}}),k.mount.add(e),r?he({field:r,disabled:t.disabled,name:e,value:t.value}):A(e,!0,t.value),{...o?{disabled:t.disabled}:{},...n.progressive?{required:!!t.required,min:xe(t.min),max:xe(t.max),minLength:xe(t.minLength),maxLength:xe(t.maxLength),pattern:xe(t.pattern)}:{},name:e,onChange:Y,onBlur:Y,ref:o=>{if(o){me(e,t),r=g(s,e);const n=m(o.value)&&o.querySelectorAll&&o.querySelectorAll("input,select,textarea")[0]||o,a=pe(n),i=r._f.refs||[];if(a?i.find((e=>e===n)):n===r._f.ref)return;w(s,e,{_f:{...r._f,...a?{refs:[...i.filter(fe),n,...Array.isArray(g(d,e))?[{}]:[]],ref:{type:n.type,name:e}}:{ref:n}}}),A(e,!1,void 0,n)}else r=g(s,e,{}),r._f&&(r._f.mount=!1),(n.shouldUnregister||t.shouldUnregister)&&(!c(k.array,e)||!b.action)&&k.unMount.add(e)}}},ge=()=>n.shouldFocusError&&V(s,ee,k.mount),Pe=(e,t)=>async o=>{let a;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let i=f(y);if(C.state.next({isSubmitting:!0}),n.resolver){const{errors:e,values:t}=await M();r.errors=e,i=t}else await I(s);if(se(r.errors,"root"),j(r.errors)){C.state.next({errors:{}});try{await e(i,o)}catch(l){a=l}}else t&&await t({...r.errors},o),ge(),setTimeout(ge);if(C.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:j(r.errors)&&!a,submitCount:r.submitCount+1,errors:r.errors}),a)throw a},_e=(t,n={})=>{const o=t?f(t):d,a=f(o),i=j(t),l=i?d:a;if(n.keepDefaultValues||(d=o),!n.keepValues){if(n.keepDirtyValues)for(const e of k.mount)g(r.dirtyFields,e)?w(l,e,g(y,e)):Q(e,g(l,e));else{if(p&&m(t))for(const e of k.mount){const t=g(s,e);if(t&&t._f){const e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(J(e)){const t=e.closest("form");if(t){t.reset();break}}}}s={}}y=e.shouldUnregister?n.keepDefaultValues?f(d):{}:f(l),C.array.next({values:{...l}}),C.values.next({values:{...l}})}k={mount:n.keepDirtyValues?k.mount:new Set,unMount:new Set,array:new Set,watch:new Set,watchAll:!1,focus:""},b.mount=!Z.isValid||!!n.keepIsValid||!!n.keepDirtyValues,b.watch=!!e.shouldUnregister,C.state.next({submitCount:n.keepSubmitCount?r.submitCount:0,isDirty:!i&&(n.keepDirty?r.isDirty:!(!n.keepDefaultValues||ce(t,d))),isSubmitted:!!n.keepIsSubmitted&&r.isSubmitted,dirtyFields:i?[]:n.keepDirtyValues?n.keepDefaultValues&&y?ve(d,y):r.dirtyFields:n.keepDefaultValues&&t?ve(d,t):n.keepDirty?r.dirtyFields:{},touchedFields:n.keepTouched?r.touchedFields:{},errors:n.keepErrors?r.errors:{},isSubmitSuccessful:!!n.keepIsSubmitSuccessful&&r.isSubmitSuccessful,isSubmitting:!1})},Oe=(e,t)=>_e(K(e)?e(y):e,t);return{control:{register:me,unregister:ae,getFieldState:re,handleSubmit:Pe,setError:oe,_executeSchema:M,_getWatch:z,_getDirty:B,_updateValid:R,_removeUnmounted:()=>{for(const e of k.unMount){const t=g(s,e);t&&(t._f.refs?t._f.refs.every((e=>!fe(e))):!fe(t._f.ref))&&ae(e)}k.unMount=new Set},_updateFieldArray:(e,t=[],n,o,a=!0,i=!0)=>{if(o&&n){if(b.action=!0,i&&Array.isArray(g(s,e))){const t=n(g(s,e),o.argA,o.argB);a&&w(s,e,t)}if(i&&Array.isArray(g(r.errors,e))){const t=n(g(r.errors,e),o.argA,o.argB);a&&w(r.errors,e,t),Ze(r.errors,e)}if(Z.touchedFields&&i&&Array.isArray(g(r.touchedFields,e))){const t=n(g(r.touchedFields,e),o.argA,o.argB);a&&w(r.touchedFields,e,t)}Z.dirtyFields&&(r.dirtyFields=ve(d,y)),C.state.next({name:e,isDirty:B(e,t),dirtyFields:r.dirtyFields,errors:r.errors,isValid:r.isValid})}else w(y,e,t)},_updateDisabledField:he,_getFieldArray:t=>h(g(b.mount?y:d,t,e.shouldUnregister?g(d,t,[]):[])),_reset:_e,_resetDefaultValues:()=>K(n.defaultValues)&&n.defaultValues().then((e=>{Oe(e,n.resetOptions),C.state.next({isLoading:!1})})),_updateFormState:e=>{r={...r,...e}},_disableForm:e=>{v(e)&&(C.state.next({disabled:e}),V(s,((t,n)=>{const r=g(s,n);r&&(t.disabled=r._f.disabled||e,Array.isArray(r._f.refs)&&r._f.refs.forEach((t=>{t.disabled=r._f.disabled||e})))}),0,!1))},_subjects:C,_proxyFormState:Z,_setErrors:e=>{r.errors=e,C.state.next({errors:r.errors,isValid:!1})},get _fields(){return s},get _formValues(){return y},get _state(){return b},set _state(e){b=e},get _defaultValues(){return d},get _names(){return k},set _names(e){k=e},get _formState(){return r},set _formState(e){r=e},get _options(){return n},set _options(e){n={...n,...e}}},trigger:te,register:me,handleSubmit:Pe,watch:(e,t)=>K(e)?C.values.subscribe({next:n=>e(z(void 0,t),n)}):z(e,t,!0),setValue:Q,getValues:ne,reset:Oe,resetField:(e,t={})=>{g(s,e)&&(m(t.defaultValue)?Q(e,f(g(d,e))):(Q(e,t.defaultValue),w(d,e,f(t.defaultValue))),t.keepTouched||se(r.touchedFields,e),t.keepDirty||(se(r.dirtyFields,e),r.isDirty=t.defaultValue?B(e,f(g(d,e))):B()),t.keepError||(se(r.errors,e),Z.isValid&&R()),C.state.next({...r}))},clearErrors:e=>{e&&N(e).forEach((e=>se(r.errors,e))),C.state.next({errors:e?r.errors:{}})},unregister:ae,setError:oe,setFocus:(e,t={})=>{const n=g(s,e),r=n&&n._f;if(r){const e=r.refs?r.refs[0]:r.ref;e.focus&&(e.focus(),t.shouldSelect&&e.select())}},getFieldState:re}}function _e(e={}){const t=r.useRef(),n=r.useRef(),[o,a]=r.useState({isDirty:!1,isValidating:!1,isLoading:K(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,defaultValues:K(e.defaultValues)?void 0:e.defaultValues});t.current||(t.current={...Pe(e),formState:o});const i=t.current.control;return i._options=e,M({subject:i._subjects.state,next:e=>{F(e,i._proxyFormState,i._updateFormState,!0)&&a({...i._formState})}}),r.useEffect((()=>i._disableForm(e.disabled)),[i,e.disabled]),r.useEffect((()=>{if(i._proxyFormState.isDirty){const e=i._getDirty();e!==o.isDirty&&i._subjects.state.next({isDirty:e})}}),[i,o.isDirty]),r.useEffect((()=>{e.values&&!ce(e.values,n.current)?(i._reset(e.values,i._options.resetOptions),n.current=e.values,a((e=>({...e})))):i._resetDefaultValues()}),[e.values,i]),r.useEffect((()=>{e.errors&&i._setErrors(e.errors)}),[e.errors,i]),r.useEffect((()=>{i._state.mount||(i._updateValid(),i._state.mount=!0),i._state.watch&&(i._state.watch=!1,i._subjects.state.next({...i._formState})),i._removeUnmounted()})),r.useEffect((()=>{e.shouldUnregister&&i._subjects.values.next({values:i._getWatch()})}),[e.shouldUnregister,i]),t.current.formState=A(o,i),t.current}}},function(e){e.O(0,[532,774],(function(){return t=5824,e(e.s=t);var t}));e.O()}]); -//# sourceMappingURL=app-f487b6864a0d816cc020.js.map \ No newline at end of file +//# sourceMappingURL=app-7990c3f1d980ee5d9dc0.js.map \ No newline at end of file diff --git a/app-f487b6864a0d816cc020.js.LICENSE.txt b/app-7990c3f1d980ee5d9dc0.js.LICENSE.txt similarity index 100% rename from app-f487b6864a0d816cc020.js.LICENSE.txt rename to app-7990c3f1d980ee5d9dc0.js.LICENSE.txt diff --git a/app-f487b6864a0d816cc020.js.map b/app-7990c3f1d980ee5d9dc0.js.map similarity index 99% rename from app-f487b6864a0d816cc020.js.map rename to app-7990c3f1d980ee5d9dc0.js.map index af6df814..11fce5f3 100644 --- a/app-f487b6864a0d816cc020.js.map +++ b/app-7990c3f1d980ee5d9dc0.js.map @@ -1 +1 @@ -{"version":3,"file":"app-f487b6864a0d816cc020.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","webpack://code-cave/./node_modules/stylis/src/Utility.js","webpack://code-cave/./node_modules/stylis/src/Tokenizer.js","webpack://code-cave/./node_modules/stylis/src/Enum.js","webpack://code-cave/./node_modules/stylis/src/Serializer.js","webpack://code-cave/./node_modules/stylis/src/Parser.js","webpack://code-cave/./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack://code-cave/./node_modules/stylis/src/Middleware.js","webpack://code-cave/./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack://code-cave/./node_modules/@emotion/react/dist/emotion-element-43c6fea0.browser.esm.js","webpack://code-cave/./node_modules/@emotion/react/dist/emotion-react.browser.esm.js","webpack://code-cave/./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","webpack://code-cave/./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","webpack://code-cave/./node_modules/@emotion/hash/dist/emotion-hash.esm.js","webpack://code-cave/./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","webpack://code-cave/./node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","webpack://code-cave/./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","webpack://code-cave/./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","webpack://code-cave/./node_modules/@mui/material/FormControl/FormControlContext.js","webpack://code-cave/./node_modules/@mui/material/FormControl/useFormControl.js","webpack://code-cave/./node_modules/@mui/material/List/ListContext.js","webpack://code-cave/./node_modules/@mui/material/node_modules/react-is/cjs/react-is.production.min.js","webpack://code-cave/./node_modules/@mui/material/node_modules/react-is/index.js","webpack://code-cave/./node_modules/@mui/material/colors/common.js","webpack://code-cave/./node_modules/@mui/material/colors/grey.js","webpack://code-cave/./node_modules/@mui/material/colors/purple.js","webpack://code-cave/./node_modules/@mui/material/colors/red.js","webpack://code-cave/./node_modules/@mui/material/colors/orange.js","webpack://code-cave/./node_modules/@mui/material/colors/blue.js","webpack://code-cave/./node_modules/@mui/material/colors/lightBlue.js","webpack://code-cave/./node_modules/@mui/material/colors/green.js","webpack://code-cave/./node_modules/@mui/material/styles/createPalette.js","webpack://code-cave/./node_modules/@mui/material/styles/createTypography.js","webpack://code-cave/./node_modules/@mui/material/styles/shadows.js","webpack://code-cave/./node_modules/@mui/material/styles/createTransitions.js","webpack://code-cave/./node_modules/@mui/material/styles/zIndex.js","webpack://code-cave/./node_modules/@mui/material/styles/createTheme.js","webpack://code-cave/./node_modules/@mui/material/styles/createMixins.js","webpack://code-cave/./node_modules/@mui/material/styles/defaultTheme.js","webpack://code-cave/./node_modules/@mui/material/styles/identifier.js","webpack://code-cave/./node_modules/@mui/material/styles/rootShouldForwardProp.js","webpack://code-cave/./node_modules/@mui/material/styles/slotShouldForwardProp.js","webpack://code-cave/./node_modules/@mui/material/styles/styled.js","webpack://code-cave/./node_modules/@mui/material/styles/useThemeProps.js","webpack://code-cave/./node_modules/@mui/material/utils/capitalize.js","webpack://code-cave/./node_modules/@mui/material/SvgIcon/svgIconClasses.js","webpack://code-cave/./node_modules/@mui/material/SvgIcon/SvgIcon.js","webpack://code-cave/./node_modules/@mui/material/utils/createSvgIcon.js","webpack://code-cave/./node_modules/@mui/material/utils/useControlled.js","webpack://code-cave/./node_modules/@mui/utils/useControlled/useControlled.js","webpack://code-cave/./node_modules/@mui/material/utils/useEnhancedEffect.js","webpack://code-cave/./node_modules/@mui/material/utils/useForkRef.js","webpack://code-cave/./node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","webpack://code-cave/./node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","webpack://code-cave/./node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js","webpack://code-cave/./node_modules/@mui/styled-engine/index.js","webpack://code-cave/./node_modules/@mui/system/colorManipulator.js","webpack://code-cave/./node_modules/@mui/system/createStyled.js","webpack://code-cave/./node_modules/@mui/system/esm/breakpoints.js","webpack://code-cave/./node_modules/@mui/system/esm/createTheme/applyStyles.js","webpack://code-cave/./node_modules/@mui/system/esm/createTheme/createBreakpoints.js","webpack://code-cave/./node_modules/@mui/system/esm/createTheme/shape.js","webpack://code-cave/./node_modules/@mui/system/esm/createTheme/createTheme.js","webpack://code-cave/./node_modules/@mui/system/esm/createTheme/createSpacing.js","webpack://code-cave/./node_modules/@mui/system/esm/merge.js","webpack://code-cave/./node_modules/@mui/system/esm/spacing.js","webpack://code-cave/./node_modules/@mui/system/esm/memoize.js","webpack://code-cave/./node_modules/@mui/system/esm/style.js","webpack://code-cave/./node_modules/@mui/system/esm/compose.js","webpack://code-cave/./node_modules/@mui/system/esm/borders.js","webpack://code-cave/./node_modules/@mui/system/esm/cssGrid.js","webpack://code-cave/./node_modules/@mui/system/esm/palette.js","webpack://code-cave/./node_modules/@mui/system/esm/sizing.js","webpack://code-cave/./node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","webpack://code-cave/./node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","webpack://code-cave/./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","webpack://code-cave/./node_modules/@mui/system/esm/useThemeWithoutDefault.js","webpack://code-cave/./node_modules/@mui/system/esm/useTheme.js","webpack://code-cave/./node_modules/@mui/utils/resolveProps/resolveProps.js","webpack://code-cave/./node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","webpack://code-cave/./node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","webpack://code-cave/./node_modules/@mui/utils/capitalize/capitalize.js","webpack://code-cave/./node_modules/@mui/utils/clamp/clamp.js","webpack://code-cave/./node_modules/@mui/utils/composeClasses/composeClasses.js","webpack://code-cave/./node_modules/@mui/utils/deepmerge/deepmerge.js","webpack://code-cave/./node_modules/@mui/utils/formatMuiErrorMessage/formatMuiErrorMessage.js","webpack://code-cave/./node_modules/@mui/utils/ClassNameGenerator/ClassNameGenerator.js","webpack://code-cave/./node_modules/@mui/utils/generateUtilityClass/generateUtilityClass.js","webpack://code-cave/./node_modules/@mui/utils/generateUtilityClasses/generateUtilityClasses.js","webpack://code-cave/./node_modules/@mui/utils/getDisplayName/getDisplayName.js","webpack://code-cave/./node_modules/@mui/utils/node_modules/react-is/cjs/react-is.production.min.js","webpack://code-cave/./node_modules/@mui/utils/node_modules/react-is/index.js","webpack://code-cave/./node_modules/@mui/utils/setRef/setRef.js","webpack://code-cave/./node_modules/@mui/utils/useEnhancedEffect/useEnhancedEffect.js","webpack://code-cave/./node_modules/@mui/utils/useEventCallback/useEventCallback.js","webpack://code-cave/./node_modules/@mui/utils/useForkRef/useForkRef.js","webpack://code-cave/./node_modules/@mui/utils/useLazyRef/useLazyRef.js","webpack://code-cave/./node_modules/@mui/utils/useOnMount/useOnMount.js","webpack://code-cave/./node_modules/@mui/utils/useTimeout/useTimeout.js","webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsEnvelopeFill.js","webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsGridFill.js","webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaChevronUp.js","webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaLinkedin.js","webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaTelegram.js","webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaWhatsapp.js","webpack://code-cave/./node_modules/@react-icons/all-files/lib/esm/iconsManifest.js","webpack://code-cave/./node_modules/@react-icons/all-files/lib/esm/iconContext.js","webpack://code-cave/./node_modules/@react-icons/all-files/lib/esm/iconBase.js","webpack://code-cave/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://code-cave/./node_modules/gatsby-react-router-scroll/index.js","webpack://code-cave/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://code-cave/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://code-cave/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://code-cave/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://code-cave/./node_modules/gatsby/dist/internal-plugins/partytown/utils/get-forwards.js","webpack://code-cave/./node_modules/gatsby/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js","webpack://code-cave/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://code-cave/./.cache/api-runner-browser-plugins.js","webpack://code-cave/./.cache/api-runner-browser.js","webpack://code-cave/./.cache/emitter.js","webpack://code-cave/./node_modules/mitt/dist/mitt.es.js","webpack://code-cave/./.cache/normalize-page-path.js","webpack://code-cave/./.cache/find-path.js","webpack://code-cave/./.cache/gatsby-browser-entry.js","webpack://code-cave/./.cache/prefetch.js","webpack://code-cave/./.cache/loader.js","webpack://code-cave/./.cache/head/components/fire-callback-in-effect.js","webpack://code-cave/./.cache/head/constants.js","webpack://code-cave/./.cache/head/utils.js","webpack://code-cave/./.cache/head/head-export-handler-for-browser.js","webpack://code-cave/./.cache/page-renderer.js","webpack://code-cave/./.cache/route-announcer-props.js","webpack://code-cave/./.cache/navigation.js","webpack://code-cave/./node_modules/shallow-compare/es/index.js","webpack://code-cave/./.cache/ensure-resources.js","webpack://code-cave/./.cache/production-app.js","webpack://code-cave/./.cache/public-page-renderer-prod.js","webpack://code-cave/./.cache/public-page-renderer.js","webpack://code-cave/./.cache/react-dom-utils.js","webpack://code-cave/./.cache/redirect-utils.js","webpack://code-cave/./.cache/register-service-worker.js","webpack://code-cave/./.cache/slice/context.js","webpack://code-cave/./.cache/static-query.js","webpack://code-cave/./.cache/context-utils.js","webpack://code-cave/./.cache/strip-prefix.js","webpack://code-cave/./node_modules/@tmttn/gatsby-plugin-hubspot-tracking/default-options.js","webpack://code-cave/./node_modules/@tmttn/gatsby-plugin-hubspot-tracking/gatsby-browser.js","webpack://code-cave/./node_modules/gatsby-plugin-layout/gatsby-browser.js","webpack://code-cave/./node_modules/gatsby-plugin-layout/wrap-page.js","webpack://code-cave/./node_modules/gatsby-remark-images/constants.js","webpack://code-cave/./node_modules/gatsby-remark-images/gatsby-browser.js","webpack://code-cave/./src/components/common/contentContainer.tsx","webpack://code-cave/./src/components/common/metadata.tsx","webpack://code-cave/./node_modules/@mui/material/styles/cssUtils.js","webpack://code-cave/./node_modules/@mui/system/esm/colorManipulator.js","webpack://code-cave/./node_modules/@mui/material/Skeleton/skeletonClasses.js","webpack://code-cave/./node_modules/@mui/material/Skeleton/Skeleton.js","webpack://code-cave/./src/components/common/skeletonStub.tsx","webpack://code-cave/./node_modules/@mui/utils/useId/useId.js","webpack://code-cave/./node_modules/@mui/utils/ownerDocument/ownerDocument.js","webpack://code-cave/./node_modules/@mui/utils/ownerWindow/ownerWindow.js","webpack://code-cave/./node_modules/@mui/utils/debounce/debounce.js","webpack://code-cave/./node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js","webpack://code-cave/./node_modules/@mui/base/utils/isHostComponent.js","webpack://code-cave/./node_modules/@mui/material/FormControl/formControlState.js","webpack://code-cave/./node_modules/@mui/system/esm/GlobalStyles/GlobalStyles.js","webpack://code-cave/./node_modules/@mui/material/GlobalStyles/GlobalStyles.js","webpack://code-cave/./node_modules/@mui/material/InputBase/utils.js","webpack://code-cave/./node_modules/@mui/material/InputBase/inputBaseClasses.js","webpack://code-cave/./node_modules/@mui/material/InputBase/InputBase.js","webpack://code-cave/./node_modules/@mui/material/Input/inputClasses.js","webpack://code-cave/./node_modules/@mui/material/Input/Input.js","webpack://code-cave/./node_modules/@mui/material/FilledInput/filledInputClasses.js","webpack://code-cave/./node_modules/@mui/material/FilledInput/FilledInput.js","webpack://code-cave/./node_modules/@mui/material/OutlinedInput/NotchedOutline.js","webpack://code-cave/./node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","webpack://code-cave/./node_modules/@mui/material/OutlinedInput/OutlinedInput.js","webpack://code-cave/./node_modules/@mui/material/FormLabel/formLabelClasses.js","webpack://code-cave/./node_modules/@mui/material/FormLabel/FormLabel.js","webpack://code-cave/./node_modules/@mui/material/InputLabel/inputLabelClasses.js","webpack://code-cave/./node_modules/@mui/material/InputLabel/InputLabel.js","webpack://code-cave/./node_modules/@mui/material/utils/isMuiElement.js","webpack://code-cave/./node_modules/@mui/utils/isMuiElement/isMuiElement.js","webpack://code-cave/./node_modules/@mui/material/FormControl/formControlClasses.js","webpack://code-cave/./node_modules/@mui/material/FormControl/FormControl.js","webpack://code-cave/./node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","webpack://code-cave/./node_modules/@mui/material/FormHelperText/FormHelperText.js","webpack://code-cave/./node_modules/@mui/material/utils/ownerDocument.js","webpack://code-cave/./node_modules/@mui/base/utils/extractEventHandlers.js","webpack://code-cave/./node_modules/@mui/base/utils/omitEventHandlers.js","webpack://code-cave/./node_modules/@mui/base/utils/useSlotProps.js","webpack://code-cave/./node_modules/@mui/base/utils/resolveComponentProps.js","webpack://code-cave/./node_modules/@mui/base/utils/mergeSlotProps.js","webpack://code-cave/./node_modules/@mui/base/utils/appendOwnerState.js","webpack://code-cave/./node_modules/@mui/system/esm/RtlProvider/index.js","webpack://code-cave/./node_modules/@mui/material/List/listClasses.js","webpack://code-cave/./node_modules/@mui/material/List/List.js","webpack://code-cave/./node_modules/@mui/utils/getScrollbarSize/getScrollbarSize.js","webpack://code-cave/./node_modules/@mui/material/utils/getScrollbarSize.js","webpack://code-cave/./node_modules/@mui/material/MenuList/MenuList.js","webpack://code-cave/./node_modules/@mui/material/utils/debounce.js","webpack://code-cave/./node_modules/@mui/material/utils/ownerWindow.js","webpack://code-cave/./node_modules/react-transition-group/esm/config.js","webpack://code-cave/./node_modules/react-transition-group/esm/Transition.js","webpack://code-cave/./node_modules/react-transition-group/esm/utils/reflow.js","webpack://code-cave/./node_modules/@mui/material/styles/useTheme.js","webpack://code-cave/./node_modules/@mui/material/transitions/utils.js","webpack://code-cave/./node_modules/@mui/material/Grow/Grow.js","webpack://code-cave/./node_modules/@mui/utils/createChainedFunction/createChainedFunction.js","webpack://code-cave/./node_modules/@mui/base/unstable_useModal/ModalManager.js","webpack://code-cave/./node_modules/@mui/base/unstable_useModal/useModal.js","webpack://code-cave/./node_modules/@mui/base/FocusTrap/FocusTrap.js","webpack://code-cave/./node_modules/@mui/base/Portal/Portal.js","webpack://code-cave/./node_modules/@mui/material/Fade/Fade.js","webpack://code-cave/./node_modules/@mui/material/Backdrop/backdropClasses.js","webpack://code-cave/./node_modules/@mui/material/Backdrop/Backdrop.js","webpack://code-cave/./node_modules/@mui/material/Modal/modalClasses.js","webpack://code-cave/./node_modules/@mui/material/Modal/Modal.js","webpack://code-cave/./node_modules/@mui/material/styles/getOverlayAlpha.js","webpack://code-cave/./node_modules/@mui/material/Paper/paperClasses.js","webpack://code-cave/./node_modules/@mui/material/Paper/Paper.js","webpack://code-cave/./node_modules/@mui/material/Popover/popoverClasses.js","webpack://code-cave/./node_modules/@mui/material/Popover/Popover.js","webpack://code-cave/./node_modules/@mui/material/Menu/menuClasses.js","webpack://code-cave/./node_modules/@mui/material/Menu/Menu.js","webpack://code-cave/./node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","webpack://code-cave/./node_modules/@mui/material/NativeSelect/NativeSelectInput.js","webpack://code-cave/./node_modules/@mui/material/Select/selectClasses.js","webpack://code-cave/./node_modules/@mui/material/Select/SelectInput.js","webpack://code-cave/./node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","webpack://code-cave/./node_modules/@mui/material/Select/Select.js","webpack://code-cave/./node_modules/@mui/material/TextField/textFieldClasses.js","webpack://code-cave/./node_modules/@mui/material/TextField/TextField.js","webpack://code-cave/./node_modules/@mui/system/esm/createStyled.js","webpack://code-cave/./node_modules/@mui/system/esm/styled.js","webpack://code-cave/./node_modules/@mui/system/esm/Stack/createStack.js","webpack://code-cave/./node_modules/@mui/material/Stack/Stack.js","webpack://code-cave/./node_modules/@mui/material/Typography/typographyClasses.js","webpack://code-cave/./node_modules/@mui/material/Typography/Typography.js","webpack://code-cave/./node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js","webpack://code-cave/./node_modules/@mui/material/FormControlLabel/FormControlLabel.js","webpack://code-cave/./src/components/forms/inputs.tsx","webpack://code-cave/./src/components/common/scrollProgress.tsx","webpack://code-cave/./src/components/layout/navLink.tsx","webpack://code-cave/./src/components/layout/discussProjectButton.tsx","webpack://code-cave/./src/components/layout/navbar.tsx","webpack://code-cave/./src/components/layout/contactLinks.tsx","webpack://code-cave/./src/components/layout/requisites.tsx","webpack://code-cave/./src/components/layout/policiesLinks.tsx","webpack://code-cave/./src/components/layout/footerNavLinks.tsx","webpack://code-cave/./src/components/forms/getPortfolioForm.tsx","webpack://code-cave/./src/components/layout/footerLinksAndForm.tsx","webpack://code-cave/./src/components/layout/footer.tsx","webpack://code-cave/./src/components/common/upButton.tsx","webpack://code-cave/./src/components/layout/analyticsByConsent.tsx","webpack://code-cave/./src/components/layout/layout.tsx","webpack://code-cave/./node_modules/axios/lib/helpers/bind.js","webpack://code-cave/./node_modules/axios/lib/utils.js","webpack://code-cave/./node_modules/axios/lib/core/AxiosError.js","webpack://code-cave/./node_modules/axios/lib/helpers/toFormData.js","webpack://code-cave/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://code-cave/./node_modules/axios/lib/helpers/buildURL.js","webpack://code-cave/./node_modules/axios/lib/core/InterceptorManager.js","webpack://code-cave/./node_modules/axios/lib/defaults/transitional.js","webpack://code-cave/./node_modules/axios/lib/platform/browser/index.js","webpack://code-cave/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://code-cave/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://code-cave/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://code-cave/./node_modules/axios/lib/platform/common/utils.js","webpack://code-cave/./node_modules/axios/lib/platform/index.js","webpack://code-cave/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://code-cave/./node_modules/axios/lib/defaults/index.js","webpack://code-cave/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://code-cave/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://code-cave/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://code-cave/./node_modules/axios/lib/core/transformData.js","webpack://code-cave/./node_modules/axios/lib/cancel/isCancel.js","webpack://code-cave/./node_modules/axios/lib/cancel/CanceledError.js","webpack://code-cave/./node_modules/axios/lib/core/settle.js","webpack://code-cave/./node_modules/axios/lib/helpers/speedometer.js","webpack://code-cave/./node_modules/axios/lib/helpers/throttle.js","webpack://code-cave/./node_modules/axios/lib/helpers/progressEventReducer.js","webpack://code-cave/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://code-cave/./node_modules/axios/lib/helpers/cookies.js","webpack://code-cave/./node_modules/axios/lib/core/buildFullPath.js","webpack://code-cave/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://code-cave/./node_modules/axios/lib/helpers/combineURLs.js","webpack://code-cave/./node_modules/axios/lib/core/mergeConfig.js","webpack://code-cave/./node_modules/axios/lib/helpers/resolveConfig.js","webpack://code-cave/./node_modules/axios/lib/adapters/xhr.js","webpack://code-cave/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://code-cave/./node_modules/axios/lib/helpers/composeSignals.js","webpack://code-cave/./node_modules/axios/lib/helpers/trackStream.js","webpack://code-cave/./node_modules/axios/lib/adapters/fetch.js","webpack://code-cave/./node_modules/axios/lib/adapters/adapters.js","webpack://code-cave/./node_modules/axios/lib/helpers/null.js","webpack://code-cave/./node_modules/axios/lib/core/dispatchRequest.js","webpack://code-cave/./node_modules/axios/lib/env/data.js","webpack://code-cave/./node_modules/axios/lib/helpers/validator.js","webpack://code-cave/./node_modules/axios/lib/core/Axios.js","webpack://code-cave/./node_modules/axios/lib/cancel/CancelToken.js","webpack://code-cave/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://code-cave/./node_modules/axios/lib/axios.js","webpack://code-cave/./node_modules/axios/lib/helpers/spread.js","webpack://code-cave/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://code-cave/./src/tools/api.ts","webpack://code-cave/./src/tools/cookieGetter.ts","webpack://code-cave/./node_modules/yup/index.esm.js","webpack://code-cave/./src/tools/formSchemas.ts","webpack://code-cave/./src/tools/formsTools.ts","webpack://code-cave/./src/types/form.type.ts","webpack://code-cave/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://code-cave/./node_modules/invariant/browser.js","webpack://code-cave/./node_modules/lodash/_Symbol.js","webpack://code-cave/./node_modules/lodash/_baseGetTag.js","webpack://code-cave/./node_modules/lodash/_baseTrim.js","webpack://code-cave/./node_modules/lodash/_freeGlobal.js","webpack://code-cave/./node_modules/lodash/_getRawTag.js","webpack://code-cave/./node_modules/lodash/_objectToString.js","webpack://code-cave/./node_modules/lodash/_root.js","webpack://code-cave/./node_modules/lodash/_trimmedEndIndex.js","webpack://code-cave/./node_modules/lodash/debounce.js","webpack://code-cave/./node_modules/lodash/isObject.js","webpack://code-cave/./node_modules/lodash/isObjectLike.js","webpack://code-cave/./node_modules/lodash/isSymbol.js","webpack://code-cave/./node_modules/lodash/now.js","webpack://code-cave/./node_modules/lodash/toNumber.js","webpack://code-cave/./node_modules/property-expr/index.js","webpack://code-cave/./node_modules/react-is/cjs/react-is.production.min.js","webpack://code-cave/./node_modules/react-is/index.js","webpack://code-cave/./node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack.production.min.js","webpack://code-cave/./node_modules/react-server-dom-webpack/index.js","webpack://code-cave/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://code-cave/./node_modules/tiny-case/index.js","webpack://code-cave/./node_modules/toposort/index.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/extends.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://code-cave/./node_modules/gatsby/node_modules/@builder.io/partytown/integration/index.cjs","webpack://code-cave/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://code-cave/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://code-cave/./node_modules/@gatsbyjs/reach-router/dist/index.modern.mjs","webpack://code-cave/./node_modules/@hookform/resolvers/dist/resolvers.mjs","webpack://code-cave/./node_modules/@hookform/resolvers/yup/dist/yup.mjs","webpack://code-cave/./node_modules/clsx/dist/clsx.mjs","webpack://code-cave/./node_modules/gatsby-link/dist/index.modern.mjs","webpack://code-cave/./node_modules/gatsby-script/dist/index.modern.mjs","webpack://code-cave/./node_modules/react-hook-form/dist/index.esm.mjs"],"sourcesContent":["/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isBrowser = \"object\" !== 'undefined';\nvar hasOwn = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-43c6fea0.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-43c6fea0.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.11.4\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/emotion-react.cjs.mjs\",\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": {\n\t\t\ttypes: {\n\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t},\n\t\t\t\"default\": \"./macro.js\"\n\t\t}\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.*\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.11.0\",\n\t\t\"@emotion/cache\": \"^11.11.0\",\n\t\t\"@emotion/serialize\": \"^1.1.3\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.2.1\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.1\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.11.2\",\n\t\t\"@emotion/css-prettifier\": \"1.1.3\",\n\t\t\"@emotion/server\": \"11.11.0\",\n\t\t\"@emotion/styled\": \"11.11.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": {\n\t\t\t\t\ttypes: {\n\t\t\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t\t\t},\n\t\t\t\t\t\"default\": \"./macro.js\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n // $FlowFixMe\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n if (!isBrowser$1) {\n var _ref;\n\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n\n if (shouldCache) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n if (process.env.NODE_ENV !== 'production') {\n if (tag === undefined) {\n throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n }\n }\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n styles.push.apply(styles, args);\n } else {\n if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[0][0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[i], args[0][i]);\n }\n } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if ( // $FlowFixMe\n finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n newProps.ref = ref;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n return 'NO_COMPONENT_SELECTOR';\n } // $FlowFixMe: coerce undefined to string\n\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n return createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n })).apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","'use client';\n\nimport * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst ListContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n ListContext.displayName = 'ListContext';\n}\nexport default ListContext;","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport const dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2\n } = palette,\n other = _objectWithoutPropertiesLoose(palette, _excluded);\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = _extends({}, color);\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n const modes = {\n dark,\n light\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!modes[mode]) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: _extends({}, common),\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const _ref = typeof typography === 'function' ? typography(palette) : typography,\n {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge(_extends({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = _extends({}, easing, inputTransitions.easing);\n const mergedDuration = _extends({}, duration, inputTransitions.duration);\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n const isNumber = value => !isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return _extends({\n getAutoHeightDuration,\n create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n const {\n mixins: mixinsInput = {},\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (options.vars) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: _extends({}, zIndex)\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (key in node) {\n const child = node[key];\n if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.indexOf('Mui') === 0) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createTheme(...args);\n}\nexport default createTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n return _extends({\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n }\n }, mixins);\n}","'use client';\n\nimport createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","import slotShouldForwardProp from './slotShouldForwardProp';\nconst rootShouldForwardProp = prop => slotShouldForwardProp(prop) && prop !== 'classes';\nexport default rootShouldForwardProp;","// copied from @mui/system/createStyled\nfunction slotShouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport default slotShouldForwardProp;","'use client';\n\nimport createStyled from '@mui/system/createStyled';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nimport rootShouldForwardProp from './rootShouldForwardProp';\nexport { default as slotShouldForwardProp } from './slotShouldForwardProp';\nexport { default as rootShouldForwardProp } from './rootShouldForwardProp';\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","'use client';\n\nimport systemUseThemeProps from '@mui/system/useThemeProps';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme,\n themeId: THEME_ID\n });\n}","import capitalize from '@mui/utils/capitalize';\nexport default capitalize;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getSvgIconUtilityClass } from './svgIconClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n fontSize,\n classes\n } = ownerState;\n const slots = {\n root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n };\n return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n name: 'MuiSvgIcon',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette2, _palette3;\n return {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n // the will define the property that has `currentColor`\n // for example heroicons uses fill=\"none\" and stroke=\"currentColor\"\n fill: ownerState.hasSvgAsChild ? undefined : 'currentColor',\n flexShrink: 0,\n transition: (_theme$transitions = theme.transitions) == null || (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n duration: (_theme$transitions2 = theme.transitions) == null || (_theme$transitions2 = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2.shorter\n }),\n fontSize: {\n inherit: 'inherit',\n small: ((_theme$typography = theme.typography) == null || (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n medium: ((_theme$typography2 = theme.typography) == null || (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n large: ((_theme$typography3 = theme.typography) == null || (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n }[ownerState.fontSize],\n // TODO v5 deprecate, v6 remove for sx\n color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null || (_palette = _palette[ownerState.color]) == null ? void 0 : _palette.main) != null ? _palette$ownerState$c : {\n action: (_palette2 = (theme.vars || theme).palette) == null || (_palette2 = _palette2.action) == null ? void 0 : _palette2.active,\n disabled: (_palette3 = (theme.vars || theme).palette) == null || (_palette3 = _palette3.action) == null ? void 0 : _palette3.disabled,\n inherit: undefined\n }[ownerState.color]\n };\n});\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSvgIcon'\n });\n const {\n children,\n className,\n color = 'inherit',\n component = 'svg',\n fontSize = 'medium',\n htmlColor,\n inheritViewBox = false,\n titleAccess,\n viewBox = '0 0 24 24'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const hasSvgAsChild = /*#__PURE__*/React.isValidElement(children) && children.type === 'svg';\n const ownerState = _extends({}, props, {\n color,\n component,\n fontSize,\n instanceFontSize: inProps.fontSize,\n inheritViewBox,\n viewBox,\n hasSvgAsChild\n });\n const more = {};\n if (!inheritViewBox) {\n more.viewBox = viewBox;\n }\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SvgIconRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n focusable: \"false\",\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, more, other, hasSvgAsChild && children.props, {\n ownerState: ownerState,\n children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n children: titleAccess\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n * @default 'inherit'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n * @default 'medium'\n */\n fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n /**\n * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n * prop will be ignored.\n * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n * `component`'s viewBox to the root node.\n * @default false\n */\n inheritViewBox: PropTypes.bool,\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this prop.\n */\n shapeRendering: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n * @default '0 0 24 24'\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default SvgIcon;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n function Component(props, ref) {\n return /*#__PURE__*/_jsx(SvgIcon, _extends({\n \"data-testid\": `${displayName}Icon`,\n ref: ref\n }, props, {\n children: path\n }));\n }\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = `${displayName}Icon`;\n }\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","'use client';\n\nimport useControlled from '@mui/utils/useControlled';\nexport default useControlled;","'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && !Object.is(defaultValue, defaultProp)) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport default useEnhancedEffect;","'use client';\n\nimport useForkRef from '@mui/utils/useForkRef';\nexport default useForkRef;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nexport default function GlobalStyles(props) {\n const {\n styles,\n defaultTheme = {}\n } = props;\n const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n return /*#__PURE__*/_jsx(Global, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n defaultTheme: PropTypes.object,\n styles: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n // $FlowFixMe: we can ignore this because its exposed type is defined by the CreateStyled type\n newStyled[tagName] = newStyled(tagName);\n});\n\nexport { newStyled as default };\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\n\n// prepend: true moves MUI styles to the top of the so they're loaded first.\n// It allows developers to easily override MUI styles with other styling solutions, like CSS modules.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nlet cache;\nif (typeof document === 'object') {\n cache = createCache({\n key: 'css',\n prepend: true\n });\n}\nexport default function StyledEngineProvider(props) {\n const {\n injectFirst,\n children\n } = props;\n return injectFirst && cache ? /*#__PURE__*/_jsx(CacheProvider, {\n value: cache,\n children: children\n }) : children;\n}\nprocess.env.NODE_ENV !== \"production\" ? StyledEngineProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * By default, the styles are injected last in the element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override MUI's styles, set this prop.\n */\n injectFirst: PropTypes.bool\n} : void 0;","/**\n * @mui/styled-engine v5.15.14\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n};\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.alpha = alpha;\nexports.blend = blend;\nexports.colorChannel = void 0;\nexports.darken = darken;\nexports.decomposeColor = decomposeColor;\nexports.emphasize = emphasize;\nexports.getContrastRatio = getContrastRatio;\nexports.getLuminance = getLuminance;\nexports.hexToRgb = hexToRgb;\nexports.hslToRgb = hslToRgb;\nexports.lighten = lighten;\nexports.private_safeAlpha = private_safeAlpha;\nexports.private_safeColorChannel = void 0;\nexports.private_safeDarken = private_safeDarken;\nexports.private_safeEmphasize = private_safeEmphasize;\nexports.private_safeLighten = private_safeLighten;\nexports.recomposeColor = recomposeColor;\nexports.rgbToHex = rgbToHex;\nvar _formatMuiErrorMessage2 = _interopRequireDefault(require(\"@mui/utils/formatMuiErrorMessage\"));\nvar _clamp = _interopRequireDefault(require(\"@mui/utils/clamp\"));\n/* eslint-disable @typescript-eslint/naming-convention */\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return (0, _clamp.default)(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nfunction hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nfunction decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : (0, _formatMuiErrorMessage2.default)(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : (0, _formatMuiErrorMessage2.default)(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nconst colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexports.colorChannel = colorChannel;\nconst private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexports.private_safeColorChannel = private_safeColorChannel;\nfunction recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nfunction rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nfunction hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nfunction getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nfunction getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nfunction private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nfunction private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nfunction private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nfunction private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nfunction blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createStyled;\nexports.shouldForwardProp = shouldForwardProp;\nexports.systemDefaultTheme = void 0;\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\nvar _styledEngine = _interopRequireWildcard(require(\"@mui/styled-engine\"));\nvar _deepmerge = require(\"@mui/utils/deepmerge\");\nvar _capitalize = _interopRequireDefault(require(\"@mui/utils/capitalize\"));\nvar _getDisplayName = _interopRequireDefault(require(\"@mui/utils/getDisplayName\"));\nvar _createTheme = _interopRequireDefault(require(\"./createTheme\"));\nvar _styleFunctionSx = _interopRequireDefault(require(\"./styleFunctionSx\"));\nconst _excluded = [\"ownerState\"],\n _excluded2 = [\"variants\"],\n _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nfunction shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nconst systemDefaultTheme = exports.systemDefaultTheme = (0, _createTheme.default)();\nconst lowercaseFirstLetter = string => {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n defaultTheme,\n theme,\n themeId\n}) {\n return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref) {\n let {\n ownerState\n } = _ref,\n props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);\n const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle((0, _extends2.default)({\n ownerState\n }, props)) : callableStyle;\n if (Array.isArray(resolvedStylesArg)) {\n return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, (0, _extends2.default)({\n ownerState\n }, props)));\n }\n if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n const {\n variants = []\n } = resolvedStylesArg,\n otherStyles = (0, _objectWithoutPropertiesLoose2.default)(resolvedStylesArg, _excluded2);\n let result = otherStyles;\n variants.forEach(variant => {\n let isMatch = true;\n if (typeof variant.props === 'function') {\n isMatch = variant.props((0, _extends2.default)({\n ownerState\n }, props, ownerState));\n } else {\n Object.keys(variant.props).forEach(key => {\n if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n isMatch = false;\n }\n });\n }\n if (isMatch) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.push(typeof variant.style === 'function' ? variant.style((0, _extends2.default)({\n ownerState\n }, props, ownerState)) : variant.style);\n }\n });\n return result;\n }\n return resolvedStylesArg;\n}\nfunction createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n const systemSx = props => {\n return (0, _styleFunctionSx.default)((0, _extends2.default)({}, props, {\n theme: resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n };\n systemSx.__mui_systemSx = true;\n return (tag, inputOptions = {}) => {\n // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n (0, _styledEngine.internal_processStyles)(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n } = inputOptions,\n options = (0, _objectWithoutPropertiesLoose2.default)(inputOptions, _excluded3);\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = (0, _styledEngine.default)(tag, (0, _extends2.default)({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n const transformStyleArg = stylesArg => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || (0, _deepmerge.isPlainObject)(stylesArg)) {\n return props => processStyleArg(stylesArg, (0, _extends2.default)({}, props, {\n theme: resolveTheme({\n theme: props.theme,\n defaultTheme,\n themeId\n })\n }));\n }\n return stylesArg;\n };\n const muiStyledResolver = (styleArg, ...expressions) => {\n let transformedStyleArg = transformStyleArg(styleArg);\n const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }));\n if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n return null;\n }\n const styleOverrides = theme.components[componentName].styleOverrides;\n const resolvedStyleOverrides = {};\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, (0, _extends2.default)({}, props, {\n theme\n }));\n });\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n var _theme$components;\n const theme = resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }));\n const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n return processStyleArg({\n variants: themeVariants\n }, (0, _extends2.default)({}, props, {\n theme\n }));\n });\n }\n if (!skipSx) {\n expressionsWithDefaultTheme.push(systemSx);\n }\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill('');\n // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n }\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n if (componentName) {\n displayName = `${componentName}${(0, _capitalize.default)(componentSlot || '')}`;\n }\n if (displayName === undefined) {\n displayName = `Styled(${(0, _getDisplayName.default)(tag)})`;\n }\n Component.displayName = displayName;\n }\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme\n }, props[key]));\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n var _breakpointsInput$key;\n const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n // If CssVarsProvider is used as a provider,\n // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return _extends({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5\n } = breakpoints,\n other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return _extends({\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit\n }, other);\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: _extends({\n mode: 'light'\n }, paletteInput),\n spacing,\n shape: _extends({}, shape, shapeInput)\n }, other);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n\n // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://m2.material.io/design/layout/understanding-layout.html\n const transform = createUnarySpacing({\n spacing: spacingInput\n });\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n var _getPath;\n const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n if (typeof themeSpacing === 'number') {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n if (propValue >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import merge from './merge';\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme2;\n const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sx\"];\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from './defaultSxConfig';\nconst splitProps = props => {\n var _props$theme$unstable, _props$theme;\n const result = {\n systemProps: {},\n otherProps: {}\n };\n const config = (_props$theme$unstable = props == null || (_props$theme = props.theme) == null ? void 0 : _props$theme.unstable_sxConfig) != null ? _props$theme$unstable : defaultSxConfig;\n Object.keys(props).forEach(prop => {\n if (config[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\nexport default function extendSxProp(props) {\n const {\n sx: inSx\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n if (!isPlainObject(result)) {\n return systemProps;\n }\n return _extends({}, systemProps, result);\n };\n } else {\n finalSx = _extends({}, systemProps, inSx);\n }\n return _extends({}, otherProps, {\n sx: finalSx\n });\n}","import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n var _theme$unstable_sxCon;\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return removeUnusedBreakpoints(breakpointsKeys, css);\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n Object.keys(defaultProps).forEach(propName => {\n if (propName.toString().match(/^(components|slots)$/)) {\n output[propName] = _extends({}, defaultProps[propName], output[propName]);\n } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n const defaultSlotProps = defaultProps[propName] || {};\n const slotProps = props[propName];\n output[propName] = {};\n if (!slotProps || !Object.keys(slotProps)) {\n // Reduce the iteration if the slot props is empty\n output[propName] = defaultSlotProps;\n } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n // Reduce the iteration if the default slot props is empty\n output[propName] = slotProps;\n } else {\n output[propName] = _extends({}, slotProps);\n Object.keys(defaultSlotProps).forEach(slotPropName => {\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n });\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","'use client';\n\nimport getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n const mergedProps = getThemeProps({\n theme,\n name,\n props\n });\n return mergedProps;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n Object.keys(slots).forEach(\n // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n const utilityClass = getUtilityClass(key);\n if (utilityClass !== '') {\n acc.push(utilityClass);\n }\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n }\n return acc;\n }, []).join(' ');\n });\n return output;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (!isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (isPlainObject(source[key]) &&\n // Avoid prototype pollution\n Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe if we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n const match = `${fn}`.match(fnNameMatchRegex);\n const name = match && match[1];\n return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n const functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n if (typeof Component === 'string') {\n return Component;\n }\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n if (typeof Component === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n default:\n return undefined;\n }\n }\n return undefined;\n}","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n constructor() {\n this.currentId = null;\n this.clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsEnvelopeFill = function BsEnvelopeFill (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M.05 3.555L8 8.414l7.95-4.859A2 2 0 0014 2H2A2 2 0 00.05 3.555zM16 4.697l-5.875 3.59L16 11.743V4.697zm-.168 8.108L9.157 8.879 8 9.586l-1.157-.707-6.675 3.926A2 2 0 002 14h12a2 2 0 001.832-1.195zM0 11.743l5.875-3.456L0 4.697v7.046z\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsGridFill = function BsGridFill (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M1 2.5A1.5 1.5 0 012.5 1h3A1.5 1.5 0 017 2.5v3A1.5 1.5 0 015.5 7h-3A1.5 1.5 0 011 5.5v-3zm8 0A1.5 1.5 0 0110.5 1h3A1.5 1.5 0 0115 2.5v3A1.5 1.5 0 0113.5 7h-3A1.5 1.5 0 019 5.5v-3zm-8 8A1.5 1.5 0 012.5 9h3A1.5 1.5 0 017 10.5v3A1.5 1.5 0 015.5 15h-3A1.5 1.5 0 011 13.5v-3zm8 0A1.5 1.5 0 0110.5 9h3a1.5 1.5 0 011.5 1.5v3a1.5 1.5 0 01-1.5 1.5h-3A1.5 1.5 0 019 13.5v-3z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaChevronUp = function FaChevronUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 448 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaLinkedin = function FaLinkedin (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 448 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaTelegram = function FaTelegram (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 496 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaWhatsapp = function FaWhatsapp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 448 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"}}]})(props);\n};\n","export var IconsManifest = [\n {\n \"id\": \"fa\",\n \"name\": \"Font Awesome\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n },\n {\n \"id\": \"io\",\n \"name\": \"Ionicons 4\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"io5\",\n \"name\": \"Ionicons 5\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"md\",\n \"name\": \"Material Design icons\",\n \"projectUrl\": \"http://google.github.io/material-design-icons/\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"https://github.com/google/material-design-icons/blob/master/LICENSE\"\n },\n {\n \"id\": \"ti\",\n \"name\": \"Typicons\",\n \"projectUrl\": \"http://s-ings.com/typicons/\",\n \"license\": \"CC BY-SA 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by-sa/3.0/\"\n },\n {\n \"id\": \"go\",\n \"name\": \"Github Octicons icons\",\n \"projectUrl\": \"https://octicons.github.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/primer/octicons/blob/master/LICENSE\"\n },\n {\n \"id\": \"fi\",\n \"name\": \"Feather\",\n \"projectUrl\": \"https://feathericons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/feathericons/feather/blob/master/LICENSE\"\n },\n {\n \"id\": \"gi\",\n \"name\": \"Game Icons\",\n \"projectUrl\": \"https://game-icons.net/\",\n \"license\": \"CC BY 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/3.0/\"\n },\n {\n \"id\": \"wi\",\n \"name\": \"Weather Icons\",\n \"projectUrl\": \"https://erikflowers.github.io/weather-icons/\",\n \"license\": \"SIL OFL 1.1\",\n \"licenseUrl\": \"http://scripts.sil.org/OFL\"\n },\n {\n \"id\": \"di\",\n \"name\": \"Devicons\",\n \"projectUrl\": \"https://vorillaz.github.io/devicons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ai\",\n \"name\": \"Ant Design Icons\",\n \"projectUrl\": \"https://github.com/ant-design/ant-design-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"bs\",\n \"name\": \"Bootstrap Icons\",\n \"projectUrl\": \"https://github.com/twbs/icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"ri\",\n \"name\": \"Remix Icon\",\n \"projectUrl\": \"https://github.com/Remix-Design/RemixIcon\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"fc\",\n \"name\": \"Flat Color Icons\",\n \"projectUrl\": \"https://github.com/icons8/flat-color-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"gr\",\n \"name\": \"Grommet-Icons\",\n \"projectUrl\": \"https://github.com/grommet/grommet-icons\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n },\n {\n \"id\": \"hi\",\n \"name\": \"Heroicons\",\n \"projectUrl\": \"https://github.com/refactoringui/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"si\",\n \"name\": \"Simple Icons\",\n \"projectUrl\": \"https://simpleicons.org/\",\n \"license\": \"CC0 1.0 Universal\",\n \"licenseUrl\": \"https://creativecommons.org/publicdomain/zero/1.0/\"\n },\n {\n \"id\": \"im\",\n \"name\": \"IcoMoon Free\",\n \"projectUrl\": \"https://github.com/Keyamoon/IcoMoon-Free\",\n \"license\": \"CC BY 4.0 License\"\n },\n {\n \"id\": \"bi\",\n \"name\": \"BoxIcons\",\n \"projectUrl\": \"https://github.com/atisawd/boxicons\",\n \"license\": \"CC BY 4.0 License\"\n },\n {\n \"id\": \"cg\",\n \"name\": \"css.gg\",\n \"projectUrl\": \"https://github.com/astrit/css.gg\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n },\n {\n \"id\": \"vsc\",\n \"name\": \"VS Code Icons\",\n \"projectUrl\": \"https://github.com/microsoft/vscode-codicons\",\n \"license\": \"CC BY 4.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n }\n]","import React from 'react';\nexport var DefaultContext = {\n color: undefined,\n size: undefined,\n className: undefined,\n style: undefined,\n attr: undefined\n};\nexport var IconContext = React.createContext && React.createContext(DefaultContext);","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport React from 'react';\nimport { IconContext, DefaultContext } from './iconContext';\n\nfunction Tree2Element(tree) {\n return tree && tree.map(function (node, i) {\n return React.createElement(node.tag, __assign({\n key: i\n }, node.attr), Tree2Element(node.child));\n });\n}\n\nexport function GenIcon(data) {\n return function (props) {\n return React.createElement(IconBase, __assign({\n attr: __assign({}, data.attr)\n }, props), Tree2Element(data.child));\n };\n}\nexport function IconBase(props) {\n var elem = function (conf) {\n var attr = props.attr,\n size = props.size,\n title = props.title,\n svgProps = __rest(props, [\"attr\", \"size\", \"title\"]);\n\n var computedSize = size || conf.size || \"1em\";\n var className;\n if (conf.className) className = conf.className;\n if (props.className) className = (className ? className + ' ' : '') + props.className;\n return React.createElement(\"svg\", __assign({\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\"\n }, conf.attr, attr, svgProps, {\n className: className,\n style: __assign(__assign({\n color: props.color || conf.color\n }, conf.style), props.style),\n height: computedSize,\n width: computedSize,\n xmlns: \"http://www.w3.org/2000/svg\"\n }), title && React.createElement(\"title\", null, title), props.children);\n };\n\n return IconContext !== undefined ? React.createElement(IconContext.Consumer, null, function (conf) {\n return elem(conf);\n }) : elem(DefaultContext);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.applyTrailingSlashOption = void 0;\nconst endsWithSuffixes = (suffixes, input) => {\n for (const suffix of suffixes) {\n if (input.endsWith(suffix)) return true;\n }\n return false;\n};\nconst suffixes = [`.html`, `.json`, `.js`, `.map`, `.txt`, `.xml`, `.pdf`];\nconst applyTrailingSlashOption = (input, option = `always`) => {\n if (input === `/`) return input;\n const hasTrailingSlash = input.endsWith(`/`);\n if (endsWithSuffixes(suffixes, input)) {\n return input;\n }\n if (option === `always`) {\n return hasTrailingSlash ? input : `${input}/`;\n }\n if (option === `never`) {\n return hasTrailingSlash ? input.slice(0, -1) : input;\n }\n return input;\n};\nexports.applyTrailingSlashOption = applyTrailingSlashOption;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\nvar _scrollHandler = require(\"./scroll-handler\");\nexports.ScrollContext = _scrollHandler.ScrollHandler;\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _sessionStorage = require(\"./session-storage\");\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n function ScrollHandler() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n if (!shouldUpdateScroll) {\n return true;\n }\n\n // Hack to allow accessing this._stateStorage.\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n return _this;\n }\n var _proto = ScrollHandler.prototype;\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n this._isTicking = false;\n };\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n /** If a hash is present in the browser url as the component mounts (i.e. the user is navigating\n * from an external website) then scroll to the hash instead of any previously stored scroll\n * position. */\n if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n } else if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n }\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n return ScrollHandler;\n}(React.Component);\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n var _proto = SessionStorage.prototype;\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n return 0;\n }\n };\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n return SessionStorage;\n}();\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\nvar _scrollHandler = require(\"./scroll-handler\");\nvar _react = require(\"react\");\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.onInitialClientRender = void 0;\nvar _gatsbyScript = require(\"gatsby-script\");\nvar _injectPartytownSnippet = require(\"./utils/inject-partytown-snippet\");\n// Makes sure off-main-thread scripts are loaded in `gatsby develop`\nconst onInitialClientRender = () => {\n if (process.env.NODE_ENV !== `development`) {\n return;\n }\n (0, _injectPartytownSnippet.injectPartytownSnippet)(_gatsbyScript.collectedScriptsByPage.get(window.location.pathname));\n\n // Clear scripts after we've used them to avoid leaky behavior\n _gatsbyScript.collectedScriptsByPage.delete(window.location.pathname);\n};\n\n// Client-side navigation (CSR, e.g. Gatsby Link navigations) are broken upstream in Partytown.\n// We need an official API from Partytown for handling re-configuration and on-demand script loading.\n// Until then, `off-main-thread` scripts load only on server-side navigation (SSR).\n// See https://github.com/BuilderIO/partytown/issues/74 for more details.\nexports.onInitialClientRender = onInitialClientRender;\n//# sourceMappingURL=gatsby-browser.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.getForwards = getForwards;\nfunction getForwards(collectedScripts) {\n return collectedScripts === null || collectedScripts === void 0 ? void 0 : collectedScripts.flatMap(script => (script === null || script === void 0 ? void 0 : script.forward) || []);\n}\n//# sourceMappingURL=get-forwards.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.injectPartytownSnippet = injectPartytownSnippet;\nvar _integration = require(\"@builder.io/partytown/integration\");\nvar _getForwards = require(\"./get-forwards\");\n// Adapted from https://github.com/BuilderIO/partytown/blob/main/src/react/snippet.tsx to only include CSR logic\nfunction injectPartytownSnippet(collectedScripts) {\n if (!collectedScripts.length) {\n return;\n }\n const existingSnippet = document.querySelector(`script[data-partytown]`);\n const existingSandbox = document.querySelector(`iframe[src*=\"~partytown/partytown-sandbox-sw\"]`);\n if (existingSnippet) {\n existingSnippet.remove();\n }\n if (existingSandbox) {\n existingSandbox.remove();\n }\n const forwards = (0, _getForwards.getForwards)(collectedScripts);\n const snippet = document.createElement(`script`);\n snippet.dataset.partytown = ``;\n snippet.innerHTML = (0, _integration.partytownSnippet)({\n forward: forwards\n });\n document.head.appendChild(snippet);\n}\n//# sourceMappingURL=inject-partytown-snippet.js.map","exports.components = {\n \"component---src-pages-templates-404-tsx\": () => import(\"./../../../src/pagesTemplates/404.tsx\" /* webpackChunkName: \"component---src-pages-templates-404-tsx\" */),\n \"component---src-pages-templates-blog-by-author-tsx\": () => import(\"./../../../src/pagesTemplates/blogByAuthor.tsx\" /* webpackChunkName: \"component---src-pages-templates-blog-by-author-tsx\" */),\n \"component---src-pages-templates-blog-by-hashtag-tsx\": () => import(\"./../../../src/pagesTemplates/blogByHashtag.tsx\" /* webpackChunkName: \"component---src-pages-templates-blog-by-hashtag-tsx\" */),\n \"component---src-pages-templates-blog-tsx\": () => import(\"./../../../src/pagesTemplates/blog.tsx\" /* webpackChunkName: \"component---src-pages-templates-blog-tsx\" */),\n \"component---src-pages-templates-index-tsx\": () => import(\"./../../../src/pagesTemplates/index.tsx\" /* webpackChunkName: \"component---src-pages-templates-index-tsx\" */),\n \"component---src-pages-templates-policies-tsx\": () => import(\"./../../../src/pagesTemplates/policies.tsx\" /* webpackChunkName: \"component---src-pages-templates-policies-tsx\" */),\n \"component---src-pages-templates-post-tsx\": () => import(\"./../../../src/pagesTemplates/post.tsx\" /* webpackChunkName: \"component---src-pages-templates-post-tsx\" */),\n \"component---src-pages-templates-project-tsx\": () => import(\"./../../../src/pagesTemplates/project.tsx\" /* webpackChunkName: \"component---src-pages-templates-project-tsx\" */),\n \"component---src-pages-templates-projects-tsx\": () => import(\"./../../../src/pagesTemplates/projects.tsx\" /* webpackChunkName: \"component---src-pages-templates-projects-tsx\" */),\n \"component---src-pages-templates-services-tsx\": () => import(\"./../../../src/pagesTemplates/services.tsx\" /* webpackChunkName: \"component---src-pages-templates-services-tsx\" */),\n \"component---src-pages-templates-workflow-tsx\": () => import(\"./../../../src/pagesTemplates/workflow.tsx\" /* webpackChunkName: \"component---src-pages-templates-workflow-tsx\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-remark-images/gatsby-browser.js'),\n options: {\"plugins\":[],\"maxWidth\":650,\"linkImagesToOriginal\":true,\"showCaptions\":false,\"markdownCaptions\":false,\"backgroundColor\":\"white\",\"quality\":50,\"withWebp\":false,\"withAvif\":false,\"loading\":\"lazy\",\"decoding\":\"async\",\"disableBgImageOnAlpha\":false,\"disableBgImage\":false},\n },{\n plugin: require('../node_modules/gatsby-remark-images/gatsby-browser.js'),\n options: {\"plugins\":[],\"maxWidth\":900,\"withAvif\":true,\"withWebp\":true,\"showCaptions\":[\"alt\"],\"linkImagesToOriginal\":true,\"markdownCaptions\":false,\"backgroundColor\":\"white\",\"quality\":50,\"loading\":\"lazy\",\"decoding\":\"async\",\"disableBgImageOnAlpha\":false,\"disableBgImage\":false},\n },{\n plugin: require('../node_modules/gatsby-remark-images/gatsby-browser.js'),\n options: {\"plugins\":[],\"maxWidth\":900,\"withAvif\":true,\"withWebp\":true,\"showCaptions\":[\"alt\"],\"linkImagesToOriginal\":true,\"markdownCaptions\":false,\"backgroundColor\":\"white\",\"quality\":50,\"loading\":\"lazy\",\"decoding\":\"async\",\"disableBgImageOnAlpha\":false,\"disableBgImage\":false},\n },{\n plugin: require('../node_modules/gatsby-plugin-layout/gatsby-browser.js'),\n options: {\"plugins\":[],\"component\":\"/home/runner/work/codecave.pro-new/codecave.pro-new/src/components/layout/layout.tsx\"},\n },{\n plugin: require('../node_modules/@tmttn/gatsby-plugin-hubspot-tracking/gatsby-browser.js'),\n options: {\"plugins\":[],\"trackingCode\":\"21836033\",\"respectDNT\":true,\"productionOnly\":false},\n },{\n plugin: require('../gatsby-browser.ts'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","export default pathAndSearch => {\n if (pathAndSearch === undefined) {\n return pathAndSearch\n }\n let [path, search = ``] = pathAndSearch.split(`?`)\n if (search) {\n search = `?` + search\n }\n\n if (path === `/`) {\n return `/` + search\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1) + search\n }\n return path + search\n}\n","import { pick } from \"@gatsbyjs/reach-router\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n let newRawPathname = rawPathname\n const queryIndex = rawPathname.indexOf(`?`)\n\n if (queryIndex !== -1) {\n const [path, qs] = rawPathname.split(`?`)\n newRawPathname = `${path}?${encodeURIComponent(qs)}`\n }\n\n const pathname = decodeURIComponent(newRawPathname)\n\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","import loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport { default as PageRenderer } from \"./public-page-renderer\"\nexport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nexport {\n Link,\n withPrefix,\n withAssetPrefix,\n navigate,\n parsePath,\n} from \"gatsby-link\"\n\nexport { graphql, prefetchPathname }\nexport { StaticQuery, StaticQueryContext, useStaticQuery } from \"./static-query\"\nexport { Slice } from \"./slice\"\nexport * from \"gatsby-script\"\n","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import { createFromReadableStream } from \"react-server-dom-webpack\"\nimport prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = rawPath => {\n const [path, maybeSearch] = rawPath.split(`?`)\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json${\n maybeSearch ? `?${maybeSearch}` : ``\n }`\n}\n\n/**\n * Utility to check the path that goes into doFetch for e.g. potential malicious intentions.\n * It checks for \"//\" because with this you could do a fetch request to a different domain.\n */\nconst shouldAbortFetch = rawPath => rawPath.startsWith(`//`)\n\nfunction doFetch(url, method = `GET`) {\n return new Promise(resolve => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\n// Regex that matches common search crawlers\nconst BOT_REGEX = /bot|crawler|spider|crawling/i\n\nconst toPageResources = (pageData, component = null, head) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n getServerDataError: pageData.getServerDataError,\n slicesMap: pageData.slicesMap ?? {},\n }\n\n return {\n component,\n head,\n json: pageData.result,\n page,\n }\n}\n\nfunction waitForResponse(response) {\n return new Promise(resolve => {\n try {\n const result = response.readRoot()\n resolve(result)\n } catch (err) {\n if (\n Object.hasOwnProperty.call(err, `_response`) &&\n Object.hasOwnProperty.call(err, `_status`)\n ) {\n setTimeout(() => {\n waitForResponse(response).then(resolve)\n }, 200)\n } else {\n throw err\n }\n }\n })\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.partialHydrationDb = new Map()\n this.slicesDataDb = new Map()\n this.sliceInflightDb = new Map()\n this.slicesDb = new Map()\n this.isPrefetchQueueRunning = false\n this.prefetchQueued = []\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n const maybeSearch = pagePath.split(`?`)[1]\n if (maybeSearch && !jsonPayload.path.includes(maybeSearch)) {\n jsonPayload.path += `?${maybeSearch}`\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n fetchPartialHydrationJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath).replace(`.json`, `-rsc.json`)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: responseText,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.partialHydrationDb.has(pagePath)) {\n const pageData = this.partialHydrationDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPartialHydrationJson({ pagePath }).then(pageData => {\n this.partialHydrationDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadSliceDataJson(sliceName) {\n if (this.slicesDataDb.has(sliceName)) {\n const jsonPayload = this.slicesDataDb.get(sliceName)\n return Promise.resolve({ sliceName, jsonPayload })\n }\n\n const url = `${__PATH_PREFIX__}/slice-data/${sliceName}.json`\n return doFetch(url, `GET`).then(res => {\n const jsonPayload = JSON.parse(res.responseText)\n\n this.slicesDataDb.set(sliceName, jsonPayload)\n return { sliceName, jsonPayload }\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return Promise.resolve({\n error: page.error,\n status: page.status,\n })\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const loadDataPromises = [\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]\n\n if (global.hasPartialHydration) {\n loadDataPromises.push(this.loadPartialHydrationJson(pagePath))\n }\n\n const inFlightPromise = Promise.all(loadDataPromises).then(allData => {\n const [appDataResponse, pageDataResponse, rscDataResponse] = allData\n\n if (\n pageDataResponse.status === PageResourceStatus.Error ||\n rscDataResponse?.status === PageResourceStatus.Error\n ) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = pageDataResponse.payload\n\n const {\n componentChunkName,\n staticQueryHashes: pageStaticQueryHashes = [],\n slicesMap = {},\n } = pageData\n\n const finalResult = {}\n\n const dedupedSliceNames = Array.from(new Set(Object.values(slicesMap)))\n\n const loadSlice = slice => {\n if (this.slicesDb.has(slice.name)) {\n return this.slicesDb.get(slice.name)\n } else if (this.sliceInflightDb.has(slice.name)) {\n return this.sliceInflightDb.get(slice.name)\n }\n\n const inFlight = this.loadComponent(slice.componentChunkName).then(\n component => {\n return {\n component: preferDefault(component),\n sliceContext: slice.result.sliceContext,\n data: slice.result.data,\n }\n }\n )\n\n this.sliceInflightDb.set(slice.name, inFlight)\n inFlight.then(results => {\n this.slicesDb.set(slice.name, results)\n this.sliceInflightDb.delete(slice.name)\n })\n\n return inFlight\n }\n\n return Promise.all(\n dedupedSliceNames.map(sliceName => this.loadSliceDataJson(sliceName))\n ).then(slicesData => {\n const slices = []\n const dedupedStaticQueryHashes = [...pageStaticQueryHashes]\n\n for (const { jsonPayload, sliceName } of Object.values(slicesData)) {\n slices.push({ name: sliceName, ...jsonPayload })\n for (const staticQueryHash of jsonPayload.staticQueryHashes) {\n if (!dedupedStaticQueryHashes.includes(staticQueryHash)) {\n dedupedStaticQueryHashes.push(staticQueryHash)\n }\n }\n }\n\n const loadChunkPromises = [\n Promise.all(slices.map(loadSlice)),\n this.loadComponent(componentChunkName, `head`),\n ]\n\n if (!global.hasPartialHydration) {\n loadChunkPromises.push(this.loadComponent(componentChunkName))\n }\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n // get list of components to get\n const componentChunkPromises = Promise.all(loadChunkPromises).then(\n components => {\n const [sliceComponents, headComponent, pageComponent] = components\n\n finalResult.createdAt = new Date()\n\n for (const sliceComponent of sliceComponents) {\n if (!sliceComponent || sliceComponent instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = sliceComponent\n }\n }\n\n if (\n !global.hasPartialHydration &&\n (!pageComponent || pageComponent instanceof Error)\n ) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = pageComponent\n }\n\n let pageResources\n\n if (finalResult.status !== PageResourceStatus.Error) {\n finalResult.status = PageResourceStatus.Success\n if (\n pageDataResponse.notFound === true ||\n rscDataResponse?.notFound === true\n ) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: appDataResponse\n ? appDataResponse.webpackCompilationHash\n : ``,\n })\n\n if (typeof rscDataResponse?.payload === `string`) {\n pageResources = toPageResources(pageData, null, headComponent)\n\n pageResources.partialHydration = rscDataResponse.payload\n\n const readableStream = new ReadableStream({\n start(controller) {\n const te = new TextEncoder()\n controller.enqueue(te.encode(rscDataResponse.payload))\n },\n pull(controller) {\n // close on next read when queue is empty\n controller.close()\n },\n cancel() {},\n })\n\n return waitForResponse(\n createFromReadableStream(readableStream)\n ).then(result => {\n pageResources.partialHydration = result\n\n return pageResources\n })\n } else {\n pageResources = toPageResources(\n pageData,\n pageComponent,\n headComponent\n )\n }\n }\n\n // undefined if final result is an error\n return pageResources\n }\n )\n\n // get list of static queries to get\n const staticQueryBatchPromise = Promise.all(\n dedupedStaticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromises, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n })\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Don't prefetch if this is a crawler bot\n if (navigator.userAgent && BOT_REGEX.test(navigator.userAgent)) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return {\n then: resolve => resolve(false),\n abort: () => {},\n }\n }\n if (this.prefetchTriggered.has(pagePath)) {\n return {\n then: resolve => resolve(true),\n abort: () => {},\n }\n }\n\n const defer = {\n resolve: null,\n reject: null,\n promise: null,\n }\n defer.promise = new Promise((resolve, reject) => {\n defer.resolve = resolve\n defer.reject = reject\n })\n this.prefetchQueued.push([pagePath, defer])\n const abortC = new AbortController()\n abortC.signal.addEventListener(`abort`, () => {\n const index = this.prefetchQueued.findIndex(([p]) => p === pagePath)\n // remove from the queue\n if (index !== -1) {\n this.prefetchQueued.splice(index, 1)\n }\n })\n\n if (!this.isPrefetchQueueRunning) {\n this.isPrefetchQueueRunning = true\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n }\n\n return {\n then: (resolve, reject) => defer.promise.then(resolve, reject),\n abort: abortC.abort.bind(abortC),\n }\n }\n\n _processNextPrefetchBatch() {\n const idleCallback = window.requestIdleCallback || (cb => setTimeout(cb, 0))\n\n idleCallback(() => {\n const toPrefetch = this.prefetchQueued.splice(0, 4)\n const prefetches = Promise.all(\n toPrefetch.map(([pagePath, dPromise]) => {\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return dPromise.resolve(false)\n }\n\n return this.doPrefetch(findPath(pagePath)).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n\n dPromise.resolve(true)\n })\n })\n )\n\n if (this.prefetchQueued.length) {\n prefetches.then(() => {\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n })\n } else {\n this.isPrefetchQueueRunning = false\n }\n })\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n\n if (global.hasPartialHydration) {\n return Promise.all([\n prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n ),\n prefetchHelper(pageDataUrl.replace(`.json`, `-rsc.json`), {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPartialHydrationJson(pagePath)\n ),\n ])\n } else {\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths, pageData) {\n const loadComponent = (chunkName, exportType = `components`) => {\n if (!global.hasPartialHydration) {\n exportType = `components`\n }\n\n if (!asyncRequires[exportType][chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name \"${chunkName}\"`\n )\n }\n\n return (\n asyncRequires[exportType][chunkName]()\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n\n if (pageData) {\n this.pageDataDb.set(findPath(pageData.path), {\n pagePath: pageData.path,\n payload: pageData,\n status: `success`,\n })\n }\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n if (shouldAbortFetch(rawPath)) {\n return data\n }\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n return super.loadPartialHydrationJson(rawPath).then(data => {\n if (data.notFound) {\n if (shouldAbortFetch(rawPath)) {\n return data\n }\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n\nexport function getSliceResults() {\n if (instance) {\n return instance.slicesDb\n } else {\n return {}\n }\n}\n","import { useEffect } from \"react\"\n\n/*\n * Calls callback in an effect and renders children\n */\nexport function FireCallbackInEffect({ children, callback }) {\n useEffect(() => {\n callback()\n })\n\n return children\n}\n","export const VALID_NODE_NAMES = [\n `link`,\n `meta`,\n `style`,\n `title`,\n `base`,\n `noscript`,\n `script`,\n `html`,\n `body`,\n]\n","import { VALID_NODE_NAMES } from \"./constants\"\n\n/**\n * Filter the props coming from a page down to just the ones that are relevant for head.\n * This e.g. filters out properties that are undefined during SSR.\n */\nexport function filterHeadProps(input) {\n return {\n location: {\n pathname: input.location.pathname,\n },\n params: input.params,\n data: input.data || {},\n serverData: input.serverData,\n pageContext: input.pageContext,\n }\n}\n\n/**\n * Throw error if Head export is not a valid function\n */\nexport function headExportValidator(head) {\n if (typeof head !== `function`)\n throw new Error(\n `Expected \"Head\" export to be a function got \"${typeof head}\".`\n )\n}\n\n/**\n * Warn once for same messsage\n */\nlet warnOnce = _ => {}\nif (process.env.NODE_ENV !== `production`) {\n const warnings = new Set()\n warnOnce = msg => {\n if (!warnings.has(msg)) {\n console.warn(msg)\n }\n warnings.add(msg)\n }\n}\n\n/**\n * Warn for invalid tags in Head which may have been directly added or introduced by `wrapRootElement`\n * @param {string} tagName\n */\nexport function warnForInvalidTag(tagName) {\n if (process.env.NODE_ENV !== `production`) {\n const warning = createWarningForInvalidTag(tagName)\n warnOnce(warning)\n }\n}\n\nfunction createWarningForInvalidTag(tagName) {\n return `<${tagName}> is not a valid head element. Please use one of the following: ${VALID_NODE_NAMES.join(\n `, `\n )}.\\n\\nAlso make sure that wrapRootElement in gatsby-ssr/gatsby-browser doesn't contain UI elements: https://gatsby.dev/invalid-head-elements`\n}\n\n/**\n * When a `nonce` is present on an element, browsers such as Chrome and Firefox strip it out of the\n * actual HTML attributes for security reasons *when the element is added to the document*. Thus,\n * given two equivalent elements that have nonces, `Element,isEqualNode()` will return false if one\n * of those elements gets added to the document. Although the `element.nonce` property will be the\n * same for both elements, the one that was added to the document will return an empty string for\n * its nonce HTML attribute value.\n *\n * This custom `isEqualNode()` function therefore removes the nonce value from the `newTag` before\n * comparing it to `oldTag`, restoring it afterwards.\n *\n * For more information, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1211471#c12\n */\nexport function isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(`nonce`)\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(`nonce`)) {\n const cloneTag = newTag.cloneNode(true)\n cloneTag.setAttribute(`nonce`, ``)\n cloneTag.nonce = nonce\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag)\n }\n }\n\n return oldTag.isEqualNode(newTag)\n}\n\nexport function diffNodes({ oldNodes, newNodes, onStale, onNew }) {\n for (const existingHeadElement of oldNodes) {\n const indexInNewNodes = newNodes.findIndex(e =>\n isEqualNode(e, existingHeadElement)\n )\n\n if (indexInNewNodes === -1) {\n onStale(existingHeadElement)\n } else {\n // this node is re-created as-is, so we keep old node, and remove it from list of new nodes (as we handled it already here)\n newNodes.splice(indexInNewNodes, 1)\n }\n }\n\n // remaing new nodes didn't have matching old node, so need to be added\n for (const newNode of newNodes) {\n onNew(newNode)\n }\n}\n\nexport function getValidHeadNodesAndAttributes(\n rootNode,\n htmlAndBodyAttributes = {\n html: {},\n body: {},\n }\n) {\n const seenIds = new Map()\n const validHeadNodes = []\n\n // Filter out non-element nodes before looping since we don't care about them\n for (const node of rootNode.childNodes) {\n const nodeName = node.nodeName.toLowerCase()\n const id = node.attributes?.id?.value\n\n if (!isElementType(node)) continue\n\n if (isValidNodeName(nodeName)) {\n // and tags are treated differently, in that we don't render them, we only extract the attributes and apply them separetely\n if (nodeName === `html` || nodeName === `body`) {\n for (const attribute of node.attributes) {\n const isStyleAttribute = attribute.name === `style`\n\n // Merge attributes for same nodeName from previous loop iteration\n htmlAndBodyAttributes[nodeName] = {\n ...htmlAndBodyAttributes[nodeName],\n }\n\n if (!isStyleAttribute) {\n htmlAndBodyAttributes[nodeName][attribute.name] = attribute.value\n }\n\n // If there is already a style attribute, we need to merge them as otherwise the last one will \"win\"\n if (isStyleAttribute) {\n htmlAndBodyAttributes[nodeName].style = `${\n htmlAndBodyAttributes[nodeName]?.style\n ? htmlAndBodyAttributes[nodeName].style\n : ``\n }${attribute.value} `\n }\n }\n } else {\n let clonedNode = node.cloneNode(true)\n clonedNode.setAttribute(`data-gatsby-head`, true)\n\n // // This is hack to make script tags work\n if (clonedNode.nodeName.toLowerCase() === `script`) {\n clonedNode = massageScript(clonedNode)\n }\n // Duplicate ids are not allowed in the head, so we need to dedupe them\n if (id) {\n if (!seenIds.has(id)) {\n validHeadNodes.push(clonedNode)\n seenIds.set(id, validHeadNodes.length - 1)\n } else {\n const indexOfPreviouslyInsertedNode = seenIds.get(id)\n validHeadNodes[\n indexOfPreviouslyInsertedNode\n ].parentNode?.removeChild(\n validHeadNodes[indexOfPreviouslyInsertedNode]\n )\n validHeadNodes[indexOfPreviouslyInsertedNode] = clonedNode\n }\n } else {\n validHeadNodes.push(clonedNode)\n }\n }\n } else {\n warnForInvalidTag(nodeName)\n }\n\n if (node.childNodes.length) {\n validHeadNodes.push(\n ...getValidHeadNodesAndAttributes(node, htmlAndBodyAttributes)\n .validHeadNodes\n )\n }\n }\n\n return { validHeadNodes, htmlAndBodyAttributes }\n}\n\nfunction massageScript(node) {\n const script = document.createElement(`script`)\n for (const attr of node.attributes) {\n script.setAttribute(attr.name, attr.value)\n }\n script.innerHTML = node.innerHTML\n\n return script\n}\n\nexport function isValidNodeName(nodeName) {\n return VALID_NODE_NAMES.includes(nodeName)\n}\n/*\n * For Head, we only care about element nodes(type = 1), so this util is used to skip over non-element nodes\n * For Node type, see https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n */\nexport function isElementType(node) {\n return node.nodeType === 1\n}\n\n/**\n * Removes all the head elements that were added by `Head`\n */\nexport function removePrevHeadElements() {\n const prevHeadNodes = document.querySelectorAll(`[data-gatsby-head]`)\n for (const node of prevHeadNodes) {\n node.parentNode.removeChild(node)\n }\n}\n\nexport function applyHtmlAndBodyAttributes(htmlAndBodyAttributes) {\n if (!htmlAndBodyAttributes) return\n\n const { html, body } = htmlAndBodyAttributes\n\n const htmlElement = document.querySelector(`html`)\n if (htmlElement) {\n Object.entries(html).forEach(([attributeName, attributeValue]) => {\n htmlElement.setAttribute(attributeName, attributeValue)\n })\n }\n\n const bodyElement = document.querySelector(`body`)\n if (bodyElement) {\n Object.entries(body).forEach(([attributeName, attributeValue]) => {\n bodyElement.setAttribute(attributeName, attributeValue)\n })\n }\n}\n\nexport function removeHtmlAndBodyAttributes(htmlAndBodyattributeList) {\n if (!htmlAndBodyattributeList) return\n\n const { html, body } = htmlAndBodyattributeList\n\n if (html) {\n const htmlElement = document.querySelector(`html`)\n html.forEach(attributeName => {\n if (htmlElement) {\n htmlElement.removeAttribute(attributeName)\n }\n })\n }\n\n if (body) {\n const bodyElement = document.querySelector(`body`)\n body.forEach(attributeName => {\n if (bodyElement) {\n bodyElement.removeAttribute(attributeName)\n }\n })\n }\n}\n","import React from \"react\"\nimport { useEffect } from \"react\"\nimport { StaticQueryContext } from \"gatsby\"\nimport { LocationProvider } from \"@gatsbyjs/reach-router\"\nimport { reactDOMUtils } from \"../react-dom-utils\"\nimport { FireCallbackInEffect } from \"./components/fire-callback-in-effect\"\nimport {\n headExportValidator,\n filterHeadProps,\n diffNodes,\n getValidHeadNodesAndAttributes,\n removePrevHeadElements,\n applyHtmlAndBodyAttributes,\n removeHtmlAndBodyAttributes,\n} from \"./utils\"\nimport { apiRunner } from \"../api-runner-browser\"\n\nconst hiddenRoot = document.createElement(`div`)\nconst keysOfHtmlAndBodyAttributes = {\n html: [],\n body: [],\n}\n\nconst onHeadRendered = () => {\n const { validHeadNodes, htmlAndBodyAttributes } =\n getValidHeadNodesAndAttributes(hiddenRoot)\n\n keysOfHtmlAndBodyAttributes.html = Object.keys(htmlAndBodyAttributes.html)\n keysOfHtmlAndBodyAttributes.body = Object.keys(htmlAndBodyAttributes.body)\n\n applyHtmlAndBodyAttributes(htmlAndBodyAttributes)\n\n /**\n * The rest of the code block below is a diffing mechanism to ensure that\n * the head elements aren't duplicted on every re-render.\n */\n const existingHeadElements = document.querySelectorAll(`[data-gatsby-head]`)\n\n if (existingHeadElements.length === 0) {\n document.head.append(...validHeadNodes)\n return\n }\n\n const newHeadNodes = []\n diffNodes({\n oldNodes: existingHeadElements,\n newNodes: validHeadNodes,\n onStale: node => node.parentNode.removeChild(node),\n onNew: node => newHeadNodes.push(node),\n })\n\n document.head.append(...newHeadNodes)\n}\n\nif (process.env.BUILD_STAGE === `develop`) {\n // sigh ... and elements are not valid descedents of
(our hidden element)\n // react-dom in dev mode will warn about this. There doesn't seem to be a way to render arbitrary\n // user Head without hitting this issue (our hidden element could be just \"new Document()\", but\n // this can only have 1 child, and we don't control what is being rendered so that's not an option)\n // instead we continue to render to
, and just silence warnings for and elements\n // https://github.com/facebook/react/blob/e2424f33b3ad727321fc12e75c5e94838e84c2b5/packages/react-dom-bindings/src/client/validateDOMNesting.js#L498-L520\n const originalConsoleError = console.error.bind(console)\n console.error = (...args) => {\n if (\n Array.isArray(args) &&\n args.length >= 2 &&\n args[0]?.includes?.(`validateDOMNesting(...): %s cannot appear as`) &&\n (args[1] === `` || args[1] === ``)\n ) {\n return undefined\n }\n return originalConsoleError(...args)\n }\n\n /* We set up observer to be able to regenerate after react-refresh\n updates our hidden element.\n */\n const observer = new MutationObserver(onHeadRendered)\n observer.observe(hiddenRoot, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n })\n}\n\nexport function headHandlerForBrowser({\n pageComponent,\n staticQueryResults,\n pageComponentProps,\n}) {\n useEffect(() => {\n if (pageComponent?.Head) {\n headExportValidator(pageComponent.Head)\n\n const { render } = reactDOMUtils()\n\n const HeadElement = (\n \n )\n\n const WrapHeadElement = apiRunner(\n `wrapRootElement`,\n { element: HeadElement },\n HeadElement,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n render(\n // just a hack to call the callback after react has done first render\n // Note: In dev, we call onHeadRendered twice( in FireCallbackInEffect and after mutualution observer dectects initail render into hiddenRoot) this is for hot reloading\n // In Prod we only call onHeadRendered in FireCallbackInEffect to render to head\n \n \n {WrapHeadElement}\n \n ,\n hiddenRoot\n )\n }\n\n return () => {\n removePrevHeadElements()\n removeHtmlAndBodyAttributes(keysOfHtmlAndBodyAttributes)\n }\n })\n}\n","import React, { Suspense, createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\nimport { headHandlerForBrowser } from \"./head/head-export-handler-for-browser\"\n\n// Renders page\nfunction PageRenderer(props) {\n const pageComponentProps = {\n ...props,\n params: {\n ...grabMatchParams(props.location.pathname),\n ...props.pageResources.json.pageContext.__params,\n },\n }\n\n const preferDefault = m => (m && m.default) || m\n\n let pageElement\n if (props.pageResources.partialHydration) {\n pageElement = props.pageResources.partialHydration\n } else {\n pageElement = createElement(preferDefault(props.pageResources.component), {\n ...pageComponentProps,\n key: props.path || props.pageResources.page.path,\n })\n }\n\n const pageComponent = props.pageResources.head\n\n headHandlerForBrowser({\n pageComponent,\n staticQueryResults: props.pageResources.staticQueryResults,\n pageComponentProps,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n {\n element: pageElement,\n props: pageComponentProps,\n },\n pageElement,\n ({ result }) => {\n return { element: result, props: pageComponentProps }\n }\n ).pop()\n\n return wrappedPage\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport {\n navigate as reachNavigate,\n globalHistory,\n} from \"@gatsbyjs/reach-router\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname + search).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(nextProps) {\n if (compareLocationProps(this.props.location, nextProps.location)) {\n onPreRouteUpdate(nextProps.location, this.props.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname + location.search, {\n withErrorDetails: true,\n }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(\n location.pathname + location.search,\n {\n withErrorDetails: true,\n }\n )\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"./static-query\"\nimport {\n SlicesMapContext,\n SlicesContext,\n SlicesResultsContext,\n} from \"./slice/context\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n getSliceResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\nimport { reactDOMUtils } from \"./react-dom-utils\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nconst { render, hydrate } = reactDOMUtils()\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\nconst reloadStorageKey = `gatsby-reload-compilation-hash-match`\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n const slicesContext = {\n renderEnvironment: `browser`,\n }\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n const sliceResults = getSliceResults()\n\n return (\n \n \n \n \n \n {children}\n \n \n \n \n \n )\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n \n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). SSR\n // page paths might include search params, while SSG and DSG won't.\n // If page path include search params we also compare query params.\n // But only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !==\n browserLoc.pathname + (pagePath.includes(`?`) ? browserLoc.search : ``) &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath.match(/^\\/(404|500)(\\/?|.html)$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(\n __BASE_PATH__ +\n pagePath +\n (!pagePath.includes(`?`) ? browserLoc.search : ``) +\n browserLoc.hash,\n {\n replace: true,\n }\n )\n }\n\n // It's possible that sessionStorage can throw an exception if access is not granted, see https://github.com/gatsbyjs/gatsby/issues/34512\n const getSessionStorage = () => {\n try {\n return sessionStorage\n } catch {\n return null\n }\n }\n\n publicLoader.loadPage(browserLoc.pathname + browserLoc.search).then(page => {\n const sessionStorage = getSessionStorage()\n\n if (\n page?.page?.webpackCompilationHash &&\n page.page.webpackCompilationHash !== window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n // We have not matching html + js (inlined `window.___webpackCompilationHash`)\n // with our data (coming from `app-data.json` file). This can cause issues such as\n // errors trying to load static queries (as list of static queries is inside `page-data`\n // which might not match to currently loaded `.js` scripts).\n // We are making attempt to reload if hashes don't match, but we also have to handle case\n // when reload doesn't fix it (possibly broken deploy) so we don't end up in infinite reload loop\n if (sessionStorage) {\n const isReloaded = sessionStorage.getItem(reloadStorageKey) === `1`\n\n if (!isReloaded) {\n sessionStorage.setItem(reloadStorageKey, `1`)\n window.location.reload(true)\n return\n }\n }\n }\n\n if (sessionStorage) {\n sessionStorage.removeItem(reloadStorageKey)\n }\n\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return {SiteRoot}\n }\n\n const focusEl = document.getElementById(`gatsby-focus-wrapper`)\n\n // Client only pages have any empty body so we just do a normal\n // render to avoid React complaining about hydration mis-matches.\n let defaultRenderer = render\n if (focusEl && focusEl.children.length) {\n defaultRenderer = hydrate\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n defaultRenderer\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n renderer(, rootElement)\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n\n return\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","const map = new WeakMap()\n\nexport function reactDOMUtils() {\n const reactDomClient = require(`react-dom/client`)\n\n const render = (Component, el) => {\n let root = map.get(el)\n if (!root) {\n map.set(el, (root = reactDomClient.createRoot(el)))\n }\n root.render(Component)\n }\n\n const hydrate = (Component, el) => reactDomClient.hydrateRoot(el, Component)\n\n return { render, hydrate }\n}\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","import React from \"react\"\n\nconst SlicesResultsContext = React.createContext({})\nconst SlicesContext = React.createContext({})\nconst SlicesMapContext = React.createContext({})\nconst SlicesPropsContext = React.createContext({})\n\nexport {\n SlicesResultsContext,\n SlicesContext,\n SlicesMapContext,\n SlicesPropsContext,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { createServerOrClientContext } from \"./context-utils\"\n\nconst StaticQueryContext = createServerOrClientContext(`StaticQuery`, {})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\nlet warnedAboutStaticQuery = false\n\n// TODO(v6): Remove completely\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n if (process.env.NODE_ENV === `development` && !warnedAboutStaticQuery) {\n console.warn(\n `The component is deprecated and will be removed in Gatsby v6. Use useStaticQuery instead. Refer to the migration guide for more information: https://gatsby.dev/migrating-4-to-5/#staticquery--is-deprecated`\n )\n warnedAboutStaticQuery = true\n }\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n // TODO(v5): Remove since we require React >= 18\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nexport { StaticQuery, StaticQueryContext, useStaticQuery }\n","import React from \"react\"\n\n// Ensure serverContext is not created more than once as React will throw when creating it more than once\n// https://github.com/facebook/react/blob/dd2d6522754f52c70d02c51db25eb7cbd5d1c8eb/packages/react/src/ReactServerContext.js#L101\nconst createServerContext = (name, defaultValue = null) => {\n /* eslint-disable no-undef */\n if (!globalThis.__SERVER_CONTEXT) {\n globalThis.__SERVER_CONTEXT = {}\n }\n\n if (!globalThis.__SERVER_CONTEXT[name]) {\n globalThis.__SERVER_CONTEXT[name] = React.createServerContext(\n name,\n defaultValue\n )\n }\n\n return globalThis.__SERVER_CONTEXT[name]\n}\n\nfunction createServerOrClientContext(name, defaultValue) {\n if (React.createServerContext) {\n return createServerContext(name, defaultValue)\n }\n\n return React.createContext(defaultValue)\n}\n\nexport { createServerOrClientContext }\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _default = {\n respectDNT: false,\n productionOnly: true\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.onRouteUpdate = onRouteUpdate;\nvar _defaultOptions = _interopRequireDefault(require(\"./default-options\"));\nfunction onRouteUpdate(_ref, pluginOptions) {\n var location = _ref.location;\n var _Object$assign = Object.assign({}, _defaultOptions.default, pluginOptions),\n productionOnly = _Object$assign.productionOnly;\n if (productionOnly && process.env.NODE_ENV !== 'production' || !Array.isArray(window._hsq)) {\n return;\n }\n\n // wrap inside a timeout to make sure react-helmet is done with it's changes (https://github.com/gatsbyjs/gatsby/issues/9139)\n // react-helmet is using requestAnimationFrame (https://github.com/nfl/react-helmet/blob/5.2.0/src/HelmetUtils.js#L296-L299)\n var trackPageView = function trackPageView() {\n var path = location ? location.pathname + location.search + location.hash : undefined;\n window._hsq.push(['setPath', path]);\n window._hsq.push(['trackPageView']);\n };\n if (typeof window.requestAnimationFrame === 'function') {\n window.requestAnimationFrame(function () {\n window.requestAnimationFrame(trackPageView);\n });\n } else {\n // simulate 2 requestAnimationFrame calls\n setTimeout(trackPageView, 32);\n }\n}","\"use strict\";\n\nexports.wrapPageElement = require(\"./wrap-page\");","\"use strict\";\n\nvar React = require(\"react\");\nvar preferDefault = function preferDefault(m) {\n return m && m.default || m;\n};\nvar Layout;\ntry {\n Layout = preferDefault(require(GATSBY_LAYOUT_COMPONENT_PATH));\n} catch (e) {\n if (e.toString().indexOf(\"Error: Cannot find module\") !== -1) {\n throw new Error(\"Couldn't find layout component at \\\"\" + GATSBY_LAYOUT_COMPONENT_PATH + \".\\n\\n\" + \"Please create layout component in that location or specify path to layout component in gatsby-config.js\");\n } else {\n // Logging the error for debugging older browsers as there is no way\n // to wrap the thrown error in a try/catch.\n console.error(e);\n throw e;\n }\n}\n\n// eslint-disable-next-line react/prop-types,react/display-name\nmodule.exports = function (_ref) {\n var element = _ref.element,\n props = _ref.props;\n return /*#__PURE__*/React.createElement(Layout, props, element);\n};","\"use strict\";\n\nexports.DEFAULT_OPTIONS = {\n maxWidth: 650,\n wrapperStyle: \"\",\n backgroundColor: \"white\",\n linkImagesToOriginal: true,\n showCaptions: false,\n markdownCaptions: false,\n withWebp: false,\n withAvif: false,\n tracedSVG: false,\n loading: \"lazy\",\n decoding: \"async\",\n disableBgImageOnAlpha: false,\n disableBgImage: false\n};\nexports.EMPTY_ALT = \"GATSBY_EMPTY_ALT\";\nexports.imageClass = \"gatsby-resp-image-image\";\nexports.imageWrapperClass = \"gatsby-resp-image-wrapper\";\nexports.imageBackgroundClass = \"gatsby-resp-image-background-image\";","\"use strict\";\n\nvar _require = require(\"./constants\"),\n DEFAULT_OPTIONS = _require.DEFAULT_OPTIONS,\n imageClass = _require.imageClass,\n imageBackgroundClass = _require.imageBackgroundClass,\n imageWrapperClass = _require.imageWrapperClass;\nexports.onRouteUpdate = function (apiCallbackContext, pluginOptions) {\n var options = Object.assign({}, DEFAULT_OPTIONS, pluginOptions);\n var imageWrappers = document.querySelectorAll(\".\" + imageWrapperClass);\n\n // https://css-tricks.com/snippets/javascript/loop-queryselectorall-matches/\n // for cross-browser looping through NodeList without polyfills\n var _loop = function _loop() {\n var imageWrapper = imageWrappers[i];\n var backgroundElement = imageWrapper.querySelector(\".\" + imageBackgroundClass);\n var imageElement = imageWrapper.querySelector(\".\" + imageClass);\n var onImageLoad = function onImageLoad() {\n backgroundElement.style.transition = \"opacity 0.5s 0.5s\";\n imageElement.style.transition = \"opacity 0.5s\";\n onImageComplete();\n };\n var onImageComplete = function onImageComplete() {\n backgroundElement.style.opacity = 0;\n imageElement.style.opacity = 1;\n imageElement.style.color = \"inherit\";\n imageElement.style.boxShadow = \"inset 0px 0px 0px 400px \" + options.backgroundColor;\n imageElement.removeEventListener(\"load\", onImageLoad);\n imageElement.removeEventListener(\"error\", onImageComplete);\n };\n imageElement.style.opacity = 0;\n imageElement.addEventListener(\"load\", onImageLoad);\n imageElement.addEventListener(\"error\", onImageComplete);\n if (imageElement.complete) {\n onImageComplete();\n }\n };\n for (var i = 0; i < imageWrappers.length; i++) {\n _loop();\n }\n};","import React from \"react\";\n\nconst ContentContainer = ({\n children,\n className,\n maxWidthClass = \"max-w-4.5xl\",\n}: React.PropsWithChildren<{\n className?: string;\n maxWidthClass?: string;\n}>) => {\n return (\n \n {children}\n
\n );\n};\n\nexport default ContentContainer;\n","import React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport { ILayoutMarkupData } from \"../../types/commonMarkup.type\";\nimport { ILang, TLang } from \"../../types/common.type\";\n\nconst getAddress = (lang: TLang): string => {\n const requisitesData = useStaticQuery(query) as {\n allMarkdownRemark?: {\n nodes?:\n | {\n fields: { language: string };\n frontmatter: { layout: ILayoutMarkupData };\n }[]\n | null;\n };\n };\n\n const requisites = requisitesData?.allMarkdownRemark?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.layout?.requisites;\n\n const address = requisites\n ? Object.entries(requisites)\n .map(([_, value]) => value)\n .join(\" \")\n : \"\";\n\n return address;\n};\n\nexport const LocalBusinessMetadata = ({\n itemProp,\n lang,\n}: {\n itemProp?: string;\n lang: TLang;\n}) => {\n const address = getAddress(lang);\n\n return (\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n
\n );\n};\n\nexport const BasicMetadata = ({ lang }: ILang) => {\n const address = getAddress(lang);\n\n return (\n <>\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n );\n};\n\ninterface HeadSeoProps extends ILang {\n title: string;\n description?: string;\n img?: string;\n siteUrl: string;\n path: string;\n}\n\nexport const HeadSeo = ({\n title,\n description,\n img,\n siteUrl,\n path,\n lang,\n}: HeadSeoProps) => {\n const descriptionText = description ?? title;\n const pageUrl = `${siteUrl}${path}`;\n const imgUrl = img ? `${siteUrl}${img}` : `${siteUrl}/siteImage.png`;\n const locale = lang === \"ru\" ? \"ru_RU\" : \"en_US\";\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n\n {title}\n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n );\n};\n\nexport const query = graphql`\n query {\n allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n layout {\n requisites {\n ein\n companyCode\n street\n city\n postalCode\n country\n phone\n }\n }\n }\n }\n }\n }\n`;\n","export function isUnitless(value) {\n return String(parseFloat(value)).length === String(value).length;\n}\n\n// Ported from Compass\n// https://github.com/Compass/compass/blob/master/core/stylesheets/compass/typography/_units.scss\n// Emulate the sass function \"unit\"\nexport function getUnit(input) {\n return String(input).match(/[\\d.\\-+]*\\s*(.*)/)[1] || '';\n}\n\n// Emulate the sass function \"unitless\"\nexport function toUnitless(length) {\n return parseFloat(length);\n}\n\n// Convert any CSS or value to any another.\n// From https://github.com/KyleAMathews/convert-css-length\nexport function convertLength(baseFontSize) {\n return (length, toUnit) => {\n const fromUnit = getUnit(length);\n\n // Optimize for cases where `from` and `to` units are accidentally the same.\n if (fromUnit === toUnit) {\n return length;\n }\n\n // Convert input length to pixels.\n let pxLength = toUnitless(length);\n if (fromUnit !== 'px') {\n if (fromUnit === 'em') {\n pxLength = toUnitless(length) * toUnitless(baseFontSize);\n } else if (fromUnit === 'rem') {\n pxLength = toUnitless(length) * toUnitless(baseFontSize);\n }\n }\n\n // Convert length in pixels to the output unit\n let outputLength = pxLength;\n if (toUnit !== 'px') {\n if (toUnit === 'em') {\n outputLength = pxLength / toUnitless(baseFontSize);\n } else if (toUnit === 'rem') {\n outputLength = pxLength / toUnitless(baseFontSize);\n } else {\n return length;\n }\n }\n return parseFloat(outputLength.toFixed(5)) + toUnit;\n };\n}\nexport function alignProperty({\n size,\n grid\n}) {\n const sizeBelow = size - size % grid;\n const sizeAbove = sizeBelow + grid;\n return size - sizeBelow < sizeAbove - size ? sizeBelow : sizeAbove;\n}\n\n// fontGrid finds a minimal grid (in rem) for the fontSize values so that the\n// lineHeight falls under a x pixels grid, 4px in the case of Material Design,\n// without changing the relative line height\nexport function fontGrid({\n lineHeight,\n pixels,\n htmlFontSize\n}) {\n return pixels / (lineHeight * htmlFontSize);\n}\n\n/**\n * generate a responsive version of a given CSS property\n * @example\n * responsiveProperty({\n * cssProperty: 'fontSize',\n * min: 15,\n * max: 20,\n * unit: 'px',\n * breakpoints: [300, 600],\n * })\n *\n * // this returns\n *\n * {\n * fontSize: '15px',\n * '@media (min-width:300px)': {\n * fontSize: '17.5px',\n * },\n * '@media (min-width:600px)': {\n * fontSize: '20px',\n * },\n * }\n * @param {Object} params\n * @param {string} params.cssProperty - The CSS property to be made responsive\n * @param {number} params.min - The smallest value of the CSS property\n * @param {number} params.max - The largest value of the CSS property\n * @param {string} [params.unit] - The unit to be used for the CSS property\n * @param {Array.number} [params.breakpoints] - An array of breakpoints\n * @param {number} [params.alignStep] - Round scaled value to fall under this grid\n * @returns {Object} responsive styles for {params.cssProperty}\n */\nexport function responsiveProperty({\n cssProperty,\n min,\n max,\n unit = 'rem',\n breakpoints = [600, 900, 1200],\n transform = null\n}) {\n const output = {\n [cssProperty]: `${min}${unit}`\n };\n const factor = (max - min) / breakpoints[breakpoints.length - 1];\n breakpoints.forEach(breakpoint => {\n let value = min + factor * breakpoint;\n if (transform !== null) {\n value = transform(value);\n }\n output[`@media (min-width:${breakpoint}px)`] = {\n [cssProperty]: `${Math.round(value * 10000) / 10000}${unit}`\n };\n });\n return output;\n}","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSkeletonUtilityClass(slot) {\n return generateUtilityClass('MuiSkeleton', slot);\n}\nconst skeletonClasses = generateUtilityClasses('MuiSkeleton', ['root', 'text', 'rectangular', 'rounded', 'circular', 'pulse', 'wave', 'withChildren', 'fitContent', 'heightAuto']);\nexport default skeletonClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"animation\", \"className\", \"component\", \"height\", \"style\", \"variant\", \"width\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { keyframes, css } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha, unstable_getUnit as getUnit, unstable_toUnitless as toUnitless } from '../styles';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getSkeletonUtilityClass } from './skeletonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n animation,\n hasChildren,\n width,\n height\n } = ownerState;\n const slots = {\n root: ['root', variant, animation, hasChildren && 'withChildren', hasChildren && !width && 'fitContent', hasChildren && !height && 'heightAuto']\n };\n return composeClasses(slots, getSkeletonUtilityClass, classes);\n};\nconst pulseKeyframe = keyframes(_t || (_t = _`\n 0% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.4;\n }\n\n 100% {\n opacity: 1;\n }\n`));\nconst waveKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n transform: translateX(-100%);\n }\n\n 50% {\n /* +0.5s of delay between each loop */\n transform: translateX(100%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n`));\nconst SkeletonRoot = styled('span', {\n name: 'MuiSkeleton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], ownerState.animation !== false && styles[ownerState.animation], ownerState.hasChildren && styles.withChildren, ownerState.hasChildren && !ownerState.width && styles.fitContent, ownerState.hasChildren && !ownerState.height && styles.heightAuto];\n }\n})(({\n theme,\n ownerState\n}) => {\n const radiusUnit = getUnit(theme.shape.borderRadius) || 'px';\n const radiusValue = toUnitless(theme.shape.borderRadius);\n return _extends({\n display: 'block',\n // Create a \"on paper\" color with sufficient contrast retaining the color\n backgroundColor: theme.vars ? theme.vars.palette.Skeleton.bg : alpha(theme.palette.text.primary, theme.palette.mode === 'light' ? 0.11 : 0.13),\n height: '1.2em'\n }, ownerState.variant === 'text' && {\n marginTop: 0,\n marginBottom: 0,\n height: 'auto',\n transformOrigin: '0 55%',\n transform: 'scale(1, 0.60)',\n borderRadius: `${radiusValue}${radiusUnit}/${Math.round(radiusValue / 0.6 * 10) / 10}${radiusUnit}`,\n '&:empty:before': {\n content: '\"\\\\00a0\"'\n }\n }, ownerState.variant === 'circular' && {\n borderRadius: '50%'\n }, ownerState.variant === 'rounded' && {\n borderRadius: (theme.vars || theme).shape.borderRadius\n }, ownerState.hasChildren && {\n '& > *': {\n visibility: 'hidden'\n }\n }, ownerState.hasChildren && !ownerState.width && {\n maxWidth: 'fit-content'\n }, ownerState.hasChildren && !ownerState.height && {\n height: 'auto'\n });\n}, ({\n ownerState\n}) => ownerState.animation === 'pulse' && css(_t3 || (_t3 = _`\n animation: ${0} 2s ease-in-out 0.5s infinite;\n `), pulseKeyframe), ({\n ownerState,\n theme\n}) => ownerState.animation === 'wave' && css(_t4 || (_t4 = _`\n position: relative;\n overflow: hidden;\n\n /* Fix bug in Safari https://bugs.webkit.org/show_bug.cgi?id=68196 */\n -webkit-mask-image: -webkit-radial-gradient(white, black);\n\n &::after {\n animation: ${0} 2s linear 0.5s infinite;\n background: linear-gradient(\n 90deg,\n transparent,\n ${0},\n transparent\n );\n content: '';\n position: absolute;\n transform: translateX(-100%); /* Avoid flash during server-side hydration */\n bottom: 0;\n left: 0;\n right: 0;\n top: 0;\n }\n `), waveKeyframe, (theme.vars || theme).palette.action.hover));\nconst Skeleton = /*#__PURE__*/React.forwardRef(function Skeleton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSkeleton'\n });\n const {\n animation = 'pulse',\n className,\n component = 'span',\n height,\n style,\n variant = 'text',\n width\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n animation,\n component,\n variant,\n hasChildren: Boolean(other.children)\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(SkeletonRoot, _extends({\n as: component,\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n style: _extends({\n width,\n height\n }, style)\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Skeleton.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The animation.\n * If `false` the animation effect is disabled.\n * @default 'pulse'\n */\n animation: PropTypes.oneOf(['pulse', 'wave', false]),\n /**\n * Optional children to infer width and height from.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Height of the skeleton.\n * Useful when you don't want to adapt the skeleton to a text element but for instance a card.\n */\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The type of content that will be rendered.\n * @default 'text'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rectangular', 'rounded', 'text']), PropTypes.string]),\n /**\n * Width of the skeleton.\n * Useful when the skeleton is inside an inline element with no width of its own.\n */\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : void 0;\nexport default Skeleton;","import React from \"react\";\n\nimport { Skeleton } from \"@mui/material\";\n\nconst SkeletonStub = () => {\n return (\n \n );\n};\n\nexport default SkeletonStub;\n","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n // @ts-ignore\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"maxRows\", \"minRows\", \"style\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_debounce as debounce, unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getStyleValue(value) {\n return parseInt(value, 10) || 0;\n}\nconst styles = {\n shadow: {\n // Visibility needed to hide the extra text area on iPads\n visibility: 'hidden',\n // Remove from the content flow\n position: 'absolute',\n // Ignore the scrollbar width\n overflow: 'hidden',\n height: 0,\n top: 0,\n left: 0,\n // Create a new layer, increase the isolation of the computed values\n transform: 'translateZ(0)'\n }\n};\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0 || obj.outerHeightStyle === 0 && !obj.overflowing;\n}\n\n/**\n *\n * Demos:\n *\n * - [Textarea Autosize](https://mui.com/base-ui/react-textarea-autosize/)\n * - [Textarea Autosize](https://mui.com/material-ui/react-textarea-autosize/)\n *\n * API:\n *\n * - [TextareaAutosize API](https://mui.com/base-ui/react-textarea-autosize/components-api/#textarea-autosize)\n */\nconst TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize(props, forwardedRef) {\n const {\n onChange,\n maxRows,\n minRows = 1,\n style,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n current: isControlled\n } = React.useRef(value != null);\n const inputRef = React.useRef(null);\n const handleRef = useForkRef(forwardedRef, inputRef);\n const shadowRef = React.useRef(null);\n const calculateTextareaStyles = React.useCallback(() => {\n const input = inputRef.current;\n const containerWindow = ownerWindow(input);\n const computedStyle = containerWindow.getComputedStyle(input);\n\n // If input's width is shrunk and it's not visible, don't sync height.\n if (computedStyle.width === '0px') {\n return {\n outerHeightStyle: 0,\n overflowing: false\n };\n }\n const inputShallow = shadowRef.current;\n inputShallow.style.width = computedStyle.width;\n inputShallow.value = input.value || props.placeholder || 'x';\n if (inputShallow.value.slice(-1) === '\\n') {\n // Certain fonts which overflow the line height will cause the textarea\n // to report a different scrollHeight depending on whether the last line\n // is empty. Make it non-empty to avoid this issue.\n inputShallow.value += ' ';\n }\n const boxSizing = computedStyle.boxSizing;\n const padding = getStyleValue(computedStyle.paddingBottom) + getStyleValue(computedStyle.paddingTop);\n const border = getStyleValue(computedStyle.borderBottomWidth) + getStyleValue(computedStyle.borderTopWidth);\n\n // The height of the inner content\n const innerHeight = inputShallow.scrollHeight;\n\n // Measure height of a textarea with a single row\n inputShallow.value = 'x';\n const singleRowHeight = inputShallow.scrollHeight;\n\n // The height of the outer content\n let outerHeight = innerHeight;\n if (minRows) {\n outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);\n }\n if (maxRows) {\n outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);\n }\n outerHeight = Math.max(outerHeight, singleRowHeight);\n\n // Take the box sizing into account for applying this value as a style.\n const outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);\n const overflowing = Math.abs(outerHeight - innerHeight) <= 1;\n return {\n outerHeightStyle,\n overflowing\n };\n }, [maxRows, minRows, props.placeholder]);\n const syncHeight = React.useCallback(() => {\n const textareaStyles = calculateTextareaStyles();\n if (isEmpty(textareaStyles)) {\n return;\n }\n const input = inputRef.current;\n input.style.height = `${textareaStyles.outerHeightStyle}px`;\n input.style.overflow = textareaStyles.overflowing ? 'hidden' : '';\n }, [calculateTextareaStyles]);\n useEnhancedEffect(() => {\n const handleResize = () => {\n syncHeight();\n };\n // Workaround a \"ResizeObserver loop completed with undelivered notifications\" error\n // in test.\n // Note that we might need to use this logic in production per https://github.com/WICG/resize-observer/issues/38\n // Also see https://github.com/mui/mui-x/issues/8733\n let rAF;\n const rAFHandleResize = () => {\n cancelAnimationFrame(rAF);\n rAF = requestAnimationFrame(() => {\n handleResize();\n });\n };\n const debounceHandleResize = debounce(handleResize);\n const input = inputRef.current;\n const containerWindow = ownerWindow(input);\n containerWindow.addEventListener('resize', debounceHandleResize);\n let resizeObserver;\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(process.env.NODE_ENV === 'test' ? rAFHandleResize : handleResize);\n resizeObserver.observe(input);\n }\n return () => {\n debounceHandleResize.clear();\n cancelAnimationFrame(rAF);\n containerWindow.removeEventListener('resize', debounceHandleResize);\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n };\n }, [calculateTextareaStyles, syncHeight]);\n useEnhancedEffect(() => {\n syncHeight();\n });\n const handleChange = event => {\n if (!isControlled) {\n syncHeight();\n }\n if (onChange) {\n onChange(event);\n }\n };\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"textarea\", _extends({\n value: value,\n onChange: handleChange,\n ref: handleRef\n // Apply the rows prop to get a \"correct\" first SSR paint\n ,\n rows: minRows,\n style: style\n }, other)), /*#__PURE__*/_jsx(\"textarea\", {\n \"aria-hidden\": true,\n className: props.className,\n readOnly: true,\n ref: shadowRef,\n tabIndex: -1,\n style: _extends({}, styles.shadow, style, {\n paddingTop: 0,\n paddingBottom: 0\n })\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * Maximum number of rows to display.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display.\n * @default 1\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n placeholder: PropTypes.string,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * @ignore\n */\n value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.number, PropTypes.string])\n} : void 0;\nexport { TextareaAutosize };","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nexport function isHostComponent(element) {\n return typeof element === 'string';\n}","export default function formControlState({\n props,\n states,\n muiFormControl\n}) {\n return states.reduce((acc, state) => {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as MuiGlobalStyles } from '@mui/styled-engine';\nimport useTheme from '../useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles({\n styles,\n themeId,\n defaultTheme = {}\n}) {\n const upperTheme = useTheme(defaultTheme);\n const globalStyles = typeof styles === 'function' ? styles(themeId ? upperTheme[themeId] || upperTheme : upperTheme) : styles;\n return /*#__PURE__*/_jsx(MuiGlobalStyles, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n defaultTheme: PropTypes.object,\n /**\n * @ignore\n */\n styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool]),\n /**\n * @ignore\n */\n themeId: PropTypes.string\n} : void 0;\nexport default GlobalStyles;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as SystemGlobalStyles } from '@mui/system';\nimport defaultTheme from '../styles/defaultTheme';\nimport THEME_ID from '../styles/identifier';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles(props) {\n return /*#__PURE__*/_jsx(SystemGlobalStyles, _extends({}, props, {\n defaultTheme: defaultTheme,\n themeId: THEME_ID\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The styles you want to apply globally.\n */\n styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool])\n} : void 0;\nexport default GlobalStyles;","// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nexport function hasValue(value) {\n return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n// True when any number or string with length.\nexport function isFilled(obj, SSR = false) {\n return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n}\n\n// Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n// True when adorned at the start.\nexport function isAdornedStart(obj) {\n return obj.startAdornment;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getInputBaseUtilityClass(slot) {\n return generateUtilityClass('MuiInputBase', slot);\n}\nconst inputBaseClasses = generateUtilityClasses('MuiInputBase', ['root', 'formControl', 'focused', 'disabled', 'adornedStart', 'adornedEnd', 'error', 'sizeSmall', 'multiline', 'colorSecondary', 'fullWidth', 'hiddenLabel', 'readOnly', 'input', 'inputSizeSmall', 'inputMultiline', 'inputTypeSearch', 'inputAdornedStart', 'inputAdornedEnd', 'inputHiddenLabel']);\nexport default inputBaseClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"aria-describedby\", \"autoComplete\", \"autoFocus\", \"className\", \"color\", \"components\", \"componentsProps\", \"defaultValue\", \"disabled\", \"disableInjectingGlobalStyles\", \"endAdornment\", \"error\", \"fullWidth\", \"id\", \"inputComponent\", \"inputProps\", \"inputRef\", \"margin\", \"maxRows\", \"minRows\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onClick\", \"onFocus\", \"onKeyDown\", \"onKeyUp\", \"placeholder\", \"readOnly\", \"renderSuffix\", \"rows\", \"size\", \"slotProps\", \"slots\", \"startAdornment\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport refType from '@mui/utils/refType';\nimport { TextareaAutosize } from '@mui/base';\nimport { isHostComponent } from '@mui/base/utils';\nimport composeClasses from '@mui/utils/composeClasses';\nimport formControlState from '../FormControl/formControlState';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport GlobalStyles from '../GlobalStyles';\nimport { isFilled } from './utils';\nimport inputBaseClasses, { getInputBaseUtilityClass } from './inputBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const rootOverridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.formControl && styles.formControl, ownerState.startAdornment && styles.adornedStart, ownerState.endAdornment && styles.adornedEnd, ownerState.error && styles.error, ownerState.size === 'small' && styles.sizeSmall, ownerState.multiline && styles.multiline, ownerState.color && styles[`color${capitalize(ownerState.color)}`], ownerState.fullWidth && styles.fullWidth, ownerState.hiddenLabel && styles.hiddenLabel];\n};\nexport const inputOverridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.input, ownerState.size === 'small' && styles.inputSizeSmall, ownerState.multiline && styles.inputMultiline, ownerState.type === 'search' && styles.inputTypeSearch, ownerState.startAdornment && styles.inputAdornedStart, ownerState.endAdornment && styles.inputAdornedEnd, ownerState.hiddenLabel && styles.inputHiddenLabel];\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n disabled,\n error,\n endAdornment,\n focused,\n formControl,\n fullWidth,\n hiddenLabel,\n multiline,\n readOnly,\n size,\n startAdornment,\n type\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', fullWidth && 'fullWidth', focused && 'focused', formControl && 'formControl', size && size !== 'medium' && `size${capitalize(size)}`, multiline && 'multiline', startAdornment && 'adornedStart', endAdornment && 'adornedEnd', hiddenLabel && 'hiddenLabel', readOnly && 'readOnly'],\n input: ['input', disabled && 'disabled', type === 'search' && 'inputTypeSearch', multiline && 'inputMultiline', size === 'small' && 'inputSizeSmall', hiddenLabel && 'inputHiddenLabel', startAdornment && 'inputAdornedStart', endAdornment && 'inputAdornedEnd', readOnly && 'readOnly']\n };\n return composeClasses(slots, getInputBaseUtilityClass, classes);\n};\nexport const InputBaseRoot = styled('div', {\n name: 'MuiInputBase',\n slot: 'Root',\n overridesResolver: rootOverridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({}, theme.typography.body1, {\n color: (theme.vars || theme).palette.text.primary,\n lineHeight: '1.4375em',\n // 23px\n boxSizing: 'border-box',\n // Prevent padding issue with fullWidth.\n position: 'relative',\n cursor: 'text',\n display: 'inline-flex',\n alignItems: 'center',\n [`&.${inputBaseClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled,\n cursor: 'default'\n }\n}, ownerState.multiline && _extends({\n padding: '4px 0 5px'\n}, ownerState.size === 'small' && {\n paddingTop: 1\n}), ownerState.fullWidth && {\n width: '100%'\n}));\nexport const InputBaseComponent = styled('input', {\n name: 'MuiInputBase',\n slot: 'Input',\n overridesResolver: inputOverridesResolver\n})(({\n theme,\n ownerState\n}) => {\n const light = theme.palette.mode === 'light';\n const placeholder = _extends({\n color: 'currentColor'\n }, theme.vars ? {\n opacity: theme.vars.opacity.inputPlaceholder\n } : {\n opacity: light ? 0.42 : 0.5\n }, {\n transition: theme.transitions.create('opacity', {\n duration: theme.transitions.duration.shorter\n })\n });\n const placeholderHidden = {\n opacity: '0 !important'\n };\n const placeholderVisible = theme.vars ? {\n opacity: theme.vars.opacity.inputPlaceholder\n } : {\n opacity: light ? 0.42 : 0.5\n };\n return _extends({\n font: 'inherit',\n letterSpacing: 'inherit',\n color: 'currentColor',\n padding: '4px 0 5px',\n border: 0,\n boxSizing: 'content-box',\n background: 'none',\n height: '1.4375em',\n // Reset 23pxthe native input line-height\n margin: 0,\n // Reset for Safari\n WebkitTapHighlightColor: 'transparent',\n display: 'block',\n // Make the flex item shrink with Firefox\n minWidth: 0,\n width: '100%',\n // Fix IE11 width issue\n animationName: 'mui-auto-fill-cancel',\n animationDuration: '10ms',\n '&::-webkit-input-placeholder': placeholder,\n '&::-moz-placeholder': placeholder,\n // Firefox 19+\n '&:-ms-input-placeholder': placeholder,\n // IE11\n '&::-ms-input-placeholder': placeholder,\n // Edge\n '&:focus': {\n outline: 0\n },\n // Reset Firefox invalid required input style\n '&:invalid': {\n boxShadow: 'none'\n },\n '&::-webkit-search-decoration': {\n // Remove the padding when type=search.\n WebkitAppearance: 'none'\n },\n // Show and hide the placeholder logic\n [`label[data-shrink=false] + .${inputBaseClasses.formControl} &`]: {\n '&::-webkit-input-placeholder': placeholderHidden,\n '&::-moz-placeholder': placeholderHidden,\n // Firefox 19+\n '&:-ms-input-placeholder': placeholderHidden,\n // IE11\n '&::-ms-input-placeholder': placeholderHidden,\n // Edge\n '&:focus::-webkit-input-placeholder': placeholderVisible,\n '&:focus::-moz-placeholder': placeholderVisible,\n // Firefox 19+\n '&:focus:-ms-input-placeholder': placeholderVisible,\n // IE11\n '&:focus::-ms-input-placeholder': placeholderVisible // Edge\n },\n [`&.${inputBaseClasses.disabled}`]: {\n opacity: 1,\n // Reset iOS opacity\n WebkitTextFillColor: (theme.vars || theme).palette.text.disabled // Fix opacity Safari bug\n },\n '&:-webkit-autofill': {\n animationDuration: '5000s',\n animationName: 'mui-auto-fill'\n }\n }, ownerState.size === 'small' && {\n paddingTop: 1\n }, ownerState.multiline && {\n height: 'auto',\n resize: 'none',\n padding: 0,\n paddingTop: 0\n }, ownerState.type === 'search' && {\n // Improve type search style.\n MozAppearance: 'textfield'\n });\n});\nconst inputGlobalStyles = /*#__PURE__*/_jsx(GlobalStyles, {\n styles: {\n '@keyframes mui-auto-fill': {\n from: {\n display: 'block'\n }\n },\n '@keyframes mui-auto-fill-cancel': {\n from: {\n display: 'block'\n }\n }\n }\n});\n\n/**\n * `InputBase` contains as few styles as possible.\n * It aims to be a simple building block for creating an input.\n * It contains a load of style reset and some state logic.\n */\nconst InputBase = /*#__PURE__*/React.forwardRef(function InputBase(inProps, ref) {\n var _slotProps$input;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInputBase'\n });\n const {\n 'aria-describedby': ariaDescribedby,\n autoComplete,\n autoFocus,\n className,\n components = {},\n componentsProps = {},\n defaultValue,\n disabled,\n disableInjectingGlobalStyles,\n endAdornment,\n fullWidth = false,\n id,\n inputComponent = 'input',\n inputProps: inputPropsProp = {},\n inputRef: inputRefProp,\n maxRows,\n minRows,\n multiline = false,\n name,\n onBlur,\n onChange,\n onClick,\n onFocus,\n onKeyDown,\n onKeyUp,\n placeholder,\n readOnly,\n renderSuffix,\n rows,\n slotProps = {},\n slots = {},\n startAdornment,\n type = 'text',\n value: valueProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;\n const {\n current: isControlled\n } = React.useRef(value != null);\n const inputRef = React.useRef();\n const handleInputRefWarning = React.useCallback(instance => {\n if (process.env.NODE_ENV !== 'production') {\n if (instance && instance.nodeName !== 'INPUT' && !instance.focus) {\n console.error(['MUI: You have provided a `inputComponent` to the input component', 'that does not correctly handle the `ref` prop.', 'Make sure the `ref` prop is called with a HTMLInputElement.'].join('\\n'));\n }\n }\n }, []);\n const handleInputRef = useForkRef(inputRef, inputRefProp, inputPropsProp.ref, handleInputRefWarning);\n const [focused, setFocused] = React.useState(false);\n const muiFormControl = useFormControl();\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (muiFormControl) {\n return muiFormControl.registerEffect();\n }\n return undefined;\n }, [muiFormControl]);\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'disabled', 'error', 'hiddenLabel', 'size', 'required', 'filled']\n });\n fcs.focused = muiFormControl ? muiFormControl.focused : focused;\n\n // The blur won't fire when the disabled state is set on a focused input.\n // We need to book keep the focused state manually.\n React.useEffect(() => {\n if (!muiFormControl && disabled && focused) {\n setFocused(false);\n if (onBlur) {\n onBlur();\n }\n }\n }, [muiFormControl, disabled, focused, onBlur]);\n const onFilled = muiFormControl && muiFormControl.onFilled;\n const onEmpty = muiFormControl && muiFormControl.onEmpty;\n const checkDirty = React.useCallback(obj => {\n if (isFilled(obj)) {\n if (onFilled) {\n onFilled();\n }\n } else if (onEmpty) {\n onEmpty();\n }\n }, [onFilled, onEmpty]);\n useEnhancedEffect(() => {\n if (isControlled) {\n checkDirty({\n value\n });\n }\n }, [value, checkDirty, isControlled]);\n const handleFocus = event => {\n // Fix a bug with IE11 where the focus/blur events are triggered\n // while the component is disabled.\n if (fcs.disabled) {\n event.stopPropagation();\n return;\n }\n if (onFocus) {\n onFocus(event);\n }\n if (inputPropsProp.onFocus) {\n inputPropsProp.onFocus(event);\n }\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n } else {\n setFocused(true);\n }\n };\n const handleBlur = event => {\n if (onBlur) {\n onBlur(event);\n }\n if (inputPropsProp.onBlur) {\n inputPropsProp.onBlur(event);\n }\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n } else {\n setFocused(false);\n }\n };\n const handleChange = (event, ...args) => {\n if (!isControlled) {\n const element = event.target || inputRef.current;\n if (element == null) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Expected valid input target. Did you use a custom \\`inputComponent\\` and forget to forward refs? See https://mui.com/r/input-component-ref-interface for more info.` : _formatMuiErrorMessage(1));\n }\n checkDirty({\n value: element.value\n });\n }\n if (inputPropsProp.onChange) {\n inputPropsProp.onChange(event, ...args);\n }\n\n // Perform in the willUpdate\n if (onChange) {\n onChange(event, ...args);\n }\n };\n\n // Check the input state on mount, in case it was filled by the user\n // or auto filled by the browser before the hydration (for SSR).\n React.useEffect(() => {\n checkDirty(inputRef.current);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const handleClick = event => {\n if (inputRef.current && event.currentTarget === event.target) {\n inputRef.current.focus();\n }\n if (onClick) {\n onClick(event);\n }\n };\n let InputComponent = inputComponent;\n let inputProps = inputPropsProp;\n if (multiline && InputComponent === 'input') {\n if (rows) {\n if (process.env.NODE_ENV !== 'production') {\n if (minRows || maxRows) {\n console.warn('MUI: You can not use the `minRows` or `maxRows` props when the input `rows` prop is set.');\n }\n }\n inputProps = _extends({\n type: undefined,\n minRows: rows,\n maxRows: rows\n }, inputProps);\n } else {\n inputProps = _extends({\n type: undefined,\n maxRows,\n minRows\n }, inputProps);\n }\n InputComponent = TextareaAutosize;\n }\n const handleAutoFill = event => {\n // Provide a fake value as Chrome might not let you access it for security reasons.\n checkDirty(event.animationName === 'mui-auto-fill-cancel' ? inputRef.current : {\n value: 'x'\n });\n };\n React.useEffect(() => {\n if (muiFormControl) {\n muiFormControl.setAdornedStart(Boolean(startAdornment));\n }\n }, [muiFormControl, startAdornment]);\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n disabled: fcs.disabled,\n endAdornment,\n error: fcs.error,\n focused: fcs.focused,\n formControl: muiFormControl,\n fullWidth,\n hiddenLabel: fcs.hiddenLabel,\n multiline,\n size: fcs.size,\n startAdornment,\n type\n });\n const classes = useUtilityClasses(ownerState);\n const Root = slots.root || components.Root || InputBaseRoot;\n const rootProps = slotProps.root || componentsProps.root || {};\n const Input = slots.input || components.Input || InputBaseComponent;\n inputProps = _extends({}, inputProps, (_slotProps$input = slotProps.input) != null ? _slotProps$input : componentsProps.input);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [!disableInjectingGlobalStyles && inputGlobalStyles, /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, !isHostComponent(Root) && {\n ownerState: _extends({}, ownerState, rootProps.ownerState)\n }, {\n ref: ref,\n onClick: handleClick\n }, other, {\n className: clsx(classes.root, rootProps.className, className, readOnly && 'MuiInputBase-readOnly'),\n children: [startAdornment, /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(Input, _extends({\n ownerState: ownerState,\n \"aria-invalid\": fcs.error,\n \"aria-describedby\": ariaDescribedby,\n autoComplete: autoComplete,\n autoFocus: autoFocus,\n defaultValue: defaultValue,\n disabled: fcs.disabled,\n id: id,\n onAnimationStart: handleAutoFill,\n name: name,\n placeholder: placeholder,\n readOnly: readOnly,\n required: fcs.required,\n rows: rows,\n value: value,\n onKeyDown: onKeyDown,\n onKeyUp: onKeyUp,\n type: type\n }, inputProps, !isHostComponent(Input) && {\n as: InputComponent,\n ownerState: _extends({}, ownerState, inputProps.ownerState)\n }, {\n ref: handleInputRef,\n className: clsx(classes.input, inputProps.className, readOnly && 'MuiInputBase-readOnly'),\n onBlur: handleBlur,\n onChange: handleChange,\n onFocus: handleFocus\n }))\n }), endAdornment, renderSuffix ? renderSuffix(_extends({}, fcs, {\n startAdornment\n })) : null]\n }))]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputBase.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n 'aria-describedby': PropTypes.string,\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Input: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, GlobalStyles for the auto-fill keyframes will not be injected/removed on mount/unmount. Make sure to inject them at the top of your application.\n * This option is intended to help with boosting the initial rendering performance if you are loading a big amount of Input components at once.\n * @default false\n */\n disableInjectingGlobalStyles: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the `input` will indicate an error.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n * @default 'input'\n */\n inputComponent: elementTypeAcceptingRef,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @default {}\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the `input` is blurred.\n *\n * Notice that the first argument (event) might be undefined.\n */\n onBlur: PropTypes.func,\n /**\n * Callback fired when the value is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * Callback fired when the `input` doesn't satisfy its constraints.\n */\n onInvalid: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * @ignore\n */\n renderSuffix: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The size of the component.\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n input: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n * @default 'text'\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nexport default InputBase;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getInputUtilityClass(slot) {\n return generateUtilityClass('MuiInput', slot);\n}\nconst inputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiInput', ['root', 'underline', 'input']));\nexport default inputClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport deepmerge from '@mui/utils/deepmerge';\nimport refType from '@mui/utils/refType';\nimport InputBase from '../InputBase';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport inputClasses, { getInputUtilityClass } from './inputClasses';\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableUnderline\n } = ownerState;\n const slots = {\n root: ['root', !disableUnderline && 'underline'],\n input: ['input']\n };\n const composedClasses = composeClasses(slots, getInputUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputRoot = styled(InputBaseRoot, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInput',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n }\n})(({\n theme,\n ownerState\n}) => {\n const light = theme.palette.mode === 'light';\n let bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n if (theme.vars) {\n bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;\n }\n return _extends({\n position: 'relative'\n }, ownerState.formControl && {\n 'label + &': {\n marginTop: 16\n }\n }, !ownerState.disableUnderline && {\n '&::after': {\n borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\"',\n position: 'absolute',\n right: 0,\n transform: 'scaleX(0)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n [`&.${inputClasses.focused}:after`]: {\n // translateX(0) is a workaround for Safari transform scale bug\n // See https://github.com/mui/material-ui/issues/31766\n transform: 'scaleX(1) translateX(0)'\n },\n [`&.${inputClasses.error}`]: {\n '&::before, &::after': {\n borderBottomColor: (theme.vars || theme).palette.error.main\n }\n },\n '&::before': {\n borderBottom: `1px solid ${bottomLineColor}`,\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\\\\00a0\"',\n position: 'absolute',\n right: 0,\n transition: theme.transitions.create('border-bottom-color', {\n duration: theme.transitions.duration.shorter\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n [`&:hover:not(.${inputClasses.disabled}, .${inputClasses.error}):before`]: {\n borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n borderBottom: `1px solid ${bottomLineColor}`\n }\n },\n [`&.${inputClasses.disabled}:before`]: {\n borderBottomStyle: 'dotted'\n }\n });\n});\nconst InputInput = styled(InputBaseInput, {\n name: 'MuiInput',\n slot: 'Input',\n overridesResolver: inputBaseInputOverridesResolver\n})({});\nconst Input = /*#__PURE__*/React.forwardRef(function Input(inProps, ref) {\n var _ref, _slots$root, _ref2, _slots$input;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInput'\n });\n const {\n disableUnderline,\n components = {},\n componentsProps: componentsPropsProp,\n fullWidth = false,\n inputComponent = 'input',\n multiline = false,\n slotProps,\n slots = {},\n type = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const classes = useUtilityClasses(props);\n const ownerState = {\n disableUnderline\n };\n const inputComponentsProps = {\n root: {\n ownerState\n }\n };\n const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(slotProps != null ? slotProps : componentsPropsProp, inputComponentsProps) : inputComponentsProps;\n const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : InputRoot;\n const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : InputInput;\n return /*#__PURE__*/_jsx(InputBase, _extends({\n slots: {\n root: RootSlot,\n input: InputSlot\n },\n slotProps: componentsProps,\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Input.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Input: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the `input` will not have an underline.\n */\n disableUnderline: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the `input` will indicate an error.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n * @default 'input'\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @default {}\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the value is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n input: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n * @default 'text'\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nInput.muiName = 'Input';\nexport default Input;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getFilledInputUtilityClass(slot) {\n return generateUtilityClass('MuiFilledInput', slot);\n}\nconst filledInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiFilledInput', ['root', 'underline', 'input']));\nexport default filledInputClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"hiddenLabel\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport deepmerge from '@mui/utils/deepmerge';\nimport refType from '@mui/utils/refType';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport InputBase from '../InputBase';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport filledInputClasses, { getFilledInputUtilityClass } from './filledInputClasses';\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableUnderline\n } = ownerState;\n const slots = {\n root: ['root', !disableUnderline && 'underline'],\n input: ['input']\n };\n const composedClasses = composeClasses(slots, getFilledInputUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst FilledInputRoot = styled(InputBaseRoot, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiFilledInput',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _palette;\n const light = theme.palette.mode === 'light';\n const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)';\n const hoverBackground = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.13)';\n const disabledBackground = light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)';\n return _extends({\n position: 'relative',\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,\n borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n borderTopRightRadius: (theme.vars || theme).shape.borderRadius,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n '&:hover': {\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.hoverBg : hoverBackground,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n }\n },\n [`&.${filledInputClasses.focused}`]: {\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n },\n [`&.${filledInputClasses.disabled}`]: {\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground\n }\n }, !ownerState.disableUnderline && {\n '&::after': {\n borderBottom: `2px solid ${(_palette = (theme.vars || theme).palette[ownerState.color || 'primary']) == null ? void 0 : _palette.main}`,\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\"',\n position: 'absolute',\n right: 0,\n transform: 'scaleX(0)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n [`&.${filledInputClasses.focused}:after`]: {\n // translateX(0) is a workaround for Safari transform scale bug\n // See https://github.com/mui/material-ui/issues/31766\n transform: 'scaleX(1) translateX(0)'\n },\n [`&.${filledInputClasses.error}`]: {\n '&::before, &::after': {\n borderBottomColor: (theme.vars || theme).palette.error.main\n }\n },\n '&::before': {\n borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\\\\00a0\"',\n position: 'absolute',\n right: 0,\n transition: theme.transitions.create('border-bottom-color', {\n duration: theme.transitions.duration.shorter\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n [`&:hover:not(.${filledInputClasses.disabled}, .${filledInputClasses.error}):before`]: {\n borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`\n },\n [`&.${filledInputClasses.disabled}:before`]: {\n borderBottomStyle: 'dotted'\n }\n }, ownerState.startAdornment && {\n paddingLeft: 12\n }, ownerState.endAdornment && {\n paddingRight: 12\n }, ownerState.multiline && _extends({\n padding: '25px 12px 8px'\n }, ownerState.size === 'small' && {\n paddingTop: 21,\n paddingBottom: 4\n }, ownerState.hiddenLabel && {\n paddingTop: 16,\n paddingBottom: 17\n }, ownerState.hiddenLabel && ownerState.size === 'small' && {\n paddingTop: 8,\n paddingBottom: 9\n }));\n});\nconst FilledInputInput = styled(InputBaseInput, {\n name: 'MuiFilledInput',\n slot: 'Input',\n overridesResolver: inputBaseInputOverridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n paddingTop: 25,\n paddingRight: 12,\n paddingBottom: 8,\n paddingLeft: 12\n}, !theme.vars && {\n '&:-webkit-autofill': {\n WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n caretColor: theme.palette.mode === 'light' ? null : '#fff',\n borderTopLeftRadius: 'inherit',\n borderTopRightRadius: 'inherit'\n }\n}, theme.vars && {\n '&:-webkit-autofill': {\n borderTopLeftRadius: 'inherit',\n borderTopRightRadius: 'inherit'\n },\n [theme.getColorSchemeSelector('dark')]: {\n '&:-webkit-autofill': {\n WebkitBoxShadow: '0 0 0 100px #266798 inset',\n WebkitTextFillColor: '#fff',\n caretColor: '#fff'\n }\n }\n}, ownerState.size === 'small' && {\n paddingTop: 21,\n paddingBottom: 4\n}, ownerState.hiddenLabel && {\n paddingTop: 16,\n paddingBottom: 17\n}, ownerState.startAdornment && {\n paddingLeft: 0\n}, ownerState.endAdornment && {\n paddingRight: 0\n}, ownerState.hiddenLabel && ownerState.size === 'small' && {\n paddingTop: 8,\n paddingBottom: 9\n}, ownerState.multiline && {\n paddingTop: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0\n}));\nconst FilledInput = /*#__PURE__*/React.forwardRef(function FilledInput(inProps, ref) {\n var _ref, _slots$root, _ref2, _slots$input;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFilledInput'\n });\n const {\n components = {},\n componentsProps: componentsPropsProp,\n fullWidth = false,\n // declare here to prevent spreading to DOM\n inputComponent = 'input',\n multiline = false,\n slotProps,\n slots = {},\n type = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n fullWidth,\n inputComponent,\n multiline,\n type\n });\n const classes = useUtilityClasses(props);\n const filledInputComponentsProps = {\n root: {\n ownerState\n },\n input: {\n ownerState\n }\n };\n const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(filledInputComponentsProps, slotProps != null ? slotProps : componentsPropsProp) : filledInputComponentsProps;\n const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : FilledInputRoot;\n const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : FilledInputInput;\n return /*#__PURE__*/_jsx(InputBase, _extends({\n slots: {\n root: RootSlot,\n input: InputSlot\n },\n componentsProps: componentsProps,\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FilledInput.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Input: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the input will not have an underline.\n */\n disableUnderline: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the `input` will indicate an error.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * If `true`, the label is hidden.\n * This is used to increase density for a `FilledInput`.\n * Be sure to add `aria-label` to the `input` element.\n * @default false\n */\n hiddenLabel: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n * @default 'input'\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @default {}\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the value is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n input: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n * @default 'text'\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nFilledInput.muiName = 'Input';\nexport default FilledInput;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"classes\", \"className\", \"label\", \"notched\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NotchedOutlineRoot = styled('fieldset', {\n shouldForwardProp: rootShouldForwardProp\n})({\n textAlign: 'left',\n position: 'absolute',\n bottom: 0,\n right: 0,\n top: -5,\n left: 0,\n margin: 0,\n padding: '0 8px',\n pointerEvents: 'none',\n borderRadius: 'inherit',\n borderStyle: 'solid',\n borderWidth: 1,\n overflow: 'hidden',\n minWidth: '0%'\n});\nconst NotchedOutlineLegend = styled('legend', {\n shouldForwardProp: rootShouldForwardProp\n})(({\n ownerState,\n theme\n}) => _extends({\n float: 'unset',\n // Fix conflict with bootstrap\n width: 'auto',\n // Fix conflict with bootstrap\n overflow: 'hidden'\n}, !ownerState.withLabel && {\n padding: 0,\n lineHeight: '11px',\n // sync with `height` in `legend` styles\n transition: theme.transitions.create('width', {\n duration: 150,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.withLabel && _extends({\n display: 'block',\n // Fix conflict with normalize.css and sanitize.css\n padding: 0,\n height: 11,\n // sync with `lineHeight` in `legend` styles\n fontSize: '0.75em',\n visibility: 'hidden',\n maxWidth: 0.01,\n transition: theme.transitions.create('max-width', {\n duration: 50,\n easing: theme.transitions.easing.easeOut\n }),\n whiteSpace: 'nowrap',\n '& > span': {\n paddingLeft: 5,\n paddingRight: 5,\n display: 'inline-block',\n opacity: 0,\n visibility: 'visible'\n }\n}, ownerState.notched && {\n maxWidth: '100%',\n transition: theme.transitions.create('max-width', {\n duration: 100,\n easing: theme.transitions.easing.easeOut,\n delay: 50\n })\n})));\n\n/**\n * @ignore - internal component.\n */\nexport default function NotchedOutline(props) {\n const {\n className,\n label,\n notched\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const withLabel = label != null && label !== '';\n const ownerState = _extends({}, props, {\n notched,\n withLabel\n });\n return /*#__PURE__*/_jsx(NotchedOutlineRoot, _extends({\n \"aria-hidden\": true,\n className: className,\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(NotchedOutlineLegend, {\n ownerState: ownerState,\n children: withLabel ? /*#__PURE__*/_jsx(\"span\", {\n children: label\n }) : // notranslate needed while Google Translate will not fix zero-width space issue\n _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n }))\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? NotchedOutline.propTypes = {\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The label.\n */\n label: PropTypes.node,\n /**\n * If `true`, the outline is notched to accommodate the label.\n */\n notched: PropTypes.bool.isRequired,\n /**\n * @ignore\n */\n style: PropTypes.object\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getOutlinedInputUtilityClass(slot) {\n return generateUtilityClass('MuiOutlinedInput', slot);\n}\nconst outlinedInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiOutlinedInput', ['root', 'notchedOutline', 'input']));\nexport default outlinedInputClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"components\", \"fullWidth\", \"inputComponent\", \"label\", \"multiline\", \"notched\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport NotchedOutline from './NotchedOutline';\nimport useFormControl from '../FormControl/useFormControl';\nimport formControlState from '../FormControl/formControlState';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport outlinedInputClasses, { getOutlinedInputUtilityClass } from './outlinedInputClasses';\nimport InputBase, { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n notchedOutline: ['notchedOutline'],\n input: ['input']\n };\n const composedClasses = composeClasses(slots, getOutlinedInputUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst OutlinedInputRoot = styled(InputBaseRoot, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiOutlinedInput',\n slot: 'Root',\n overridesResolver: inputBaseRootOverridesResolver\n})(({\n theme,\n ownerState\n}) => {\n const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n return _extends({\n position: 'relative',\n borderRadius: (theme.vars || theme).shape.borderRadius,\n [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: (theme.vars || theme).palette.text.primary\n },\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n }\n },\n [`&.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: (theme.vars || theme).palette[ownerState.color].main,\n borderWidth: 2\n },\n [`&.${outlinedInputClasses.error} .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: (theme.vars || theme).palette.error.main\n },\n [`&.${outlinedInputClasses.disabled} .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: (theme.vars || theme).palette.action.disabled\n }\n }, ownerState.startAdornment && {\n paddingLeft: 14\n }, ownerState.endAdornment && {\n paddingRight: 14\n }, ownerState.multiline && _extends({\n padding: '16.5px 14px'\n }, ownerState.size === 'small' && {\n padding: '8.5px 14px'\n }));\n});\nconst NotchedOutlineRoot = styled(NotchedOutline, {\n name: 'MuiOutlinedInput',\n slot: 'NotchedOutline',\n overridesResolver: (props, styles) => styles.notchedOutline\n})(({\n theme\n}) => {\n const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n return {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n };\n});\nconst OutlinedInputInput = styled(InputBaseInput, {\n name: 'MuiOutlinedInput',\n slot: 'Input',\n overridesResolver: inputBaseInputOverridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n padding: '16.5px 14px'\n}, !theme.vars && {\n '&:-webkit-autofill': {\n WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n caretColor: theme.palette.mode === 'light' ? null : '#fff',\n borderRadius: 'inherit'\n }\n}, theme.vars && {\n '&:-webkit-autofill': {\n borderRadius: 'inherit'\n },\n [theme.getColorSchemeSelector('dark')]: {\n '&:-webkit-autofill': {\n WebkitBoxShadow: '0 0 0 100px #266798 inset',\n WebkitTextFillColor: '#fff',\n caretColor: '#fff'\n }\n }\n}, ownerState.size === 'small' && {\n padding: '8.5px 14px'\n}, ownerState.multiline && {\n padding: 0\n}, ownerState.startAdornment && {\n paddingLeft: 0\n}, ownerState.endAdornment && {\n paddingRight: 0\n}));\nconst OutlinedInput = /*#__PURE__*/React.forwardRef(function OutlinedInput(inProps, ref) {\n var _ref, _slots$root, _ref2, _slots$input, _React$Fragment;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiOutlinedInput'\n });\n const {\n components = {},\n fullWidth = false,\n inputComponent = 'input',\n label,\n multiline = false,\n notched,\n slots = {},\n type = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const classes = useUtilityClasses(props);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'disabled', 'error', 'focused', 'hiddenLabel', 'size', 'required']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n disabled: fcs.disabled,\n error: fcs.error,\n focused: fcs.focused,\n formControl: muiFormControl,\n fullWidth,\n hiddenLabel: fcs.hiddenLabel,\n multiline,\n size: fcs.size,\n type\n });\n const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : OutlinedInputRoot;\n const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : OutlinedInputInput;\n return /*#__PURE__*/_jsx(InputBase, _extends({\n slots: {\n root: RootSlot,\n input: InputSlot\n },\n renderSuffix: state => /*#__PURE__*/_jsx(NotchedOutlineRoot, {\n ownerState: ownerState,\n className: classes.notchedOutline,\n label: label != null && label !== '' && fcs.required ? _React$Fragment || (_React$Fragment = /*#__PURE__*/_jsxs(React.Fragment, {\n children: [label, \"\\u2009\", '*']\n })) : label,\n notched: typeof notched !== 'undefined' ? notched : Boolean(state.startAdornment || state.filled || state.focused)\n }),\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other, {\n classes: _extends({}, classes, {\n notchedOutline: null\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? OutlinedInput.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Input: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n disabled: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the `input` will indicate an error.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n * @default 'input'\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @default {}\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * The label of the `input`. It is only used for layout. The actual labelling\n * is handled by `InputLabel`.\n */\n label: PropTypes.node,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * If `true`, the outline is notched to accommodate the label.\n */\n notched: PropTypes.bool,\n /**\n * Callback fired when the value is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n input: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n * @default 'text'\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nOutlinedInput.muiName = 'Input';\nexport default OutlinedInput;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n focused,\n disabled,\n error,\n filled,\n required\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n name: 'MuiFormLabel',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n lineHeight: '1.4375em',\n padding: 0,\n position: 'relative',\n [`&.${formLabelClasses.focused}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${formLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormLabel'\n });\n const {\n children,\n className,\n component = 'label'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n component,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableAnimation\", \"margin\", \"shrink\", \"variant\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport FormLabel, { formLabelClasses } from '../FormLabel';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getInputLabelUtilityClasses } from './inputLabelClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n formControl,\n size,\n shrink,\n disableAnimation,\n variant,\n required\n } = ownerState;\n const slots = {\n root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size && size !== 'normal' && `size${capitalize(size)}`, variant],\n asterisk: [required && 'asterisk']\n };\n const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputLabelRoot = styled(FormLabel, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInputLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, ownerState.focused && styles.focused, styles[ownerState.variant]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'block',\n transformOrigin: 'top left',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n}, ownerState.formControl && {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n // Compensation for the `Input.inputSizeSmall` style.\n transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n transform: 'translate(0, -1.5px) scale(0.75)',\n transformOrigin: 'top left',\n maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.variant === 'filled' && _extends({\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && _extends({\n userSelect: 'none',\n pointerEvents: 'auto',\n transform: 'translate(12px, 7px) scale(0.75)',\n maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && _extends({\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n userSelect: 'none',\n pointerEvents: 'auto',\n // Theoretically, we should have (8+5)*2/0.75 = 34px\n // but it feels a better when it bleeds a bit on the left, so 32px.\n maxWidth: 'calc(133% - 32px)',\n transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n const props = useThemeProps({\n name: 'MuiInputLabel',\n props: inProps\n });\n const {\n disableAnimation = false,\n shrink: shrinkProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n let shrink = shrinkProp;\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['size', 'variant', 'required', 'focused']\n });\n const ownerState = _extends({}, props, {\n disableAnimation,\n formControl: muiFormControl,\n shrink,\n size: fcs.size,\n variant: fcs.variant,\n required: fcs.required,\n focused: fcs.focused\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(InputLabelRoot, _extends({\n \"data-shrink\": shrink,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the transition animation is disabled.\n * @default false\n */\n disableAnimation: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` of this label is focused.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * if `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * If `true`, the label is shrunk.\n */\n shrink: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'normal'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;","import isMuiElement from '@mui/utils/isMuiElement';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormControlUtilityClasses(slot) {\n return generateUtilityClass('MuiFormControl', slot);\n}\nconst formControlClasses = generateUtilityClasses('MuiFormControl', ['root', 'marginNone', 'marginNormal', 'marginDense', 'fullWidth', 'disabled']);\nexport default formControlClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"focused\", \"fullWidth\", \"hiddenLabel\", \"margin\", \"required\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { isFilled, isAdornedStart } from '../InputBase/utils';\nimport capitalize from '../utils/capitalize';\nimport isMuiElement from '../utils/isMuiElement';\nimport FormControlContext from './FormControlContext';\nimport { getFormControlUtilityClasses } from './formControlClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n margin,\n fullWidth\n } = ownerState;\n const slots = {\n root: ['root', margin !== 'none' && `margin${capitalize(margin)}`, fullWidth && 'fullWidth']\n };\n return composeClasses(slots, getFormControlUtilityClasses, classes);\n};\nconst FormControlRoot = styled('div', {\n name: 'MuiFormControl',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, styles[`margin${capitalize(ownerState.margin)}`], ownerState.fullWidth && styles.fullWidth);\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inline-flex',\n flexDirection: 'column',\n position: 'relative',\n // Reset fieldset default style.\n minWidth: 0,\n padding: 0,\n margin: 0,\n border: 0,\n verticalAlign: 'top'\n}, ownerState.margin === 'normal' && {\n marginTop: 16,\n marginBottom: 8\n}, ownerState.margin === 'dense' && {\n marginTop: 8,\n marginBottom: 4\n}, ownerState.fullWidth && {\n width: '100%'\n}));\n\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibility and ensures that the state always stays\n * consistent across the children of the `FormControl`.\n * This context is used by the following components:\n *\n * - FormLabel\n * - FormHelperText\n * - Input\n * - InputLabel\n *\n * You can find one composition example below and more going to [the demos](/material-ui/react-text-field/#components).\n *\n * ```jsx\n * \n * Email address\n * \n * We'll never share your email.\n * \n * ```\n *\n * ⚠️ Only one `InputBase` can be used within a FormControl because it creates visual inconsistencies.\n * For instance, only one input can be focused at the same time, the state shouldn't be shared.\n */\nconst FormControl = /*#__PURE__*/React.forwardRef(function FormControl(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormControl'\n });\n const {\n children,\n className,\n color = 'primary',\n component = 'div',\n disabled = false,\n error = false,\n focused: visuallyFocused,\n fullWidth = false,\n hiddenLabel = false,\n margin = 'none',\n required = false,\n size = 'medium',\n variant = 'outlined'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disabled,\n error,\n fullWidth,\n hiddenLabel,\n margin,\n required,\n size,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const [adornedStart, setAdornedStart] = React.useState(() => {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n let initialAdornedStart = false;\n if (children) {\n React.Children.forEach(children, child => {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n const input = isMuiElement(child, ['Select']) ? child.props.input : child;\n if (input && isAdornedStart(input.props)) {\n initialAdornedStart = true;\n }\n });\n }\n return initialAdornedStart;\n });\n const [filled, setFilled] = React.useState(() => {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n let initialFilled = false;\n if (children) {\n React.Children.forEach(children, child => {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n if (isFilled(child.props, true) || isFilled(child.props.inputProps, true)) {\n initialFilled = true;\n }\n });\n }\n return initialFilled;\n });\n const [focusedState, setFocused] = React.useState(false);\n if (disabled && focusedState) {\n setFocused(false);\n }\n const focused = visuallyFocused !== undefined && !disabled ? visuallyFocused : focusedState;\n let registerEffect;\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const registeredInput = React.useRef(false);\n registerEffect = () => {\n if (registeredInput.current) {\n console.error(['MUI: There are multiple `InputBase` components inside a FormControl.', 'This creates visual inconsistencies, only use one `InputBase`.'].join('\\n'));\n }\n registeredInput.current = true;\n return () => {\n registeredInput.current = false;\n };\n };\n }\n const childContext = React.useMemo(() => {\n return {\n adornedStart,\n setAdornedStart,\n color,\n disabled,\n error,\n filled,\n focused,\n fullWidth,\n hiddenLabel,\n size,\n onBlur: () => {\n setFocused(false);\n },\n onEmpty: () => {\n setFilled(false);\n },\n onFilled: () => {\n setFilled(true);\n },\n onFocus: () => {\n setFocused(true);\n },\n registerEffect,\n required,\n variant\n };\n }, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, required, size, variant]);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsx(FormControlRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControl.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label, input and helper text should be displayed in a disabled state.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n * @default false\n */\n error: PropTypes.bool,\n /**\n * If `true`, the component is displayed in focused state.\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the component will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * If `true`, the label is hidden.\n * This is used to increase density for a `FilledInput`.\n * Be sure to add `aria-label` to the `input` element.\n * @default false\n */\n hiddenLabel: PropTypes.bool,\n /**\n * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n * @default 'none'\n */\n margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n /**\n * If `true`, the label will indicate that the `input` is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * @default 'outlined'\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default FormControl;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormHelperTextUtilityClasses(slot) {\n return generateUtilityClass('MuiFormHelperText', slot);\n}\nconst formHelperTextClasses = generateUtilityClasses('MuiFormHelperText', ['root', 'error', 'disabled', 'sizeSmall', 'sizeMedium', 'contained', 'focused', 'filled', 'required']);\nexport default formHelperTextClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"margin\", \"required\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport capitalize from '../utils/capitalize';\nimport formHelperTextClasses, { getFormHelperTextUtilityClasses } from './formHelperTextClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n contained,\n size,\n disabled,\n error,\n filled,\n focused,\n required\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', error && 'error', size && `size${capitalize(size)}`, contained && 'contained', focused && 'focused', filled && 'filled', required && 'required']\n };\n return composeClasses(slots, getFormHelperTextUtilityClasses, classes);\n};\nconst FormHelperTextRoot = styled('p', {\n name: 'MuiFormHelperText',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.size && styles[`size${capitalize(ownerState.size)}`], ownerState.contained && styles.contained, ownerState.filled && styles.filled];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.caption, {\n textAlign: 'left',\n marginTop: 3,\n marginRight: 0,\n marginBottom: 0,\n marginLeft: 0,\n [`&.${formHelperTextClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formHelperTextClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}, ownerState.size === 'small' && {\n marginTop: 4\n}, ownerState.contained && {\n marginLeft: 14,\n marginRight: 14\n}));\nconst FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormHelperText'\n });\n const {\n children,\n className,\n component = 'p'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['variant', 'size', 'disabled', 'error', 'filled', 'focused', 'required']\n });\n const ownerState = _extends({}, props, {\n component,\n contained: fcs.variant === 'filled' || fcs.variant === 'outlined',\n variant: fcs.variant,\n size: fcs.size,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormHelperTextRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: children === ' ' ? // notranslate needed while Google Translate will not fix zero-width space issue\n _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n })) : children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormHelperText.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n *\n * If `' '` is provided, the component reserves one line height for displaying a future message.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the helper text should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, helper text should be displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the helper text should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the helper text should use focused classes key.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * If `true`, the helper text should use required classes key.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined', 'standard']), PropTypes.string])\n} : void 0;\nexport default FormHelperText;","import ownerDocument from '@mui/utils/ownerDocument';\nexport default ownerDocument;","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nexport function extractEventHandlers(object, excludeKeys = []) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nexport function omitEventHandlers(object) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"elementType\", \"externalSlotProps\", \"ownerState\", \"skipResolvingSlotProps\"];\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { appendOwnerState } from './appendOwnerState';\nimport { mergeSlotProps } from './mergeSlotProps';\nimport { resolveComponentProps } from './resolveComponentProps';\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nexport function useSlotProps(parameters) {\n var _parameters$additiona;\n const {\n elementType,\n externalSlotProps,\n ownerState,\n skipResolvingSlotProps = false\n } = parameters,\n rest = _objectWithoutPropertiesLoose(parameters, _excluded);\n const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n const {\n props: mergedProps,\n internalRef\n } = mergeSlotProps(_extends({}, rest, {\n externalSlotProps: resolvedComponentsProps\n }));\n const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_parameters$additiona = parameters.additionalProps) == null ? void 0 : _parameters$additiona.ref);\n const props = appendOwnerState(elementType, _extends({}, mergedProps, {\n ref\n }), ownerState);\n return props;\n}","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nexport function resolveComponentProps(componentProps, ownerState, slotState) {\n if (typeof componentProps === 'function') {\n return componentProps(ownerState, slotState);\n }\n return componentProps;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport clsx from 'clsx';\nimport { extractEventHandlers } from './extractEventHandlers';\nimport { omitEventHandlers } from './omitEventHandlers';\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nexport function mergeSlotProps(parameters) {\n const {\n getSlotProps,\n additionalProps,\n externalSlotProps,\n externalForwardedProps,\n className\n } = parameters;\n if (!getSlotProps) {\n // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n // so we can simply merge all the props without having to worry about extracting event handlers.\n const joinedClasses = clsx(additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n const mergedStyle = _extends({}, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, additionalProps, externalForwardedProps, externalSlotProps);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: undefined\n };\n }\n\n // In this case, getSlotProps is responsible for calling the external event handlers.\n // We don't need to include them in the merged props because of this.\n\n const eventHandlers = extractEventHandlers(_extends({}, externalForwardedProps, externalSlotProps));\n const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n const internalSlotProps = getSlotProps(eventHandlers);\n\n // The order of classes is important here.\n // Emotion (that we use in libraries consuming Base UI) depends on this order\n // to properly override style. It requires the most important classes to be last\n // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n const joinedClasses = clsx(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n const mergedStyle = _extends({}, internalSlotProps == null ? void 0 : internalSlotProps.style, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, internalSlotProps, additionalProps, otherPropsWithoutEventHandlers, componentsPropsWithoutEventHandlers);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: internalSlotProps.ref\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { isHostComponent } from './isHostComponent';\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nexport function appendOwnerState(elementType, otherProps, ownerState) {\n if (elementType === undefined || isHostComponent(elementType)) {\n return otherProps;\n }\n return _extends({}, otherProps, {\n ownerState: _extends({}, otherProps.ownerState, ownerState)\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RtlContext = /*#__PURE__*/React.createContext();\nfunction RtlProvider(_ref) {\n let {\n value\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n return /*#__PURE__*/_jsx(RtlContext.Provider, _extends({\n value: value != null ? value : true\n }, props));\n}\nprocess.env.NODE_ENV !== \"production\" ? RtlProvider.propTypes = {\n children: PropTypes.node,\n value: PropTypes.bool\n} : void 0;\nexport const useRtl = () => {\n const value = React.useContext(RtlContext);\n return value != null ? value : false;\n};\nexport default RtlProvider;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListUtilityClass(slot) {\n return generateUtilityClass('MuiList', slot);\n}\nconst listClasses = generateUtilityClasses('MuiList', ['root', 'padding', 'dense', 'subheader']);\nexport default listClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from './ListContext';\nimport { getListUtilityClass } from './listClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePadding,\n dense,\n subheader\n } = ownerState;\n const slots = {\n root: ['root', !disablePadding && 'padding', dense && 'dense', subheader && 'subheader']\n };\n return composeClasses(slots, getListUtilityClass, classes);\n};\nconst ListRoot = styled('ul', {\n name: 'MuiList',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disablePadding && styles.padding, ownerState.dense && styles.dense, ownerState.subheader && styles.subheader];\n }\n})(({\n ownerState\n}) => _extends({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative'\n}, !ownerState.disablePadding && {\n paddingTop: 8,\n paddingBottom: 8\n}, ownerState.subheader && {\n paddingTop: 0\n}));\nconst List = /*#__PURE__*/React.forwardRef(function List(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiList'\n });\n const {\n children,\n className,\n component = 'ul',\n dense = false,\n disablePadding = false,\n subheader\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = React.useMemo(() => ({\n dense\n }), [dense]);\n const ownerState = _extends({}, props, {\n component,\n dense,\n disablePadding\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: context,\n children: /*#__PURE__*/_jsxs(ListRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [subheader, children]\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n * the list and list items.\n * The prop is available to descendant components as the `dense` context.\n * @default false\n */\n dense: PropTypes.bool,\n /**\n * If `true`, vertical padding is removed from the list.\n * @default false\n */\n disablePadding: PropTypes.bool,\n /**\n * The content of the subheader, normally `ListSubheader`.\n */\n subheader: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default List;","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/488fd8afc535ca3a6ad4dc581f5e89217b6a36ac/js/src/util/scrollbar.js#L14-L18\nexport default function getScrollbarSize(doc) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = doc.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n}","import getScrollbarSize from '@mui/utils/getScrollbarSize';\nexport default getScrollbarSize;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"disabledItemsFocusable\", \"disableListWrap\", \"onKeyDown\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport ownerDocument from '../utils/ownerDocument';\nimport List from '../List';\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction nextItem(list, item, disableListWrap) {\n if (list === item) {\n return list.firstChild;\n }\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n if (list === item) {\n return disableListWrap ? list.firstChild : list.lastChild;\n }\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n if (textCriteria === undefined) {\n return true;\n }\n let text = nextFocus.innerText;\n if (text === undefined) {\n // jsdom doesn't support innerText\n text = nextFocus.textContent;\n }\n text = text.trim().toLowerCase();\n if (text.length === 0) {\n return false;\n }\n if (textCriteria.repeating) {\n return text[0] === textCriteria.keys[0];\n }\n return text.indexOf(textCriteria.keys.join('')) === 0;\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n let wrappedOnce = false;\n let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return false;\n }\n wrappedOnce = true;\n }\n\n // Same logic as useAutocomplete.js\n const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n } else {\n nextFocus.focus();\n return true;\n }\n }\n return false;\n}\n\n/**\n * A permanently displayed menu following https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/.\n * It's exposed to help customization of the [`Menu`](/material-ui/api/menu/) component if you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\nconst MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n const {\n // private\n // eslint-disable-next-line react/prop-types\n actions,\n autoFocus = false,\n autoFocusItem = false,\n children,\n className,\n disabledItemsFocusable = false,\n disableListWrap = false,\n onKeyDown,\n variant = 'selectedMenu'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const listRef = React.useRef(null);\n const textCriteriaRef = React.useRef({\n keys: [],\n repeating: true,\n previousKeyMatched: true,\n lastTime: null\n });\n useEnhancedEffect(() => {\n if (autoFocus) {\n listRef.current.focus();\n }\n }, [autoFocus]);\n React.useImperativeHandle(actions, () => ({\n adjustStyleForScrollbar: (containerElement, {\n direction\n }) => {\n // Let's ignore that piece of logic if users are already overriding the width\n // of the menu.\n const noExplicitWidth = !listRef.current.style.width;\n if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n const scrollbarSize = `${getScrollbarSize(ownerDocument(containerElement))}px`;\n listRef.current.style[direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n listRef.current.style.width = `calc(100% + ${scrollbarSize})`;\n }\n return listRef.current;\n }\n }), []);\n const handleKeyDown = event => {\n const list = listRef.current;\n const key = event.key;\n /**\n * @type {Element} - will always be defined since we are in a keydown handler\n * attached to an element. A keydown event is either dispatched to the activeElement\n * or document.body or document.documentElement. Only the first case will\n * trigger this specific handler.\n */\n const currentFocus = ownerDocument(list).activeElement;\n if (key === 'ArrowDown') {\n // Prevent scroll of the page\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'ArrowUp') {\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key === 'Home') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'End') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key.length === 1) {\n const criteria = textCriteriaRef.current;\n const lowerKey = key.toLowerCase();\n const currTime = performance.now();\n if (criteria.keys.length > 0) {\n // Reset\n if (currTime - criteria.lastTime > 500) {\n criteria.keys = [];\n criteria.repeating = true;\n criteria.previousKeyMatched = true;\n } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n criteria.repeating = false;\n }\n }\n criteria.lastTime = currTime;\n criteria.keys.push(lowerKey);\n const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n event.preventDefault();\n } else {\n criteria.previousKeyMatched = false;\n }\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n const handleRef = useForkRef(listRef, ref);\n\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n let activeItemIndex = -1;\n // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n React.Children.forEach(children, (child, index) => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n if (activeItemIndex === index) {\n activeItemIndex += 1;\n if (activeItemIndex >= children.length) {\n // there are no focusable items within the list.\n activeItemIndex = -1;\n }\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n if (activeItemIndex === index && (child.props.disabled || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight)) {\n activeItemIndex += 1;\n if (activeItemIndex >= children.length) {\n // there are no focusable items within the list.\n activeItemIndex = -1;\n }\n }\n });\n const items = React.Children.map(children, (child, index) => {\n if (index === activeItemIndex) {\n const newChildProps = {};\n if (autoFocusItem) {\n newChildProps.autoFocus = true;\n }\n if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n newChildProps.tabIndex = 0;\n }\n return /*#__PURE__*/React.cloneElement(child, newChildProps);\n }\n return child;\n });\n return /*#__PURE__*/_jsx(List, _extends({\n role: \"menu\",\n ref: handleRef,\n className: className,\n onKeyDown: handleKeyDown,\n tabIndex: autoFocus ? 0 : -1\n }, other, {\n children: items\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n * @default false\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n * if `variant=\"selectedMenu\"`.\n * @default false\n */\n autoFocusItem: PropTypes.bool,\n /**\n * MenuList contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the menu items will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n * and the vertical alignment relative to the anchor element.\n * @default 'selectedMenu'\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;","import debounce from '@mui/utils/debounce';\nexport default debounce;","import ownerWindow from '@mui/utils/ownerWindow';\nexport default ownerWindow;","export default {\n disabled: false\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme[THEME_ID] || theme;\n}","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n var _style$transitionDura, _style$transitionTimi;\n const {\n timeout,\n easing,\n style = {}\n } = props;\n return {\n duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === 'object' ? easing[options.mode] : easing,\n delay: style.transitionDelay\n };\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport useTimeout from '@mui/utils/useTimeout';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { getTransitionProps, reflow } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = 'auto',\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const timer = useTimeout();\n const autoTimeout = React.useRef();\n const theme = useTheme();\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(nodeRef, children.ref, ref);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay,\n easing: transitionTimingFunction\n })].join(',');\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay: isWebKit154 ? delay : delay || duration * 0.333,\n easing: transitionTimingFunction\n })].join(',');\n node.style.opacity = 0;\n node.style.transform = getScale(0.75);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.start(autoTimeout.current || 0, next);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: appear,\n in: inProp,\n nodeRef: nodeRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n }\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","import { unstable_ownerWindow as ownerWindow, unstable_ownerDocument as ownerDocument, unstable_getScrollbarSize as getScrollbarSize } from '@mui/utils';\n// Is a vertical scrollbar displayed?\nfunction isOverflowing(container) {\n const doc = ownerDocument(container);\n if (doc.body === container) {\n return ownerWindow(container).innerWidth > doc.documentElement.clientWidth;\n }\n return container.scrollHeight > container.clientHeight;\n}\nexport function ariaHidden(element, show) {\n if (show) {\n element.setAttribute('aria-hidden', 'true');\n } else {\n element.removeAttribute('aria-hidden');\n }\n}\nfunction getPaddingRight(element) {\n return parseInt(ownerWindow(element).getComputedStyle(element).paddingRight, 10) || 0;\n}\nfunction isAriaHiddenForbiddenOnElement(element) {\n // The forbidden HTML tags are the ones from ARIA specification that\n // can be children of body and can't have aria-hidden attribute.\n // cf. https://www.w3.org/TR/html-aria/#docconformance\n const forbiddenTagNames = ['TEMPLATE', 'SCRIPT', 'STYLE', 'LINK', 'MAP', 'META', 'NOSCRIPT', 'PICTURE', 'COL', 'COLGROUP', 'PARAM', 'SLOT', 'SOURCE', 'TRACK'];\n const isForbiddenTagName = forbiddenTagNames.indexOf(element.tagName) !== -1;\n const isInputHidden = element.tagName === 'INPUT' && element.getAttribute('type') === 'hidden';\n return isForbiddenTagName || isInputHidden;\n}\nfunction ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude, show) {\n const blacklist = [mountElement, currentElement, ...elementsToExclude];\n [].forEach.call(container.children, element => {\n const isNotExcludedElement = blacklist.indexOf(element) === -1;\n const isNotForbiddenElement = !isAriaHiddenForbiddenOnElement(element);\n if (isNotExcludedElement && isNotForbiddenElement) {\n ariaHidden(element, show);\n }\n });\n}\nfunction findIndexOf(items, callback) {\n let idx = -1;\n items.some((item, index) => {\n if (callback(item)) {\n idx = index;\n return true;\n }\n return false;\n });\n return idx;\n}\nfunction handleContainer(containerInfo, props) {\n const restoreStyle = [];\n const container = containerInfo.container;\n if (!props.disableScrollLock) {\n if (isOverflowing(container)) {\n // Compute the size before applying overflow hidden to avoid any scroll jumps.\n const scrollbarSize = getScrollbarSize(ownerDocument(container));\n restoreStyle.push({\n value: container.style.paddingRight,\n property: 'padding-right',\n el: container\n });\n // Use computed style, here to get the real padding to add our scrollbar width.\n container.style.paddingRight = `${getPaddingRight(container) + scrollbarSize}px`;\n\n // .mui-fixed is a global helper.\n const fixedElements = ownerDocument(container).querySelectorAll('.mui-fixed');\n [].forEach.call(fixedElements, element => {\n restoreStyle.push({\n value: element.style.paddingRight,\n property: 'padding-right',\n el: element\n });\n element.style.paddingRight = `${getPaddingRight(element) + scrollbarSize}px`;\n });\n }\n let scrollContainer;\n if (container.parentNode instanceof DocumentFragment) {\n scrollContainer = ownerDocument(container).body;\n } else {\n // Support html overflow-y: auto for scroll stability between pages\n // https://css-tricks.com/snippets/css/force-vertical-scrollbar/\n const parent = container.parentElement;\n const containerWindow = ownerWindow(container);\n scrollContainer = (parent == null ? void 0 : parent.nodeName) === 'HTML' && containerWindow.getComputedStyle(parent).overflowY === 'scroll' ? parent : container;\n }\n\n // Block the scroll even if no scrollbar is visible to account for mobile keyboard\n // screensize shrink.\n restoreStyle.push({\n value: scrollContainer.style.overflow,\n property: 'overflow',\n el: scrollContainer\n }, {\n value: scrollContainer.style.overflowX,\n property: 'overflow-x',\n el: scrollContainer\n }, {\n value: scrollContainer.style.overflowY,\n property: 'overflow-y',\n el: scrollContainer\n });\n scrollContainer.style.overflow = 'hidden';\n }\n const restore = () => {\n restoreStyle.forEach(({\n value,\n el,\n property\n }) => {\n if (value) {\n el.style.setProperty(property, value);\n } else {\n el.style.removeProperty(property);\n }\n });\n };\n return restore;\n}\nfunction getHiddenSiblings(container) {\n const hiddenSiblings = [];\n [].forEach.call(container.children, element => {\n if (element.getAttribute('aria-hidden') === 'true') {\n hiddenSiblings.push(element);\n }\n });\n return hiddenSiblings;\n}\n/**\n * @ignore - do not document.\n *\n * Proper state management for containers and the modals in those containers.\n * Simplified, but inspired by react-overlay's ModalManager class.\n * Used by the Modal to ensure proper styling of containers.\n */\nexport class ModalManager {\n constructor() {\n this.containers = void 0;\n this.modals = void 0;\n this.modals = [];\n this.containers = [];\n }\n add(modal, container) {\n let modalIndex = this.modals.indexOf(modal);\n if (modalIndex !== -1) {\n return modalIndex;\n }\n modalIndex = this.modals.length;\n this.modals.push(modal);\n\n // If the modal we are adding is already in the DOM.\n if (modal.modalRef) {\n ariaHidden(modal.modalRef, false);\n }\n const hiddenSiblings = getHiddenSiblings(container);\n ariaHiddenSiblings(container, modal.mount, modal.modalRef, hiddenSiblings, true);\n const containerIndex = findIndexOf(this.containers, item => item.container === container);\n if (containerIndex !== -1) {\n this.containers[containerIndex].modals.push(modal);\n return modalIndex;\n }\n this.containers.push({\n modals: [modal],\n container,\n restore: null,\n hiddenSiblings\n });\n return modalIndex;\n }\n mount(modal, props) {\n const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n const containerInfo = this.containers[containerIndex];\n if (!containerInfo.restore) {\n containerInfo.restore = handleContainer(containerInfo, props);\n }\n }\n remove(modal, ariaHiddenState = true) {\n const modalIndex = this.modals.indexOf(modal);\n if (modalIndex === -1) {\n return modalIndex;\n }\n const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n const containerInfo = this.containers[containerIndex];\n containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);\n this.modals.splice(modalIndex, 1);\n\n // If that was the last modal in a container, clean up the container.\n if (containerInfo.modals.length === 0) {\n // The modal might be closed before it had the chance to be mounted in the DOM.\n if (containerInfo.restore) {\n containerInfo.restore();\n }\n if (modal.modalRef) {\n // In case the modal wasn't in the DOM yet.\n ariaHidden(modal.modalRef, ariaHiddenState);\n }\n ariaHiddenSiblings(containerInfo.container, modal.mount, modal.modalRef, containerInfo.hiddenSiblings, false);\n this.containers.splice(containerIndex, 1);\n } else {\n // Otherwise make sure the next top modal is visible to a screen reader.\n const nextTop = containerInfo.modals[containerInfo.modals.length - 1];\n // as soon as a modal is adding its modalRef is undefined. it can't set\n // aria-hidden because the dom element doesn't exist either\n // when modal was unmounted before modalRef gets null\n if (nextTop.modalRef) {\n ariaHidden(nextTop.modalRef, false);\n }\n }\n return modalIndex;\n }\n isTopModal(modal) {\n return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;\n }\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback, unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nimport { extractEventHandlers } from '../utils';\nimport { ModalManager, ariaHidden } from './ModalManager';\nfunction getContainer(container) {\n return typeof container === 'function' ? container() : container;\n}\nfunction getHasTransition(children) {\n return children ? children.props.hasOwnProperty('in') : false;\n}\n\n// A modal manager used to track and manage the state of open Modals.\n// Modals don't open on the server so this won't conflict with concurrent requests.\nconst defaultManager = new ModalManager();\n/**\n *\n * Demos:\n *\n * - [Modal](https://mui.com/base-ui/react-modal/#hook)\n *\n * API:\n *\n * - [useModal API](https://mui.com/base-ui/react-modal/hooks-api/#use-modal)\n */\nexport function useModal(parameters) {\n const {\n container,\n disableEscapeKeyDown = false,\n disableScrollLock = false,\n // @ts-ignore internal logic - Base UI supports the manager as a prop too\n manager = defaultManager,\n closeAfterTransition = false,\n onTransitionEnter,\n onTransitionExited,\n children,\n onClose,\n open,\n rootRef\n } = parameters;\n\n // @ts-ignore internal logic\n const modal = React.useRef({});\n const mountNodeRef = React.useRef(null);\n const modalRef = React.useRef(null);\n const handleRef = useForkRef(modalRef, rootRef);\n const [exited, setExited] = React.useState(!open);\n const hasTransition = getHasTransition(children);\n let ariaHiddenProp = true;\n if (parameters['aria-hidden'] === 'false' || parameters['aria-hidden'] === false) {\n ariaHiddenProp = false;\n }\n const getDoc = () => ownerDocument(mountNodeRef.current);\n const getModal = () => {\n modal.current.modalRef = modalRef.current;\n modal.current.mount = mountNodeRef.current;\n return modal.current;\n };\n const handleMounted = () => {\n manager.mount(getModal(), {\n disableScrollLock\n });\n\n // Fix a bug on Chrome where the scroll isn't initially 0.\n if (modalRef.current) {\n modalRef.current.scrollTop = 0;\n }\n };\n const handleOpen = useEventCallback(() => {\n const resolvedContainer = getContainer(container) || getDoc().body;\n manager.add(getModal(), resolvedContainer);\n\n // The element was already mounted.\n if (modalRef.current) {\n handleMounted();\n }\n });\n const isTopModal = React.useCallback(() => manager.isTopModal(getModal()), [manager]);\n const handlePortalRef = useEventCallback(node => {\n mountNodeRef.current = node;\n if (!node) {\n return;\n }\n if (open && isTopModal()) {\n handleMounted();\n } else if (modalRef.current) {\n ariaHidden(modalRef.current, ariaHiddenProp);\n }\n });\n const handleClose = React.useCallback(() => {\n manager.remove(getModal(), ariaHiddenProp);\n }, [ariaHiddenProp, manager]);\n React.useEffect(() => {\n return () => {\n handleClose();\n };\n }, [handleClose]);\n React.useEffect(() => {\n if (open) {\n handleOpen();\n } else if (!hasTransition || !closeAfterTransition) {\n handleClose();\n }\n }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);\n const createHandleKeyDown = otherHandlers => event => {\n var _otherHandlers$onKeyD;\n (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);\n\n // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviors like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n if (event.key !== 'Escape' || event.which === 229 ||\n // Wait until IME is settled.\n !isTopModal()) {\n return;\n }\n if (!disableEscapeKeyDown) {\n // Swallow the event, in case someone is listening for the escape key on the body.\n event.stopPropagation();\n if (onClose) {\n onClose(event, 'escapeKeyDown');\n }\n }\n };\n const createHandleBackdropClick = otherHandlers => event => {\n var _otherHandlers$onClic;\n (_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);\n if (event.target !== event.currentTarget) {\n return;\n }\n if (onClose) {\n onClose(event, 'backdropClick');\n }\n };\n const getRootProps = (otherHandlers = {}) => {\n const propsEventHandlers = extractEventHandlers(parameters);\n\n // The custom event handlers shouldn't be spread on the root element\n delete propsEventHandlers.onTransitionEnter;\n delete propsEventHandlers.onTransitionExited;\n const externalEventHandlers = _extends({}, propsEventHandlers, otherHandlers);\n return _extends({\n role: 'presentation'\n }, externalEventHandlers, {\n onKeyDown: createHandleKeyDown(externalEventHandlers),\n ref: handleRef\n });\n };\n const getBackdropProps = (otherHandlers = {}) => {\n const externalEventHandlers = otherHandlers;\n return _extends({\n 'aria-hidden': true\n }, externalEventHandlers, {\n onClick: createHandleBackdropClick(externalEventHandlers),\n open\n });\n };\n const getTransitionProps = () => {\n const handleEnter = () => {\n setExited(false);\n if (onTransitionEnter) {\n onTransitionEnter();\n }\n };\n const handleExited = () => {\n setExited(true);\n if (onTransitionExited) {\n onTransitionExited();\n }\n if (closeAfterTransition) {\n handleClose();\n }\n };\n return {\n onEnter: createChainedFunction(handleEnter, children == null ? void 0 : children.props.onEnter),\n onExited: createChainedFunction(handleExited, children == null ? void 0 : children.props.onExited)\n };\n };\n return {\n getRootProps,\n getBackdropProps,\n getTransitionProps,\n rootRef: handleRef,\n portalRef: handlePortalRef,\n isTopModal,\n exited,\n hasTransition\n };\n}","'use client';\n\n/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp, elementAcceptingRef, unstable_useForkRef as useForkRef, unstable_ownerDocument as ownerDocument } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n// Inspired by https://github.com/focus-trap/tabbable\nconst candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'].join(',');\nfunction getTabIndex(node) {\n const tabindexAttr = parseInt(node.getAttribute('tabindex') || '', 10);\n if (!Number.isNaN(tabindexAttr)) {\n return tabindexAttr;\n }\n\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // https://bugs.chromium.org/p/chromium/issues/detail?id=661108&q=contenteditable%20tabindex&can=2\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n // in Chrome,
,
\n );\n};\n\nexport default Requisites;\n","import React from \"react\";\n\nimport { IPoliciesMarkup } from \"../../types/commonMarkup.type\";\nimport { Link } from \"gatsby\";\n\nconst PoliciesLinks = ({\n policies: { privacy, cookie },\n}: {\n policies: IPoliciesMarkup;\n}) => (\n

\n \n {privacy.title}\n \n \n {cookie.title}\n \n

\n);\n\nexport default PoliciesLinks;\n","import React from \"react\";\n\nimport { Link } from \"gatsby\";\n\nimport { TLinksMarkup } from \"../../types/commonMarkup.type\";\n\nconst FooterNavLinks = ({\n links,\n className,\n}: {\n links: TLinksMarkup;\n className?: string;\n}) => {\n return (\n \n );\n};\n\nexport default FooterNavLinks;\n","import React, { useState } from \"react\";\nimport { SubmitHandler, useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { AxiosResponse } from \"axios\";\n\nimport {\n IGetPortfolioForm,\n TValidationMarkup,\n} from \"../../types/commonMarkup.type\";\nimport { IGetPortfolioFormData } from \"../../types/form.type\";\n\nimport { getPortfolioFormSchema } from \"../../tools/formSchemas\";\nimport { hubspotApi } from \"../../tools/api\";\nimport { getCookie } from \"../../tools/cookieGetter\";\nimport SkeletonStub from \"../common/skeletonStub\";\nimport {\n getValidationMessage,\n mapGetPorfolioData,\n} from \"../../tools/formsTools\";\nimport { StyledGetPortfolioTextInput } from \"./inputs\";\n\nconst GetPortfolioForm = ({\n markup,\n validationMarkup,\n}: {\n markup: IGetPortfolioForm;\n validationMarkup?: TValidationMarkup;\n}) => {\n const [isPending, setIsPending] = useState(false);\n\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors, isValid },\n } = useForm({\n mode: \"onBlur\",\n resolver: yupResolver(getPortfolioFormSchema),\n });\n\n const onSubmit: SubmitHandler = async (data) => {\n setIsPending(true);\n\n const hutk = getCookie(\"hubspotutk\");\n\n const requestBody = mapGetPorfolioData(data, hutk);\n\n try {\n const response = await hubspotApi.post<\n any,\n AxiosResponse<{ inlineMessage: string }>,\n any\n >(\"/0e8123a1-58ac-4be1-90d8-b7193a9fc124\", requestBody);\n\n if (response.status === 200) reset();\n } catch (e: any) {\n console.log(\"request err>>\", e.response?.data?.message);\n }\n\n setIsPending(false);\n };\n\n return (\n \n

\n {markup.title}\n

\n
\n
\n \n \n
\n \n {isPending ? : null}\n {markup.buttonLabel.toUpperCase()}\n \n
\n \n );\n};\n\nexport default GetPortfolioForm;\n","import React from \"react\";\n\nimport { IGetPortfolioForm, TLinksMarkup, TValidationMarkup } from \"../../types/commonMarkup.type\";\n\nimport FooterNavLinks from \"./footerNavLinks\";\nimport GetPortfolioForm from \"../forms/getPortfolioForm\";\n\nconst FooterLinksAndForm = ({\n links,\n markup,\n validationMarkup,\n className,\n}: {\n links: TLinksMarkup;\n markup: IGetPortfolioForm;\n validationMarkup?: TValidationMarkup;\n className?: string;\n}) => {\n return (\n
\n \n\n
\n \n
\n
\n );\n};\n\nexport default FooterLinksAndForm;\n","import React from \"react\";\n\nimport {\n ILayoutMarkupData,\n TValidationMarkup,\n} from \"../../types/commonMarkup.type\";\nimport { ILang } from \"../../types/common.type\";\n\nimport ContentContainer from \"../common/contentContainer\";\nimport Requisites from \"./requisites\";\nimport PoliciesLinks from \"./policiesLinks\";\nimport FooterLinksAndForm from \"./footerLinksAndForm\";\n\ninterface IFooterProps extends ILang {\n markup: ILayoutMarkupData;\n validationMarkup?: TValidationMarkup;\n}\n\nconst Footer = ({ markup, validationMarkup }: IFooterProps) => {\n const { contactsLabel, links, requisites, policies } = markup;\n\n return (\n
\n \n
\n \n {contactsLabel.toUpperCase()}\n \n \n \n
\n\n \n \n
\n );\n};\n\nexport default Footer;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport { FaChevronUp } from \"@react-icons/all-files/fa/FaChevronUp\";\n\nconst UpButton = () => {\n const isInitial = useRef(true);\n const [isShow, setIsShow] = useState(false);\n\n const showHideUpButton = () => {\n const isScrolled = window.innerHeight < window.scrollY;\n\n if (isScrolled) setIsShow(true);\n if (!isScrolled) setIsShow(false);\n };\n\n useEffect(() => {\n if (!window || !isInitial.current) return;\n\n isInitial.current = false;\n window.addEventListener(\"scroll\", showHideUpButton);\n\n return () => window.removeEventListener(\"scroll\", showHideUpButton);\n }, []);\n\n const onClick = () => {\n if (!window) return;\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n };\n\n return (\n <>\n {isShow ? (\n \n \n \n ) : null}\n \n );\n};\n\nexport default UpButton;\n","import React from \"react\";\nimport { Script } from \"gatsby\";\n\nconst AnalyticsByConsent = ({ gtagId }: { gtagId: string }) => {\n return (\n <>\n \n {/* Google tag (gtag.js) */}\n \n \n \n {/* Consent handling */}\n \n \n );\n};\n\nexport default AnalyticsByConsent;\n","import React from \"react\";\n\nimport { PageProps, graphql, useStaticQuery } from \"gatsby\";\n\nimport { IBasePageContext, ISiteMetadata } from \"../../types/common.type\";\nimport {\n ILayoutMarkupData,\n TValidationMarkup,\n} from \"../../types/commonMarkup.type\";\n\nimport Navbar from \"./navbar\";\nimport Footer from \"./footer\";\nimport { BasicMetadata } from \"../common/metadata\";\nimport UpButton from \"../common/upButton\";\nimport AnalyticsByConsent from \"./analyticsByConsent\";\n\nconst Layout = ({\n path,\n children,\n pageContext: { lang },\n}: PageProps) => {\n const layoutData = useStaticQuery(query) as {\n site: {\n siteMetadata: ISiteMetadata;\n };\n allMarkdownRemark?: {\n nodes?:\n | {\n fields: { language: string };\n frontmatter: {\n layout: ILayoutMarkupData;\n validation: TValidationMarkup;\n };\n }[]\n | null;\n };\n };\n\n const layoutMarkupFallback: ILayoutMarkupData = {\n discussProject: \"CONTACT US\",\n links: {\n services: \"Services\",\n workflow: \"Workflow\",\n projects: \"Projects\",\n blog: \"Blog\",\n },\n contactsLabel: \"CONTACTS\",\n requisites: {\n ein: \"EIN: 35-2654711\",\n companyCode: \"Company Code: 7296176\",\n street: \"8 The Green STE B\",\n city: \"Dover\",\n postalCode: \"DE 19901-3618\",\n country: \"United States\",\n phone: \"+1 302 364 0193\",\n },\n homePageLinkLabel: \"CodeCave home page\",\n getPortfolioForm: {\n title: \"Leave your contact to get our portfolio\",\n name: \"Name\",\n email: \"Email*\",\n buttonLabel: \"get portfolio\",\n },\n policies: {\n privacy: {\n title: \"Privacy Policy\",\n link: \"https://www.codecave.it/privacy-policy\",\n },\n cookie: {\n title: \"Cookie Policy\",\n link: \"https://www.codecave.it/cookie-policy\",\n },\n },\n };\n const allMarkup = layoutData?.allMarkdownRemark?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter;\n const layoutMarkup = allMarkup?.layout ?? layoutMarkupFallback;\n const validationMarkup = allMarkup?.validation;\n const gtagId = layoutData?.site?.siteMetadata?.analyticsId;\n\n return (\n <>\n \n \n \n \n {children}\n \n \n \n \n );\n};\n\nexport default Layout;\n\nexport const query = graphql`\n query {\n site {\n siteMetadata {\n analyticsId\n }\n }\n allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n validation {\n invalidEmail\n required\n consent\n }\n layout {\n links {\n services\n workflow\n projects\n blog\n }\n contactsLabel\n discussProject\n requisites {\n ein\n companyCode\n street\n city\n postalCode\n country\n phone\n }\n homePageLinkLabel\n getPortfolioForm {\n title\n name\n email\n buttonLabel\n }\n policies {\n privacy {\n title\n link\n }\n cookie {\n title\n link\n }\n }\n }\n }\n }\n }\n }\n`;\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled() {\n const force = this === true;\n\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, arguments);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, arguments);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\n\nexport default (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n }, freq);\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport progressEventReducer from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType} = _config;\n let onCanceled;\n function done() {\n if (_config.cancelToken) {\n _config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (_config.signal) {\n _config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n _config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (typeof _config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof _config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n}\n\nexport default composeSignals;\n","\n\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n\n return new ReadableStream({\n type: 'bytes',\n\n async pull(controller) {\n const {done, value} = await iterator.next();\n\n if (done) {\n controller.close();\n onFinish();\n return;\n }\n\n let len = value.byteLength;\n onProgress && onProgress(bytes += len);\n controller.enqueue(new Uint8Array(value));\n },\n cancel(reason) {\n onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport progressEventReducer from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst fetchProgressDecorator = (total, fn) => {\n const lengthComputable = total != null;\n return (loaded) => setTimeout(() => fn({\n lengthComputable,\n total,\n loaded\n }));\n}\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst supportsRequestStream = isReadableStreamSupported && (() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n})();\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported && !!(()=> {\n try {\n return utils.isReadableStream(new Response('').body);\n } catch(err) {\n // return undefined\n }\n})();\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n }\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(\n requestContentLength,\n progressEventReducer(onUploadProgress)\n ), null, encodeText);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'cors' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(\n responseContentLength,\n progressEventReducer(onDownloadProgress, true)\n ), isStreamResponse && onFinish, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from \"axios\";\n\nexport const hubspotApi = axios.create({\n baseURL:\n \"https://api.hsforms.com/submissions/v3/integration/submit/21836033/\",\n headers: {\n \"Content-type\": \"application/json\",\n },\n});","export function getCookie(key: string) {\n var b = document.cookie.match(\"(^|;)\\\\s*\" + key + \"\\\\s*=\\\\s*([^;]+)\");\n return b ? b.pop() : \"\";\n}\n","import { getter, forEach, split, normalizePath, join } from 'property-expr';\nimport { camelCase, snakeCase } from 'tiny-case';\nimport toposort from 'toposort';\n\nconst toString = Object.prototype.toString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\nfunction printSimpleValue(val, quoteStrings = false) {\n if (val == null || val === true || val === false) return '' + val;\n const typeOf = typeof val;\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return quoteStrings ? `\"${val}\"` : val;\n if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']';\n if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n const tag = toString.call(val).slice(8, -1);\n if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val);\n if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']';\n if (tag === 'RegExp') return regExpToString.call(val);\n return null;\n}\nfunction printValue(value, quoteStrings) {\n let result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n return JSON.stringify(value, function (key, value) {\n let result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n }, 2);\n}\n\nfunction toArray(value) {\n return value == null ? [] : [].concat(value);\n}\n\nlet _Symbol$toStringTag, _Symbol$hasInstance, _Symbol$toStringTag2;\nlet strReg = /\\$\\{\\s*(\\w+)\\s*\\}/g;\n_Symbol$toStringTag = Symbol.toStringTag;\nclass ValidationErrorNoStack {\n constructor(errorOrErrors, value, field, type) {\n this.name = void 0;\n this.message = void 0;\n this.value = void 0;\n this.path = void 0;\n this.type = void 0;\n this.params = void 0;\n this.errors = void 0;\n this.inner = void 0;\n this[_Symbol$toStringTag] = 'Error';\n this.name = 'ValidationError';\n this.value = value;\n this.path = field;\n this.type = type;\n this.errors = [];\n this.inner = [];\n toArray(errorOrErrors).forEach(err => {\n if (ValidationError.isError(err)) {\n this.errors.push(...err.errors);\n const innerErrors = err.inner.length ? err.inner : [err];\n this.inner.push(...innerErrors);\n } else {\n this.errors.push(err);\n }\n });\n this.message = this.errors.length > 1 ? `${this.errors.length} errors occurred` : this.errors[0];\n }\n}\n_Symbol$hasInstance = Symbol.hasInstance;\n_Symbol$toStringTag2 = Symbol.toStringTag;\nclass ValidationError extends Error {\n static formatError(message, params) {\n const path = params.label || params.path || 'this';\n if (path !== params.path) params = Object.assign({}, params, {\n path\n });\n if (typeof message === 'string') return message.replace(strReg, (_, key) => printValue(params[key]));\n if (typeof message === 'function') return message(params);\n return message;\n }\n static isError(err) {\n return err && err.name === 'ValidationError';\n }\n constructor(errorOrErrors, value, field, type, disableStack) {\n const errorNoStack = new ValidationErrorNoStack(errorOrErrors, value, field, type);\n if (disableStack) {\n return errorNoStack;\n }\n super();\n this.value = void 0;\n this.path = void 0;\n this.type = void 0;\n this.params = void 0;\n this.errors = [];\n this.inner = [];\n this[_Symbol$toStringTag2] = 'Error';\n this.name = errorNoStack.name;\n this.message = errorNoStack.message;\n this.type = errorNoStack.type;\n this.value = errorNoStack.value;\n this.path = errorNoStack.path;\n this.errors = errorNoStack.errors;\n this.inner = errorNoStack.inner;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ValidationError);\n }\n }\n static [_Symbol$hasInstance](inst) {\n return ValidationErrorNoStack[Symbol.hasInstance](inst) || super[Symbol.hasInstance](inst);\n }\n}\n\nlet mixed = {\n default: '${path} is invalid',\n required: '${path} is a required field',\n defined: '${path} must be defined',\n notNull: '${path} cannot be null',\n oneOf: '${path} must be one of the following values: ${values}',\n notOneOf: '${path} must not be one of the following values: ${values}',\n notType: ({\n path,\n type,\n value,\n originalValue\n }) => {\n const castMsg = originalValue != null && originalValue !== value ? ` (cast from the value \\`${printValue(originalValue, true)}\\`).` : '.';\n return type !== 'mixed' ? `${path} must be a \\`${type}\\` type, ` + `but the final value was: \\`${printValue(value, true)}\\`` + castMsg : `${path} must match the configured type. ` + `The validated value was: \\`${printValue(value, true)}\\`` + castMsg;\n }\n};\nlet string = {\n length: '${path} must be exactly ${length} characters',\n min: '${path} must be at least ${min} characters',\n max: '${path} must be at most ${max} characters',\n matches: '${path} must match the following: \"${regex}\"',\n email: '${path} must be a valid email',\n url: '${path} must be a valid URL',\n uuid: '${path} must be a valid UUID',\n datetime: '${path} must be a valid ISO date-time',\n datetime_precision: '${path} must be a valid ISO date-time with a sub-second precision of exactly ${precision} digits',\n datetime_offset: '${path} must be a valid ISO date-time with UTC \"Z\" timezone',\n trim: '${path} must be a trimmed string',\n lowercase: '${path} must be a lowercase string',\n uppercase: '${path} must be a upper case string'\n};\nlet number = {\n min: '${path} must be greater than or equal to ${min}',\n max: '${path} must be less than or equal to ${max}',\n lessThan: '${path} must be less than ${less}',\n moreThan: '${path} must be greater than ${more}',\n positive: '${path} must be a positive number',\n negative: '${path} must be a negative number',\n integer: '${path} must be an integer'\n};\nlet date = {\n min: '${path} field must be later than ${min}',\n max: '${path} field must be at earlier than ${max}'\n};\nlet boolean = {\n isValue: '${path} field must be ${value}'\n};\nlet object = {\n noUnknown: '${path} field has unspecified keys: ${unknown}'\n};\nlet array = {\n min: '${path} field must have at least ${min} items',\n max: '${path} field must have less than or equal to ${max} items',\n length: '${path} must have ${length} items'\n};\nlet tuple = {\n notType: params => {\n const {\n path,\n value,\n spec\n } = params;\n const typeLen = spec.types.length;\n if (Array.isArray(value)) {\n if (value.length < typeLen) return `${path} tuple value has too few items, expected a length of ${typeLen} but got ${value.length} for value: \\`${printValue(value, true)}\\``;\n if (value.length > typeLen) return `${path} tuple value has too many items, expected a length of ${typeLen} but got ${value.length} for value: \\`${printValue(value, true)}\\``;\n }\n return ValidationError.formatError(mixed.notType, params);\n }\n};\nvar locale = Object.assign(Object.create(null), {\n mixed,\n string,\n number,\n date,\n object,\n array,\n boolean,\n tuple\n});\n\nconst isSchema = obj => obj && obj.__isYupSchema__;\n\nclass Condition {\n static fromOptions(refs, config) {\n if (!config.then && !config.otherwise) throw new TypeError('either `then:` or `otherwise:` is required for `when()` conditions');\n let {\n is,\n then,\n otherwise\n } = config;\n let check = typeof is === 'function' ? is : (...values) => values.every(value => value === is);\n return new Condition(refs, (values, schema) => {\n var _branch;\n let branch = check(...values) ? then : otherwise;\n return (_branch = branch == null ? void 0 : branch(schema)) != null ? _branch : schema;\n });\n }\n constructor(refs, builder) {\n this.fn = void 0;\n this.refs = refs;\n this.refs = refs;\n this.fn = builder;\n }\n resolve(base, options) {\n let values = this.refs.map(ref =>\n // TODO: ? operator here?\n ref.getValue(options == null ? void 0 : options.value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context));\n let schema = this.fn(values, base, options);\n if (schema === undefined ||\n // @ts-ignore this can be base\n schema === base) {\n return base;\n }\n if (!isSchema(schema)) throw new TypeError('conditions must return a schema object');\n return schema.resolve(options);\n }\n}\n\nconst prefixes = {\n context: '$',\n value: '.'\n};\nfunction create$9(key, options) {\n return new Reference(key, options);\n}\nclass Reference {\n constructor(key, options = {}) {\n this.key = void 0;\n this.isContext = void 0;\n this.isValue = void 0;\n this.isSibling = void 0;\n this.path = void 0;\n this.getter = void 0;\n this.map = void 0;\n if (typeof key !== 'string') throw new TypeError('ref must be a string, got: ' + key);\n this.key = key.trim();\n if (key === '') throw new TypeError('ref must be a non-empty string');\n this.isContext = this.key[0] === prefixes.context;\n this.isValue = this.key[0] === prefixes.value;\n this.isSibling = !this.isContext && !this.isValue;\n let prefix = this.isContext ? prefixes.context : this.isValue ? prefixes.value : '';\n this.path = this.key.slice(prefix.length);\n this.getter = this.path && getter(this.path, true);\n this.map = options.map;\n }\n getValue(value, parent, context) {\n let result = this.isContext ? context : this.isValue ? value : parent;\n if (this.getter) result = this.getter(result || {});\n if (this.map) result = this.map(result);\n return result;\n }\n\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {Object=} options.context\n * @param {Object=} options.parent\n */\n cast(value, options) {\n return this.getValue(value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context);\n }\n resolve() {\n return this;\n }\n describe() {\n return {\n type: 'ref',\n key: this.key\n };\n }\n toString() {\n return `Ref(${this.key})`;\n }\n static isRef(value) {\n return value && value.__isYupRef;\n }\n}\n\n// @ts-ignore\nReference.prototype.__isYupRef = true;\n\nconst isAbsent = value => value == null;\n\nfunction createValidation(config) {\n function validate({\n value,\n path = '',\n options,\n originalValue,\n schema\n }, panic, next) {\n const {\n name,\n test,\n params,\n message,\n skipAbsent\n } = config;\n let {\n parent,\n context,\n abortEarly = schema.spec.abortEarly,\n disableStackTrace = schema.spec.disableStackTrace\n } = options;\n function resolve(item) {\n return Reference.isRef(item) ? item.getValue(value, parent, context) : item;\n }\n function createError(overrides = {}) {\n const nextParams = Object.assign({\n value,\n originalValue,\n label: schema.spec.label,\n path: overrides.path || path,\n spec: schema.spec,\n disableStackTrace: overrides.disableStackTrace || disableStackTrace\n }, params, overrides.params);\n for (const key of Object.keys(nextParams)) nextParams[key] = resolve(nextParams[key]);\n const error = new ValidationError(ValidationError.formatError(overrides.message || message, nextParams), value, nextParams.path, overrides.type || name, nextParams.disableStackTrace);\n error.params = nextParams;\n return error;\n }\n const invalid = abortEarly ? panic : next;\n let ctx = {\n path,\n parent,\n type: name,\n from: options.from,\n createError,\n resolve,\n options,\n originalValue,\n schema\n };\n const handleResult = validOrError => {\n if (ValidationError.isError(validOrError)) invalid(validOrError);else if (!validOrError) invalid(createError());else next(null);\n };\n const handleError = err => {\n if (ValidationError.isError(err)) invalid(err);else panic(err);\n };\n const shouldSkip = skipAbsent && isAbsent(value);\n if (shouldSkip) {\n return handleResult(true);\n }\n let result;\n try {\n var _result;\n result = test.call(ctx, value, ctx);\n if (typeof ((_result = result) == null ? void 0 : _result.then) === 'function') {\n if (options.sync) {\n throw new Error(`Validation test of type: \"${ctx.type}\" returned a Promise during a synchronous validate. ` + `This test will finish after the validate call has returned`);\n }\n return Promise.resolve(result).then(handleResult, handleError);\n }\n } catch (err) {\n handleError(err);\n return;\n }\n handleResult(result);\n }\n validate.OPTIONS = config;\n return validate;\n}\n\nfunction getIn(schema, path, value, context = value) {\n let parent, lastPart, lastPartDebug;\n\n // root path: ''\n if (!path) return {\n parent,\n parentPath: path,\n schema\n };\n forEach(path, (_part, isBracket, isArray) => {\n let part = isBracket ? _part.slice(1, _part.length - 1) : _part;\n schema = schema.resolve({\n context,\n parent,\n value\n });\n let isTuple = schema.type === 'tuple';\n let idx = isArray ? parseInt(part, 10) : 0;\n if (schema.innerType || isTuple) {\n if (isTuple && !isArray) throw new Error(`Yup.reach cannot implicitly index into a tuple type. the path part \"${lastPartDebug}\" must contain an index to the tuple element, e.g. \"${lastPartDebug}[0]\"`);\n if (value && idx >= value.length) {\n throw new Error(`Yup.reach cannot resolve an array item at index: ${_part}, in the path: ${path}. ` + `because there is no value at that index. `);\n }\n parent = value;\n value = value && value[idx];\n schema = isTuple ? schema.spec.types[idx] : schema.innerType;\n }\n\n // sometimes the array index part of a path doesn't exist: \"nested.arr.child\"\n // in these cases the current part is the next schema and should be processed\n // in this iteration. For cases where the index signature is included this\n // check will fail and we'll handle the `child` part on the next iteration like normal\n if (!isArray) {\n if (!schema.fields || !schema.fields[part]) throw new Error(`The schema does not contain the path: ${path}. ` + `(failed at: ${lastPartDebug} which is a type: \"${schema.type}\")`);\n parent = value;\n value = value && value[part];\n schema = schema.fields[part];\n }\n lastPart = part;\n lastPartDebug = isBracket ? '[' + _part + ']' : '.' + _part;\n });\n return {\n schema,\n parent,\n parentPath: lastPart\n };\n}\nfunction reach(obj, path, value, context) {\n return getIn(obj, path, value, context).schema;\n}\n\nclass ReferenceSet extends Set {\n describe() {\n const description = [];\n for (const item of this.values()) {\n description.push(Reference.isRef(item) ? item.describe() : item);\n }\n return description;\n }\n resolveAll(resolve) {\n let result = [];\n for (const item of this.values()) {\n result.push(resolve(item));\n }\n return result;\n }\n clone() {\n return new ReferenceSet(this.values());\n }\n merge(newItems, removeItems) {\n const next = this.clone();\n newItems.forEach(value => next.add(value));\n removeItems.forEach(value => next.delete(value));\n return next;\n }\n}\n\n// tweaked from https://github.com/Kelin2025/nanoclone/blob/0abeb7635bda9b68ef2277093f76dbe3bf3948e1/src/index.js\nfunction clone(src, seen = new Map()) {\n if (isSchema(src) || !src || typeof src !== 'object') return src;\n if (seen.has(src)) return seen.get(src);\n let copy;\n if (src instanceof Date) {\n // Date\n copy = new Date(src.getTime());\n seen.set(src, copy);\n } else if (src instanceof RegExp) {\n // RegExp\n copy = new RegExp(src);\n seen.set(src, copy);\n } else if (Array.isArray(src)) {\n // Array\n copy = new Array(src.length);\n seen.set(src, copy);\n for (let i = 0; i < src.length; i++) copy[i] = clone(src[i], seen);\n } else if (src instanceof Map) {\n // Map\n copy = new Map();\n seen.set(src, copy);\n for (const [k, v] of src.entries()) copy.set(k, clone(v, seen));\n } else if (src instanceof Set) {\n // Set\n copy = new Set();\n seen.set(src, copy);\n for (const v of src) copy.add(clone(v, seen));\n } else if (src instanceof Object) {\n // Object\n copy = {};\n seen.set(src, copy);\n for (const [k, v] of Object.entries(src)) copy[k] = clone(v, seen);\n } else {\n throw Error(`Unable to clone ${src}`);\n }\n return copy;\n}\n\n// If `CustomSchemaMeta` isn't extended with any keys, we'll fall back to a\n// loose Record definition allowing free form usage.\nclass Schema {\n constructor(options) {\n this.type = void 0;\n this.deps = [];\n this.tests = void 0;\n this.transforms = void 0;\n this.conditions = [];\n this._mutate = void 0;\n this.internalTests = {};\n this._whitelist = new ReferenceSet();\n this._blacklist = new ReferenceSet();\n this.exclusiveTests = Object.create(null);\n this._typeCheck = void 0;\n this.spec = void 0;\n this.tests = [];\n this.transforms = [];\n this.withMutation(() => {\n this.typeError(mixed.notType);\n });\n this.type = options.type;\n this._typeCheck = options.check;\n this.spec = Object.assign({\n strip: false,\n strict: false,\n abortEarly: true,\n recursive: true,\n disableStackTrace: false,\n nullable: false,\n optional: true,\n coerce: true\n }, options == null ? void 0 : options.spec);\n this.withMutation(s => {\n s.nonNullable();\n });\n }\n\n // TODO: remove\n get _type() {\n return this.type;\n }\n clone(spec) {\n if (this._mutate) {\n if (spec) Object.assign(this.spec, spec);\n return this;\n }\n\n // if the nested value is a schema we can skip cloning, since\n // they are already immutable\n const next = Object.create(Object.getPrototypeOf(this));\n\n // @ts-expect-error this is readonly\n next.type = this.type;\n next._typeCheck = this._typeCheck;\n next._whitelist = this._whitelist.clone();\n next._blacklist = this._blacklist.clone();\n next.internalTests = Object.assign({}, this.internalTests);\n next.exclusiveTests = Object.assign({}, this.exclusiveTests);\n\n // @ts-expect-error this is readonly\n next.deps = [...this.deps];\n next.conditions = [...this.conditions];\n next.tests = [...this.tests];\n next.transforms = [...this.transforms];\n next.spec = clone(Object.assign({}, this.spec, spec));\n return next;\n }\n label(label) {\n let next = this.clone();\n next.spec.label = label;\n return next;\n }\n meta(...args) {\n if (args.length === 0) return this.spec.meta;\n let next = this.clone();\n next.spec.meta = Object.assign(next.spec.meta || {}, args[0]);\n return next;\n }\n withMutation(fn) {\n let before = this._mutate;\n this._mutate = true;\n let result = fn(this);\n this._mutate = before;\n return result;\n }\n concat(schema) {\n if (!schema || schema === this) return this;\n if (schema.type !== this.type && this.type !== 'mixed') throw new TypeError(`You cannot \\`concat()\\` schema's of different types: ${this.type} and ${schema.type}`);\n let base = this;\n let combined = schema.clone();\n const mergedSpec = Object.assign({}, base.spec, combined.spec);\n combined.spec = mergedSpec;\n combined.internalTests = Object.assign({}, base.internalTests, combined.internalTests);\n\n // manually merge the blacklist/whitelist (the other `schema` takes\n // precedence in case of conflicts)\n combined._whitelist = base._whitelist.merge(schema._whitelist, schema._blacklist);\n combined._blacklist = base._blacklist.merge(schema._blacklist, schema._whitelist);\n\n // start with the current tests\n combined.tests = base.tests;\n combined.exclusiveTests = base.exclusiveTests;\n\n // manually add the new tests to ensure\n // the deduping logic is consistent\n combined.withMutation(next => {\n schema.tests.forEach(fn => {\n next.test(fn.OPTIONS);\n });\n });\n combined.transforms = [...base.transforms, ...combined.transforms];\n return combined;\n }\n isType(v) {\n if (v == null) {\n if (this.spec.nullable && v === null) return true;\n if (this.spec.optional && v === undefined) return true;\n return false;\n }\n return this._typeCheck(v);\n }\n resolve(options) {\n let schema = this;\n if (schema.conditions.length) {\n let conditions = schema.conditions;\n schema = schema.clone();\n schema.conditions = [];\n schema = conditions.reduce((prevSchema, condition) => condition.resolve(prevSchema, options), schema);\n schema = schema.resolve(options);\n }\n return schema;\n }\n resolveOptions(options) {\n var _options$strict, _options$abortEarly, _options$recursive, _options$disableStack;\n return Object.assign({}, options, {\n from: options.from || [],\n strict: (_options$strict = options.strict) != null ? _options$strict : this.spec.strict,\n abortEarly: (_options$abortEarly = options.abortEarly) != null ? _options$abortEarly : this.spec.abortEarly,\n recursive: (_options$recursive = options.recursive) != null ? _options$recursive : this.spec.recursive,\n disableStackTrace: (_options$disableStack = options.disableStackTrace) != null ? _options$disableStack : this.spec.disableStackTrace\n });\n }\n\n /**\n * Run the configured transform pipeline over an input value.\n */\n\n cast(value, options = {}) {\n let resolvedSchema = this.resolve(Object.assign({\n value\n }, options));\n let allowOptionality = options.assert === 'ignore-optionality';\n let result = resolvedSchema._cast(value, options);\n if (options.assert !== false && !resolvedSchema.isType(result)) {\n if (allowOptionality && isAbsent(result)) {\n return result;\n }\n let formattedValue = printValue(value);\n let formattedResult = printValue(result);\n throw new TypeError(`The value of ${options.path || 'field'} could not be cast to a value ` + `that satisfies the schema type: \"${resolvedSchema.type}\". \\n\\n` + `attempted value: ${formattedValue} \\n` + (formattedResult !== formattedValue ? `result of cast: ${formattedResult}` : ''));\n }\n return result;\n }\n _cast(rawValue, options) {\n let value = rawValue === undefined ? rawValue : this.transforms.reduce((prevValue, fn) => fn.call(this, prevValue, rawValue, this), rawValue);\n if (value === undefined) {\n value = this.getDefault(options);\n }\n return value;\n }\n _validate(_value, options = {}, panic, next) {\n let {\n path,\n originalValue = _value,\n strict = this.spec.strict\n } = options;\n let value = _value;\n if (!strict) {\n value = this._cast(value, Object.assign({\n assert: false\n }, options));\n }\n let initialTests = [];\n for (let test of Object.values(this.internalTests)) {\n if (test) initialTests.push(test);\n }\n this.runTests({\n path,\n value,\n originalValue,\n options,\n tests: initialTests\n }, panic, initialErrors => {\n // even if we aren't ending early we can't proceed further if the types aren't correct\n if (initialErrors.length) {\n return next(initialErrors, value);\n }\n this.runTests({\n path,\n value,\n originalValue,\n options,\n tests: this.tests\n }, panic, next);\n });\n }\n\n /**\n * Executes a set of validations, either schema, produced Tests or a nested\n * schema validate result.\n */\n runTests(runOptions, panic, next) {\n let fired = false;\n let {\n tests,\n value,\n originalValue,\n path,\n options\n } = runOptions;\n let panicOnce = arg => {\n if (fired) return;\n fired = true;\n panic(arg, value);\n };\n let nextOnce = arg => {\n if (fired) return;\n fired = true;\n next(arg, value);\n };\n let count = tests.length;\n let nestedErrors = [];\n if (!count) return nextOnce([]);\n let args = {\n value,\n originalValue,\n path,\n options,\n schema: this\n };\n for (let i = 0; i < tests.length; i++) {\n const test = tests[i];\n test(args, panicOnce, function finishTestRun(err) {\n if (err) {\n Array.isArray(err) ? nestedErrors.push(...err) : nestedErrors.push(err);\n }\n if (--count <= 0) {\n nextOnce(nestedErrors);\n }\n });\n }\n }\n asNestedTest({\n key,\n index,\n parent,\n parentPath,\n originalParent,\n options\n }) {\n const k = key != null ? key : index;\n if (k == null) {\n throw TypeError('Must include `key` or `index` for nested validations');\n }\n const isIndex = typeof k === 'number';\n let value = parent[k];\n const testOptions = Object.assign({}, options, {\n // Nested validations fields are always strict:\n // 1. parent isn't strict so the casting will also have cast inner values\n // 2. parent is strict in which case the nested values weren't cast either\n strict: true,\n parent,\n value,\n originalValue: originalParent[k],\n // FIXME: tests depend on `index` being passed around deeply,\n // we should not let the options.key/index bleed through\n key: undefined,\n // index: undefined,\n [isIndex ? 'index' : 'key']: k,\n path: isIndex || k.includes('.') ? `${parentPath || ''}[${isIndex ? k : `\"${k}\"`}]` : (parentPath ? `${parentPath}.` : '') + key\n });\n return (_, panic, next) => this.resolve(testOptions)._validate(value, testOptions, panic, next);\n }\n validate(value, options) {\n var _options$disableStack2;\n let schema = this.resolve(Object.assign({}, options, {\n value\n }));\n let disableStackTrace = (_options$disableStack2 = options == null ? void 0 : options.disableStackTrace) != null ? _options$disableStack2 : schema.spec.disableStackTrace;\n return new Promise((resolve, reject) => schema._validate(value, options, (error, parsed) => {\n if (ValidationError.isError(error)) error.value = parsed;\n reject(error);\n }, (errors, validated) => {\n if (errors.length) reject(new ValidationError(errors, validated, undefined, undefined, disableStackTrace));else resolve(validated);\n }));\n }\n validateSync(value, options) {\n var _options$disableStack3;\n let schema = this.resolve(Object.assign({}, options, {\n value\n }));\n let result;\n let disableStackTrace = (_options$disableStack3 = options == null ? void 0 : options.disableStackTrace) != null ? _options$disableStack3 : schema.spec.disableStackTrace;\n schema._validate(value, Object.assign({}, options, {\n sync: true\n }), (error, parsed) => {\n if (ValidationError.isError(error)) error.value = parsed;\n throw error;\n }, (errors, validated) => {\n if (errors.length) throw new ValidationError(errors, value, undefined, undefined, disableStackTrace);\n result = validated;\n });\n return result;\n }\n isValid(value, options) {\n return this.validate(value, options).then(() => true, err => {\n if (ValidationError.isError(err)) return false;\n throw err;\n });\n }\n isValidSync(value, options) {\n try {\n this.validateSync(value, options);\n return true;\n } catch (err) {\n if (ValidationError.isError(err)) return false;\n throw err;\n }\n }\n _getDefault(options) {\n let defaultValue = this.spec.default;\n if (defaultValue == null) {\n return defaultValue;\n }\n return typeof defaultValue === 'function' ? defaultValue.call(this, options) : clone(defaultValue);\n }\n getDefault(options\n // If schema is defaulted we know it's at least not undefined\n ) {\n let schema = this.resolve(options || {});\n return schema._getDefault(options);\n }\n default(def) {\n if (arguments.length === 0) {\n return this._getDefault();\n }\n let next = this.clone({\n default: def\n });\n return next;\n }\n strict(isStrict = true) {\n return this.clone({\n strict: isStrict\n });\n }\n nullability(nullable, message) {\n const next = this.clone({\n nullable\n });\n next.internalTests.nullable = createValidation({\n message,\n name: 'nullable',\n test(value) {\n return value === null ? this.schema.spec.nullable : true;\n }\n });\n return next;\n }\n optionality(optional, message) {\n const next = this.clone({\n optional\n });\n next.internalTests.optionality = createValidation({\n message,\n name: 'optionality',\n test(value) {\n return value === undefined ? this.schema.spec.optional : true;\n }\n });\n return next;\n }\n optional() {\n return this.optionality(true);\n }\n defined(message = mixed.defined) {\n return this.optionality(false, message);\n }\n nullable() {\n return this.nullability(true);\n }\n nonNullable(message = mixed.notNull) {\n return this.nullability(false, message);\n }\n required(message = mixed.required) {\n return this.clone().withMutation(next => next.nonNullable(message).defined(message));\n }\n notRequired() {\n return this.clone().withMutation(next => next.nullable().optional());\n }\n transform(fn) {\n let next = this.clone();\n next.transforms.push(fn);\n return next;\n }\n\n /**\n * Adds a test function to the schema's queue of tests.\n * tests can be exclusive or non-exclusive.\n *\n * - exclusive tests, will replace any existing tests of the same name.\n * - non-exclusive: can be stacked\n *\n * If a non-exclusive test is added to a schema with an exclusive test of the same name\n * the exclusive test is removed and further tests of the same name will be stacked.\n *\n * If an exclusive test is added to a schema with non-exclusive tests of the same name\n * the previous tests are removed and further tests of the same name will replace each other.\n */\n\n test(...args) {\n let opts;\n if (args.length === 1) {\n if (typeof args[0] === 'function') {\n opts = {\n test: args[0]\n };\n } else {\n opts = args[0];\n }\n } else if (args.length === 2) {\n opts = {\n name: args[0],\n test: args[1]\n };\n } else {\n opts = {\n name: args[0],\n message: args[1],\n test: args[2]\n };\n }\n if (opts.message === undefined) opts.message = mixed.default;\n if (typeof opts.test !== 'function') throw new TypeError('`test` is a required parameters');\n let next = this.clone();\n let validate = createValidation(opts);\n let isExclusive = opts.exclusive || opts.name && next.exclusiveTests[opts.name] === true;\n if (opts.exclusive) {\n if (!opts.name) throw new TypeError('Exclusive tests must provide a unique `name` identifying the test');\n }\n if (opts.name) next.exclusiveTests[opts.name] = !!opts.exclusive;\n next.tests = next.tests.filter(fn => {\n if (fn.OPTIONS.name === opts.name) {\n if (isExclusive) return false;\n if (fn.OPTIONS.test === validate.OPTIONS.test) return false;\n }\n return true;\n });\n next.tests.push(validate);\n return next;\n }\n when(keys, options) {\n if (!Array.isArray(keys) && typeof keys !== 'string') {\n options = keys;\n keys = '.';\n }\n let next = this.clone();\n let deps = toArray(keys).map(key => new Reference(key));\n deps.forEach(dep => {\n // @ts-ignore readonly array\n if (dep.isSibling) next.deps.push(dep.key);\n });\n next.conditions.push(typeof options === 'function' ? new Condition(deps, options) : Condition.fromOptions(deps, options));\n return next;\n }\n typeError(message) {\n let next = this.clone();\n next.internalTests.typeError = createValidation({\n message,\n name: 'typeError',\n skipAbsent: true,\n test(value) {\n if (!this.schema._typeCheck(value)) return this.createError({\n params: {\n type: this.schema.type\n }\n });\n return true;\n }\n });\n return next;\n }\n oneOf(enums, message = mixed.oneOf) {\n let next = this.clone();\n enums.forEach(val => {\n next._whitelist.add(val);\n next._blacklist.delete(val);\n });\n next.internalTests.whiteList = createValidation({\n message,\n name: 'oneOf',\n skipAbsent: true,\n test(value) {\n let valids = this.schema._whitelist;\n let resolved = valids.resolveAll(this.resolve);\n return resolved.includes(value) ? true : this.createError({\n params: {\n values: Array.from(valids).join(', '),\n resolved\n }\n });\n }\n });\n return next;\n }\n notOneOf(enums, message = mixed.notOneOf) {\n let next = this.clone();\n enums.forEach(val => {\n next._blacklist.add(val);\n next._whitelist.delete(val);\n });\n next.internalTests.blacklist = createValidation({\n message,\n name: 'notOneOf',\n test(value) {\n let invalids = this.schema._blacklist;\n let resolved = invalids.resolveAll(this.resolve);\n if (resolved.includes(value)) return this.createError({\n params: {\n values: Array.from(invalids).join(', '),\n resolved\n }\n });\n return true;\n }\n });\n return next;\n }\n strip(strip = true) {\n let next = this.clone();\n next.spec.strip = strip;\n return next;\n }\n\n /**\n * Return a serialized description of the schema including validations, flags, types etc.\n *\n * @param options Provide any needed context for resolving runtime schema alterations (lazy, when conditions, etc).\n */\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const {\n label,\n meta,\n optional,\n nullable\n } = next.spec;\n const description = {\n meta,\n label,\n optional,\n nullable,\n default: next.getDefault(options),\n type: next.type,\n oneOf: next._whitelist.describe(),\n notOneOf: next._blacklist.describe(),\n tests: next.tests.map(fn => ({\n name: fn.OPTIONS.name,\n params: fn.OPTIONS.params\n })).filter((n, idx, list) => list.findIndex(c => c.name === n.name) === idx)\n };\n return description;\n }\n}\n// @ts-expect-error\nSchema.prototype.__isYupSchema__ = true;\nfor (const method of ['validate', 'validateSync']) Schema.prototype[`${method}At`] = function (path, value, options = {}) {\n const {\n parent,\n parentPath,\n schema\n } = getIn(this, path, value, options.context);\n return schema[method](parent && parent[parentPath], Object.assign({}, options, {\n parent,\n path\n }));\n};\nfor (const alias of ['equals', 'is']) Schema.prototype[alias] = Schema.prototype.oneOf;\nfor (const alias of ['not', 'nope']) Schema.prototype[alias] = Schema.prototype.notOneOf;\n\nconst returnsTrue = () => true;\nfunction create$8(spec) {\n return new MixedSchema(spec);\n}\nclass MixedSchema extends Schema {\n constructor(spec) {\n super(typeof spec === 'function' ? {\n type: 'mixed',\n check: spec\n } : Object.assign({\n type: 'mixed',\n check: returnsTrue\n }, spec));\n }\n}\ncreate$8.prototype = MixedSchema.prototype;\n\nfunction create$7() {\n return new BooleanSchema();\n}\nclass BooleanSchema extends Schema {\n constructor() {\n super({\n type: 'boolean',\n check(v) {\n if (v instanceof Boolean) v = v.valueOf();\n return typeof v === 'boolean';\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw, ctx) => {\n if (ctx.spec.coerce && !ctx.isType(value)) {\n if (/^(true|1)$/i.test(String(value))) return true;\n if (/^(false|0)$/i.test(String(value))) return false;\n }\n return value;\n });\n });\n }\n isTrue(message = boolean.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'true'\n },\n test(value) {\n return isAbsent(value) || value === true;\n }\n });\n }\n isFalse(message = boolean.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'false'\n },\n test(value) {\n return isAbsent(value) || value === false;\n }\n });\n }\n default(def) {\n return super.default(def);\n }\n defined(msg) {\n return super.defined(msg);\n }\n optional() {\n return super.optional();\n }\n required(msg) {\n return super.required(msg);\n }\n notRequired() {\n return super.notRequired();\n }\n nullable() {\n return super.nullable();\n }\n nonNullable(msg) {\n return super.nonNullable(msg);\n }\n strip(v) {\n return super.strip(v);\n }\n}\ncreate$7.prototype = BooleanSchema.prototype;\n\n/**\n * This file is a modified version of the file from the following repository:\n * Date.parse with progressive enhancement for ISO 8601 \n * NON-CONFORMANT EDITION.\n * © 2011 Colin Snover \n * Released under MIT license.\n */\n\n// prettier-ignore\n// 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm\nconst isoReg = /^(\\d{4}|[+-]\\d{6})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:[ T]?(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,.](\\d{1,}))?)?(?:(Z)|([+-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\nfunction parseIsoDate(date) {\n const struct = parseDateStruct(date);\n if (!struct) return Date.parse ? Date.parse(date) : Number.NaN;\n\n // timestamps without timezone identifiers should be considered local time\n if (struct.z === undefined && struct.plusMinus === undefined) {\n return new Date(struct.year, struct.month, struct.day, struct.hour, struct.minute, struct.second, struct.millisecond).valueOf();\n }\n let totalMinutesOffset = 0;\n if (struct.z !== 'Z' && struct.plusMinus !== undefined) {\n totalMinutesOffset = struct.hourOffset * 60 + struct.minuteOffset;\n if (struct.plusMinus === '+') totalMinutesOffset = 0 - totalMinutesOffset;\n }\n return Date.UTC(struct.year, struct.month, struct.day, struct.hour, struct.minute + totalMinutesOffset, struct.second, struct.millisecond);\n}\nfunction parseDateStruct(date) {\n var _regexResult$7$length, _regexResult$;\n const regexResult = isoReg.exec(date);\n if (!regexResult) return null;\n\n // use of toNumber() avoids NaN timestamps caused by “undefined”\n // values being passed to Date constructor\n return {\n year: toNumber(regexResult[1]),\n month: toNumber(regexResult[2], 1) - 1,\n day: toNumber(regexResult[3], 1),\n hour: toNumber(regexResult[4]),\n minute: toNumber(regexResult[5]),\n second: toNumber(regexResult[6]),\n millisecond: regexResult[7] ?\n // allow arbitrary sub-second precision beyond milliseconds\n toNumber(regexResult[7].substring(0, 3)) : 0,\n precision: (_regexResult$7$length = (_regexResult$ = regexResult[7]) == null ? void 0 : _regexResult$.length) != null ? _regexResult$7$length : undefined,\n z: regexResult[8] || undefined,\n plusMinus: regexResult[9] || undefined,\n hourOffset: toNumber(regexResult[10]),\n minuteOffset: toNumber(regexResult[11])\n };\n}\nfunction toNumber(str, defaultValue = 0) {\n return Number(str) || defaultValue;\n}\n\n// Taken from HTML spec: https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address\nlet rEmail =\n// eslint-disable-next-line\n/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\nlet rUrl =\n// eslint-disable-next-line\n/^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i;\n\n// eslint-disable-next-line\nlet rUUID = /^(?:[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;\nlet yearMonthDay = '^\\\\d{4}-\\\\d{2}-\\\\d{2}';\nlet hourMinuteSecond = '\\\\d{2}:\\\\d{2}:\\\\d{2}';\nlet zOrOffset = '(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)';\nlet rIsoDateTime = new RegExp(`${yearMonthDay}T${hourMinuteSecond}(\\\\.\\\\d+)?${zOrOffset}$`);\nlet isTrimmed = value => isAbsent(value) || value === value.trim();\nlet objStringTag = {}.toString();\nfunction create$6() {\n return new StringSchema();\n}\nclass StringSchema extends Schema {\n constructor() {\n super({\n type: 'string',\n check(value) {\n if (value instanceof String) value = value.valueOf();\n return typeof value === 'string';\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw, ctx) => {\n if (!ctx.spec.coerce || ctx.isType(value)) return value;\n\n // don't ever convert arrays\n if (Array.isArray(value)) return value;\n const strValue = value != null && value.toString ? value.toString() : value;\n\n // no one wants plain objects converted to [Object object]\n if (strValue === objStringTag) return value;\n return strValue;\n });\n });\n }\n required(message) {\n return super.required(message).withMutation(schema => schema.test({\n message: message || mixed.required,\n name: 'required',\n skipAbsent: true,\n test: value => !!value.length\n }));\n }\n notRequired() {\n return super.notRequired().withMutation(schema => {\n schema.tests = schema.tests.filter(t => t.OPTIONS.name !== 'required');\n return schema;\n });\n }\n length(length, message = string.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n skipAbsent: true,\n test(value) {\n return value.length === this.resolve(length);\n }\n });\n }\n min(min, message = string.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n test(value) {\n return value.length >= this.resolve(min);\n }\n });\n }\n max(max, message = string.max) {\n return this.test({\n name: 'max',\n exclusive: true,\n message,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value.length <= this.resolve(max);\n }\n });\n }\n matches(regex, options) {\n let excludeEmptyString = false;\n let message;\n let name;\n if (options) {\n if (typeof options === 'object') {\n ({\n excludeEmptyString = false,\n message,\n name\n } = options);\n } else {\n message = options;\n }\n }\n return this.test({\n name: name || 'matches',\n message: message || string.matches,\n params: {\n regex\n },\n skipAbsent: true,\n test: value => value === '' && excludeEmptyString || value.search(regex) !== -1\n });\n }\n email(message = string.email) {\n return this.matches(rEmail, {\n name: 'email',\n message,\n excludeEmptyString: true\n });\n }\n url(message = string.url) {\n return this.matches(rUrl, {\n name: 'url',\n message,\n excludeEmptyString: true\n });\n }\n uuid(message = string.uuid) {\n return this.matches(rUUID, {\n name: 'uuid',\n message,\n excludeEmptyString: false\n });\n }\n datetime(options) {\n let message = '';\n let allowOffset;\n let precision;\n if (options) {\n if (typeof options === 'object') {\n ({\n message = '',\n allowOffset = false,\n precision = undefined\n } = options);\n } else {\n message = options;\n }\n }\n return this.matches(rIsoDateTime, {\n name: 'datetime',\n message: message || string.datetime,\n excludeEmptyString: true\n }).test({\n name: 'datetime_offset',\n message: message || string.datetime_offset,\n params: {\n allowOffset\n },\n skipAbsent: true,\n test: value => {\n if (!value || allowOffset) return true;\n const struct = parseDateStruct(value);\n if (!struct) return false;\n return !!struct.z;\n }\n }).test({\n name: 'datetime_precision',\n message: message || string.datetime_precision,\n params: {\n precision\n },\n skipAbsent: true,\n test: value => {\n if (!value || precision == undefined) return true;\n const struct = parseDateStruct(value);\n if (!struct) return false;\n return struct.precision === precision;\n }\n });\n }\n\n //-- transforms --\n ensure() {\n return this.default('').transform(val => val === null ? '' : val);\n }\n trim(message = string.trim) {\n return this.transform(val => val != null ? val.trim() : val).test({\n message,\n name: 'trim',\n test: isTrimmed\n });\n }\n lowercase(message = string.lowercase) {\n return this.transform(value => !isAbsent(value) ? value.toLowerCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n skipAbsent: true,\n test: value => isAbsent(value) || value === value.toLowerCase()\n });\n }\n uppercase(message = string.uppercase) {\n return this.transform(value => !isAbsent(value) ? value.toUpperCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n skipAbsent: true,\n test: value => isAbsent(value) || value === value.toUpperCase()\n });\n }\n}\ncreate$6.prototype = StringSchema.prototype;\n\n//\n// String Interfaces\n//\n\nlet isNaN$1 = value => value != +value;\nfunction create$5() {\n return new NumberSchema();\n}\nclass NumberSchema extends Schema {\n constructor() {\n super({\n type: 'number',\n check(value) {\n if (value instanceof Number) value = value.valueOf();\n return typeof value === 'number' && !isNaN$1(value);\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw, ctx) => {\n if (!ctx.spec.coerce) return value;\n let parsed = value;\n if (typeof parsed === 'string') {\n parsed = parsed.replace(/\\s/g, '');\n if (parsed === '') return NaN;\n // don't use parseFloat to avoid positives on alpha-numeric strings\n parsed = +parsed;\n }\n\n // null -> NaN isn't useful; treat all nulls as null and let it fail on\n // nullability check vs TypeErrors\n if (ctx.isType(parsed) || parsed === null) return parsed;\n return parseFloat(parsed);\n });\n });\n }\n min(min, message = number.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n test(value) {\n return value >= this.resolve(min);\n }\n });\n }\n max(max, message = number.max) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value <= this.resolve(max);\n }\n });\n }\n lessThan(less, message = number.lessThan) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n less\n },\n skipAbsent: true,\n test(value) {\n return value < this.resolve(less);\n }\n });\n }\n moreThan(more, message = number.moreThan) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n more\n },\n skipAbsent: true,\n test(value) {\n return value > this.resolve(more);\n }\n });\n }\n positive(msg = number.positive) {\n return this.moreThan(0, msg);\n }\n negative(msg = number.negative) {\n return this.lessThan(0, msg);\n }\n integer(message = number.integer) {\n return this.test({\n name: 'integer',\n message,\n skipAbsent: true,\n test: val => Number.isInteger(val)\n });\n }\n truncate() {\n return this.transform(value => !isAbsent(value) ? value | 0 : value);\n }\n round(method) {\n var _method;\n let avail = ['ceil', 'floor', 'round', 'trunc'];\n method = ((_method = method) == null ? void 0 : _method.toLowerCase()) || 'round';\n\n // this exists for symemtry with the new Math.trunc\n if (method === 'trunc') return this.truncate();\n if (avail.indexOf(method.toLowerCase()) === -1) throw new TypeError('Only valid options for round() are: ' + avail.join(', '));\n return this.transform(value => !isAbsent(value) ? Math[method](value) : value);\n }\n}\ncreate$5.prototype = NumberSchema.prototype;\n\n//\n// Number Interfaces\n//\n\nlet invalidDate = new Date('');\nlet isDate = obj => Object.prototype.toString.call(obj) === '[object Date]';\nfunction create$4() {\n return new DateSchema();\n}\nclass DateSchema extends Schema {\n constructor() {\n super({\n type: 'date',\n check(v) {\n return isDate(v) && !isNaN(v.getTime());\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw, ctx) => {\n // null -> InvalidDate isn't useful; treat all nulls as null and let it fail on\n // nullability check vs TypeErrors\n if (!ctx.spec.coerce || ctx.isType(value) || value === null) return value;\n value = parseIsoDate(value);\n\n // 0 is a valid timestamp equivalent to 1970-01-01T00:00:00Z(unix epoch) or before.\n return !isNaN(value) ? new Date(value) : DateSchema.INVALID_DATE;\n });\n });\n }\n prepareParam(ref, name) {\n let param;\n if (!Reference.isRef(ref)) {\n let cast = this.cast(ref);\n if (!this._typeCheck(cast)) throw new TypeError(`\\`${name}\\` must be a Date or a value that can be \\`cast()\\` to a Date`);\n param = cast;\n } else {\n param = ref;\n }\n return param;\n }\n min(min, message = date.min) {\n let limit = this.prepareParam(min, 'min');\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n test(value) {\n return value >= this.resolve(limit);\n }\n });\n }\n max(max, message = date.max) {\n let limit = this.prepareParam(max, 'max');\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value <= this.resolve(limit);\n }\n });\n }\n}\nDateSchema.INVALID_DATE = invalidDate;\ncreate$4.prototype = DateSchema.prototype;\ncreate$4.INVALID_DATE = invalidDate;\n\n// @ts-expect-error\nfunction sortFields(fields, excludedEdges = []) {\n let edges = [];\n let nodes = new Set();\n let excludes = new Set(excludedEdges.map(([a, b]) => `${a}-${b}`));\n function addNode(depPath, key) {\n let node = split(depPath)[0];\n nodes.add(node);\n if (!excludes.has(`${key}-${node}`)) edges.push([key, node]);\n }\n for (const key of Object.keys(fields)) {\n let value = fields[key];\n nodes.add(key);\n if (Reference.isRef(value) && value.isSibling) addNode(value.path, key);else if (isSchema(value) && 'deps' in value) value.deps.forEach(path => addNode(path, key));\n }\n return toposort.array(Array.from(nodes), edges).reverse();\n}\n\nfunction findIndex(arr, err) {\n let idx = Infinity;\n arr.some((key, ii) => {\n var _err$path;\n if ((_err$path = err.path) != null && _err$path.includes(key)) {\n idx = ii;\n return true;\n }\n });\n return idx;\n}\nfunction sortByKeyOrder(keys) {\n return (a, b) => {\n return findIndex(keys, a) - findIndex(keys, b);\n };\n}\n\nconst parseJson = (value, _, ctx) => {\n if (typeof value !== 'string') {\n return value;\n }\n let parsed = value;\n try {\n parsed = JSON.parse(value);\n } catch (err) {\n /* */\n }\n return ctx.isType(parsed) ? parsed : value;\n};\n\n// @ts-ignore\nfunction deepPartial(schema) {\n if ('fields' in schema) {\n const partial = {};\n for (const [key, fieldSchema] of Object.entries(schema.fields)) {\n partial[key] = deepPartial(fieldSchema);\n }\n return schema.setFields(partial);\n }\n if (schema.type === 'array') {\n const nextArray = schema.optional();\n if (nextArray.innerType) nextArray.innerType = deepPartial(nextArray.innerType);\n return nextArray;\n }\n if (schema.type === 'tuple') {\n return schema.optional().clone({\n types: schema.spec.types.map(deepPartial)\n });\n }\n if ('optional' in schema) {\n return schema.optional();\n }\n return schema;\n}\nconst deepHas = (obj, p) => {\n const path = [...normalizePath(p)];\n if (path.length === 1) return path[0] in obj;\n let last = path.pop();\n let parent = getter(join(path), true)(obj);\n return !!(parent && last in parent);\n};\nlet isObject = obj => Object.prototype.toString.call(obj) === '[object Object]';\nfunction unknown(ctx, value) {\n let known = Object.keys(ctx.fields);\n return Object.keys(value).filter(key => known.indexOf(key) === -1);\n}\nconst defaultSort = sortByKeyOrder([]);\nfunction create$3(spec) {\n return new ObjectSchema(spec);\n}\nclass ObjectSchema extends Schema {\n constructor(spec) {\n super({\n type: 'object',\n check(value) {\n return isObject(value) || typeof value === 'function';\n }\n });\n this.fields = Object.create(null);\n this._sortErrors = defaultSort;\n this._nodes = [];\n this._excludedEdges = [];\n this.withMutation(() => {\n if (spec) {\n this.shape(spec);\n }\n });\n }\n _cast(_value, options = {}) {\n var _options$stripUnknown;\n let value = super._cast(_value, options);\n\n //should ignore nulls here\n if (value === undefined) return this.getDefault(options);\n if (!this._typeCheck(value)) return value;\n let fields = this.fields;\n let strip = (_options$stripUnknown = options.stripUnknown) != null ? _options$stripUnknown : this.spec.noUnknown;\n let props = [].concat(this._nodes, Object.keys(value).filter(v => !this._nodes.includes(v)));\n let intermediateValue = {}; // is filled during the transform below\n let innerOptions = Object.assign({}, options, {\n parent: intermediateValue,\n __validating: options.__validating || false\n });\n let isChanged = false;\n for (const prop of props) {\n let field = fields[prop];\n let exists = (prop in value);\n if (field) {\n let fieldValue;\n let inputValue = value[prop];\n\n // safe to mutate since this is fired in sequence\n innerOptions.path = (options.path ? `${options.path}.` : '') + prop;\n field = field.resolve({\n value: inputValue,\n context: options.context,\n parent: intermediateValue\n });\n let fieldSpec = field instanceof Schema ? field.spec : undefined;\n let strict = fieldSpec == null ? void 0 : fieldSpec.strict;\n if (fieldSpec != null && fieldSpec.strip) {\n isChanged = isChanged || prop in value;\n continue;\n }\n fieldValue = !options.__validating || !strict ?\n // TODO: use _cast, this is double resolving\n field.cast(value[prop], innerOptions) : value[prop];\n if (fieldValue !== undefined) {\n intermediateValue[prop] = fieldValue;\n }\n } else if (exists && !strip) {\n intermediateValue[prop] = value[prop];\n }\n if (exists !== prop in intermediateValue || intermediateValue[prop] !== value[prop]) {\n isChanged = true;\n }\n }\n return isChanged ? intermediateValue : value;\n }\n _validate(_value, options = {}, panic, next) {\n let {\n from = [],\n originalValue = _value,\n recursive = this.spec.recursive\n } = options;\n options.from = [{\n schema: this,\n value: originalValue\n }, ...from];\n // this flag is needed for handling `strict` correctly in the context of\n // validation vs just casting. e.g strict() on a field is only used when validating\n options.__validating = true;\n options.originalValue = originalValue;\n super._validate(_value, options, panic, (objectErrors, value) => {\n if (!recursive || !isObject(value)) {\n next(objectErrors, value);\n return;\n }\n originalValue = originalValue || value;\n let tests = [];\n for (let key of this._nodes) {\n let field = this.fields[key];\n if (!field || Reference.isRef(field)) {\n continue;\n }\n tests.push(field.asNestedTest({\n options,\n key,\n parent: value,\n parentPath: options.path,\n originalParent: originalValue\n }));\n }\n this.runTests({\n tests,\n value,\n originalValue,\n options\n }, panic, fieldErrors => {\n next(fieldErrors.sort(this._sortErrors).concat(objectErrors), value);\n });\n });\n }\n clone(spec) {\n const next = super.clone(spec);\n next.fields = Object.assign({}, this.fields);\n next._nodes = this._nodes;\n next._excludedEdges = this._excludedEdges;\n next._sortErrors = this._sortErrors;\n return next;\n }\n concat(schema) {\n let next = super.concat(schema);\n let nextFields = next.fields;\n for (let [field, schemaOrRef] of Object.entries(this.fields)) {\n const target = nextFields[field];\n nextFields[field] = target === undefined ? schemaOrRef : target;\n }\n return next.withMutation(s =>\n // XXX: excludes here is wrong\n s.setFields(nextFields, [...this._excludedEdges, ...schema._excludedEdges]));\n }\n _getDefault(options) {\n if ('default' in this.spec) {\n return super._getDefault(options);\n }\n\n // if there is no default set invent one\n if (!this._nodes.length) {\n return undefined;\n }\n let dft = {};\n this._nodes.forEach(key => {\n var _innerOptions;\n const field = this.fields[key];\n let innerOptions = options;\n if ((_innerOptions = innerOptions) != null && _innerOptions.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[key]\n });\n }\n dft[key] = field && 'getDefault' in field ? field.getDefault(innerOptions) : undefined;\n });\n return dft;\n }\n setFields(shape, excludedEdges) {\n let next = this.clone();\n next.fields = shape;\n next._nodes = sortFields(shape, excludedEdges);\n next._sortErrors = sortByKeyOrder(Object.keys(shape));\n // XXX: this carries over edges which may not be what you want\n if (excludedEdges) next._excludedEdges = excludedEdges;\n return next;\n }\n shape(additions, excludes = []) {\n return this.clone().withMutation(next => {\n let edges = next._excludedEdges;\n if (excludes.length) {\n if (!Array.isArray(excludes[0])) excludes = [excludes];\n edges = [...next._excludedEdges, ...excludes];\n }\n\n // XXX: excludes here is wrong\n return next.setFields(Object.assign(next.fields, additions), edges);\n });\n }\n partial() {\n const partial = {};\n for (const [key, schema] of Object.entries(this.fields)) {\n partial[key] = 'optional' in schema && schema.optional instanceof Function ? schema.optional() : schema;\n }\n return this.setFields(partial);\n }\n deepPartial() {\n const next = deepPartial(this);\n return next;\n }\n pick(keys) {\n const picked = {};\n for (const key of keys) {\n if (this.fields[key]) picked[key] = this.fields[key];\n }\n return this.setFields(picked, this._excludedEdges.filter(([a, b]) => keys.includes(a) && keys.includes(b)));\n }\n omit(keys) {\n const remaining = [];\n for (const key of Object.keys(this.fields)) {\n if (keys.includes(key)) continue;\n remaining.push(key);\n }\n return this.pick(remaining);\n }\n from(from, to, alias) {\n let fromGetter = getter(from, true);\n return this.transform(obj => {\n if (!obj) return obj;\n let newObj = obj;\n if (deepHas(obj, from)) {\n newObj = Object.assign({}, obj);\n if (!alias) delete newObj[from];\n newObj[to] = fromGetter(obj);\n }\n return newObj;\n });\n }\n\n /** Parse an input JSON string to an object */\n json() {\n return this.transform(parseJson);\n }\n noUnknown(noAllow = true, message = object.noUnknown) {\n if (typeof noAllow !== 'boolean') {\n message = noAllow;\n noAllow = true;\n }\n let next = this.test({\n name: 'noUnknown',\n exclusive: true,\n message: message,\n test(value) {\n if (value == null) return true;\n const unknownKeys = unknown(this.schema, value);\n return !noAllow || unknownKeys.length === 0 || this.createError({\n params: {\n unknown: unknownKeys.join(', ')\n }\n });\n }\n });\n next.spec.noUnknown = noAllow;\n return next;\n }\n unknown(allow = true, message = object.noUnknown) {\n return this.noUnknown(!allow, message);\n }\n transformKeys(fn) {\n return this.transform(obj => {\n if (!obj) return obj;\n const result = {};\n for (const key of Object.keys(obj)) result[fn(key)] = obj[key];\n return result;\n });\n }\n camelCase() {\n return this.transformKeys(camelCase);\n }\n snakeCase() {\n return this.transformKeys(snakeCase);\n }\n constantCase() {\n return this.transformKeys(key => snakeCase(key).toUpperCase());\n }\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const base = super.describe(options);\n base.fields = {};\n for (const [key, value] of Object.entries(next.fields)) {\n var _innerOptions2;\n let innerOptions = options;\n if ((_innerOptions2 = innerOptions) != null && _innerOptions2.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[key]\n });\n }\n base.fields[key] = value.describe(innerOptions);\n }\n return base;\n }\n}\ncreate$3.prototype = ObjectSchema.prototype;\n\nfunction create$2(type) {\n return new ArraySchema(type);\n}\nclass ArraySchema extends Schema {\n constructor(type) {\n super({\n type: 'array',\n spec: {\n types: type\n },\n check(v) {\n return Array.isArray(v);\n }\n });\n\n // `undefined` specifically means uninitialized, as opposed to \"no subtype\"\n this.innerType = void 0;\n this.innerType = type;\n }\n _cast(_value, _opts) {\n const value = super._cast(_value, _opts);\n\n // should ignore nulls here\n if (!this._typeCheck(value) || !this.innerType) {\n return value;\n }\n let isChanged = false;\n const castArray = value.map((v, idx) => {\n const castElement = this.innerType.cast(v, Object.assign({}, _opts, {\n path: `${_opts.path || ''}[${idx}]`\n }));\n if (castElement !== v) {\n isChanged = true;\n }\n return castElement;\n });\n return isChanged ? castArray : value;\n }\n _validate(_value, options = {}, panic, next) {\n var _options$recursive;\n // let sync = options.sync;\n // let path = options.path;\n let innerType = this.innerType;\n // let endEarly = options.abortEarly ?? this.spec.abortEarly;\n let recursive = (_options$recursive = options.recursive) != null ? _options$recursive : this.spec.recursive;\n options.originalValue != null ? options.originalValue : _value;\n super._validate(_value, options, panic, (arrayErrors, value) => {\n var _options$originalValu2;\n if (!recursive || !innerType || !this._typeCheck(value)) {\n next(arrayErrors, value);\n return;\n }\n\n // #950 Ensure that sparse array empty slots are validated\n let tests = new Array(value.length);\n for (let index = 0; index < value.length; index++) {\n var _options$originalValu;\n tests[index] = innerType.asNestedTest({\n options,\n index,\n parent: value,\n parentPath: options.path,\n originalParent: (_options$originalValu = options.originalValue) != null ? _options$originalValu : _value\n });\n }\n this.runTests({\n value,\n tests,\n originalValue: (_options$originalValu2 = options.originalValue) != null ? _options$originalValu2 : _value,\n options\n }, panic, innerTypeErrors => next(innerTypeErrors.concat(arrayErrors), value));\n });\n }\n clone(spec) {\n const next = super.clone(spec);\n // @ts-expect-error readonly\n next.innerType = this.innerType;\n return next;\n }\n\n /** Parse an input JSON string to an object */\n json() {\n return this.transform(parseJson);\n }\n concat(schema) {\n let next = super.concat(schema);\n\n // @ts-expect-error readonly\n next.innerType = this.innerType;\n if (schema.innerType)\n // @ts-expect-error readonly\n next.innerType = next.innerType ?\n // @ts-expect-error Lazy doesn't have concat and will break\n next.innerType.concat(schema.innerType) : schema.innerType;\n return next;\n }\n of(schema) {\n // FIXME: this should return a new instance of array without the default to be\n let next = this.clone();\n if (!isSchema(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema not: ' + printValue(schema));\n\n // @ts-expect-error readonly\n next.innerType = schema;\n next.spec = Object.assign({}, next.spec, {\n types: schema\n });\n return next;\n }\n length(length, message = array.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n skipAbsent: true,\n test(value) {\n return value.length === this.resolve(length);\n }\n });\n }\n min(min, message) {\n message = message || array.min;\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n // FIXME(ts): Array\n test(value) {\n return value.length >= this.resolve(min);\n }\n });\n }\n max(max, message) {\n message = message || array.max;\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value.length <= this.resolve(max);\n }\n });\n }\n ensure() {\n return this.default(() => []).transform((val, original) => {\n // We don't want to return `null` for nullable schema\n if (this._typeCheck(val)) return val;\n return original == null ? [] : [].concat(original);\n });\n }\n compact(rejector) {\n let reject = !rejector ? v => !!v : (v, i, a) => !rejector(v, i, a);\n return this.transform(values => values != null ? values.filter(reject) : values);\n }\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const base = super.describe(options);\n if (next.innerType) {\n var _innerOptions;\n let innerOptions = options;\n if ((_innerOptions = innerOptions) != null && _innerOptions.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[0]\n });\n }\n base.innerType = next.innerType.describe(innerOptions);\n }\n return base;\n }\n}\ncreate$2.prototype = ArraySchema.prototype;\n\n// @ts-ignore\nfunction create$1(schemas) {\n return new TupleSchema(schemas);\n}\nclass TupleSchema extends Schema {\n constructor(schemas) {\n super({\n type: 'tuple',\n spec: {\n types: schemas\n },\n check(v) {\n const types = this.spec.types;\n return Array.isArray(v) && v.length === types.length;\n }\n });\n this.withMutation(() => {\n this.typeError(tuple.notType);\n });\n }\n _cast(inputValue, options) {\n const {\n types\n } = this.spec;\n const value = super._cast(inputValue, options);\n if (!this._typeCheck(value)) {\n return value;\n }\n let isChanged = false;\n const castArray = types.map((type, idx) => {\n const castElement = type.cast(value[idx], Object.assign({}, options, {\n path: `${options.path || ''}[${idx}]`\n }));\n if (castElement !== value[idx]) isChanged = true;\n return castElement;\n });\n return isChanged ? castArray : value;\n }\n _validate(_value, options = {}, panic, next) {\n let itemTypes = this.spec.types;\n super._validate(_value, options, panic, (tupleErrors, value) => {\n var _options$originalValu2;\n // intentionally not respecting recursive\n if (!this._typeCheck(value)) {\n next(tupleErrors, value);\n return;\n }\n let tests = [];\n for (let [index, itemSchema] of itemTypes.entries()) {\n var _options$originalValu;\n tests[index] = itemSchema.asNestedTest({\n options,\n index,\n parent: value,\n parentPath: options.path,\n originalParent: (_options$originalValu = options.originalValue) != null ? _options$originalValu : _value\n });\n }\n this.runTests({\n value,\n tests,\n originalValue: (_options$originalValu2 = options.originalValue) != null ? _options$originalValu2 : _value,\n options\n }, panic, innerTypeErrors => next(innerTypeErrors.concat(tupleErrors), value));\n });\n }\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const base = super.describe(options);\n base.innerType = next.spec.types.map((schema, index) => {\n var _innerOptions;\n let innerOptions = options;\n if ((_innerOptions = innerOptions) != null && _innerOptions.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[index]\n });\n }\n return schema.describe(innerOptions);\n });\n return base;\n }\n}\ncreate$1.prototype = TupleSchema.prototype;\n\nfunction create(builder) {\n return new Lazy(builder);\n}\nclass Lazy {\n constructor(builder) {\n this.type = 'lazy';\n this.__isYupSchema__ = true;\n this.spec = void 0;\n this._resolve = (value, options = {}) => {\n let schema = this.builder(value, options);\n if (!isSchema(schema)) throw new TypeError('lazy() functions must return a valid schema');\n if (this.spec.optional) schema = schema.optional();\n return schema.resolve(options);\n };\n this.builder = builder;\n this.spec = {\n meta: undefined,\n optional: false\n };\n }\n clone(spec) {\n const next = new Lazy(this.builder);\n next.spec = Object.assign({}, this.spec, spec);\n return next;\n }\n optionality(optional) {\n const next = this.clone({\n optional\n });\n return next;\n }\n optional() {\n return this.optionality(true);\n }\n resolve(options) {\n return this._resolve(options.value, options);\n }\n cast(value, options) {\n return this._resolve(value, options).cast(value, options);\n }\n asNestedTest(config) {\n let {\n key,\n index,\n parent,\n options\n } = config;\n let value = parent[index != null ? index : key];\n return this._resolve(value, Object.assign({}, options, {\n value,\n parent\n })).asNestedTest(config);\n }\n validate(value, options) {\n return this._resolve(value, options).validate(value, options);\n }\n validateSync(value, options) {\n return this._resolve(value, options).validateSync(value, options);\n }\n validateAt(path, value, options) {\n return this._resolve(value, options).validateAt(path, value, options);\n }\n validateSyncAt(path, value, options) {\n return this._resolve(value, options).validateSyncAt(path, value, options);\n }\n isValid(value, options) {\n return this._resolve(value, options).isValid(value, options);\n }\n isValidSync(value, options) {\n return this._resolve(value, options).isValidSync(value, options);\n }\n describe(options) {\n return options ? this.resolve(options).describe(options) : {\n type: 'lazy',\n meta: this.spec.meta,\n label: undefined\n };\n }\n meta(...args) {\n if (args.length === 0) return this.spec.meta;\n let next = this.clone();\n next.spec.meta = Object.assign(next.spec.meta || {}, args[0]);\n return next;\n }\n}\n\nfunction setLocale(custom) {\n Object.keys(custom).forEach(type => {\n // @ts-ignore\n Object.keys(custom[type]).forEach(method => {\n // @ts-ignore\n locale[type][method] = custom[type][method];\n });\n });\n}\n\nfunction addMethod(schemaType, name, fn) {\n if (!schemaType || !isSchema(schemaType.prototype)) throw new TypeError('You must provide a yup schema constructor function');\n if (typeof name !== 'string') throw new TypeError('A Method name must be provided');\n if (typeof fn !== 'function') throw new TypeError('Method function must be provided');\n schemaType.prototype[name] = fn;\n}\n\nexport { ArraySchema, BooleanSchema, DateSchema, MixedSchema, NumberSchema, ObjectSchema, Schema, StringSchema, TupleSchema, ValidationError, addMethod, create$2 as array, create$7 as bool, create$7 as boolean, create$4 as date, locale as defaultLocale, getIn, isSchema, create as lazy, create$8 as mixed, create$5 as number, create$3 as object, printValue, reach, create$9 as ref, setLocale, create$6 as string, create$1 as tuple };\n","import * as yup from \"yup\";\nimport { ValidationKeys } from \"../types/form.type\";\n\nexport const getPortfolioFormSchema = yup\n .object({\n email: yup\n .string()\n .min(1, ValidationKeys.required)\n .email(ValidationKeys.email)\n .required(ValidationKeys.required),\n firstname: yup.string().nullable(),\n })\n .required();\n\nexport const contactFormSchema = yup\n .object({\n email: yup\n .string()\n .min(1, ValidationKeys.required)\n .email(ValidationKeys.email)\n .required(ValidationKeys.required),\n company: yup.string().nullable(),\n firstname: yup.string().nullable(),\n describe_your_project: yup.string().nullable(),\n consentToProcess: yup\n .boolean()\n .oneOf([true], ValidationKeys.consent)\n .required(ValidationKeys.required),\n })\n .required();\n","import { FieldErrors, FieldValues } from \"react-hook-form\";\nimport {\n IContactFormData,\n IGetPortfolioFormData,\n IHubspotFormDTO,\n ValidationKeys,\n} from \"../types/form.type\";\nimport { TValidationMarkup } from \"../types/commonMarkup.type\";\n\nexport const mapGetPorfolioData = (\n data: IGetPortfolioFormData,\n hutk?: string\n): IHubspotFormDTO => {\n return {\n fields: Object.entries(data).map(([key, value]) => ({\n objectTypeId: \"0-1\",\n name: key as keyof typeof data,\n value: value,\n })),\n context: {\n hutk,\n },\n legalConsentOptions: {\n consent: {\n consentToProcess: true,\n text: \"I agree to allow Example Company to store and process my personal data.\",\n },\n },\n };\n};\n\nexport const mapContactFormData = (\n data: IContactFormData,\n hutk?: string\n): IHubspotFormDTO> => {\n return {\n fields: Object.entries(data)\n .filter(([key, _]) => key !== \"consentToProcess\")\n .map(([key, value]) => ({\n objectTypeId: \"0-1\",\n name: key as keyof Omit,\n value: value,\n })),\n context: {\n hutk,\n },\n legalConsentOptions: {\n consent: {\n consentToProcess: data.consentToProcess,\n text: \"I agree to allow Example Company to store and process my personal data.\",\n },\n },\n };\n};\n\nexport function getValidationMessage(\n key: keyof T,\n errors: FieldErrors,\n validationMarkup?: TValidationMarkup\n): string | undefined | null {\n return errors[key]?.message &&\n Object.values(ValidationKeys).includes(\n // @ts-ignore\n errors[key].message\n )\n ? validationMarkup?.[errors[key]?.message as ValidationKeys]\n : null;\n}\n","import {\n IContactFormMarkup,\n IMarkupQueryResult,\n TValidationMarkup,\n} from \"./commonMarkup.type\";\n\nexport interface IContactFromQueryResult\n extends IMarkupQueryResult<{\n contactForm: IContactFormMarkup;\n validation: TValidationMarkup;\n }> {\n en?: { nodes?: { html: string }[] };\n ru?: { nodes?: { html: string }[] };\n}\n\ntype THubspotFields = {\n [K in keyof T]: {\n objectTypeId: \"0-1\";\n name: K;\n value: T[K];\n };\n}[keyof T][];\n\nexport interface IHubspotFormDTO {\n fields: THubspotFields;\n context: {\n hutk?: string;\n };\n legalConsentOptions: {\n consent: {\n consentToProcess: boolean;\n text: string;\n };\n };\n}\n\nexport interface IGetPortfolioFormData {\n email: string;\n firstname?: string | null;\n}\n\nexport enum ValidationKeys {\n email = \"invalidEmail\",\n required = \"required\",\n consent = \"consent\",\n}\n\nexport enum ServicesOptions {\n web_dev = \"web_dev\",\n mobile_dev = \"mobile_dev\",\n qa = \"qa\",\n devops = \"devops\",\n ui_ux = \"ui_ux\",\n ba = \"ba\",\n add_ins = \"add_ins\",\n vr_ar = \"vr_ar\",\n support = \"support\",\n consulting = \"consulting\",\n}\n\nexport enum BudgetOptions {\n \"_1500_2500\" = \"_1500_2500\",\n \"_2500_5000\" = \"_2500_5000\",\n \"_5000_10000\" = \"_5000_10000\",\n \"_10000_\" = \"_10000_\",\n not_decided = \"not_decided\",\n}\n\nexport interface IContactFormData {\n email: string;\n company?: string | null;\n firstname?: string | null;\n services?: ServicesOptions | null;\n budget?: BudgetOptions | null;\n describe_your_project?: string | null;\n consentToProcess: boolean;\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","/**\n * Based on Kendo UI Core expression code \n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX) || ['']\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-server-dom-webpack.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var k=require(\"react\"),l={stream:!0},n=new Map,p=Symbol.for(\"react.element\"),q=Symbol.for(\"react.lazy\"),r=Symbol.for(\"react.default_value\"),t=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ContextRegistry;function u(a){t[a]||(t[a]=k.createServerContext(a,r));return t[a]}function v(a,b,c){this._status=a;this._value=b;this._response=c}v.prototype.then=function(a){0===this._status?(null===this._value&&(this._value=[]),this._value.push(a)):a()};\nfunction w(a){switch(a._status){case 3:return a._value;case 1:var b=JSON.parse(a._value,a._response._fromJSON);a._status=3;return a._value=b;case 2:b=a._value;for(var c=b.chunks,d=0;d str.match(reWords) || []\n\nconst upperFirst = (str) => str[0].toUpperCase() + str.slice(1)\n\nconst join = (str, d) => words(str).join(d).toLowerCase()\n\nconst camelCase = (str) =>\n words(str).reduce(\n (acc, next) =>\n `${acc}${\n !acc\n ? next.toLowerCase()\n : next[0].toUpperCase() + next.slice(1).toLowerCase()\n }`,\n '',\n )\n\nconst pascalCase = (str) => upperFirst(camelCase(str))\n\nconst snakeCase = (str) => join(str, '_')\n\nconst kebabCase = (str) => join(str, '-')\n\nconst sentenceCase = (str) => upperFirst(join(str, ' '))\n\nconst titleCase = (str) => words(str).map(upperFirst).join(' ')\n\nmodule.exports = {\n words,\n upperFirst,\n camelCase,\n pascalCase,\n snakeCase,\n kebabCase,\n sentenceCase,\n titleCase,\n}\n","\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\n","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n return (module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.indexOf(n) >= 0) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(t, e) {\n return (module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst PartytownSnippet = \"/* Partytown 0.7.6 - MIT builder.io */\\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,\\\"/\\\"==(a=(o.lib||\\\"/~partytown/\\\")+(o.debug?\\\"debug/\\\":\\\"\\\"))[0]&&(s=e.querySelectorAll('script[type=\\\"text/partytown\\\"]'),i!=t?i.dispatchEvent(new CustomEvent(\\\"pt1\\\",{detail:t})):(d=setTimeout(f,1e4),e.addEventListener(\\\"pt0\\\",w),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||\\\"partytown-sw.js\\\"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener(\\\"statechange\\\",(function(t){\\\"activated\\\"==t.target.state&&h()}))}),console.error):f())))}function h(t){c=e.createElement(t?\\\"script\\\":\\\"iframe\\\"),t||(c.setAttribute(\\\"style\\\",\\\"display:block;width:0;height:0;border:0;visibility:hidden\\\"),c.setAttribute(\\\"aria-hidden\\\",!0)),c.src=a+\\\"partytown-\\\"+(t?\\\"atomics.js?v=0.7.6\\\":\\\"sandbox-sw.html?\\\"+Date.now()),e.body.appendChild(c)}function f(n,r){for(w(),i==t&&(o.forward||[]).map((function(e){delete t[e.split(\\\".\\\")[0]]})),n=0;n {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the `\n {/* Google tag (gtag.js) */}\n \n \n \n {/* Consent handling */}\n \n \n );\n};\n\nexport default AnalyticsByConsent;\n","import React from \"react\";\n\nimport { PageProps, graphql, useStaticQuery } from \"gatsby\";\n\nimport { IBasePageContext, ISiteMetadata } from \"../../types/common.type\";\nimport {\n ILayoutMarkupData,\n TValidationMarkup,\n} from \"../../types/commonMarkup.type\";\n\nimport Navbar from \"./navbar\";\nimport Footer from \"./footer\";\nimport { BasicMetadata } from \"../common/metadata\";\nimport UpButton from \"../common/upButton\";\nimport AnalyticsByConsent from \"./analyticsByConsent\";\n\nconst Layout = ({\n path,\n children,\n pageContext: { lang },\n}: PageProps) => {\n const layoutData = useStaticQuery(query) as {\n site: {\n siteMetadata: ISiteMetadata;\n };\n allMarkdownRemark?: {\n nodes?:\n | {\n fields: { language: string };\n frontmatter: {\n layout: ILayoutMarkupData;\n validation: TValidationMarkup;\n };\n }[]\n | null;\n };\n };\n\n const layoutMarkupFallback: ILayoutMarkupData = {\n discussProject: \"CONTACT US\",\n links: {\n services: \"Services\",\n workflow: \"Workflow\",\n projects: \"Projects\",\n blog: \"Blog\",\n },\n contactsLabel: \"CONTACTS\",\n requisites: {\n ein: \"EIN: 35-2654711\",\n companyCode: \"Company Code: 7296176\",\n street: \"8 The Green STE B\",\n city: \"Dover\",\n postalCode: \"DE 19901-3618\",\n country: \"United States\",\n phone: \"+1 302 364 0193\",\n },\n homePageLinkLabel: \"CodeCave home page\",\n getPortfolioForm: {\n title: \"Leave your contact to get our portfolio\",\n name: \"Name\",\n email: \"Email*\",\n buttonLabel: \"get portfolio\",\n },\n policies: {\n privacy: {\n title: \"Privacy Policy\",\n link: \"https://www.codecave.it/privacy-policy\",\n },\n cookie: {\n title: \"Cookie Policy\",\n link: \"https://www.codecave.it/cookie-policy\",\n },\n },\n };\n const allMarkup = layoutData?.allMarkdownRemark?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter;\n const layoutMarkup = allMarkup?.layout ?? layoutMarkupFallback;\n const validationMarkup = allMarkup?.validation;\n const gtagId = layoutData?.site?.siteMetadata?.analyticsId;\n\n return (\n <>\n \n \n \n \n {children}\n \n \n \n \n );\n};\n\nexport default Layout;\n\nexport const query = graphql`\n query {\n site {\n siteMetadata {\n analyticsId\n }\n }\n allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n validation {\n invalidEmail\n required\n consent\n }\n layout {\n links {\n services\n workflow\n projects\n blog\n }\n contactsLabel\n discussProject\n requisites {\n ein\n companyCode\n street\n city\n postalCode\n country\n phone\n }\n homePageLinkLabel\n getPortfolioForm {\n title\n name\n email\n buttonLabel\n }\n policies {\n privacy {\n title\n link\n }\n cookie {\n title\n link\n }\n }\n }\n }\n }\n }\n }\n`;\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled() {\n const force = this === true;\n\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, arguments);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, arguments);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\n\nexport default (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n }, freq);\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport progressEventReducer from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType} = _config;\n let onCanceled;\n function done() {\n if (_config.cancelToken) {\n _config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (_config.signal) {\n _config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n _config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (typeof _config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof _config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n}\n\nexport default composeSignals;\n","\n\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n\n return new ReadableStream({\n type: 'bytes',\n\n async pull(controller) {\n const {done, value} = await iterator.next();\n\n if (done) {\n controller.close();\n onFinish();\n return;\n }\n\n let len = value.byteLength;\n onProgress && onProgress(bytes += len);\n controller.enqueue(new Uint8Array(value));\n },\n cancel(reason) {\n onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport progressEventReducer from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst fetchProgressDecorator = (total, fn) => {\n const lengthComputable = total != null;\n return (loaded) => setTimeout(() => fn({\n lengthComputable,\n total,\n loaded\n }));\n}\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst supportsRequestStream = isReadableStreamSupported && (() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n})();\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported && !!(()=> {\n try {\n return utils.isReadableStream(new Response('').body);\n } catch(err) {\n // return undefined\n }\n})();\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n }\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(\n requestContentLength,\n progressEventReducer(onUploadProgress)\n ), null, encodeText);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'cors' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(\n responseContentLength,\n progressEventReducer(onDownloadProgress, true)\n ), isStreamResponse && onFinish, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from \"axios\";\n\nexport const hubspotApi = axios.create({\n baseURL:\n \"https://api.hsforms.com/submissions/v3/integration/submit/21836033/\",\n headers: {\n \"Content-type\": \"application/json\",\n },\n});","export function getCookie(key: string) {\n var b = document.cookie.match(\"(^|;)\\\\s*\" + key + \"\\\\s*=\\\\s*([^;]+)\");\n return b ? b.pop() : \"\";\n}\n","import { getter, forEach, split, normalizePath, join } from 'property-expr';\nimport { camelCase, snakeCase } from 'tiny-case';\nimport toposort from 'toposort';\n\nconst toString = Object.prototype.toString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\nfunction printSimpleValue(val, quoteStrings = false) {\n if (val == null || val === true || val === false) return '' + val;\n const typeOf = typeof val;\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return quoteStrings ? `\"${val}\"` : val;\n if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']';\n if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n const tag = toString.call(val).slice(8, -1);\n if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val);\n if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']';\n if (tag === 'RegExp') return regExpToString.call(val);\n return null;\n}\nfunction printValue(value, quoteStrings) {\n let result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n return JSON.stringify(value, function (key, value) {\n let result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n }, 2);\n}\n\nfunction toArray(value) {\n return value == null ? [] : [].concat(value);\n}\n\nlet _Symbol$toStringTag, _Symbol$hasInstance, _Symbol$toStringTag2;\nlet strReg = /\\$\\{\\s*(\\w+)\\s*\\}/g;\n_Symbol$toStringTag = Symbol.toStringTag;\nclass ValidationErrorNoStack {\n constructor(errorOrErrors, value, field, type) {\n this.name = void 0;\n this.message = void 0;\n this.value = void 0;\n this.path = void 0;\n this.type = void 0;\n this.params = void 0;\n this.errors = void 0;\n this.inner = void 0;\n this[_Symbol$toStringTag] = 'Error';\n this.name = 'ValidationError';\n this.value = value;\n this.path = field;\n this.type = type;\n this.errors = [];\n this.inner = [];\n toArray(errorOrErrors).forEach(err => {\n if (ValidationError.isError(err)) {\n this.errors.push(...err.errors);\n const innerErrors = err.inner.length ? err.inner : [err];\n this.inner.push(...innerErrors);\n } else {\n this.errors.push(err);\n }\n });\n this.message = this.errors.length > 1 ? `${this.errors.length} errors occurred` : this.errors[0];\n }\n}\n_Symbol$hasInstance = Symbol.hasInstance;\n_Symbol$toStringTag2 = Symbol.toStringTag;\nclass ValidationError extends Error {\n static formatError(message, params) {\n const path = params.label || params.path || 'this';\n if (path !== params.path) params = Object.assign({}, params, {\n path\n });\n if (typeof message === 'string') return message.replace(strReg, (_, key) => printValue(params[key]));\n if (typeof message === 'function') return message(params);\n return message;\n }\n static isError(err) {\n return err && err.name === 'ValidationError';\n }\n constructor(errorOrErrors, value, field, type, disableStack) {\n const errorNoStack = new ValidationErrorNoStack(errorOrErrors, value, field, type);\n if (disableStack) {\n return errorNoStack;\n }\n super();\n this.value = void 0;\n this.path = void 0;\n this.type = void 0;\n this.params = void 0;\n this.errors = [];\n this.inner = [];\n this[_Symbol$toStringTag2] = 'Error';\n this.name = errorNoStack.name;\n this.message = errorNoStack.message;\n this.type = errorNoStack.type;\n this.value = errorNoStack.value;\n this.path = errorNoStack.path;\n this.errors = errorNoStack.errors;\n this.inner = errorNoStack.inner;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ValidationError);\n }\n }\n static [_Symbol$hasInstance](inst) {\n return ValidationErrorNoStack[Symbol.hasInstance](inst) || super[Symbol.hasInstance](inst);\n }\n}\n\nlet mixed = {\n default: '${path} is invalid',\n required: '${path} is a required field',\n defined: '${path} must be defined',\n notNull: '${path} cannot be null',\n oneOf: '${path} must be one of the following values: ${values}',\n notOneOf: '${path} must not be one of the following values: ${values}',\n notType: ({\n path,\n type,\n value,\n originalValue\n }) => {\n const castMsg = originalValue != null && originalValue !== value ? ` (cast from the value \\`${printValue(originalValue, true)}\\`).` : '.';\n return type !== 'mixed' ? `${path} must be a \\`${type}\\` type, ` + `but the final value was: \\`${printValue(value, true)}\\`` + castMsg : `${path} must match the configured type. ` + `The validated value was: \\`${printValue(value, true)}\\`` + castMsg;\n }\n};\nlet string = {\n length: '${path} must be exactly ${length} characters',\n min: '${path} must be at least ${min} characters',\n max: '${path} must be at most ${max} characters',\n matches: '${path} must match the following: \"${regex}\"',\n email: '${path} must be a valid email',\n url: '${path} must be a valid URL',\n uuid: '${path} must be a valid UUID',\n datetime: '${path} must be a valid ISO date-time',\n datetime_precision: '${path} must be a valid ISO date-time with a sub-second precision of exactly ${precision} digits',\n datetime_offset: '${path} must be a valid ISO date-time with UTC \"Z\" timezone',\n trim: '${path} must be a trimmed string',\n lowercase: '${path} must be a lowercase string',\n uppercase: '${path} must be a upper case string'\n};\nlet number = {\n min: '${path} must be greater than or equal to ${min}',\n max: '${path} must be less than or equal to ${max}',\n lessThan: '${path} must be less than ${less}',\n moreThan: '${path} must be greater than ${more}',\n positive: '${path} must be a positive number',\n negative: '${path} must be a negative number',\n integer: '${path} must be an integer'\n};\nlet date = {\n min: '${path} field must be later than ${min}',\n max: '${path} field must be at earlier than ${max}'\n};\nlet boolean = {\n isValue: '${path} field must be ${value}'\n};\nlet object = {\n noUnknown: '${path} field has unspecified keys: ${unknown}'\n};\nlet array = {\n min: '${path} field must have at least ${min} items',\n max: '${path} field must have less than or equal to ${max} items',\n length: '${path} must have ${length} items'\n};\nlet tuple = {\n notType: params => {\n const {\n path,\n value,\n spec\n } = params;\n const typeLen = spec.types.length;\n if (Array.isArray(value)) {\n if (value.length < typeLen) return `${path} tuple value has too few items, expected a length of ${typeLen} but got ${value.length} for value: \\`${printValue(value, true)}\\``;\n if (value.length > typeLen) return `${path} tuple value has too many items, expected a length of ${typeLen} but got ${value.length} for value: \\`${printValue(value, true)}\\``;\n }\n return ValidationError.formatError(mixed.notType, params);\n }\n};\nvar locale = Object.assign(Object.create(null), {\n mixed,\n string,\n number,\n date,\n object,\n array,\n boolean,\n tuple\n});\n\nconst isSchema = obj => obj && obj.__isYupSchema__;\n\nclass Condition {\n static fromOptions(refs, config) {\n if (!config.then && !config.otherwise) throw new TypeError('either `then:` or `otherwise:` is required for `when()` conditions');\n let {\n is,\n then,\n otherwise\n } = config;\n let check = typeof is === 'function' ? is : (...values) => values.every(value => value === is);\n return new Condition(refs, (values, schema) => {\n var _branch;\n let branch = check(...values) ? then : otherwise;\n return (_branch = branch == null ? void 0 : branch(schema)) != null ? _branch : schema;\n });\n }\n constructor(refs, builder) {\n this.fn = void 0;\n this.refs = refs;\n this.refs = refs;\n this.fn = builder;\n }\n resolve(base, options) {\n let values = this.refs.map(ref =>\n // TODO: ? operator here?\n ref.getValue(options == null ? void 0 : options.value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context));\n let schema = this.fn(values, base, options);\n if (schema === undefined ||\n // @ts-ignore this can be base\n schema === base) {\n return base;\n }\n if (!isSchema(schema)) throw new TypeError('conditions must return a schema object');\n return schema.resolve(options);\n }\n}\n\nconst prefixes = {\n context: '$',\n value: '.'\n};\nfunction create$9(key, options) {\n return new Reference(key, options);\n}\nclass Reference {\n constructor(key, options = {}) {\n this.key = void 0;\n this.isContext = void 0;\n this.isValue = void 0;\n this.isSibling = void 0;\n this.path = void 0;\n this.getter = void 0;\n this.map = void 0;\n if (typeof key !== 'string') throw new TypeError('ref must be a string, got: ' + key);\n this.key = key.trim();\n if (key === '') throw new TypeError('ref must be a non-empty string');\n this.isContext = this.key[0] === prefixes.context;\n this.isValue = this.key[0] === prefixes.value;\n this.isSibling = !this.isContext && !this.isValue;\n let prefix = this.isContext ? prefixes.context : this.isValue ? prefixes.value : '';\n this.path = this.key.slice(prefix.length);\n this.getter = this.path && getter(this.path, true);\n this.map = options.map;\n }\n getValue(value, parent, context) {\n let result = this.isContext ? context : this.isValue ? value : parent;\n if (this.getter) result = this.getter(result || {});\n if (this.map) result = this.map(result);\n return result;\n }\n\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {Object=} options.context\n * @param {Object=} options.parent\n */\n cast(value, options) {\n return this.getValue(value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context);\n }\n resolve() {\n return this;\n }\n describe() {\n return {\n type: 'ref',\n key: this.key\n };\n }\n toString() {\n return `Ref(${this.key})`;\n }\n static isRef(value) {\n return value && value.__isYupRef;\n }\n}\n\n// @ts-ignore\nReference.prototype.__isYupRef = true;\n\nconst isAbsent = value => value == null;\n\nfunction createValidation(config) {\n function validate({\n value,\n path = '',\n options,\n originalValue,\n schema\n }, panic, next) {\n const {\n name,\n test,\n params,\n message,\n skipAbsent\n } = config;\n let {\n parent,\n context,\n abortEarly = schema.spec.abortEarly,\n disableStackTrace = schema.spec.disableStackTrace\n } = options;\n function resolve(item) {\n return Reference.isRef(item) ? item.getValue(value, parent, context) : item;\n }\n function createError(overrides = {}) {\n const nextParams = Object.assign({\n value,\n originalValue,\n label: schema.spec.label,\n path: overrides.path || path,\n spec: schema.spec,\n disableStackTrace: overrides.disableStackTrace || disableStackTrace\n }, params, overrides.params);\n for (const key of Object.keys(nextParams)) nextParams[key] = resolve(nextParams[key]);\n const error = new ValidationError(ValidationError.formatError(overrides.message || message, nextParams), value, nextParams.path, overrides.type || name, nextParams.disableStackTrace);\n error.params = nextParams;\n return error;\n }\n const invalid = abortEarly ? panic : next;\n let ctx = {\n path,\n parent,\n type: name,\n from: options.from,\n createError,\n resolve,\n options,\n originalValue,\n schema\n };\n const handleResult = validOrError => {\n if (ValidationError.isError(validOrError)) invalid(validOrError);else if (!validOrError) invalid(createError());else next(null);\n };\n const handleError = err => {\n if (ValidationError.isError(err)) invalid(err);else panic(err);\n };\n const shouldSkip = skipAbsent && isAbsent(value);\n if (shouldSkip) {\n return handleResult(true);\n }\n let result;\n try {\n var _result;\n result = test.call(ctx, value, ctx);\n if (typeof ((_result = result) == null ? void 0 : _result.then) === 'function') {\n if (options.sync) {\n throw new Error(`Validation test of type: \"${ctx.type}\" returned a Promise during a synchronous validate. ` + `This test will finish after the validate call has returned`);\n }\n return Promise.resolve(result).then(handleResult, handleError);\n }\n } catch (err) {\n handleError(err);\n return;\n }\n handleResult(result);\n }\n validate.OPTIONS = config;\n return validate;\n}\n\nfunction getIn(schema, path, value, context = value) {\n let parent, lastPart, lastPartDebug;\n\n // root path: ''\n if (!path) return {\n parent,\n parentPath: path,\n schema\n };\n forEach(path, (_part, isBracket, isArray) => {\n let part = isBracket ? _part.slice(1, _part.length - 1) : _part;\n schema = schema.resolve({\n context,\n parent,\n value\n });\n let isTuple = schema.type === 'tuple';\n let idx = isArray ? parseInt(part, 10) : 0;\n if (schema.innerType || isTuple) {\n if (isTuple && !isArray) throw new Error(`Yup.reach cannot implicitly index into a tuple type. the path part \"${lastPartDebug}\" must contain an index to the tuple element, e.g. \"${lastPartDebug}[0]\"`);\n if (value && idx >= value.length) {\n throw new Error(`Yup.reach cannot resolve an array item at index: ${_part}, in the path: ${path}. ` + `because there is no value at that index. `);\n }\n parent = value;\n value = value && value[idx];\n schema = isTuple ? schema.spec.types[idx] : schema.innerType;\n }\n\n // sometimes the array index part of a path doesn't exist: \"nested.arr.child\"\n // in these cases the current part is the next schema and should be processed\n // in this iteration. For cases where the index signature is included this\n // check will fail and we'll handle the `child` part on the next iteration like normal\n if (!isArray) {\n if (!schema.fields || !schema.fields[part]) throw new Error(`The schema does not contain the path: ${path}. ` + `(failed at: ${lastPartDebug} which is a type: \"${schema.type}\")`);\n parent = value;\n value = value && value[part];\n schema = schema.fields[part];\n }\n lastPart = part;\n lastPartDebug = isBracket ? '[' + _part + ']' : '.' + _part;\n });\n return {\n schema,\n parent,\n parentPath: lastPart\n };\n}\nfunction reach(obj, path, value, context) {\n return getIn(obj, path, value, context).schema;\n}\n\nclass ReferenceSet extends Set {\n describe() {\n const description = [];\n for (const item of this.values()) {\n description.push(Reference.isRef(item) ? item.describe() : item);\n }\n return description;\n }\n resolveAll(resolve) {\n let result = [];\n for (const item of this.values()) {\n result.push(resolve(item));\n }\n return result;\n }\n clone() {\n return new ReferenceSet(this.values());\n }\n merge(newItems, removeItems) {\n const next = this.clone();\n newItems.forEach(value => next.add(value));\n removeItems.forEach(value => next.delete(value));\n return next;\n }\n}\n\n// tweaked from https://github.com/Kelin2025/nanoclone/blob/0abeb7635bda9b68ef2277093f76dbe3bf3948e1/src/index.js\nfunction clone(src, seen = new Map()) {\n if (isSchema(src) || !src || typeof src !== 'object') return src;\n if (seen.has(src)) return seen.get(src);\n let copy;\n if (src instanceof Date) {\n // Date\n copy = new Date(src.getTime());\n seen.set(src, copy);\n } else if (src instanceof RegExp) {\n // RegExp\n copy = new RegExp(src);\n seen.set(src, copy);\n } else if (Array.isArray(src)) {\n // Array\n copy = new Array(src.length);\n seen.set(src, copy);\n for (let i = 0; i < src.length; i++) copy[i] = clone(src[i], seen);\n } else if (src instanceof Map) {\n // Map\n copy = new Map();\n seen.set(src, copy);\n for (const [k, v] of src.entries()) copy.set(k, clone(v, seen));\n } else if (src instanceof Set) {\n // Set\n copy = new Set();\n seen.set(src, copy);\n for (const v of src) copy.add(clone(v, seen));\n } else if (src instanceof Object) {\n // Object\n copy = {};\n seen.set(src, copy);\n for (const [k, v] of Object.entries(src)) copy[k] = clone(v, seen);\n } else {\n throw Error(`Unable to clone ${src}`);\n }\n return copy;\n}\n\n// If `CustomSchemaMeta` isn't extended with any keys, we'll fall back to a\n// loose Record definition allowing free form usage.\nclass Schema {\n constructor(options) {\n this.type = void 0;\n this.deps = [];\n this.tests = void 0;\n this.transforms = void 0;\n this.conditions = [];\n this._mutate = void 0;\n this.internalTests = {};\n this._whitelist = new ReferenceSet();\n this._blacklist = new ReferenceSet();\n this.exclusiveTests = Object.create(null);\n this._typeCheck = void 0;\n this.spec = void 0;\n this.tests = [];\n this.transforms = [];\n this.withMutation(() => {\n this.typeError(mixed.notType);\n });\n this.type = options.type;\n this._typeCheck = options.check;\n this.spec = Object.assign({\n strip: false,\n strict: false,\n abortEarly: true,\n recursive: true,\n disableStackTrace: false,\n nullable: false,\n optional: true,\n coerce: true\n }, options == null ? void 0 : options.spec);\n this.withMutation(s => {\n s.nonNullable();\n });\n }\n\n // TODO: remove\n get _type() {\n return this.type;\n }\n clone(spec) {\n if (this._mutate) {\n if (spec) Object.assign(this.spec, spec);\n return this;\n }\n\n // if the nested value is a schema we can skip cloning, since\n // they are already immutable\n const next = Object.create(Object.getPrototypeOf(this));\n\n // @ts-expect-error this is readonly\n next.type = this.type;\n next._typeCheck = this._typeCheck;\n next._whitelist = this._whitelist.clone();\n next._blacklist = this._blacklist.clone();\n next.internalTests = Object.assign({}, this.internalTests);\n next.exclusiveTests = Object.assign({}, this.exclusiveTests);\n\n // @ts-expect-error this is readonly\n next.deps = [...this.deps];\n next.conditions = [...this.conditions];\n next.tests = [...this.tests];\n next.transforms = [...this.transforms];\n next.spec = clone(Object.assign({}, this.spec, spec));\n return next;\n }\n label(label) {\n let next = this.clone();\n next.spec.label = label;\n return next;\n }\n meta(...args) {\n if (args.length === 0) return this.spec.meta;\n let next = this.clone();\n next.spec.meta = Object.assign(next.spec.meta || {}, args[0]);\n return next;\n }\n withMutation(fn) {\n let before = this._mutate;\n this._mutate = true;\n let result = fn(this);\n this._mutate = before;\n return result;\n }\n concat(schema) {\n if (!schema || schema === this) return this;\n if (schema.type !== this.type && this.type !== 'mixed') throw new TypeError(`You cannot \\`concat()\\` schema's of different types: ${this.type} and ${schema.type}`);\n let base = this;\n let combined = schema.clone();\n const mergedSpec = Object.assign({}, base.spec, combined.spec);\n combined.spec = mergedSpec;\n combined.internalTests = Object.assign({}, base.internalTests, combined.internalTests);\n\n // manually merge the blacklist/whitelist (the other `schema` takes\n // precedence in case of conflicts)\n combined._whitelist = base._whitelist.merge(schema._whitelist, schema._blacklist);\n combined._blacklist = base._blacklist.merge(schema._blacklist, schema._whitelist);\n\n // start with the current tests\n combined.tests = base.tests;\n combined.exclusiveTests = base.exclusiveTests;\n\n // manually add the new tests to ensure\n // the deduping logic is consistent\n combined.withMutation(next => {\n schema.tests.forEach(fn => {\n next.test(fn.OPTIONS);\n });\n });\n combined.transforms = [...base.transforms, ...combined.transforms];\n return combined;\n }\n isType(v) {\n if (v == null) {\n if (this.spec.nullable && v === null) return true;\n if (this.spec.optional && v === undefined) return true;\n return false;\n }\n return this._typeCheck(v);\n }\n resolve(options) {\n let schema = this;\n if (schema.conditions.length) {\n let conditions = schema.conditions;\n schema = schema.clone();\n schema.conditions = [];\n schema = conditions.reduce((prevSchema, condition) => condition.resolve(prevSchema, options), schema);\n schema = schema.resolve(options);\n }\n return schema;\n }\n resolveOptions(options) {\n var _options$strict, _options$abortEarly, _options$recursive, _options$disableStack;\n return Object.assign({}, options, {\n from: options.from || [],\n strict: (_options$strict = options.strict) != null ? _options$strict : this.spec.strict,\n abortEarly: (_options$abortEarly = options.abortEarly) != null ? _options$abortEarly : this.spec.abortEarly,\n recursive: (_options$recursive = options.recursive) != null ? _options$recursive : this.spec.recursive,\n disableStackTrace: (_options$disableStack = options.disableStackTrace) != null ? _options$disableStack : this.spec.disableStackTrace\n });\n }\n\n /**\n * Run the configured transform pipeline over an input value.\n */\n\n cast(value, options = {}) {\n let resolvedSchema = this.resolve(Object.assign({\n value\n }, options));\n let allowOptionality = options.assert === 'ignore-optionality';\n let result = resolvedSchema._cast(value, options);\n if (options.assert !== false && !resolvedSchema.isType(result)) {\n if (allowOptionality && isAbsent(result)) {\n return result;\n }\n let formattedValue = printValue(value);\n let formattedResult = printValue(result);\n throw new TypeError(`The value of ${options.path || 'field'} could not be cast to a value ` + `that satisfies the schema type: \"${resolvedSchema.type}\". \\n\\n` + `attempted value: ${formattedValue} \\n` + (formattedResult !== formattedValue ? `result of cast: ${formattedResult}` : ''));\n }\n return result;\n }\n _cast(rawValue, options) {\n let value = rawValue === undefined ? rawValue : this.transforms.reduce((prevValue, fn) => fn.call(this, prevValue, rawValue, this), rawValue);\n if (value === undefined) {\n value = this.getDefault(options);\n }\n return value;\n }\n _validate(_value, options = {}, panic, next) {\n let {\n path,\n originalValue = _value,\n strict = this.spec.strict\n } = options;\n let value = _value;\n if (!strict) {\n value = this._cast(value, Object.assign({\n assert: false\n }, options));\n }\n let initialTests = [];\n for (let test of Object.values(this.internalTests)) {\n if (test) initialTests.push(test);\n }\n this.runTests({\n path,\n value,\n originalValue,\n options,\n tests: initialTests\n }, panic, initialErrors => {\n // even if we aren't ending early we can't proceed further if the types aren't correct\n if (initialErrors.length) {\n return next(initialErrors, value);\n }\n this.runTests({\n path,\n value,\n originalValue,\n options,\n tests: this.tests\n }, panic, next);\n });\n }\n\n /**\n * Executes a set of validations, either schema, produced Tests or a nested\n * schema validate result.\n */\n runTests(runOptions, panic, next) {\n let fired = false;\n let {\n tests,\n value,\n originalValue,\n path,\n options\n } = runOptions;\n let panicOnce = arg => {\n if (fired) return;\n fired = true;\n panic(arg, value);\n };\n let nextOnce = arg => {\n if (fired) return;\n fired = true;\n next(arg, value);\n };\n let count = tests.length;\n let nestedErrors = [];\n if (!count) return nextOnce([]);\n let args = {\n value,\n originalValue,\n path,\n options,\n schema: this\n };\n for (let i = 0; i < tests.length; i++) {\n const test = tests[i];\n test(args, panicOnce, function finishTestRun(err) {\n if (err) {\n Array.isArray(err) ? nestedErrors.push(...err) : nestedErrors.push(err);\n }\n if (--count <= 0) {\n nextOnce(nestedErrors);\n }\n });\n }\n }\n asNestedTest({\n key,\n index,\n parent,\n parentPath,\n originalParent,\n options\n }) {\n const k = key != null ? key : index;\n if (k == null) {\n throw TypeError('Must include `key` or `index` for nested validations');\n }\n const isIndex = typeof k === 'number';\n let value = parent[k];\n const testOptions = Object.assign({}, options, {\n // Nested validations fields are always strict:\n // 1. parent isn't strict so the casting will also have cast inner values\n // 2. parent is strict in which case the nested values weren't cast either\n strict: true,\n parent,\n value,\n originalValue: originalParent[k],\n // FIXME: tests depend on `index` being passed around deeply,\n // we should not let the options.key/index bleed through\n key: undefined,\n // index: undefined,\n [isIndex ? 'index' : 'key']: k,\n path: isIndex || k.includes('.') ? `${parentPath || ''}[${isIndex ? k : `\"${k}\"`}]` : (parentPath ? `${parentPath}.` : '') + key\n });\n return (_, panic, next) => this.resolve(testOptions)._validate(value, testOptions, panic, next);\n }\n validate(value, options) {\n var _options$disableStack2;\n let schema = this.resolve(Object.assign({}, options, {\n value\n }));\n let disableStackTrace = (_options$disableStack2 = options == null ? void 0 : options.disableStackTrace) != null ? _options$disableStack2 : schema.spec.disableStackTrace;\n return new Promise((resolve, reject) => schema._validate(value, options, (error, parsed) => {\n if (ValidationError.isError(error)) error.value = parsed;\n reject(error);\n }, (errors, validated) => {\n if (errors.length) reject(new ValidationError(errors, validated, undefined, undefined, disableStackTrace));else resolve(validated);\n }));\n }\n validateSync(value, options) {\n var _options$disableStack3;\n let schema = this.resolve(Object.assign({}, options, {\n value\n }));\n let result;\n let disableStackTrace = (_options$disableStack3 = options == null ? void 0 : options.disableStackTrace) != null ? _options$disableStack3 : schema.spec.disableStackTrace;\n schema._validate(value, Object.assign({}, options, {\n sync: true\n }), (error, parsed) => {\n if (ValidationError.isError(error)) error.value = parsed;\n throw error;\n }, (errors, validated) => {\n if (errors.length) throw new ValidationError(errors, value, undefined, undefined, disableStackTrace);\n result = validated;\n });\n return result;\n }\n isValid(value, options) {\n return this.validate(value, options).then(() => true, err => {\n if (ValidationError.isError(err)) return false;\n throw err;\n });\n }\n isValidSync(value, options) {\n try {\n this.validateSync(value, options);\n return true;\n } catch (err) {\n if (ValidationError.isError(err)) return false;\n throw err;\n }\n }\n _getDefault(options) {\n let defaultValue = this.spec.default;\n if (defaultValue == null) {\n return defaultValue;\n }\n return typeof defaultValue === 'function' ? defaultValue.call(this, options) : clone(defaultValue);\n }\n getDefault(options\n // If schema is defaulted we know it's at least not undefined\n ) {\n let schema = this.resolve(options || {});\n return schema._getDefault(options);\n }\n default(def) {\n if (arguments.length === 0) {\n return this._getDefault();\n }\n let next = this.clone({\n default: def\n });\n return next;\n }\n strict(isStrict = true) {\n return this.clone({\n strict: isStrict\n });\n }\n nullability(nullable, message) {\n const next = this.clone({\n nullable\n });\n next.internalTests.nullable = createValidation({\n message,\n name: 'nullable',\n test(value) {\n return value === null ? this.schema.spec.nullable : true;\n }\n });\n return next;\n }\n optionality(optional, message) {\n const next = this.clone({\n optional\n });\n next.internalTests.optionality = createValidation({\n message,\n name: 'optionality',\n test(value) {\n return value === undefined ? this.schema.spec.optional : true;\n }\n });\n return next;\n }\n optional() {\n return this.optionality(true);\n }\n defined(message = mixed.defined) {\n return this.optionality(false, message);\n }\n nullable() {\n return this.nullability(true);\n }\n nonNullable(message = mixed.notNull) {\n return this.nullability(false, message);\n }\n required(message = mixed.required) {\n return this.clone().withMutation(next => next.nonNullable(message).defined(message));\n }\n notRequired() {\n return this.clone().withMutation(next => next.nullable().optional());\n }\n transform(fn) {\n let next = this.clone();\n next.transforms.push(fn);\n return next;\n }\n\n /**\n * Adds a test function to the schema's queue of tests.\n * tests can be exclusive or non-exclusive.\n *\n * - exclusive tests, will replace any existing tests of the same name.\n * - non-exclusive: can be stacked\n *\n * If a non-exclusive test is added to a schema with an exclusive test of the same name\n * the exclusive test is removed and further tests of the same name will be stacked.\n *\n * If an exclusive test is added to a schema with non-exclusive tests of the same name\n * the previous tests are removed and further tests of the same name will replace each other.\n */\n\n test(...args) {\n let opts;\n if (args.length === 1) {\n if (typeof args[0] === 'function') {\n opts = {\n test: args[0]\n };\n } else {\n opts = args[0];\n }\n } else if (args.length === 2) {\n opts = {\n name: args[0],\n test: args[1]\n };\n } else {\n opts = {\n name: args[0],\n message: args[1],\n test: args[2]\n };\n }\n if (opts.message === undefined) opts.message = mixed.default;\n if (typeof opts.test !== 'function') throw new TypeError('`test` is a required parameters');\n let next = this.clone();\n let validate = createValidation(opts);\n let isExclusive = opts.exclusive || opts.name && next.exclusiveTests[opts.name] === true;\n if (opts.exclusive) {\n if (!opts.name) throw new TypeError('Exclusive tests must provide a unique `name` identifying the test');\n }\n if (opts.name) next.exclusiveTests[opts.name] = !!opts.exclusive;\n next.tests = next.tests.filter(fn => {\n if (fn.OPTIONS.name === opts.name) {\n if (isExclusive) return false;\n if (fn.OPTIONS.test === validate.OPTIONS.test) return false;\n }\n return true;\n });\n next.tests.push(validate);\n return next;\n }\n when(keys, options) {\n if (!Array.isArray(keys) && typeof keys !== 'string') {\n options = keys;\n keys = '.';\n }\n let next = this.clone();\n let deps = toArray(keys).map(key => new Reference(key));\n deps.forEach(dep => {\n // @ts-ignore readonly array\n if (dep.isSibling) next.deps.push(dep.key);\n });\n next.conditions.push(typeof options === 'function' ? new Condition(deps, options) : Condition.fromOptions(deps, options));\n return next;\n }\n typeError(message) {\n let next = this.clone();\n next.internalTests.typeError = createValidation({\n message,\n name: 'typeError',\n skipAbsent: true,\n test(value) {\n if (!this.schema._typeCheck(value)) return this.createError({\n params: {\n type: this.schema.type\n }\n });\n return true;\n }\n });\n return next;\n }\n oneOf(enums, message = mixed.oneOf) {\n let next = this.clone();\n enums.forEach(val => {\n next._whitelist.add(val);\n next._blacklist.delete(val);\n });\n next.internalTests.whiteList = createValidation({\n message,\n name: 'oneOf',\n skipAbsent: true,\n test(value) {\n let valids = this.schema._whitelist;\n let resolved = valids.resolveAll(this.resolve);\n return resolved.includes(value) ? true : this.createError({\n params: {\n values: Array.from(valids).join(', '),\n resolved\n }\n });\n }\n });\n return next;\n }\n notOneOf(enums, message = mixed.notOneOf) {\n let next = this.clone();\n enums.forEach(val => {\n next._blacklist.add(val);\n next._whitelist.delete(val);\n });\n next.internalTests.blacklist = createValidation({\n message,\n name: 'notOneOf',\n test(value) {\n let invalids = this.schema._blacklist;\n let resolved = invalids.resolveAll(this.resolve);\n if (resolved.includes(value)) return this.createError({\n params: {\n values: Array.from(invalids).join(', '),\n resolved\n }\n });\n return true;\n }\n });\n return next;\n }\n strip(strip = true) {\n let next = this.clone();\n next.spec.strip = strip;\n return next;\n }\n\n /**\n * Return a serialized description of the schema including validations, flags, types etc.\n *\n * @param options Provide any needed context for resolving runtime schema alterations (lazy, when conditions, etc).\n */\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const {\n label,\n meta,\n optional,\n nullable\n } = next.spec;\n const description = {\n meta,\n label,\n optional,\n nullable,\n default: next.getDefault(options),\n type: next.type,\n oneOf: next._whitelist.describe(),\n notOneOf: next._blacklist.describe(),\n tests: next.tests.map(fn => ({\n name: fn.OPTIONS.name,\n params: fn.OPTIONS.params\n })).filter((n, idx, list) => list.findIndex(c => c.name === n.name) === idx)\n };\n return description;\n }\n}\n// @ts-expect-error\nSchema.prototype.__isYupSchema__ = true;\nfor (const method of ['validate', 'validateSync']) Schema.prototype[`${method}At`] = function (path, value, options = {}) {\n const {\n parent,\n parentPath,\n schema\n } = getIn(this, path, value, options.context);\n return schema[method](parent && parent[parentPath], Object.assign({}, options, {\n parent,\n path\n }));\n};\nfor (const alias of ['equals', 'is']) Schema.prototype[alias] = Schema.prototype.oneOf;\nfor (const alias of ['not', 'nope']) Schema.prototype[alias] = Schema.prototype.notOneOf;\n\nconst returnsTrue = () => true;\nfunction create$8(spec) {\n return new MixedSchema(spec);\n}\nclass MixedSchema extends Schema {\n constructor(spec) {\n super(typeof spec === 'function' ? {\n type: 'mixed',\n check: spec\n } : Object.assign({\n type: 'mixed',\n check: returnsTrue\n }, spec));\n }\n}\ncreate$8.prototype = MixedSchema.prototype;\n\nfunction create$7() {\n return new BooleanSchema();\n}\nclass BooleanSchema extends Schema {\n constructor() {\n super({\n type: 'boolean',\n check(v) {\n if (v instanceof Boolean) v = v.valueOf();\n return typeof v === 'boolean';\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw, ctx) => {\n if (ctx.spec.coerce && !ctx.isType(value)) {\n if (/^(true|1)$/i.test(String(value))) return true;\n if (/^(false|0)$/i.test(String(value))) return false;\n }\n return value;\n });\n });\n }\n isTrue(message = boolean.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'true'\n },\n test(value) {\n return isAbsent(value) || value === true;\n }\n });\n }\n isFalse(message = boolean.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'false'\n },\n test(value) {\n return isAbsent(value) || value === false;\n }\n });\n }\n default(def) {\n return super.default(def);\n }\n defined(msg) {\n return super.defined(msg);\n }\n optional() {\n return super.optional();\n }\n required(msg) {\n return super.required(msg);\n }\n notRequired() {\n return super.notRequired();\n }\n nullable() {\n return super.nullable();\n }\n nonNullable(msg) {\n return super.nonNullable(msg);\n }\n strip(v) {\n return super.strip(v);\n }\n}\ncreate$7.prototype = BooleanSchema.prototype;\n\n/**\n * This file is a modified version of the file from the following repository:\n * Date.parse with progressive enhancement for ISO 8601 \n * NON-CONFORMANT EDITION.\n * © 2011 Colin Snover \n * Released under MIT license.\n */\n\n// prettier-ignore\n// 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm\nconst isoReg = /^(\\d{4}|[+-]\\d{6})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:[ T]?(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,.](\\d{1,}))?)?(?:(Z)|([+-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\nfunction parseIsoDate(date) {\n const struct = parseDateStruct(date);\n if (!struct) return Date.parse ? Date.parse(date) : Number.NaN;\n\n // timestamps without timezone identifiers should be considered local time\n if (struct.z === undefined && struct.plusMinus === undefined) {\n return new Date(struct.year, struct.month, struct.day, struct.hour, struct.minute, struct.second, struct.millisecond).valueOf();\n }\n let totalMinutesOffset = 0;\n if (struct.z !== 'Z' && struct.plusMinus !== undefined) {\n totalMinutesOffset = struct.hourOffset * 60 + struct.minuteOffset;\n if (struct.plusMinus === '+') totalMinutesOffset = 0 - totalMinutesOffset;\n }\n return Date.UTC(struct.year, struct.month, struct.day, struct.hour, struct.minute + totalMinutesOffset, struct.second, struct.millisecond);\n}\nfunction parseDateStruct(date) {\n var _regexResult$7$length, _regexResult$;\n const regexResult = isoReg.exec(date);\n if (!regexResult) return null;\n\n // use of toNumber() avoids NaN timestamps caused by “undefined”\n // values being passed to Date constructor\n return {\n year: toNumber(regexResult[1]),\n month: toNumber(regexResult[2], 1) - 1,\n day: toNumber(regexResult[3], 1),\n hour: toNumber(regexResult[4]),\n minute: toNumber(regexResult[5]),\n second: toNumber(regexResult[6]),\n millisecond: regexResult[7] ?\n // allow arbitrary sub-second precision beyond milliseconds\n toNumber(regexResult[7].substring(0, 3)) : 0,\n precision: (_regexResult$7$length = (_regexResult$ = regexResult[7]) == null ? void 0 : _regexResult$.length) != null ? _regexResult$7$length : undefined,\n z: regexResult[8] || undefined,\n plusMinus: regexResult[9] || undefined,\n hourOffset: toNumber(regexResult[10]),\n minuteOffset: toNumber(regexResult[11])\n };\n}\nfunction toNumber(str, defaultValue = 0) {\n return Number(str) || defaultValue;\n}\n\n// Taken from HTML spec: https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address\nlet rEmail =\n// eslint-disable-next-line\n/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\nlet rUrl =\n// eslint-disable-next-line\n/^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i;\n\n// eslint-disable-next-line\nlet rUUID = /^(?:[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;\nlet yearMonthDay = '^\\\\d{4}-\\\\d{2}-\\\\d{2}';\nlet hourMinuteSecond = '\\\\d{2}:\\\\d{2}:\\\\d{2}';\nlet zOrOffset = '(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)';\nlet rIsoDateTime = new RegExp(`${yearMonthDay}T${hourMinuteSecond}(\\\\.\\\\d+)?${zOrOffset}$`);\nlet isTrimmed = value => isAbsent(value) || value === value.trim();\nlet objStringTag = {}.toString();\nfunction create$6() {\n return new StringSchema();\n}\nclass StringSchema extends Schema {\n constructor() {\n super({\n type: 'string',\n check(value) {\n if (value instanceof String) value = value.valueOf();\n return typeof value === 'string';\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw, ctx) => {\n if (!ctx.spec.coerce || ctx.isType(value)) return value;\n\n // don't ever convert arrays\n if (Array.isArray(value)) return value;\n const strValue = value != null && value.toString ? value.toString() : value;\n\n // no one wants plain objects converted to [Object object]\n if (strValue === objStringTag) return value;\n return strValue;\n });\n });\n }\n required(message) {\n return super.required(message).withMutation(schema => schema.test({\n message: message || mixed.required,\n name: 'required',\n skipAbsent: true,\n test: value => !!value.length\n }));\n }\n notRequired() {\n return super.notRequired().withMutation(schema => {\n schema.tests = schema.tests.filter(t => t.OPTIONS.name !== 'required');\n return schema;\n });\n }\n length(length, message = string.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n skipAbsent: true,\n test(value) {\n return value.length === this.resolve(length);\n }\n });\n }\n min(min, message = string.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n test(value) {\n return value.length >= this.resolve(min);\n }\n });\n }\n max(max, message = string.max) {\n return this.test({\n name: 'max',\n exclusive: true,\n message,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value.length <= this.resolve(max);\n }\n });\n }\n matches(regex, options) {\n let excludeEmptyString = false;\n let message;\n let name;\n if (options) {\n if (typeof options === 'object') {\n ({\n excludeEmptyString = false,\n message,\n name\n } = options);\n } else {\n message = options;\n }\n }\n return this.test({\n name: name || 'matches',\n message: message || string.matches,\n params: {\n regex\n },\n skipAbsent: true,\n test: value => value === '' && excludeEmptyString || value.search(regex) !== -1\n });\n }\n email(message = string.email) {\n return this.matches(rEmail, {\n name: 'email',\n message,\n excludeEmptyString: true\n });\n }\n url(message = string.url) {\n return this.matches(rUrl, {\n name: 'url',\n message,\n excludeEmptyString: true\n });\n }\n uuid(message = string.uuid) {\n return this.matches(rUUID, {\n name: 'uuid',\n message,\n excludeEmptyString: false\n });\n }\n datetime(options) {\n let message = '';\n let allowOffset;\n let precision;\n if (options) {\n if (typeof options === 'object') {\n ({\n message = '',\n allowOffset = false,\n precision = undefined\n } = options);\n } else {\n message = options;\n }\n }\n return this.matches(rIsoDateTime, {\n name: 'datetime',\n message: message || string.datetime,\n excludeEmptyString: true\n }).test({\n name: 'datetime_offset',\n message: message || string.datetime_offset,\n params: {\n allowOffset\n },\n skipAbsent: true,\n test: value => {\n if (!value || allowOffset) return true;\n const struct = parseDateStruct(value);\n if (!struct) return false;\n return !!struct.z;\n }\n }).test({\n name: 'datetime_precision',\n message: message || string.datetime_precision,\n params: {\n precision\n },\n skipAbsent: true,\n test: value => {\n if (!value || precision == undefined) return true;\n const struct = parseDateStruct(value);\n if (!struct) return false;\n return struct.precision === precision;\n }\n });\n }\n\n //-- transforms --\n ensure() {\n return this.default('').transform(val => val === null ? '' : val);\n }\n trim(message = string.trim) {\n return this.transform(val => val != null ? val.trim() : val).test({\n message,\n name: 'trim',\n test: isTrimmed\n });\n }\n lowercase(message = string.lowercase) {\n return this.transform(value => !isAbsent(value) ? value.toLowerCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n skipAbsent: true,\n test: value => isAbsent(value) || value === value.toLowerCase()\n });\n }\n uppercase(message = string.uppercase) {\n return this.transform(value => !isAbsent(value) ? value.toUpperCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n skipAbsent: true,\n test: value => isAbsent(value) || value === value.toUpperCase()\n });\n }\n}\ncreate$6.prototype = StringSchema.prototype;\n\n//\n// String Interfaces\n//\n\nlet isNaN$1 = value => value != +value;\nfunction create$5() {\n return new NumberSchema();\n}\nclass NumberSchema extends Schema {\n constructor() {\n super({\n type: 'number',\n check(value) {\n if (value instanceof Number) value = value.valueOf();\n return typeof value === 'number' && !isNaN$1(value);\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw, ctx) => {\n if (!ctx.spec.coerce) return value;\n let parsed = value;\n if (typeof parsed === 'string') {\n parsed = parsed.replace(/\\s/g, '');\n if (parsed === '') return NaN;\n // don't use parseFloat to avoid positives on alpha-numeric strings\n parsed = +parsed;\n }\n\n // null -> NaN isn't useful; treat all nulls as null and let it fail on\n // nullability check vs TypeErrors\n if (ctx.isType(parsed) || parsed === null) return parsed;\n return parseFloat(parsed);\n });\n });\n }\n min(min, message = number.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n test(value) {\n return value >= this.resolve(min);\n }\n });\n }\n max(max, message = number.max) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value <= this.resolve(max);\n }\n });\n }\n lessThan(less, message = number.lessThan) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n less\n },\n skipAbsent: true,\n test(value) {\n return value < this.resolve(less);\n }\n });\n }\n moreThan(more, message = number.moreThan) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n more\n },\n skipAbsent: true,\n test(value) {\n return value > this.resolve(more);\n }\n });\n }\n positive(msg = number.positive) {\n return this.moreThan(0, msg);\n }\n negative(msg = number.negative) {\n return this.lessThan(0, msg);\n }\n integer(message = number.integer) {\n return this.test({\n name: 'integer',\n message,\n skipAbsent: true,\n test: val => Number.isInteger(val)\n });\n }\n truncate() {\n return this.transform(value => !isAbsent(value) ? value | 0 : value);\n }\n round(method) {\n var _method;\n let avail = ['ceil', 'floor', 'round', 'trunc'];\n method = ((_method = method) == null ? void 0 : _method.toLowerCase()) || 'round';\n\n // this exists for symemtry with the new Math.trunc\n if (method === 'trunc') return this.truncate();\n if (avail.indexOf(method.toLowerCase()) === -1) throw new TypeError('Only valid options for round() are: ' + avail.join(', '));\n return this.transform(value => !isAbsent(value) ? Math[method](value) : value);\n }\n}\ncreate$5.prototype = NumberSchema.prototype;\n\n//\n// Number Interfaces\n//\n\nlet invalidDate = new Date('');\nlet isDate = obj => Object.prototype.toString.call(obj) === '[object Date]';\nfunction create$4() {\n return new DateSchema();\n}\nclass DateSchema extends Schema {\n constructor() {\n super({\n type: 'date',\n check(v) {\n return isDate(v) && !isNaN(v.getTime());\n }\n });\n this.withMutation(() => {\n this.transform((value, _raw, ctx) => {\n // null -> InvalidDate isn't useful; treat all nulls as null and let it fail on\n // nullability check vs TypeErrors\n if (!ctx.spec.coerce || ctx.isType(value) || value === null) return value;\n value = parseIsoDate(value);\n\n // 0 is a valid timestamp equivalent to 1970-01-01T00:00:00Z(unix epoch) or before.\n return !isNaN(value) ? new Date(value) : DateSchema.INVALID_DATE;\n });\n });\n }\n prepareParam(ref, name) {\n let param;\n if (!Reference.isRef(ref)) {\n let cast = this.cast(ref);\n if (!this._typeCheck(cast)) throw new TypeError(`\\`${name}\\` must be a Date or a value that can be \\`cast()\\` to a Date`);\n param = cast;\n } else {\n param = ref;\n }\n return param;\n }\n min(min, message = date.min) {\n let limit = this.prepareParam(min, 'min');\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n test(value) {\n return value >= this.resolve(limit);\n }\n });\n }\n max(max, message = date.max) {\n let limit = this.prepareParam(max, 'max');\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value <= this.resolve(limit);\n }\n });\n }\n}\nDateSchema.INVALID_DATE = invalidDate;\ncreate$4.prototype = DateSchema.prototype;\ncreate$4.INVALID_DATE = invalidDate;\n\n// @ts-expect-error\nfunction sortFields(fields, excludedEdges = []) {\n let edges = [];\n let nodes = new Set();\n let excludes = new Set(excludedEdges.map(([a, b]) => `${a}-${b}`));\n function addNode(depPath, key) {\n let node = split(depPath)[0];\n nodes.add(node);\n if (!excludes.has(`${key}-${node}`)) edges.push([key, node]);\n }\n for (const key of Object.keys(fields)) {\n let value = fields[key];\n nodes.add(key);\n if (Reference.isRef(value) && value.isSibling) addNode(value.path, key);else if (isSchema(value) && 'deps' in value) value.deps.forEach(path => addNode(path, key));\n }\n return toposort.array(Array.from(nodes), edges).reverse();\n}\n\nfunction findIndex(arr, err) {\n let idx = Infinity;\n arr.some((key, ii) => {\n var _err$path;\n if ((_err$path = err.path) != null && _err$path.includes(key)) {\n idx = ii;\n return true;\n }\n });\n return idx;\n}\nfunction sortByKeyOrder(keys) {\n return (a, b) => {\n return findIndex(keys, a) - findIndex(keys, b);\n };\n}\n\nconst parseJson = (value, _, ctx) => {\n if (typeof value !== 'string') {\n return value;\n }\n let parsed = value;\n try {\n parsed = JSON.parse(value);\n } catch (err) {\n /* */\n }\n return ctx.isType(parsed) ? parsed : value;\n};\n\n// @ts-ignore\nfunction deepPartial(schema) {\n if ('fields' in schema) {\n const partial = {};\n for (const [key, fieldSchema] of Object.entries(schema.fields)) {\n partial[key] = deepPartial(fieldSchema);\n }\n return schema.setFields(partial);\n }\n if (schema.type === 'array') {\n const nextArray = schema.optional();\n if (nextArray.innerType) nextArray.innerType = deepPartial(nextArray.innerType);\n return nextArray;\n }\n if (schema.type === 'tuple') {\n return schema.optional().clone({\n types: schema.spec.types.map(deepPartial)\n });\n }\n if ('optional' in schema) {\n return schema.optional();\n }\n return schema;\n}\nconst deepHas = (obj, p) => {\n const path = [...normalizePath(p)];\n if (path.length === 1) return path[0] in obj;\n let last = path.pop();\n let parent = getter(join(path), true)(obj);\n return !!(parent && last in parent);\n};\nlet isObject = obj => Object.prototype.toString.call(obj) === '[object Object]';\nfunction unknown(ctx, value) {\n let known = Object.keys(ctx.fields);\n return Object.keys(value).filter(key => known.indexOf(key) === -1);\n}\nconst defaultSort = sortByKeyOrder([]);\nfunction create$3(spec) {\n return new ObjectSchema(spec);\n}\nclass ObjectSchema extends Schema {\n constructor(spec) {\n super({\n type: 'object',\n check(value) {\n return isObject(value) || typeof value === 'function';\n }\n });\n this.fields = Object.create(null);\n this._sortErrors = defaultSort;\n this._nodes = [];\n this._excludedEdges = [];\n this.withMutation(() => {\n if (spec) {\n this.shape(spec);\n }\n });\n }\n _cast(_value, options = {}) {\n var _options$stripUnknown;\n let value = super._cast(_value, options);\n\n //should ignore nulls here\n if (value === undefined) return this.getDefault(options);\n if (!this._typeCheck(value)) return value;\n let fields = this.fields;\n let strip = (_options$stripUnknown = options.stripUnknown) != null ? _options$stripUnknown : this.spec.noUnknown;\n let props = [].concat(this._nodes, Object.keys(value).filter(v => !this._nodes.includes(v)));\n let intermediateValue = {}; // is filled during the transform below\n let innerOptions = Object.assign({}, options, {\n parent: intermediateValue,\n __validating: options.__validating || false\n });\n let isChanged = false;\n for (const prop of props) {\n let field = fields[prop];\n let exists = (prop in value);\n if (field) {\n let fieldValue;\n let inputValue = value[prop];\n\n // safe to mutate since this is fired in sequence\n innerOptions.path = (options.path ? `${options.path}.` : '') + prop;\n field = field.resolve({\n value: inputValue,\n context: options.context,\n parent: intermediateValue\n });\n let fieldSpec = field instanceof Schema ? field.spec : undefined;\n let strict = fieldSpec == null ? void 0 : fieldSpec.strict;\n if (fieldSpec != null && fieldSpec.strip) {\n isChanged = isChanged || prop in value;\n continue;\n }\n fieldValue = !options.__validating || !strict ?\n // TODO: use _cast, this is double resolving\n field.cast(value[prop], innerOptions) : value[prop];\n if (fieldValue !== undefined) {\n intermediateValue[prop] = fieldValue;\n }\n } else if (exists && !strip) {\n intermediateValue[prop] = value[prop];\n }\n if (exists !== prop in intermediateValue || intermediateValue[prop] !== value[prop]) {\n isChanged = true;\n }\n }\n return isChanged ? intermediateValue : value;\n }\n _validate(_value, options = {}, panic, next) {\n let {\n from = [],\n originalValue = _value,\n recursive = this.spec.recursive\n } = options;\n options.from = [{\n schema: this,\n value: originalValue\n }, ...from];\n // this flag is needed for handling `strict` correctly in the context of\n // validation vs just casting. e.g strict() on a field is only used when validating\n options.__validating = true;\n options.originalValue = originalValue;\n super._validate(_value, options, panic, (objectErrors, value) => {\n if (!recursive || !isObject(value)) {\n next(objectErrors, value);\n return;\n }\n originalValue = originalValue || value;\n let tests = [];\n for (let key of this._nodes) {\n let field = this.fields[key];\n if (!field || Reference.isRef(field)) {\n continue;\n }\n tests.push(field.asNestedTest({\n options,\n key,\n parent: value,\n parentPath: options.path,\n originalParent: originalValue\n }));\n }\n this.runTests({\n tests,\n value,\n originalValue,\n options\n }, panic, fieldErrors => {\n next(fieldErrors.sort(this._sortErrors).concat(objectErrors), value);\n });\n });\n }\n clone(spec) {\n const next = super.clone(spec);\n next.fields = Object.assign({}, this.fields);\n next._nodes = this._nodes;\n next._excludedEdges = this._excludedEdges;\n next._sortErrors = this._sortErrors;\n return next;\n }\n concat(schema) {\n let next = super.concat(schema);\n let nextFields = next.fields;\n for (let [field, schemaOrRef] of Object.entries(this.fields)) {\n const target = nextFields[field];\n nextFields[field] = target === undefined ? schemaOrRef : target;\n }\n return next.withMutation(s =>\n // XXX: excludes here is wrong\n s.setFields(nextFields, [...this._excludedEdges, ...schema._excludedEdges]));\n }\n _getDefault(options) {\n if ('default' in this.spec) {\n return super._getDefault(options);\n }\n\n // if there is no default set invent one\n if (!this._nodes.length) {\n return undefined;\n }\n let dft = {};\n this._nodes.forEach(key => {\n var _innerOptions;\n const field = this.fields[key];\n let innerOptions = options;\n if ((_innerOptions = innerOptions) != null && _innerOptions.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[key]\n });\n }\n dft[key] = field && 'getDefault' in field ? field.getDefault(innerOptions) : undefined;\n });\n return dft;\n }\n setFields(shape, excludedEdges) {\n let next = this.clone();\n next.fields = shape;\n next._nodes = sortFields(shape, excludedEdges);\n next._sortErrors = sortByKeyOrder(Object.keys(shape));\n // XXX: this carries over edges which may not be what you want\n if (excludedEdges) next._excludedEdges = excludedEdges;\n return next;\n }\n shape(additions, excludes = []) {\n return this.clone().withMutation(next => {\n let edges = next._excludedEdges;\n if (excludes.length) {\n if (!Array.isArray(excludes[0])) excludes = [excludes];\n edges = [...next._excludedEdges, ...excludes];\n }\n\n // XXX: excludes here is wrong\n return next.setFields(Object.assign(next.fields, additions), edges);\n });\n }\n partial() {\n const partial = {};\n for (const [key, schema] of Object.entries(this.fields)) {\n partial[key] = 'optional' in schema && schema.optional instanceof Function ? schema.optional() : schema;\n }\n return this.setFields(partial);\n }\n deepPartial() {\n const next = deepPartial(this);\n return next;\n }\n pick(keys) {\n const picked = {};\n for (const key of keys) {\n if (this.fields[key]) picked[key] = this.fields[key];\n }\n return this.setFields(picked, this._excludedEdges.filter(([a, b]) => keys.includes(a) && keys.includes(b)));\n }\n omit(keys) {\n const remaining = [];\n for (const key of Object.keys(this.fields)) {\n if (keys.includes(key)) continue;\n remaining.push(key);\n }\n return this.pick(remaining);\n }\n from(from, to, alias) {\n let fromGetter = getter(from, true);\n return this.transform(obj => {\n if (!obj) return obj;\n let newObj = obj;\n if (deepHas(obj, from)) {\n newObj = Object.assign({}, obj);\n if (!alias) delete newObj[from];\n newObj[to] = fromGetter(obj);\n }\n return newObj;\n });\n }\n\n /** Parse an input JSON string to an object */\n json() {\n return this.transform(parseJson);\n }\n noUnknown(noAllow = true, message = object.noUnknown) {\n if (typeof noAllow !== 'boolean') {\n message = noAllow;\n noAllow = true;\n }\n let next = this.test({\n name: 'noUnknown',\n exclusive: true,\n message: message,\n test(value) {\n if (value == null) return true;\n const unknownKeys = unknown(this.schema, value);\n return !noAllow || unknownKeys.length === 0 || this.createError({\n params: {\n unknown: unknownKeys.join(', ')\n }\n });\n }\n });\n next.spec.noUnknown = noAllow;\n return next;\n }\n unknown(allow = true, message = object.noUnknown) {\n return this.noUnknown(!allow, message);\n }\n transformKeys(fn) {\n return this.transform(obj => {\n if (!obj) return obj;\n const result = {};\n for (const key of Object.keys(obj)) result[fn(key)] = obj[key];\n return result;\n });\n }\n camelCase() {\n return this.transformKeys(camelCase);\n }\n snakeCase() {\n return this.transformKeys(snakeCase);\n }\n constantCase() {\n return this.transformKeys(key => snakeCase(key).toUpperCase());\n }\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const base = super.describe(options);\n base.fields = {};\n for (const [key, value] of Object.entries(next.fields)) {\n var _innerOptions2;\n let innerOptions = options;\n if ((_innerOptions2 = innerOptions) != null && _innerOptions2.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[key]\n });\n }\n base.fields[key] = value.describe(innerOptions);\n }\n return base;\n }\n}\ncreate$3.prototype = ObjectSchema.prototype;\n\nfunction create$2(type) {\n return new ArraySchema(type);\n}\nclass ArraySchema extends Schema {\n constructor(type) {\n super({\n type: 'array',\n spec: {\n types: type\n },\n check(v) {\n return Array.isArray(v);\n }\n });\n\n // `undefined` specifically means uninitialized, as opposed to \"no subtype\"\n this.innerType = void 0;\n this.innerType = type;\n }\n _cast(_value, _opts) {\n const value = super._cast(_value, _opts);\n\n // should ignore nulls here\n if (!this._typeCheck(value) || !this.innerType) {\n return value;\n }\n let isChanged = false;\n const castArray = value.map((v, idx) => {\n const castElement = this.innerType.cast(v, Object.assign({}, _opts, {\n path: `${_opts.path || ''}[${idx}]`\n }));\n if (castElement !== v) {\n isChanged = true;\n }\n return castElement;\n });\n return isChanged ? castArray : value;\n }\n _validate(_value, options = {}, panic, next) {\n var _options$recursive;\n // let sync = options.sync;\n // let path = options.path;\n let innerType = this.innerType;\n // let endEarly = options.abortEarly ?? this.spec.abortEarly;\n let recursive = (_options$recursive = options.recursive) != null ? _options$recursive : this.spec.recursive;\n options.originalValue != null ? options.originalValue : _value;\n super._validate(_value, options, panic, (arrayErrors, value) => {\n var _options$originalValu2;\n if (!recursive || !innerType || !this._typeCheck(value)) {\n next(arrayErrors, value);\n return;\n }\n\n // #950 Ensure that sparse array empty slots are validated\n let tests = new Array(value.length);\n for (let index = 0; index < value.length; index++) {\n var _options$originalValu;\n tests[index] = innerType.asNestedTest({\n options,\n index,\n parent: value,\n parentPath: options.path,\n originalParent: (_options$originalValu = options.originalValue) != null ? _options$originalValu : _value\n });\n }\n this.runTests({\n value,\n tests,\n originalValue: (_options$originalValu2 = options.originalValue) != null ? _options$originalValu2 : _value,\n options\n }, panic, innerTypeErrors => next(innerTypeErrors.concat(arrayErrors), value));\n });\n }\n clone(spec) {\n const next = super.clone(spec);\n // @ts-expect-error readonly\n next.innerType = this.innerType;\n return next;\n }\n\n /** Parse an input JSON string to an object */\n json() {\n return this.transform(parseJson);\n }\n concat(schema) {\n let next = super.concat(schema);\n\n // @ts-expect-error readonly\n next.innerType = this.innerType;\n if (schema.innerType)\n // @ts-expect-error readonly\n next.innerType = next.innerType ?\n // @ts-expect-error Lazy doesn't have concat and will break\n next.innerType.concat(schema.innerType) : schema.innerType;\n return next;\n }\n of(schema) {\n // FIXME: this should return a new instance of array without the default to be\n let next = this.clone();\n if (!isSchema(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema not: ' + printValue(schema));\n\n // @ts-expect-error readonly\n next.innerType = schema;\n next.spec = Object.assign({}, next.spec, {\n types: schema\n });\n return next;\n }\n length(length, message = array.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n skipAbsent: true,\n test(value) {\n return value.length === this.resolve(length);\n }\n });\n }\n min(min, message) {\n message = message || array.min;\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n skipAbsent: true,\n // FIXME(ts): Array\n test(value) {\n return value.length >= this.resolve(min);\n }\n });\n }\n max(max, message) {\n message = message || array.max;\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n skipAbsent: true,\n test(value) {\n return value.length <= this.resolve(max);\n }\n });\n }\n ensure() {\n return this.default(() => []).transform((val, original) => {\n // We don't want to return `null` for nullable schema\n if (this._typeCheck(val)) return val;\n return original == null ? [] : [].concat(original);\n });\n }\n compact(rejector) {\n let reject = !rejector ? v => !!v : (v, i, a) => !rejector(v, i, a);\n return this.transform(values => values != null ? values.filter(reject) : values);\n }\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const base = super.describe(options);\n if (next.innerType) {\n var _innerOptions;\n let innerOptions = options;\n if ((_innerOptions = innerOptions) != null && _innerOptions.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[0]\n });\n }\n base.innerType = next.innerType.describe(innerOptions);\n }\n return base;\n }\n}\ncreate$2.prototype = ArraySchema.prototype;\n\n// @ts-ignore\nfunction create$1(schemas) {\n return new TupleSchema(schemas);\n}\nclass TupleSchema extends Schema {\n constructor(schemas) {\n super({\n type: 'tuple',\n spec: {\n types: schemas\n },\n check(v) {\n const types = this.spec.types;\n return Array.isArray(v) && v.length === types.length;\n }\n });\n this.withMutation(() => {\n this.typeError(tuple.notType);\n });\n }\n _cast(inputValue, options) {\n const {\n types\n } = this.spec;\n const value = super._cast(inputValue, options);\n if (!this._typeCheck(value)) {\n return value;\n }\n let isChanged = false;\n const castArray = types.map((type, idx) => {\n const castElement = type.cast(value[idx], Object.assign({}, options, {\n path: `${options.path || ''}[${idx}]`\n }));\n if (castElement !== value[idx]) isChanged = true;\n return castElement;\n });\n return isChanged ? castArray : value;\n }\n _validate(_value, options = {}, panic, next) {\n let itemTypes = this.spec.types;\n super._validate(_value, options, panic, (tupleErrors, value) => {\n var _options$originalValu2;\n // intentionally not respecting recursive\n if (!this._typeCheck(value)) {\n next(tupleErrors, value);\n return;\n }\n let tests = [];\n for (let [index, itemSchema] of itemTypes.entries()) {\n var _options$originalValu;\n tests[index] = itemSchema.asNestedTest({\n options,\n index,\n parent: value,\n parentPath: options.path,\n originalParent: (_options$originalValu = options.originalValue) != null ? _options$originalValu : _value\n });\n }\n this.runTests({\n value,\n tests,\n originalValue: (_options$originalValu2 = options.originalValue) != null ? _options$originalValu2 : _value,\n options\n }, panic, innerTypeErrors => next(innerTypeErrors.concat(tupleErrors), value));\n });\n }\n describe(options) {\n const next = (options ? this.resolve(options) : this).clone();\n const base = super.describe(options);\n base.innerType = next.spec.types.map((schema, index) => {\n var _innerOptions;\n let innerOptions = options;\n if ((_innerOptions = innerOptions) != null && _innerOptions.value) {\n innerOptions = Object.assign({}, innerOptions, {\n parent: innerOptions.value,\n value: innerOptions.value[index]\n });\n }\n return schema.describe(innerOptions);\n });\n return base;\n }\n}\ncreate$1.prototype = TupleSchema.prototype;\n\nfunction create(builder) {\n return new Lazy(builder);\n}\nclass Lazy {\n constructor(builder) {\n this.type = 'lazy';\n this.__isYupSchema__ = true;\n this.spec = void 0;\n this._resolve = (value, options = {}) => {\n let schema = this.builder(value, options);\n if (!isSchema(schema)) throw new TypeError('lazy() functions must return a valid schema');\n if (this.spec.optional) schema = schema.optional();\n return schema.resolve(options);\n };\n this.builder = builder;\n this.spec = {\n meta: undefined,\n optional: false\n };\n }\n clone(spec) {\n const next = new Lazy(this.builder);\n next.spec = Object.assign({}, this.spec, spec);\n return next;\n }\n optionality(optional) {\n const next = this.clone({\n optional\n });\n return next;\n }\n optional() {\n return this.optionality(true);\n }\n resolve(options) {\n return this._resolve(options.value, options);\n }\n cast(value, options) {\n return this._resolve(value, options).cast(value, options);\n }\n asNestedTest(config) {\n let {\n key,\n index,\n parent,\n options\n } = config;\n let value = parent[index != null ? index : key];\n return this._resolve(value, Object.assign({}, options, {\n value,\n parent\n })).asNestedTest(config);\n }\n validate(value, options) {\n return this._resolve(value, options).validate(value, options);\n }\n validateSync(value, options) {\n return this._resolve(value, options).validateSync(value, options);\n }\n validateAt(path, value, options) {\n return this._resolve(value, options).validateAt(path, value, options);\n }\n validateSyncAt(path, value, options) {\n return this._resolve(value, options).validateSyncAt(path, value, options);\n }\n isValid(value, options) {\n return this._resolve(value, options).isValid(value, options);\n }\n isValidSync(value, options) {\n return this._resolve(value, options).isValidSync(value, options);\n }\n describe(options) {\n return options ? this.resolve(options).describe(options) : {\n type: 'lazy',\n meta: this.spec.meta,\n label: undefined\n };\n }\n meta(...args) {\n if (args.length === 0) return this.spec.meta;\n let next = this.clone();\n next.spec.meta = Object.assign(next.spec.meta || {}, args[0]);\n return next;\n }\n}\n\nfunction setLocale(custom) {\n Object.keys(custom).forEach(type => {\n // @ts-ignore\n Object.keys(custom[type]).forEach(method => {\n // @ts-ignore\n locale[type][method] = custom[type][method];\n });\n });\n}\n\nfunction addMethod(schemaType, name, fn) {\n if (!schemaType || !isSchema(schemaType.prototype)) throw new TypeError('You must provide a yup schema constructor function');\n if (typeof name !== 'string') throw new TypeError('A Method name must be provided');\n if (typeof fn !== 'function') throw new TypeError('Method function must be provided');\n schemaType.prototype[name] = fn;\n}\n\nexport { ArraySchema, BooleanSchema, DateSchema, MixedSchema, NumberSchema, ObjectSchema, Schema, StringSchema, TupleSchema, ValidationError, addMethod, create$2 as array, create$7 as bool, create$7 as boolean, create$4 as date, locale as defaultLocale, getIn, isSchema, create as lazy, create$8 as mixed, create$5 as number, create$3 as object, printValue, reach, create$9 as ref, setLocale, create$6 as string, create$1 as tuple };\n","import * as yup from \"yup\";\nimport { ValidationKeys } from \"../types/form.type\";\n\nexport const getPortfolioFormSchema = yup\n .object({\n email: yup\n .string()\n .min(1, ValidationKeys.required)\n .email(ValidationKeys.email)\n .required(ValidationKeys.required),\n firstname: yup.string().nullable(),\n })\n .required();\n\nexport const contactFormSchema = yup\n .object({\n email: yup\n .string()\n .min(1, ValidationKeys.required)\n .email(ValidationKeys.email)\n .required(ValidationKeys.required),\n company: yup.string().nullable(),\n firstname: yup.string().nullable(),\n describe_your_project: yup.string().nullable(),\n consentToProcess: yup\n .boolean()\n .oneOf([true], ValidationKeys.consent)\n .required(ValidationKeys.required),\n })\n .required();\n","import { FieldErrors, FieldValues } from \"react-hook-form\";\nimport {\n IContactFormData,\n IGetPortfolioFormData,\n IHubspotFormDTO,\n ValidationKeys,\n} from \"../types/form.type\";\nimport { TValidationMarkup } from \"../types/commonMarkup.type\";\n\nexport const mapGetPorfolioData = (\n data: IGetPortfolioFormData,\n hutk?: string\n): IHubspotFormDTO => {\n return {\n fields: Object.entries(data).map(([key, value]) => ({\n objectTypeId: \"0-1\",\n name: key as keyof typeof data,\n value: value,\n })),\n context: {\n hutk,\n },\n legalConsentOptions: {\n consent: {\n consentToProcess: true,\n text: \"I agree to allow Example Company to store and process my personal data.\",\n },\n },\n };\n};\n\nexport const mapContactFormData = (\n data: IContactFormData,\n hutk?: string\n): IHubspotFormDTO> => {\n return {\n fields: Object.entries(data)\n .filter(([key, _]) => key !== \"consentToProcess\")\n .map(([key, value]) => ({\n objectTypeId: \"0-1\",\n name: key as keyof Omit,\n value: value,\n })),\n context: {\n hutk,\n },\n legalConsentOptions: {\n consent: {\n consentToProcess: data.consentToProcess,\n text: \"I agree to allow Example Company to store and process my personal data.\",\n },\n },\n };\n};\n\nexport function getValidationMessage(\n key: keyof T,\n errors: FieldErrors,\n validationMarkup?: TValidationMarkup\n): string | undefined | null {\n return errors[key]?.message &&\n Object.values(ValidationKeys).includes(\n // @ts-ignore\n errors[key].message\n )\n ? validationMarkup?.[errors[key]?.message as ValidationKeys]\n : null;\n}\n","import {\n IContactFormMarkup,\n IMarkupQueryResult,\n TValidationMarkup,\n} from \"./commonMarkup.type\";\n\nexport interface IContactFromQueryResult\n extends IMarkupQueryResult<{\n contactForm: IContactFormMarkup;\n validation: TValidationMarkup;\n }> {\n en?: { nodes?: { html: string }[] };\n ru?: { nodes?: { html: string }[] };\n}\n\ntype THubspotFields = {\n [K in keyof T]: {\n objectTypeId: \"0-1\";\n name: K;\n value: T[K];\n };\n}[keyof T][];\n\nexport interface IHubspotFormDTO {\n fields: THubspotFields;\n context: {\n hutk?: string;\n };\n legalConsentOptions: {\n consent: {\n consentToProcess: boolean;\n text: string;\n };\n };\n}\n\nexport interface IGetPortfolioFormData {\n email: string;\n firstname?: string | null;\n}\n\nexport enum ValidationKeys {\n email = \"invalidEmail\",\n required = \"required\",\n consent = \"consent\",\n}\n\nexport enum ServicesOptions {\n web_dev = \"web_dev\",\n mobile_dev = \"mobile_dev\",\n qa = \"qa\",\n devops = \"devops\",\n ui_ux = \"ui_ux\",\n ba = \"ba\",\n add_ins = \"add_ins\",\n vr_ar = \"vr_ar\",\n support = \"support\",\n consulting = \"consulting\",\n}\n\nexport enum BudgetOptions {\n \"_1500_2500\" = \"_1500_2500\",\n \"_2500_5000\" = \"_2500_5000\",\n \"_5000_10000\" = \"_5000_10000\",\n \"_10000_\" = \"_10000_\",\n not_decided = \"not_decided\",\n}\n\nexport interface IContactFormData {\n email: string;\n company?: string | null;\n firstname?: string | null;\n services?: ServicesOptions | null;\n budget?: BudgetOptions | null;\n describe_your_project?: string | null;\n consentToProcess: boolean;\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","/**\n * Based on Kendo UI Core expression code \n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX) || ['']\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-server-dom-webpack.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var k=require(\"react\"),l={stream:!0},n=new Map,p=Symbol.for(\"react.element\"),q=Symbol.for(\"react.lazy\"),r=Symbol.for(\"react.default_value\"),t=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ContextRegistry;function u(a){t[a]||(t[a]=k.createServerContext(a,r));return t[a]}function v(a,b,c){this._status=a;this._value=b;this._response=c}v.prototype.then=function(a){0===this._status?(null===this._value&&(this._value=[]),this._value.push(a)):a()};\nfunction w(a){switch(a._status){case 3:return a._value;case 1:var b=JSON.parse(a._value,a._response._fromJSON);a._status=3;return a._value=b;case 2:b=a._value;for(var c=b.chunks,d=0;d str.match(reWords) || []\n\nconst upperFirst = (str) => str[0].toUpperCase() + str.slice(1)\n\nconst join = (str, d) => words(str).join(d).toLowerCase()\n\nconst camelCase = (str) =>\n words(str).reduce(\n (acc, next) =>\n `${acc}${\n !acc\n ? next.toLowerCase()\n : next[0].toUpperCase() + next.slice(1).toLowerCase()\n }`,\n '',\n )\n\nconst pascalCase = (str) => upperFirst(camelCase(str))\n\nconst snakeCase = (str) => join(str, '_')\n\nconst kebabCase = (str) => join(str, '-')\n\nconst sentenceCase = (str) => upperFirst(join(str, ' '))\n\nconst titleCase = (str) => words(str).map(upperFirst).join(' ')\n\nmodule.exports = {\n words,\n upperFirst,\n camelCase,\n pascalCase,\n snakeCase,\n kebabCase,\n sentenceCase,\n titleCase,\n}\n","\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\n","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n return (module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.indexOf(n) >= 0) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(t, e) {\n return (module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst PartytownSnippet = \"/* Partytown 0.7.6 - MIT builder.io */\\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,\\\"/\\\"==(a=(o.lib||\\\"/~partytown/\\\")+(o.debug?\\\"debug/\\\":\\\"\\\"))[0]&&(s=e.querySelectorAll('script[type=\\\"text/partytown\\\"]'),i!=t?i.dispatchEvent(new CustomEvent(\\\"pt1\\\",{detail:t})):(d=setTimeout(f,1e4),e.addEventListener(\\\"pt0\\\",w),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||\\\"partytown-sw.js\\\"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener(\\\"statechange\\\",(function(t){\\\"activated\\\"==t.target.state&&h()}))}),console.error):f())))}function h(t){c=e.createElement(t?\\\"script\\\":\\\"iframe\\\"),t||(c.setAttribute(\\\"style\\\",\\\"display:block;width:0;height:0;border:0;visibility:hidden\\\"),c.setAttribute(\\\"aria-hidden\\\",!0)),c.src=a+\\\"partytown-\\\"+(t?\\\"atomics.js?v=0.7.6\\\":\\\"sandbox-sw.html?\\\"+Date.now()),e.body.appendChild(c)}function f(n,r){for(w(),i==t&&(o.forward||[]).map((function(e){delete t[e.split(\\\".\\\")[0]]})),n=0;n {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the `

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

Comments


CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+

We wish you a great mood and interesting tasks!

like

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/index.html b/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/index.html index 8cae392c..c1052e77 100644 --- a/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/index.html +++ b/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/index.html @@ -1,8 +1,8 @@

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

Comments


CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+

Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.

Share this post

like

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/45775c6a-7cd8-5018-9047-afbec09abf59/index.html b/blog/45775c6a-7cd8-5018-9047-afbec09abf59/index.html index 9a7dc43d..10abd307 100644 --- a/blog/45775c6a-7cd8-5018-9047-afbec09abf59/index.html +++ b/blog/45775c6a-7cd8-5018-9047-afbec09abf59/index.html @@ -1,8 +1,8 @@

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

Comments


CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+

Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.

Share this post

like

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/6a129001-a171-5d7e-9555-a943ae9d624f/index.html b/blog/6a129001-a171-5d7e-9555-a943ae9d624f/index.html index 45cac641..01825f76 100644 --- a/blog/6a129001-a171-5d7e-9555-a943ae9d624f/index.html +++ b/blog/6a129001-a171-5d7e-9555-a943ae9d624f/index.html @@ -1,8 +1,8 @@
Reading time: 1m.

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.

Share this post

like

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

Comments


CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);
Reading time: 1m.

Awesome post 3

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.

Share this post

like

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/index.html b/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/index.html index cf6cf522..bd20b6b5 100644 --- a/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/index.html +++ b/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/index.html @@ -1,8 +1,8 @@

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

Comments


CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+

This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.

like

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/index.html b/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/index.html index 83125413..a0a1baf7 100644 --- a/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/index.html +++ b/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/index.html @@ -1,8 +1,8 @@
Reading time: 1m.

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.

Share this post

like

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

Comments


CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ }]);
Reading time: 1m.

Awesome post 2

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.

Share this post

like

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/articlename/index.html b/blog/articlename/index.html index 7a7d5ae6..c133c15f 100644 --- a/blog/articlename/index.html +++ b/blog/articlename/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/articlename/page/1/index.html b/blog/articlename/page/1/index.html index 46f3d59d..6abbfc88 100644 --- a/blog/articlename/page/1/index.html +++ b/blog/articlename/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/articlename/page/2/index.html b/blog/articlename/page/2/index.html index 2a8b8f6d..abf639c7 100644 --- a/blog/articlename/page/2/index.html +++ b/blog/articlename/page/2/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/azure-devops/index.html b/blog/azure-devops/index.html index d50d70ce..04c0e1b1 100644 --- a/blog/azure-devops/index.html +++ b/blog/azure-devops/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/azure-devops/page/1/index.html b/blog/azure-devops/page/1/index.html index 94989c93..6419ae90 100644 --- a/blog/azure-devops/page/1/index.html +++ b/blog/azure-devops/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/azure/index.html b/blog/azure/index.html index 2682c24d..f17a9c43 100644 --- a/blog/azure/index.html +++ b/blog/azure/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/azure/page/1/index.html b/blog/azure/page/1/index.html index af5bdbf2..f04a04f2 100644 --- a/blog/azure/page/1/index.html +++ b/blog/azure/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/index.html b/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/index.html index 118e71f1..7912861e 100644 --- a/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/index.html +++ b/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/index.html @@ -1,8 +1,8 @@

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

Comments


CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+

Happy virtualizing!

like

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/changelog/index.html b/blog/changelog/index.html index cd13699f..648a6f37 100644 --- a/blog/changelog/index.html +++ b/blog/changelog/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/changelog/page/1/index.html b/blog/changelog/page/1/index.html index 9e99b463..add845b9 100644 --- a/blog/changelog/page/1/index.html +++ b/blog/changelog/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/cloud-init/index.html b/blog/cloud-init/index.html index ef6f43ad..7ef378e3 100644 --- a/blog/cloud-init/index.html +++ b/blog/cloud-init/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/cloud-init/page/1/index.html b/blog/cloud-init/page/1/index.html index 83541618..20b0a880 100644 --- a/blog/cloud-init/page/1/index.html +++ b/blog/cloud-init/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/confluence/index.html b/blog/confluence/index.html index 03b13185..bd0039e1 100644 --- a/blog/confluence/index.html +++ b/blog/confluence/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/confluence/page/1/index.html b/blog/confluence/page/1/index.html index c83be3d4..0a905f5b 100644 --- a/blog/confluence/page/1/index.html +++ b/blog/confluence/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/devops/index.html b/blog/devops/index.html index 999184d2..0839bae0 100644 --- a/blog/devops/index.html +++ b/blog/devops/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/devops/page/1/index.html b/blog/devops/page/1/index.html index 8e7e10d4..3a9580d5 100644 --- a/blog/devops/page/1/index.html +++ b/blog/devops/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/index.html b/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/index.html index db421683..780a362c 100644 --- a/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/index.html +++ b/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/index.html @@ -1,8 +1,8 @@

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

Comments


CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+

We hope this detailed guide was helpful to you. If you have questions or need more help, please refer to the official Azure documentation.

Share this post

like

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/index.html b/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/index.html index 4587db0d..f6367650 100644 --- a/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/index.html +++ b/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/index.html @@ -1,8 +1,8 @@

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

Comments


CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

+ This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.

Share this post

like

Congratulations! Now you can show off with your new knowledge!

If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!

CONTACTS

EIN: 35-2654711, Company Code: 7296176

8 The Green STE B

Dover, DE 19901-3618, United States

+1 302 364 0193

Privacy PolicyCookie Policy

Leave your contact to get our portfolio

- \ No newline at end of file + \ No newline at end of file diff --git a/blog/hashtag/index.html b/blog/hashtag/index.html index 71bf11ef..69c655f0 100644 --- a/blog/hashtag/index.html +++ b/blog/hashtag/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/hashtag/page/1/index.html b/blog/hashtag/page/1/index.html index 60c772b7..dd1dc895 100644 --- a/blog/hashtag/page/1/index.html +++ b/blog/hashtag/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/importanttopick/index.html b/blog/importanttopick/index.html index 8de19f0c..4549ab04 100644 --- a/blog/importanttopick/index.html +++ b/blog/importanttopick/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/importanttopick/page/1/index.html b/blog/importanttopick/page/1/index.html index 077c0182..a452f880 100644 --- a/blog/importanttopick/page/1/index.html +++ b/blog/importanttopick/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/importanttopick/page/2/index.html b/blog/importanttopick/page/2/index.html index ecc01a08..7b3e3019 100644 --- a/blog/importanttopick/page/2/index.html +++ b/blog/importanttopick/page/2/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/index.html b/blog/index.html index e30cc9ec..356e0b9e 100644 --- a/blog/index.html +++ b/blog/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/keywordlong/index.html b/blog/keywordlong/index.html index fa00e4d0..dfc1ae0b 100644 --- a/blog/keywordlong/index.html +++ b/blog/keywordlong/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/keywordlong/page/1/index.html b/blog/keywordlong/page/1/index.html index 14b46a60..cac6f488 100644 --- a/blog/keywordlong/page/1/index.html +++ b/blog/keywordlong/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/page/1/index.html b/blog/page/1/index.html index 59bb0637..e37114b9 100644 --- a/blog/page/1/index.html +++ b/blog/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/page/2/index.html b/blog/page/2/index.html index e851ad97..5b4124f1 100644 --- a/blog/page/2/index.html +++ b/blog/page/2/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/podryabinkina/index.html b/blog/podryabinkina/index.html index 71744811..cd544a28 100644 --- a/blog/podryabinkina/index.html +++ b/blog/podryabinkina/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/podryabinkina/page/1/index.html b/blog/podryabinkina/page/1/index.html index c5a5724b..8fb2d601 100644 --- a/blog/podryabinkina/page/1/index.html +++ b/blog/podryabinkina/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/post/index.html b/blog/post/index.html index 226a1cd9..8e47c0e9 100644 --- a/blog/post/index.html +++ b/blog/post/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/post/page/1/index.html b/blog/post/page/1/index.html index 52774f65..a4b2f19c 100644 --- a/blog/post/page/1/index.html +++ b/blog/post/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/post/page/2/index.html b/blog/post/page/2/index.html index 40b67a98..fdeac1cf 100644 --- a/blog/post/page/2/index.html +++ b/blog/post/page/2/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/proxmox/index.html b/blog/proxmox/index.html index 368800ee..6ebf9d51 100644 --- a/blog/proxmox/index.html +++ b/blog/proxmox/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/proxmox/page/1/index.html b/blog/proxmox/page/1/index.html index 5d999ca8..b0818c4c 100644 --- a/blog/proxmox/page/1/index.html +++ b/blog/proxmox/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/self-hosted-build-agent/index.html b/blog/self-hosted-build-agent/index.html index f4ee92ad..2025d2f3 100644 --- a/blog/self-hosted-build-agent/index.html +++ b/blog/self-hosted-build-agent/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/self-hosted-build-agent/page/1/index.html b/blog/self-hosted-build-agent/page/1/index.html index b0fcda9e..1c39f577 100644 --- a/blog/self-hosted-build-agent/page/1/index.html +++ b/blog/self-hosted-build-agent/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/virtualization/index.html b/blog/virtualization/index.html index 0da310cb..1278208a 100644 --- a/blog/virtualization/index.html +++ b/blog/virtualization/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/virtualization/page/1/index.html b/blog/virtualization/page/1/index.html index 04370ba7..ad40e771 100644 --- a/blog/virtualization/page/1/index.html +++ b/blog/virtualization/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/vm/index.html b/blog/vm/index.html index 22f2b4fd..f8057ceb 100644 --- a/blog/vm/index.html +++ b/blog/vm/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/vm/page/1/index.html b/blog/vm/page/1/index.html index 1f55c739..41e6e05e 100644 --- a/blog/vm/page/1/index.html +++ b/blog/vm/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/zhmayev/index.html b/blog/zhmayev/index.html index d8d04b53..85c61ac2 100644 --- a/blog/zhmayev/index.html +++ b/blog/zhmayev/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/zhmayev/page/1/index.html b/blog/zhmayev/page/1/index.html index cf37d390..a4ae75b1 100644 --- a/blog/zhmayev/page/1/index.html +++ b/blog/zhmayev/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/zhmayev/page/2/index.html b/blog/zhmayev/page/2/index.html index 9639b8cf..9305d2c3 100644 --- a/blog/zhmayev/page/2/index.html +++ b/blog/zhmayev/page/2/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/chunk-map.json b/chunk-map.json index 877e3259..5ecf16d7 100644 --- a/chunk-map.json +++ b/chunk-map.json @@ -1 +1 @@ -{"app":["/app-f487b6864a0d816cc020.js"],"component---src-pages-templates-404-tsx":["/component---src-pages-templates-404-tsx-1ec7dcfded6e73efef91.js"],"component---src-pages-templates-blog-by-author-tsx":["/component---src-pages-templates-blog-by-author-tsx-c73b629026a3b6d9b6b2.js"],"component---src-pages-templates-blog-by-hashtag-tsx":["/component---src-pages-templates-blog-by-hashtag-tsx-3a8ada98c121bd3d62f7.js"],"component---src-pages-templates-blog-tsx":["/component---src-pages-templates-blog-tsx-91ade5beabd1db3174a4.js"],"component---src-pages-templates-index-tsx":["/component---src-pages-templates-index-tsx-2df0ce267e9edf8b197a.js"],"component---src-pages-templates-policies-tsx":["/component---src-pages-templates-policies-tsx-359925d45492160d5e8b.js"],"component---src-pages-templates-post-tsx":["/component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js"],"component---src-pages-templates-project-tsx":["/component---src-pages-templates-project-tsx-3f6f4a02fe1a9b45b9be.js"],"component---src-pages-templates-projects-tsx":["/component---src-pages-templates-projects-tsx-efcf98f36bb35506a959.js"],"component---src-pages-templates-services-tsx":["/component---src-pages-templates-services-tsx-52382137cf50c3b54f73.js"],"component---src-pages-templates-workflow-tsx":["/component---src-pages-templates-workflow-tsx-3b5bfd63b270d61e9cb0.js"]} \ No newline at end of file +{"app":["/app-7990c3f1d980ee5d9dc0.js"],"component---src-pages-templates-404-tsx":["/component---src-pages-templates-404-tsx-1ec7dcfded6e73efef91.js"],"component---src-pages-templates-blog-by-author-tsx":["/component---src-pages-templates-blog-by-author-tsx-c73b629026a3b6d9b6b2.js"],"component---src-pages-templates-blog-by-hashtag-tsx":["/component---src-pages-templates-blog-by-hashtag-tsx-3a8ada98c121bd3d62f7.js"],"component---src-pages-templates-blog-tsx":["/component---src-pages-templates-blog-tsx-91ade5beabd1db3174a4.js"],"component---src-pages-templates-index-tsx":["/component---src-pages-templates-index-tsx-2df0ce267e9edf8b197a.js"],"component---src-pages-templates-policies-tsx":["/component---src-pages-templates-policies-tsx-359925d45492160d5e8b.js"],"component---src-pages-templates-post-tsx":["/component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js"],"component---src-pages-templates-project-tsx":["/component---src-pages-templates-project-tsx-3f6f4a02fe1a9b45b9be.js"],"component---src-pages-templates-projects-tsx":["/component---src-pages-templates-projects-tsx-efcf98f36bb35506a959.js"],"component---src-pages-templates-services-tsx":["/component---src-pages-templates-services-tsx-52382137cf50c3b54f73.js"],"component---src-pages-templates-workflow-tsx":["/component---src-pages-templates-workflow-tsx-3b5bfd63b270d61e9cb0.js"]} \ No newline at end of file diff --git a/component---src-pages-templates-404-tsx-1ec7dcfded6e73efef91.js.map b/component---src-pages-templates-404-tsx-1ec7dcfded6e73efef91.js.map index 468de650..53c89734 100644 --- a/component---src-pages-templates-404-tsx-1ec7dcfded6e73efef91.js.map +++ b/component---src-pages-templates-404-tsx-1ec7dcfded6e73efef91.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-templates-404-tsx-1ec7dcfded6e73efef91.js","mappings":"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","sources":["webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/pagesTemplates/404.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./node_modules/lodash/_arrayLikeKeys.js","webpack://code-cave/./node_modules/lodash/_arrayMap.js","webpack://code-cave/./node_modules/lodash/_arraySample.js","webpack://code-cave/./node_modules/lodash/_baseIsArguments.js","webpack://code-cave/./node_modules/lodash/_baseIsTypedArray.js","webpack://code-cave/./node_modules/lodash/_baseKeys.js","webpack://code-cave/./node_modules/lodash/_baseRandom.js","webpack://code-cave/./node_modules/lodash/_baseSample.js","webpack://code-cave/./node_modules/lodash/_baseTimes.js","webpack://code-cave/./node_modules/lodash/_baseUnary.js","webpack://code-cave/./node_modules/lodash/_baseValues.js","webpack://code-cave/./node_modules/lodash/_isIndex.js","webpack://code-cave/./node_modules/lodash/_isPrototype.js","webpack://code-cave/./node_modules/lodash/_nativeKeys.js","webpack://code-cave/./node_modules/lodash/_nodeUtil.js","webpack://code-cave/./node_modules/lodash/_overArg.js","webpack://code-cave/./node_modules/lodash/isArguments.js","webpack://code-cave/./node_modules/lodash/isArray.js","webpack://code-cave/./node_modules/lodash/isArrayLike.js","webpack://code-cave/./node_modules/lodash/isBuffer.js","webpack://code-cave/./node_modules/lodash/isFunction.js","webpack://code-cave/./node_modules/lodash/isLength.js","webpack://code-cave/./node_modules/lodash/isTypedArray.js","webpack://code-cave/./node_modules/lodash/keys.js","webpack://code-cave/./node_modules/lodash/sample.js","webpack://code-cave/./node_modules/lodash/stubFalse.js","webpack://code-cave/./node_modules/lodash/values.js"],"sourcesContent":["import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import * as React from \"react\";\nimport { HeadFC, Link, PageProps, graphql } from \"gatsby\";\nimport _ from \"lodash\";\n\nimport { Theme } from \"../types/common.type\";\nimport { INotFoundContext, INotFoundQueryResult } from \"../types/404.type\";\n\nimport Button from \"../components/common/button\";\nimport ContentContainer from \"../components/common/contentContainer\";\n\nconst NotFoundPage = ({\n data: {\n allMarkdownRemark: { nodes },\n },\n pageContext: { markupData },\n}: PageProps) => {\n const randomPostId = _.sample(nodes)?.id;\n\n return (\n
\n \n

404

\n
\n

\n {markupData.title}\n

\n

\n {markupData.subtitle}\n

\n \n \n {markupData.btnLabel}\n \n \n
\n
\n
\n );\n};\n\nexport default NotFoundPage;\n\nexport const Head: HeadFC = () => 404;\n\nexport const query = graphql`\n query ($lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { date: DESC } }\n ) {\n nodes {\n id\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsRepo: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var baseRandom = require('./_baseRandom');\n\n/**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\nfunction arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n}\n\nmodule.exports = arraySample;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nmodule.exports = baseRandom;\n","var arraySample = require('./_arraySample'),\n values = require('./values');\n\n/**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\nfunction baseSample(collection) {\n return arraySample(values(collection));\n}\n\nmodule.exports = baseSample;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arraySample = require('./_arraySample'),\n baseSample = require('./_baseSample'),\n isArray = require('./isArray');\n\n/**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\nfunction sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n}\n\nmodule.exports = sample;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n"],"names":["props","theme","onClick","className","children","border","attr","colorClasses","Theme","dark","___EmotionJSX","_extends","_ref","_sample2","data","allMarkdownRemark","nodes","pageContext","markupData","randomPostId","_sample","id","ContentContainer","title","subtitle","Link","to","Button","light","btnLabel","Head","baseTimes","isArguments","isArray","isBuffer","isIndex","isTypedArray","hasOwnProperty","Object","prototype","module","exports","value","inherited","isArr","isArg","isBuff","isType","skipIndexes","result","length","String","key","call","push","array","iteratee","index","Array","baseRandom","undefined","baseGetTag","isObjectLike","isLength","typedArrayTags","isPrototype","nativeKeys","object","nativeFloor","Math","floor","nativeRandom","random","lower","upper","arraySample","values","collection","n","func","arrayMap","reIsUint","type","test","objectProto","Ctor","constructor","overArg","keys","freeGlobal","freeExports","nodeType","freeModule","freeProcess","process","nodeUtil","types","require","binding","e","transform","arg","baseIsArguments","propertyIsEnumerable","arguments","isFunction","root","stubFalse","Buffer","isObject","tag","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeys","isArrayLike","baseSample","baseValues"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-templates-404-tsx-1ec7dcfded6e73efef91.js","mappings":"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","sources":["webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/pagesTemplates/404.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./node_modules/lodash/_arrayLikeKeys.js","webpack://code-cave/./node_modules/lodash/_arrayMap.js","webpack://code-cave/./node_modules/lodash/_arraySample.js","webpack://code-cave/./node_modules/lodash/_baseIsArguments.js","webpack://code-cave/./node_modules/lodash/_baseIsTypedArray.js","webpack://code-cave/./node_modules/lodash/_baseKeys.js","webpack://code-cave/./node_modules/lodash/_baseRandom.js","webpack://code-cave/./node_modules/lodash/_baseSample.js","webpack://code-cave/./node_modules/lodash/_baseTimes.js","webpack://code-cave/./node_modules/lodash/_baseUnary.js","webpack://code-cave/./node_modules/lodash/_baseValues.js","webpack://code-cave/./node_modules/lodash/_isIndex.js","webpack://code-cave/./node_modules/lodash/_isPrototype.js","webpack://code-cave/./node_modules/lodash/_nativeKeys.js","webpack://code-cave/./node_modules/lodash/_nodeUtil.js","webpack://code-cave/./node_modules/lodash/_overArg.js","webpack://code-cave/./node_modules/lodash/isArguments.js","webpack://code-cave/./node_modules/lodash/isArray.js","webpack://code-cave/./node_modules/lodash/isArrayLike.js","webpack://code-cave/./node_modules/lodash/isBuffer.js","webpack://code-cave/./node_modules/lodash/isFunction.js","webpack://code-cave/./node_modules/lodash/isLength.js","webpack://code-cave/./node_modules/lodash/isTypedArray.js","webpack://code-cave/./node_modules/lodash/keys.js","webpack://code-cave/./node_modules/lodash/sample.js","webpack://code-cave/./node_modules/lodash/stubFalse.js","webpack://code-cave/./node_modules/lodash/values.js"],"sourcesContent":["import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import * as React from \"react\";\nimport { HeadFC, Link, PageProps, graphql } from \"gatsby\";\nimport _ from \"lodash\";\n\nimport { Theme } from \"../types/common.type\";\nimport { INotFoundContext, INotFoundQueryResult } from \"../types/404.type\";\n\nimport Button from \"../components/common/button\";\nimport ContentContainer from \"../components/common/contentContainer\";\n\nconst NotFoundPage = ({\n data: {\n allMarkdownRemark: { nodes },\n },\n pageContext: { markupData },\n}: PageProps) => {\n const randomPostId = _.sample(nodes)?.id;\n\n return (\n
\n \n

404

\n
\n

\n {markupData.title}\n

\n

\n {markupData.subtitle}\n

\n \n \n {markupData.btnLabel}\n \n \n
\n
\n
\n );\n};\n\nexport default NotFoundPage;\n\nexport const Head: HeadFC = () => 404;\n\nexport const query = graphql`\n query ($lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { date: DESC } }\n ) {\n nodes {\n id\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsSetup: ICommentsSetup;\n}\n\nexport interface ICommentsSetup {\n repo: `${string}/${string}`;\n repoId: string;\n categoryId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var baseRandom = require('./_baseRandom');\n\n/**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\nfunction arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n}\n\nmodule.exports = arraySample;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nmodule.exports = baseRandom;\n","var arraySample = require('./_arraySample'),\n values = require('./values');\n\n/**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\nfunction baseSample(collection) {\n return arraySample(values(collection));\n}\n\nmodule.exports = baseSample;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arraySample = require('./_arraySample'),\n baseSample = require('./_baseSample'),\n isArray = require('./isArray');\n\n/**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\nfunction sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n}\n\nmodule.exports = sample;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n"],"names":["props","theme","onClick","className","children","border","attr","colorClasses","Theme","dark","___EmotionJSX","_extends","_ref","_sample2","data","allMarkdownRemark","nodes","pageContext","markupData","randomPostId","_sample","id","ContentContainer","title","subtitle","Link","to","Button","light","btnLabel","Head","baseTimes","isArguments","isArray","isBuffer","isIndex","isTypedArray","hasOwnProperty","Object","prototype","module","exports","value","inherited","isArr","isArg","isBuff","isType","skipIndexes","result","length","String","key","call","push","array","iteratee","index","Array","baseRandom","undefined","baseGetTag","isObjectLike","isLength","typedArrayTags","isPrototype","nativeKeys","object","nativeFloor","Math","floor","nativeRandom","random","lower","upper","arraySample","values","collection","n","func","arrayMap","reIsUint","type","test","objectProto","Ctor","constructor","overArg","keys","freeGlobal","freeExports","nodeType","freeModule","freeProcess","process","nodeUtil","types","require","binding","e","transform","arg","baseIsArguments","propertyIsEnumerable","arguments","isFunction","root","stubFalse","Buffer","isObject","tag","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeys","isArrayLike","baseSample","baseValues"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-blog-by-author-tsx-c73b629026a3b6d9b6b2.js.map b/component---src-pages-templates-blog-by-author-tsx-c73b629026a3b6d9b6b2.js.map index 982f23b1..16221528 100644 --- a/component---src-pages-templates-blog-by-author-tsx-c73b629026a3b6d9b6b2.js.map +++ b/component---src-pages-templates-blog-by-author-tsx-c73b629026a3b6d9b6b2.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-templates-blog-by-author-tsx-c73b629026a3b6d9b6b2.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/posts/postAuthorCard.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/pagesTemplates/blogByAuthor.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IPostAuthor } from \"../../types/post.type\";\n\nconst PostAuthorCard = ({\n authorAlias,\n author,\n authorPosition,\n authorPhoto,\n}: IPostAuthor) => {\n const avatar = getImage(authorPhoto);\n\n return (\n \n {avatar ? (\n \n ) : null}\n
\n

\n {author}\n

\n

\n {authorPosition}\n

\n
\n \n );\n};\n\nexport default PostAuthorCard;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass70 =\n theme === Theme.light ? \"text-main-70\" : \"text-secondary-70\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps, graphql } from \"gatsby\";\n\nimport {\n IBlogByAuthorPageContext,\n IBlogByAuthorPageData,\n} from \"../types/blog.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport PostPreview from \"../components/posts/postPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport PostAuthorCard from \"../components/posts/postAuthorCard\";\n\nconst BlogByAuthor = ({\n data,\n pageContext,\n}: PageProps) => {\n const posts = data.posts.nodes;\n const {\n authorAlias,\n author,\n authorPhoto,\n authorPosition,\n authorDescription,\n } = data.author.frontmatter;\n const { currentPage, pagesQuantity, markupData, lang } = pageContext;\n\n return (\n <>\n \n
\n \n

{authorDescription}

\n
\n \n \n {posts\n ? posts.map((post) => (\n \n ))\n : null}\n \n \n \n );\n};\n\nexport default BlogByAuthor;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, currentPage, site, lang },\n data: {\n author: {\n frontmatter: { author },\n },\n },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n\nexport const query = graphql`\n query (\n $skip: Int!\n $limit: Int!\n $lang: String\n $authorAlias: String\n $authorId: String\n ) {\n posts: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n frontmatter: { authorAlias: { eq: $authorAlias } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n wordCount {\n words\n }\n }\n }\n author: markdownRemark(id: { eq: $authorId }) {\n frontmatter {\n authorAlias\n author\n authorPosition\n authorDescription\n authorPhoto {\n childImageSharp {\n gatsbyImageData(\n width: 64\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsRepo: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["GenIcon","module","exports","props","_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","theme","onClick","border","attr","colorClasses","Theme","dark","_extends","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","_","i","nextPage","Link","to","Button","light","map","page","key","authorAlias","author","authorPosition","authorPhoto","avatar","getImage","split","join","toLowerCase","itemProp","itemScope","itemType","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","fontColorClass70","fontColorHover","id","slice","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","pageContext","posts","nodes","authorDescription","React","Banner","blogByAuthorBannerTitle","toUpperCase","PostAuthorCard","PostPreview","Pagination","pagination","next","Head","_ref2","site","location","HeadSeo","head","description","siteUrl","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-templates-blog-by-author-tsx-c73b629026a3b6d9b6b2.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/posts/postAuthorCard.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/pagesTemplates/blogByAuthor.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IPostAuthor } from \"../../types/post.type\";\n\nconst PostAuthorCard = ({\n authorAlias,\n author,\n authorPosition,\n authorPhoto,\n}: IPostAuthor) => {\n const avatar = getImage(authorPhoto);\n\n return (\n \n {avatar ? (\n \n ) : null}\n
\n

\n {author}\n

\n

\n {authorPosition}\n

\n
\n \n );\n};\n\nexport default PostAuthorCard;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass70 =\n theme === Theme.light ? \"text-main-70\" : \"text-secondary-70\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps, graphql } from \"gatsby\";\n\nimport {\n IBlogByAuthorPageContext,\n IBlogByAuthorPageData,\n} from \"../types/blog.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport PostPreview from \"../components/posts/postPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport PostAuthorCard from \"../components/posts/postAuthorCard\";\n\nconst BlogByAuthor = ({\n data,\n pageContext,\n}: PageProps) => {\n const posts = data.posts.nodes;\n const {\n authorAlias,\n author,\n authorPhoto,\n authorPosition,\n authorDescription,\n } = data.author.frontmatter;\n const { currentPage, pagesQuantity, markupData, lang } = pageContext;\n\n return (\n <>\n \n
\n \n

{authorDescription}

\n
\n \n \n {posts\n ? posts.map((post) => (\n \n ))\n : null}\n \n \n \n );\n};\n\nexport default BlogByAuthor;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, currentPage, site, lang },\n data: {\n author: {\n frontmatter: { author },\n },\n },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n\nexport const query = graphql`\n query (\n $skip: Int!\n $limit: Int!\n $lang: String\n $authorAlias: String\n $authorId: String\n ) {\n posts: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n frontmatter: { authorAlias: { eq: $authorAlias } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n wordCount {\n words\n }\n }\n }\n author: markdownRemark(id: { eq: $authorId }) {\n frontmatter {\n authorAlias\n author\n authorPosition\n authorDescription\n authorPhoto {\n childImageSharp {\n gatsbyImageData(\n width: 64\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsSetup: ICommentsSetup;\n}\n\nexport interface ICommentsSetup {\n repo: `${string}/${string}`;\n repoId: string;\n categoryId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["GenIcon","module","exports","props","_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","theme","onClick","border","attr","colorClasses","Theme","dark","_extends","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","_","i","nextPage","Link","to","Button","light","map","page","key","authorAlias","author","authorPosition","authorPhoto","avatar","getImage","split","join","toLowerCase","itemProp","itemScope","itemType","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","fontColorClass70","fontColorHover","id","slice","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","pageContext","posts","nodes","authorDescription","React","Banner","blogByAuthorBannerTitle","toUpperCase","PostAuthorCard","PostPreview","Pagination","pagination","next","Head","_ref2","site","location","HeadSeo","head","description","siteUrl","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-blog-by-hashtag-tsx-3a8ada98c121bd3d62f7.js.map b/component---src-pages-templates-blog-by-hashtag-tsx-3a8ada98c121bd3d62f7.js.map index 3c8619b4..1a84df63 100644 --- a/component---src-pages-templates-blog-by-hashtag-tsx-3a8ada98c121bd3d62f7.js.map +++ b/component---src-pages-templates-blog-by-hashtag-tsx-3a8ada98c121bd3d62f7.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-templates-blog-by-hashtag-tsx-3a8ada98c121bd3d62f7.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/pagesTemplates/blogByHashtag.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass70 =\n theme === Theme.light ? \"text-main-70\" : \"text-secondary-70\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps, graphql } from \"gatsby\";\n\nimport { IBlogByHashtagPageContext, IBlogPageData } from \"../types/blog.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport PostPreview from \"../components/posts/postPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\n\nconst BlogByHashtag = ({\n data,\n pageContext,\n}: PageProps) => {\n const posts = data.allMarkdownRemark.nodes;\n const { currentPage, pagesQuantity, markupData, lang, hashtag } = pageContext;\n\n return (\n <>\n \n

\n #{hashtag}\n

\n \n \n {posts\n ? posts.map((post) => (\n \n ))\n : null}\n \n \n \n );\n};\n\nexport default BlogByHashtag;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, currentPage, site, lang, hashtag },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n\nexport const query = graphql`\n query ($skip: Int!, $limit: Int!, $lang: String, $hashtag: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n frontmatter: { keywords: { in: [$hashtag] } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n wordCount {\n words\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsRepo: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["GenIcon","module","exports","props","_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","theme","onClick","border","attr","colorClasses","Theme","dark","_extends","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","_","i","nextPage","Link","to","Button","light","map","page","key","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","fontColorClass70","fontColorHover","id","itemScope","itemType","itemProp","split","slice","join","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","pageContext","posts","allMarkdownRemark","nodes","hashtag","React","Banner","blogByHashtagBannerTitle","toUpperCase","PostPreview","Pagination","toLowerCase","pagination","next","Head","_ref2","site","location","HeadSeo","head","description","siteUrl","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-templates-blog-by-hashtag-tsx-3a8ada98c121bd3d62f7.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/pagesTemplates/blogByHashtag.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass70 =\n theme === Theme.light ? \"text-main-70\" : \"text-secondary-70\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps, graphql } from \"gatsby\";\n\nimport { IBlogByHashtagPageContext, IBlogPageData } from \"../types/blog.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport PostPreview from \"../components/posts/postPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\n\nconst BlogByHashtag = ({\n data,\n pageContext,\n}: PageProps) => {\n const posts = data.allMarkdownRemark.nodes;\n const { currentPage, pagesQuantity, markupData, lang, hashtag } = pageContext;\n\n return (\n <>\n \n

\n #{hashtag}\n

\n \n \n {posts\n ? posts.map((post) => (\n \n ))\n : null}\n \n \n \n );\n};\n\nexport default BlogByHashtag;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, currentPage, site, lang, hashtag },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n\nexport const query = graphql`\n query ($skip: Int!, $limit: Int!, $lang: String, $hashtag: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n frontmatter: { keywords: { in: [$hashtag] } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n wordCount {\n words\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsSetup: ICommentsSetup;\n}\n\nexport interface ICommentsSetup {\n repo: `${string}/${string}`;\n repoId: string;\n categoryId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["GenIcon","module","exports","props","_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","theme","onClick","border","attr","colorClasses","Theme","dark","_extends","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","_","i","nextPage","Link","to","Button","light","map","page","key","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","fontColorClass70","fontColorHover","id","itemScope","itemType","itemProp","split","slice","join","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","pageContext","posts","allMarkdownRemark","nodes","hashtag","React","Banner","blogByHashtagBannerTitle","toUpperCase","PostPreview","Pagination","toLowerCase","pagination","next","Head","_ref2","site","location","HeadSeo","head","description","siteUrl","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-blog-tsx-91ade5beabd1db3174a4.js.map b/component---src-pages-templates-blog-tsx-91ade5beabd1db3174a4.js.map index 4805dc31..dec77fb7 100644 --- a/component---src-pages-templates-blog-tsx-91ade5beabd1db3174a4.js.map +++ b/component---src-pages-templates-blog-tsx-91ade5beabd1db3174a4.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-templates-blog-tsx-91ade5beabd1db3174a4.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/pagesTemplates/blog.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass70 =\n theme === Theme.light ? \"text-main-70\" : \"text-secondary-70\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\nimport { getImage } from \"gatsby-plugin-image\";\n\nimport { IBlogPageData, IBlogPageContext } from \"../types/blog.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport PostPreview from \"../components/posts/postPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\n\nconst Blog = ({\n data,\n pageContext,\n}: PageProps) => {\n const posts = data.allMarkdownRemark.nodes;\n const { currentPage, pagesQuantity, markupData, lang } = pageContext;\n const bannerImage = getImage(markupData.image);\n\n return (\n <>\n \n \n {posts\n ? posts.map((post) => (\n \n ))\n : null}\n \n \n \n );\n};\n\nexport default Blog;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, currentPage, site, lang },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n\nexport const query = graphql`\n query ($skip: Int!, $limit: Int!, $lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n wordCount {\n words\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsRepo: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["GenIcon","module","exports","props","_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","theme","onClick","border","attr","colorClasses","Theme","dark","_extends","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","_","i","nextPage","Link","to","Button","light","map","page","key","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","fontColorClass70","fontColorHover","id","itemScope","itemType","itemProp","split","slice","join","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","pageContext","posts","allMarkdownRemark","nodes","bannerImage","getImage","React","Banner","bannerTitle","toUpperCase","PostPreview","Pagination","pagination","next","Head","_ref2","site","location","HeadSeo","head","description","siteUrl","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-templates-blog-tsx-91ade5beabd1db3174a4.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/spinner.tsx","webpack://code-cave/./src/components/babylonjs/babylon.tsx","webpack://code-cave/./src/components/common/banner.tsx","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/pagesTemplates/blog.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./src/assets/common/border.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nconst Spinner = ({ className }: { className?: string }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default Spinner;\n","import React, { useEffect, useRef, useState } from \"react\";\n\nimport Spinner from \"../common/spinner\";\n\nconst Babylon = () => {\n const [isBabylonReady, setIsBabylonReady] = useState(false);\n const isInitial = useRef(true);\n const canvasRef = useRef(null);\n\n useEffect(() => {\n if (\n !isInitial.current ||\n !canvasRef.current ||\n typeof window == \"undefined\"\n )\n return;\n\n isInitial.current = false;\n\n // WORKER instance creation\n const babylonWorker = new Worker(\n new URL(\"../../workers/babylon.worker.ts\", import.meta.url),\n {\n type: \"module\",\n }\n );\n babylonWorker.onmessage = ({ data }) => {\n if (data === \"ready\") setIsBabylonReady(true);\n };\n\n // OFFSCREEN canvas\n const canvas = canvasRef.current;\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n\n const offscreenCanvas = canvas.transferControlToOffscreen();\n babylonWorker.postMessage({ canvas: offscreenCanvas }, [offscreenCanvas]);\n\n // RESIZE handler\n const onResizeHandler = () => {\n babylonWorker.postMessage({\n width: canvas.clientWidth,\n height: canvas.clientHeight,\n });\n };\n window.addEventListener(\"resize\", onResizeHandler, { passive: true });\n\n // WHEEL handler\n const onWheelHandler = (e: WheelEvent) => {\n e.preventDefault();\n babylonWorker.postMessage({ wheel: e.deltaY });\n };\n canvas.addEventListener(\"wheel\", onWheelHandler);\n\n // ROTATE mouse handler\n const onMouseMoveHandler = (e: MouseEvent) => {\n babylonWorker.postMessage({\n x: e.movementX,\n y: e.movementY,\n });\n };\n canvas.addEventListener(\"mousedown\", (e: MouseEvent) => {\n e.preventDefault();\n window.addEventListener(\"mousemove\", onMouseMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"mouseup\",\n () => window.removeEventListener(\"mousemove\", onMouseMoveHandler),\n { once: true, passive: true }\n );\n });\n\n // ROTATE touch handler\n const nestedTouchMoveHandler = (\n e: TouchEvent,\n previousCoords: { x: number; y: number }\n ) => {\n const touch = e.touches[0];\n babylonWorker.postMessage({\n x: touch.screenX - previousCoords.x,\n y: touch.screenY - previousCoords.y,\n });\n\n return {\n newX: touch.screenX,\n newY: touch.screenY,\n };\n };\n let onTouchMoveHandler: (e: TouchEvent) => void;\n canvas.addEventListener(\n \"touchstart\",\n (e: TouchEvent) => {\n if (e.touches.length !== 1) return;\n\n const firstTouch = e.touches[0];\n\n e.preventDefault();\n const previousCoords = {\n x: firstTouch.screenX,\n y: firstTouch.screenY,\n };\n\n onTouchMoveHandler = (e: TouchEvent) => {\n const { newX, newY } = nestedTouchMoveHandler(e, previousCoords);\n previousCoords.x = newX;\n previousCoords.y = newY;\n };\n\n window.addEventListener(\"touchmove\", onTouchMoveHandler, {\n passive: true,\n });\n window.addEventListener(\n \"touchend\",\n () => {\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n },\n { passive: true }\n );\n },\n { passive: true }\n );\n\n // UNMOUNT handler\n return () => {\n if (!window) return;\n\n window.removeEventListener(\"resize\", onResizeHandler);\n window.removeEventListener(\"mousemove\", onMouseMoveHandler);\n window.removeEventListener(\"touchmove\", onTouchMoveHandler);\n if (canvas) {\n canvas.removeEventListener(\"wheel\", onWheelHandler);\n }\n babylonWorker.terminate();\n };\n }, []);\n\n return (\n
\n \n {!isBabylonReady ? (\n \n ) : null}\n
\n );\n};\n\nexport default Babylon;\n","import React, { useEffect, useState } from \"react\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\nimport Babylon from \"../babylonjs/babylon\";\n\n// interface IBannerProps {\n// heightClass?: string;\n// title: string;\n// className?: string;\n// borderBottom?: boolean;\n// borderTop?: boolean;\n// babylon?: boolean;\n// image?: IGatsbyImageData;\n// }\ntype TBannerCommonProps = {\n heightClass?: string;\n title: string;\n className?: string;\n borderBottom?: boolean;\n borderTop?: boolean;\n};\ntype TBannerConditionalProps =\n | {\n babylon?: boolean;\n image?: never;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: IGatsbyImageData;\n children?: never;\n titleBlockClassName?: never;\n }\n | {\n babylon?: never;\n image?: never;\n children?: React.ReactNode;\n titleBlockClassName?: string;\n };\ntype TBannerProps = TBannerCommonProps & TBannerConditionalProps;\n\nconst Banner = ({\n heightClass = \"min-h-91\",\n title,\n className,\n borderBottom,\n borderTop,\n babylon,\n image,\n titleBlockClassName,\n children,\n}: TBannerProps) => {\n const [textTranslate, setTextTranslate] = useState<\n \"translate-y-full\" | \"translate-y-0\"\n >(\"translate-y-full\");\n useEffect(() => {\n setTextTranslate(\"translate-y-0\");\n }, []);\n\n return (\n \n {borderTop ? (\n \n ) : null}\n \n \n

\n \n {title}\n \n

\n \n {babylon ? (\n \n ) : null}\n {image ? (\n
\n \n
\n ) : null}\n {children ? (\n
\n {children}\n
\n ) : null}\n \n {borderBottom ? (\n \n ) : null}\n \n );\n};\n\nexport default Banner;\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass70 =\n theme === Theme.light ? \"text-main-70\" : \"text-secondary-70\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\nimport { getImage } from \"gatsby-plugin-image\";\n\nimport { IBlogPageData, IBlogPageContext } from \"../types/blog.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport PostPreview from \"../components/posts/postPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\n\nconst Blog = ({\n data,\n pageContext,\n}: PageProps) => {\n const posts = data.allMarkdownRemark.nodes;\n const { currentPage, pagesQuantity, markupData, lang } = pageContext;\n const bannerImage = getImage(markupData.image);\n\n return (\n <>\n \n \n {posts\n ? posts.map((post) => (\n \n ))\n : null}\n \n \n \n );\n};\n\nexport default Blog;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, currentPage, site, lang },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n\nexport const query = graphql`\n query ($skip: Int!, $limit: Int!, $lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n wordCount {\n words\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsSetup: ICommentsSetup;\n}\n\nexport interface ICommentsSetup {\n repo: `${string}/${string}`;\n repoId: string;\n categoryId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","var React = require('react');\n\nfunction Border (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#f9f9f9\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"0\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":0}),React.createElement(\"line\",{\"width\":\"800\",\"height\":\"8\",\"stroke\":\"#111111\",\"strokeWidth\":\"8\",\"strokeDasharray\":\"8 8\",\"x1\":\"8\",\"x2\":\"100%\",\"y1\":\"4\",\"y2\":\"4\",\"key\":1})]);\n}\n\nBorder.defaultProps = {\"height\":\"8\"};\n\nmodule.exports = Border;\n\nBorder.default = Border;\n"],"names":["GenIcon","module","exports","props","_ref","className","___EmotionJSX","viewBox","fill","xmlns","d","Babylon","isBabylonReady","setIsBabylonReady","useState","isInitial","useRef","canvasRef","useEffect","current","window","babylonWorker","Worker","URL","type","onmessage","data","canvas","width","clientWidth","height","clientHeight","offscreenCanvas","transferControlToOffscreen","postMessage","onResizeHandler","addEventListener","passive","onWheelHandler","e","preventDefault","wheel","deltaY","onMouseMoveHandler","x","movementX","y","movementY","removeEventListener","once","onTouchMoveHandler","touches","length","firstTouch","previousCoords","screenX","screenY","newX","newY","nestedTouchMoveHandler","touch","terminate","ref","Spinner","heightClass","title","borderBottom","borderTop","babylon","image","titleBlockClassName","children","textTranslate","setTextTranslate","Border","ContentContainer","GatsbyImage","alt","theme","onClick","border","attr","colorClasses","Theme","dark","_extends","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","_","i","nextPage","Link","to","Button","light","map","page","key","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","fontColorClass70","fontColorHover","id","itemScope","itemType","itemProp","split","slice","join","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","pageContext","posts","allMarkdownRemark","nodes","bannerImage","getImage","React","Banner","bannerTitle","toUpperCase","PostPreview","Pagination","pagination","next","Head","_ref2","site","location","HeadSeo","head","description","siteUrl","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-index-tsx-2df0ce267e9edf8b197a.js.map b/component---src-pages-templates-index-tsx-2df0ce267e9edf8b197a.js.map index d4e37ac5..dd05b759 100644 --- a/component---src-pages-templates-index-tsx-2df0ce267e9edf8b197a.js.map +++ b/component---src-pages-templates-index-tsx-2df0ce267e9edf8b197a.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-templates-index-tsx-2df0ce267e9edf8b197a.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/ai/AiFillBug.js","webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaQuoteRight.js","webpack://code-cave/./src/components/common/templateSection.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/components/projects/projectPreview.tsx","webpack://code-cave/./src/components/stack/stackCarousel.tsx","webpack://code-cave/./src/components/stack/stakUnit.tsx","webpack://code-cave/./src/components/stack/stackSection.tsx","webpack://code-cave/./src/components/posts/postSection.tsx","webpack://code-cave/./src/components/projects/projectsSection.tsx","webpack://code-cave/./src/components/reviews/review.tsx","webpack://code-cave/./src/components/reviews/staticReviewsSection.tsx","webpack://code-cave/./src/pagesTemplates/index.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.AiFillBug = function AiFillBug (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M304 280h416c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1-17.2-31.5-42.5-56.8-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9-31.5 17.2-56.8 42.5-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 34.8-28.2 63-63 63H232c-34.8 0-63-28.2-63-63 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7 6 17.2 13.6 33.6 22.7 49 24.3 41.5 59 76.2 100.5 100.5 28.9 16.9 61 28.8 95.3 34.5 4.4 0 8-3.6 8-8V484c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8v464.2c0 4.4 3.6 8 8 8 34.3-5.7 66.4-17.6 95.3-34.5 41.5-24.3 76.2-59 100.5-100.5 9.1-15.5 16.7-31.9 22.7-49C812.1 793.1 836 831.8 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaQuoteRight = function FaQuoteRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 512 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"}}]})(props);\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\n\ninterface ITemplateSectionProps extends React.HTMLAttributes {\n title: string;\n theme: Theme;\n isArrowLink?: boolean;\n linkTitle?: string;\n subTitle?: string;\n section?: string;\n className?: string;\n borderT?: boolean;\n borderB?: boolean;\n}\n\nconst TemplateSection = ({\n section,\n theme,\n title,\n linkTitle,\n subTitle,\n className,\n children,\n borderT,\n borderB,\n isArrowLink = true,\n ...attr\n}: PropsWithChildren) => {\n const mainColorClass =\n theme === Theme.dark ? \"text-secondary-100\" : \"text-main-100\";\n const linkColorClass =\n theme === Theme.dark\n ? \"text-secondary-100 hover:text-secondary-70\"\n : \"text-main-100 hover:text-main-10\";\n const bgColorClass =\n theme === Theme.dark ? \"bg-main-100\" : \"bg-secondary-100\";\n\n return (\n <>\n {borderT ? : null}\n \n \n
\n

\n {title.toUpperCase()}\n

\n {section ? (\n \n {linkTitle ? linkTitle.toUpperCase() : \"DISCOVER MORE\"}{\" \"}\n {isArrowLink ? <>→ : null}\n \n ) : null}\n {subTitle ? (\n \n {subTitle.toUpperCase()}\n

\n ) : null}\n
\n {children}\n \n \n {borderB ? : null}\n \n );\n};\n\nexport default TemplateSection;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass70 =\n theme === Theme.light ? \"text-main-70\" : \"text-secondary-70\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IProjectPreviewQueryResult } from \"../../types/project.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { LocalBusinessMetadata } from \"../common/metadata\";\n\nconst ProjectPreview = ({\n project,\n className,\n theme,\n lang,\n}: {\n project: IProjectPreviewQueryResult;\n className?: string;\n theme: Theme;\n lang: TLang;\n}) => {\n const cover = getImage(project.frontmatter.cover);\n const { title, teamSize, duration } = project.frontmatter;\n\n const fontColorClass10 =\n theme === Theme.light\n ? \"text-main-100 hover:text-main-10\"\n : \"text-secondary-100 hover:text-secondary-10\";\n const bgColors =\n theme === Theme.light\n ? \"bg-secondary-100 hover:bg-secondary-100\"\n : \"bg-main-100 hover:bg-main-100\";\n\n return (\n \n
\n {cover ? (\n \n ) : null}\n
\n

\n {duration}\n

\n

\n {teamSize}\n

\n
\n
\n
\n \n {title}\n \n \n
\n \n \n );\n};\n\nexport default ProjectPreview;\n","import React, { forwardRef } from \"react\";\n\nimport useEmblaCarousel from \"embla-carousel-react\";\nimport Autoplay from \"embla-carousel-autoplay\";\n\nconst StackCarousel = forwardRef<\n HTMLDivElement,\n React.PropsWithChildren<{ className?: string }>\n>(({ className, children }, ref) => {\n const [emblaRef, emblaApi] = useEmblaCarousel(\n { loop: true, dragFree: true, duration: 10000, align: \"start\" },\n [\n Autoplay({\n delay: 0,\n stopOnInteraction: false,\n stopOnMouseEnter: true,\n }),\n ]\n );\n\n return (\n
\n {\n emblaApi?.internalEngine().animation.stop();\n }}\n onMouseLeave={() => {\n emblaApi?.internalEngine().animation.start();\n }}\n >\n {children}\n
\n \n );\n});\n\nexport default StackCarousel;\n","import React, { PropsWithChildren } from \"react\";\n\nimport Border from \"../../assets/common/border.svg\";\n\n\nconst StackUnit = ({ children }: PropsWithChildren) => {\n return (\n
\n \n

{children}

\n \n
\n );\n};\n\nexport default StackUnit;\n","import React from \"react\";\nimport { useStaticQuery, graphql } from \"gatsby\";\n\nimport { AiFillBug } from \"@react-icons/all-files/ai/AiFillBug\";\n\nimport StackCarousel from \"./stackCarousel\";\nimport StackUnit from \"./stakUnit\";\n\nconst StackSection = () => {\n const techData = useStaticQuery(query);\n const techArr = techData?.markdownRemark?.frontmatter?.stack as\n | string[]\n | null;\n\n return (\n <>\n {techArr ? (\n
\n \n {techArr.map((tech) => (\n {tech}\n ))}\n \n \n \n \n
\n ) : null}\n \n );\n};\n\nexport default StackSection;\n\nexport const query = graphql`\n query {\n markdownRemark(fields: { sourceName: { eq: \"stack\" } }) {\n frontmatter {\n stack\n }\n }\n }\n`;\n","import React from \"react\";\n\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport {\n IBlogSectionQueryResult,\n IPostPreviewQueryResult,\n} from \"../../types/post.type\";\n\nimport PostPreview from \"./postPreview\";\nimport TemplateSection from \"../common/templateSection\";\nimport { ILang, Theme } from \"../../types/common.type\";\n\nconst PostSection = ({ lang }: ILang) => {\n const postData = useStaticQuery(query) as IBlogSectionQueryResult;\n\n const sectionMarkup = postData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.blog;\n\n let post: IPostPreviewQueryResult | null | undefined;\n\n if (lang in postData)\n post = postData?.[lang]?.nodes?.[0] as IPostPreviewQueryResult | null;\n else post = postData?.en?.nodes?.[0];\n\n return (\n <>\n {post ? (\n \n \n \n ) : null}\n \n );\n};\n\nexport default PostSection;\n\nexport const query = graphql`\n query {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: \"en\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 1\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: \"en\")\n title\n text\n }\n wordCount {\n words\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: \"ru\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 1\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: \"ru\")\n title\n text\n }\n wordCount {\n words\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n blog {\n bannerTitle\n head\n readPostLink\n readingTimeTitle\n readingTimeUnits\n postFooterTitle\n postFooterText\n blogSectionTitle\n blogSectionLinkTitle\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\n\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport {\n IProjectPreviewQueryResult,\n IProjectSectionQueryResult,\n} from \"../../types/project.type\";\n\nimport ProjectPreview from \"./projectPreview\";\nimport TemplateSection from \"../common/templateSection\";\nimport { ILang, Theme } from \"../../types/common.type\";\n\ninterface IProjectsSectionProps extends ILang {\n excludeId?: string;\n}\n\nconst ProjectsSection = ({ excludeId, lang }: IProjectsSectionProps) => {\n const projectsPreviewData = useStaticQuery(\n query\n ) as IProjectSectionQueryResult;\n\n const sectionMarkup = projectsPreviewData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.projects;\n\n let projects: IProjectPreviewQueryResult[] | null | undefined;\n if (lang in projectsPreviewData)\n projects = projectsPreviewData?.[lang]?.nodes as\n | IProjectPreviewQueryResult[]\n | null\n | undefined;\n else projects = projectsPreviewData.en?.nodes;\n\n if (!projects) return <>;\n\n if (excludeId) {\n projects = projects.filter((project) => project.id !== excludeId);\n }\n\n return (\n \n
\n {projects.map((project, i) => {\n if (i === 3) return;\n return (\n \n );\n })}\n
\n \n );\n};\n\nexport default ProjectsSection;\n\nexport const query = graphql`\n {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"projects\" }, language: { eq: \"en\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 4\n ) {\n nodes {\n id\n frontmatter {\n title\n teamSize\n duration\n cover {\n childImageSharp {\n gatsbyImageData(\n width: 400\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"projects\" }, language: { eq: \"ru\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 4\n ) {\n nodes {\n id\n frontmatter {\n title\n teamSize\n duration\n cover {\n childImageSharp {\n gatsbyImageData(\n width: 400\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n projects {\n moreProjectsSectionTitle\n moreProjectsSectionLinkTitle\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IReviewQueryResult } from \"../../types/review.type\";\n\nimport { FaQuoteRight } from \"@react-icons/all-files/fa/FaQuoteRight\";\n\nconst Review = ({\n review: {\n frontmatter: { company, person, position, location, image },\n html,\n },\n className,\n}: {\n review: IReviewQueryResult;\n className?: string;\n}) => {\n const avatar = getImage(image);\n\n return (\n \n
\n {avatar ? (\n \n ) : null}\n
\n

{person}

\n

\n {position}, {company}\n

\n

{location}

\n
\n \n
\n \n \n\n //
\n //
\n // \n // {avatar ? (\n // \n // ) : null}\n //
\n //
\n //

{person}

\n // {person}\n //

\n // {position}, {company}\n //

\n //

\n // {location}\n //

\n //
\n //
\n // \n // \n );\n};\n\nexport default Review;\n","import React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport { ILang, Theme } from \"../../types/common.type\";\nimport {\n IReviewQueryResult,\n IReviewSectionQueryResult,\n} from \"../../types/review.type\";\n\nimport TemplateSection from \"../common/templateSection\";\nimport Review from \"./review\";\n\nconst StaticReviewsSection = ({ lang }: ILang) => {\n const reviewsData = useStaticQuery(query) as IReviewSectionQueryResult;\n\n const sectionMarkup = reviewsData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.reviews;\n\n let reviews: IReviewQueryResult[] | null | undefined;\n\n if (lang in reviewsData)\n reviews = reviewsData?.[lang]?.nodes?.sort((a, b) =>\n a.frontmatter.person > b.frontmatter.person ? 1 : -1\n ) as IReviewQueryResult[] | null | undefined;\n else\n reviews = reviewsData?.en?.nodes?.sort((a, b) =>\n a.frontmatter.person > b.frontmatter.person ? 1 : -1\n );\n\n return (\n <>\n {reviews ? (\n \n
\n {reviews.map((review) => (\n \n ))}\n
\n \n ) : null}\n \n );\n};\n\nexport default StaticReviewsSection;\n\nexport const query = graphql`\n query {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"reviews\" }, language: { eq: \"en\" } }\n }\n ) {\n nodes {\n id\n html\n frontmatter {\n company\n location\n person\n position\n image {\n childImageSharp {\n gatsbyImageData(\n height: 112\n placeholder: BLURRED\n formats: [AUTO, AVIF, WEBP]\n )\n }\n }\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"reviews\" }, language: { eq: \"ru\" } }\n }\n ) {\n nodes {\n id\n html\n frontmatter {\n company\n location\n person\n position\n image {\n childImageSharp {\n gatsbyImageData(\n height: 112\n placeholder: BLURRED\n formats: [AUTO, AVIF, WEBP]\n )\n }\n }\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n reviews {\n title\n linkTitle\n }\n }\n }\n }\n }\n`;\n","import * as React from \"react\";\nimport type { HeadFC, HeadProps, PageProps } from \"gatsby\";\n\nimport { IconContext } from \"@react-icons/all-files\";\nimport \"../styles/styles.css\";\n\nimport { IIndexPageContext } from \"../types/index.type\";\n\nimport Banner from \"../components/common/banner\";\nimport StackSection from \"../components/stack/stackSection\";\nimport PostSection from \"../components/posts/postSection\";\nimport ProjectsSection from \"../components/projects/projectsSection\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport StaticReviewsSection from \"../components/reviews/staticReviewsSection\";\nimport ContactFormSection from \"../components/forms/contactFormSection\";\n\nconst IndexPage = ({\n pageContext: { markupData, lang },\n}: PageProps) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default IndexPage;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsRepo: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","const defaultOptions = {\n active: true,\n breakpoints: {},\n delay: 4000,\n jump: false,\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n stopOnLastSnap: false,\n rootNode: null\n};\n\nfunction Autoplay(userOptions = {}) {\n let options;\n let emblaApi;\n let destroyed;\n let playing = false;\n let resume = true;\n let jump = false;\n let timer = 0;\n function init(emblaApiInstance, optionsHandler) {\n emblaApi = emblaApiInstance;\n const {\n mergeOptions,\n optionsAtMedia\n } = optionsHandler;\n const optionsBase = mergeOptions(defaultOptions, Autoplay.globalOptions);\n const allOptions = mergeOptions(optionsBase, userOptions);\n options = optionsAtMedia(allOptions);\n if (emblaApi.scrollSnapList().length <= 1) return;\n jump = options.jump;\n destroyed = false;\n const {\n eventStore,\n ownerDocument\n } = emblaApi.internalEngine();\n const emblaRoot = emblaApi.rootNode();\n const root = options.rootNode && options.rootNode(emblaRoot) || emblaRoot;\n const container = emblaApi.containerNode();\n emblaApi.on('pointerDown', stopTimer);\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startTimer);\n }\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false;\n stopTimer();\n });\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true;\n startTimer();\n });\n }\n }\n if (options.stopOnFocusIn) {\n eventStore.add(container, 'focusin', stopTimer);\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startTimer);\n }\n }\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange);\n if (options.playOnInit && !documentIsHidden()) startTimer();\n }\n function destroy() {\n emblaApi.off('pointerDown', stopTimer).off('pointerUp', startTimer);\n stopTimer();\n destroyed = true;\n playing = false;\n }\n function startTimer() {\n if (destroyed) return;\n if (!resume) return;\n if (!playing) emblaApi.emit('autoplay:play');\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearInterval(timer);\n timer = ownerWindow.setInterval(next, options.delay);\n playing = true;\n }\n function stopTimer() {\n if (destroyed) return;\n if (playing) emblaApi.emit('autoplay:stop');\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearInterval(timer);\n timer = 0;\n playing = false;\n }\n function visibilityChange() {\n if (documentIsHidden()) {\n resume = playing;\n return stopTimer();\n }\n if (resume) startTimer();\n }\n function documentIsHidden() {\n const {\n ownerDocument\n } = emblaApi.internalEngine();\n return ownerDocument.visibilityState === 'hidden';\n }\n function play(jumpOverride) {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride;\n resume = true;\n startTimer();\n }\n function stop() {\n if (playing) stopTimer();\n }\n function reset() {\n if (playing) play();\n }\n function isPlaying() {\n return playing;\n }\n function next() {\n const {\n index\n } = emblaApi.internalEngine();\n const nextIndex = index.clone().add(1).get();\n const lastIndex = emblaApi.scrollSnapList().length - 1;\n const kill = options.stopOnLastSnap && nextIndex === lastIndex;\n if (kill) stopTimer();\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump);\n } else {\n emblaApi.scrollTo(0, jump);\n }\n }\n const self = {\n name: 'autoplay',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying\n };\n return self;\n}\nAutoplay.globalOptions = undefined;\n\nexport { Autoplay as default };\n//# sourceMappingURL=embla-carousel-autoplay.esm.js.map\n"],"names":["GenIcon","module","exports","props","_ref","section","theme","title","linkTitle","subTitle","className","children","borderT","borderB","isArrowLink","attr","mainColorClass","Theme","dark","linkColorClass","bgColorClass","___EmotionJSX","React","Border","_extends","ContentContainer","maxWidthClass","toUpperCase","Link","to","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","light","fontColorClass70","fontColorHover","id","itemScope","itemType","itemProp","split","slice","join","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","project","cover","getImage","teamSize","duration","fontColorClass10","bgColors","GatsbyImage","image","alt","forwardRef","ref","emblaRef","emblaApi","useEmblaCarousel","loop","dragFree","align","Autoplay","delay","stopOnInteraction","stopOnMouseEnter","onMouseEnter","internalEngine","animation","stop","onMouseLeave","start","StackSection","_techData$markdownRem","_techData$markdownRem2","techData","useStaticQuery","query","techArr","markdownRemark","stack","StackCarousel","map","tech","StackUnit","key","AiFillBug","_postData$markupData","_postData$markupData$","_postData$markupData$2","_postData$markupData$3","_postData$lang","_postData$lang$nodes","_postData$en","_postData$en$nodes","_sectionMarkup$blogSe","_sectionMarkup$blogSe2","postData","sectionMarkup","nodes","find","node","fields","language","blog","en","TemplateSection","blogSectionTitle","blogSectionLinkTitle","PostPreview","_projectsPreviewData$","_projectsPreviewData$2","_projectsPreviewData$3","_projectsPreviewData$4","_projectsPreviewData$5","_projectsPreviewData$6","_sectionMarkup$morePr","_sectionMarkup$morePr2","excludeId","projectsPreviewData","projects","filter","moreProjectsSectionTitle","moreProjectsSectionLinkTitle","i","ProjectPreview","review","company","person","position","location","html","avatar","FaQuoteRight","color","dangerouslySetInnerHTML","__html","_reviewsData$markupDa","_reviewsData$markupDa2","_reviewsData$markupDa3","_reviewsData$markupDa4","_reviewsData$lang","_reviewsData$lang$nod","_reviewsData$en","_reviewsData$en$nodes","_sectionMarkup$title","reviewsData","reviews","sort","a","b","Review","pageContext","IconContext","Provider","value","style","verticalAlign","Banner","bannerTitle","babylon","ProjectsSection","StaticReviewsSection","PostSection","ContactFormSection","Head","_ref2","site","HeadSeo","head","description","metaDescription","siteUrl","path","pathname","defaultOptions","active","breakpoints","jump","playOnInit","stopOnFocusIn","stopOnLastSnap","rootNode","userOptions","options","destroyed","playing","resume","timer","startTimer","emit","ownerWindow","clearInterval","setInterval","next","stopTimer","visibilityChange","documentIsHidden","ownerDocument","visibilityState","play","jumpOverride","index","nextIndex","clone","add","get","lastIndex","scrollSnapList","length","canScrollNext","scrollNext","scrollTo","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","eventStore","emblaRoot","root","container","containerNode","on","destroy","off","reset","isPlaying","undefined"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-templates-index-tsx-2df0ce267e9edf8b197a.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/ai/AiFillBug.js","webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaQuoteRight.js","webpack://code-cave/./src/components/common/templateSection.tsx","webpack://code-cave/./src/components/posts/postPreview.tsx","webpack://code-cave/./src/components/projects/projectPreview.tsx","webpack://code-cave/./src/components/stack/stackCarousel.tsx","webpack://code-cave/./src/components/stack/stakUnit.tsx","webpack://code-cave/./src/components/stack/stackSection.tsx","webpack://code-cave/./src/components/posts/postSection.tsx","webpack://code-cave/./src/components/projects/projectsSection.tsx","webpack://code-cave/./src/components/reviews/review.tsx","webpack://code-cave/./src/components/reviews/staticReviewsSection.tsx","webpack://code-cave/./src/pagesTemplates/index.tsx","webpack://code-cave/./src/types/common.type.ts","webpack://code-cave/./node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.AiFillBug = function AiFillBug (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 1024 1024\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M304 280h416c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1-17.2-31.5-42.5-56.8-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9-31.5 17.2-56.8 42.5-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 34.8-28.2 63-63 63H232c-34.8 0-63-28.2-63-63 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7 6 17.2 13.6 33.6 22.7 49 24.3 41.5 59 76.2 100.5 100.5 28.9 16.9 61 28.8 95.3 34.5 4.4 0 8-3.6 8-8V484c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8v464.2c0 4.4 3.6 8 8 8 34.3-5.7 66.4-17.6 95.3-34.5 41.5-24.3 76.2-59 100.5-100.5 9.1-15.5 16.7-31.9 22.7-49C812.1 793.1 836 831.8 836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8z\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaQuoteRight = function FaQuoteRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 512 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"}}]})(props);\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\n\ninterface ITemplateSectionProps extends React.HTMLAttributes {\n title: string;\n theme: Theme;\n isArrowLink?: boolean;\n linkTitle?: string;\n subTitle?: string;\n section?: string;\n className?: string;\n borderT?: boolean;\n borderB?: boolean;\n}\n\nconst TemplateSection = ({\n section,\n theme,\n title,\n linkTitle,\n subTitle,\n className,\n children,\n borderT,\n borderB,\n isArrowLink = true,\n ...attr\n}: PropsWithChildren) => {\n const mainColorClass =\n theme === Theme.dark ? \"text-secondary-100\" : \"text-main-100\";\n const linkColorClass =\n theme === Theme.dark\n ? \"text-secondary-100 hover:text-secondary-70\"\n : \"text-main-100 hover:text-main-10\";\n const bgColorClass =\n theme === Theme.dark ? \"bg-main-100\" : \"bg-secondary-100\";\n\n return (\n <>\n {borderT ? : null}\n \n \n
\n

\n {title.toUpperCase()}\n

\n {section ? (\n \n {linkTitle ? linkTitle.toUpperCase() : \"DISCOVER MORE\"}{\" \"}\n {isArrowLink ? <>→ : null}\n \n ) : null}\n {subTitle ? (\n \n {subTitle.toUpperCase()}\n

\n ) : null}\n
\n {children}\n \n \n {borderB ? : null}\n \n );\n};\n\nexport default TemplateSection;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { IPostPreviewQueryResult } from \"../../types/post.type\";\nimport { LocalBusinessMetadata } from \"../common/metadata\";\nimport { IBlogMarkupData } from \"../../types/commonMarkup.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nconst PostPreview = ({\n post,\n theme,\n className,\n markupData,\n lang,\n}: {\n post: IPostPreviewQueryResult;\n className?: string;\n theme: Theme;\n markupData?: IBlogMarkupData;\n lang: TLang;\n}) => {\n const { date, title, text } = post.frontmatter;\n\n const minutes = Math.floor(post.wordCount.words / 200);\n const readingTime = minutes ? minutes : 1;\n\n const fontColorClass100 =\n theme === Theme.light ? \"text-main-100\" : \"text-secondary-100\";\n const fontColorClass70 =\n theme === Theme.light ? \"text-main-70\" : \"text-secondary-70\";\n const fontColorHover =\n theme === Theme.light ? \"hover:text-main-10\" : \"hover:text-secondary-10\";\n\n return (\n \n
\n

\n {date}\n

\n \n {title}\n \n
\n
\n \n {text.split(\" \").slice(0, 70).join(\" \")}...\n

\n
\n
\n {markupData?.readPostLink}\n \n
\n

\n {`${markupData?.readingTimeTitle}: ~${readingTime} ${markupData?.readingTimeUnits}.`}\n

\n
\n
\n \n \n );\n};\n\nexport default PostPreview;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IProjectPreviewQueryResult } from \"../../types/project.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { LocalBusinessMetadata } from \"../common/metadata\";\n\nconst ProjectPreview = ({\n project,\n className,\n theme,\n lang,\n}: {\n project: IProjectPreviewQueryResult;\n className?: string;\n theme: Theme;\n lang: TLang;\n}) => {\n const cover = getImage(project.frontmatter.cover);\n const { title, teamSize, duration } = project.frontmatter;\n\n const fontColorClass10 =\n theme === Theme.light\n ? \"text-main-100 hover:text-main-10\"\n : \"text-secondary-100 hover:text-secondary-10\";\n const bgColors =\n theme === Theme.light\n ? \"bg-secondary-100 hover:bg-secondary-100\"\n : \"bg-main-100 hover:bg-main-100\";\n\n return (\n \n
\n {cover ? (\n \n ) : null}\n
\n

\n {duration}\n

\n

\n {teamSize}\n

\n
\n
\n
\n \n {title}\n \n \n
\n \n \n );\n};\n\nexport default ProjectPreview;\n","import React, { forwardRef } from \"react\";\n\nimport useEmblaCarousel from \"embla-carousel-react\";\nimport Autoplay from \"embla-carousel-autoplay\";\n\nconst StackCarousel = forwardRef<\n HTMLDivElement,\n React.PropsWithChildren<{ className?: string }>\n>(({ className, children }, ref) => {\n const [emblaRef, emblaApi] = useEmblaCarousel(\n { loop: true, dragFree: true, duration: 10000, align: \"start\" },\n [\n Autoplay({\n delay: 0,\n stopOnInteraction: false,\n stopOnMouseEnter: true,\n }),\n ]\n );\n\n return (\n
\n {\n emblaApi?.internalEngine().animation.stop();\n }}\n onMouseLeave={() => {\n emblaApi?.internalEngine().animation.start();\n }}\n >\n {children}\n
\n \n );\n});\n\nexport default StackCarousel;\n","import React, { PropsWithChildren } from \"react\";\n\nimport Border from \"../../assets/common/border.svg\";\n\n\nconst StackUnit = ({ children }: PropsWithChildren) => {\n return (\n
\n \n

{children}

\n \n
\n );\n};\n\nexport default StackUnit;\n","import React from \"react\";\nimport { useStaticQuery, graphql } from \"gatsby\";\n\nimport { AiFillBug } from \"@react-icons/all-files/ai/AiFillBug\";\n\nimport StackCarousel from \"./stackCarousel\";\nimport StackUnit from \"./stakUnit\";\n\nconst StackSection = () => {\n const techData = useStaticQuery(query);\n const techArr = techData?.markdownRemark?.frontmatter?.stack as\n | string[]\n | null;\n\n return (\n <>\n {techArr ? (\n
\n \n {techArr.map((tech) => (\n {tech}\n ))}\n \n \n \n \n
\n ) : null}\n \n );\n};\n\nexport default StackSection;\n\nexport const query = graphql`\n query {\n markdownRemark(fields: { sourceName: { eq: \"stack\" } }) {\n frontmatter {\n stack\n }\n }\n }\n`;\n","import React from \"react\";\n\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport {\n IBlogSectionQueryResult,\n IPostPreviewQueryResult,\n} from \"../../types/post.type\";\n\nimport PostPreview from \"./postPreview\";\nimport TemplateSection from \"../common/templateSection\";\nimport { ILang, Theme } from \"../../types/common.type\";\n\nconst PostSection = ({ lang }: ILang) => {\n const postData = useStaticQuery(query) as IBlogSectionQueryResult;\n\n const sectionMarkup = postData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.blog;\n\n let post: IPostPreviewQueryResult | null | undefined;\n\n if (lang in postData)\n post = postData?.[lang]?.nodes?.[0] as IPostPreviewQueryResult | null;\n else post = postData?.en?.nodes?.[0];\n\n return (\n <>\n {post ? (\n \n \n \n ) : null}\n \n );\n};\n\nexport default PostSection;\n\nexport const query = graphql`\n query {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: \"en\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 1\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: \"en\")\n title\n text\n }\n wordCount {\n words\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"posts\" }, language: { eq: \"ru\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 1\n ) {\n nodes {\n id\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: \"ru\")\n title\n text\n }\n wordCount {\n words\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n blog {\n bannerTitle\n head\n readPostLink\n readingTimeTitle\n readingTimeUnits\n postFooterTitle\n postFooterText\n blogSectionTitle\n blogSectionLinkTitle\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\n\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport {\n IProjectPreviewQueryResult,\n IProjectSectionQueryResult,\n} from \"../../types/project.type\";\n\nimport ProjectPreview from \"./projectPreview\";\nimport TemplateSection from \"../common/templateSection\";\nimport { ILang, Theme } from \"../../types/common.type\";\n\ninterface IProjectsSectionProps extends ILang {\n excludeId?: string;\n}\n\nconst ProjectsSection = ({ excludeId, lang }: IProjectsSectionProps) => {\n const projectsPreviewData = useStaticQuery(\n query\n ) as IProjectSectionQueryResult;\n\n const sectionMarkup = projectsPreviewData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.projects;\n\n let projects: IProjectPreviewQueryResult[] | null | undefined;\n if (lang in projectsPreviewData)\n projects = projectsPreviewData?.[lang]?.nodes as\n | IProjectPreviewQueryResult[]\n | null\n | undefined;\n else projects = projectsPreviewData.en?.nodes;\n\n if (!projects) return <>;\n\n if (excludeId) {\n projects = projects.filter((project) => project.id !== excludeId);\n }\n\n return (\n \n
\n {projects.map((project, i) => {\n if (i === 3) return;\n return (\n \n );\n })}\n
\n \n );\n};\n\nexport default ProjectsSection;\n\nexport const query = graphql`\n {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"projects\" }, language: { eq: \"en\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 4\n ) {\n nodes {\n id\n frontmatter {\n title\n teamSize\n duration\n cover {\n childImageSharp {\n gatsbyImageData(\n width: 400\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"projects\" }, language: { eq: \"ru\" } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: 4\n ) {\n nodes {\n id\n frontmatter {\n title\n teamSize\n duration\n cover {\n childImageSharp {\n gatsbyImageData(\n width: 400\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n projects {\n moreProjectsSectionTitle\n moreProjectsSectionLinkTitle\n }\n }\n }\n }\n }\n`;\n","import React from \"react\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IReviewQueryResult } from \"../../types/review.type\";\n\nimport { FaQuoteRight } from \"@react-icons/all-files/fa/FaQuoteRight\";\n\nconst Review = ({\n review: {\n frontmatter: { company, person, position, location, image },\n html,\n },\n className,\n}: {\n review: IReviewQueryResult;\n className?: string;\n}) => {\n const avatar = getImage(image);\n\n return (\n \n
\n {avatar ? (\n \n ) : null}\n
\n

{person}

\n

\n {position}, {company}\n

\n

{location}

\n
\n \n
\n \n \n\n //
\n //
\n // \n // {avatar ? (\n // \n // ) : null}\n //
\n //
\n //

{person}

\n // {person}\n //

\n // {position}, {company}\n //

\n //

\n // {location}\n //

\n //
\n //
\n // \n // \n );\n};\n\nexport default Review;\n","import React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport { ILang, Theme } from \"../../types/common.type\";\nimport {\n IReviewQueryResult,\n IReviewSectionQueryResult,\n} from \"../../types/review.type\";\n\nimport TemplateSection from \"../common/templateSection\";\nimport Review from \"./review\";\n\nconst StaticReviewsSection = ({ lang }: ILang) => {\n const reviewsData = useStaticQuery(query) as IReviewSectionQueryResult;\n\n const sectionMarkup = reviewsData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.reviews;\n\n let reviews: IReviewQueryResult[] | null | undefined;\n\n if (lang in reviewsData)\n reviews = reviewsData?.[lang]?.nodes?.sort((a, b) =>\n a.frontmatter.person > b.frontmatter.person ? 1 : -1\n ) as IReviewQueryResult[] | null | undefined;\n else\n reviews = reviewsData?.en?.nodes?.sort((a, b) =>\n a.frontmatter.person > b.frontmatter.person ? 1 : -1\n );\n\n return (\n <>\n {reviews ? (\n \n
\n {reviews.map((review) => (\n \n ))}\n
\n \n ) : null}\n \n );\n};\n\nexport default StaticReviewsSection;\n\nexport const query = graphql`\n query {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"reviews\" }, language: { eq: \"en\" } }\n }\n ) {\n nodes {\n id\n html\n frontmatter {\n company\n location\n person\n position\n image {\n childImageSharp {\n gatsbyImageData(\n height: 112\n placeholder: BLURRED\n formats: [AUTO, AVIF, WEBP]\n )\n }\n }\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"reviews\" }, language: { eq: \"ru\" } }\n }\n ) {\n nodes {\n id\n html\n frontmatter {\n company\n location\n person\n position\n image {\n childImageSharp {\n gatsbyImageData(\n height: 112\n placeholder: BLURRED\n formats: [AUTO, AVIF, WEBP]\n )\n }\n }\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n reviews {\n title\n linkTitle\n }\n }\n }\n }\n }\n`;\n","import * as React from \"react\";\nimport type { HeadFC, HeadProps, PageProps } from \"gatsby\";\n\nimport { IconContext } from \"@react-icons/all-files\";\nimport \"../styles/styles.css\";\n\nimport { IIndexPageContext } from \"../types/index.type\";\n\nimport Banner from \"../components/common/banner\";\nimport StackSection from \"../components/stack/stackSection\";\nimport PostSection from \"../components/posts/postSection\";\nimport ProjectsSection from \"../components/projects/projectsSection\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport StaticReviewsSection from \"../components/reviews/staticReviewsSection\";\nimport ContactFormSection from \"../components/forms/contactFormSection\";\n\nconst IndexPage = ({\n pageContext: { markupData, lang },\n}: PageProps) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default IndexPage;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps) => {\n return (\n \n );\n};\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsSetup: ICommentsSetup;\n}\n\nexport interface ICommentsSetup {\n repo: `${string}/${string}`;\n repoId: string;\n categoryId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n","const defaultOptions = {\n active: true,\n breakpoints: {},\n delay: 4000,\n jump: false,\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n stopOnLastSnap: false,\n rootNode: null\n};\n\nfunction Autoplay(userOptions = {}) {\n let options;\n let emblaApi;\n let destroyed;\n let playing = false;\n let resume = true;\n let jump = false;\n let timer = 0;\n function init(emblaApiInstance, optionsHandler) {\n emblaApi = emblaApiInstance;\n const {\n mergeOptions,\n optionsAtMedia\n } = optionsHandler;\n const optionsBase = mergeOptions(defaultOptions, Autoplay.globalOptions);\n const allOptions = mergeOptions(optionsBase, userOptions);\n options = optionsAtMedia(allOptions);\n if (emblaApi.scrollSnapList().length <= 1) return;\n jump = options.jump;\n destroyed = false;\n const {\n eventStore,\n ownerDocument\n } = emblaApi.internalEngine();\n const emblaRoot = emblaApi.rootNode();\n const root = options.rootNode && options.rootNode(emblaRoot) || emblaRoot;\n const container = emblaApi.containerNode();\n emblaApi.on('pointerDown', stopTimer);\n if (!options.stopOnInteraction) {\n emblaApi.on('pointerUp', startTimer);\n }\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', () => {\n resume = false;\n stopTimer();\n });\n if (!options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', () => {\n resume = true;\n startTimer();\n });\n }\n }\n if (options.stopOnFocusIn) {\n eventStore.add(container, 'focusin', stopTimer);\n if (!options.stopOnInteraction) {\n eventStore.add(container, 'focusout', startTimer);\n }\n }\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange);\n if (options.playOnInit && !documentIsHidden()) startTimer();\n }\n function destroy() {\n emblaApi.off('pointerDown', stopTimer).off('pointerUp', startTimer);\n stopTimer();\n destroyed = true;\n playing = false;\n }\n function startTimer() {\n if (destroyed) return;\n if (!resume) return;\n if (!playing) emblaApi.emit('autoplay:play');\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearInterval(timer);\n timer = ownerWindow.setInterval(next, options.delay);\n playing = true;\n }\n function stopTimer() {\n if (destroyed) return;\n if (playing) emblaApi.emit('autoplay:stop');\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearInterval(timer);\n timer = 0;\n playing = false;\n }\n function visibilityChange() {\n if (documentIsHidden()) {\n resume = playing;\n return stopTimer();\n }\n if (resume) startTimer();\n }\n function documentIsHidden() {\n const {\n ownerDocument\n } = emblaApi.internalEngine();\n return ownerDocument.visibilityState === 'hidden';\n }\n function play(jumpOverride) {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride;\n resume = true;\n startTimer();\n }\n function stop() {\n if (playing) stopTimer();\n }\n function reset() {\n if (playing) play();\n }\n function isPlaying() {\n return playing;\n }\n function next() {\n const {\n index\n } = emblaApi.internalEngine();\n const nextIndex = index.clone().add(1).get();\n const lastIndex = emblaApi.scrollSnapList().length - 1;\n const kill = options.stopOnLastSnap && nextIndex === lastIndex;\n if (kill) stopTimer();\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump);\n } else {\n emblaApi.scrollTo(0, jump);\n }\n }\n const self = {\n name: 'autoplay',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying\n };\n return self;\n}\nAutoplay.globalOptions = undefined;\n\nexport { Autoplay as default };\n//# sourceMappingURL=embla-carousel-autoplay.esm.js.map\n"],"names":["GenIcon","module","exports","props","_ref","section","theme","title","linkTitle","subTitle","className","children","borderT","borderB","isArrowLink","attr","mainColorClass","Theme","dark","linkColorClass","bgColorClass","___EmotionJSX","React","Border","_extends","ContentContainer","maxWidthClass","toUpperCase","Link","to","post","markupData","lang","date","text","frontmatter","minutes","Math","floor","wordCount","words","readingTime","fontColorClass100","light","fontColorClass70","fontColorHover","id","itemScope","itemType","itemProp","split","slice","join","readPostLink","BsArrowUpRight","size","readingTimeTitle","readingTimeUnits","LocalBusinessMetadata","project","cover","getImage","teamSize","duration","fontColorClass10","bgColors","GatsbyImage","image","alt","forwardRef","ref","emblaRef","emblaApi","useEmblaCarousel","loop","dragFree","align","Autoplay","delay","stopOnInteraction","stopOnMouseEnter","onMouseEnter","internalEngine","animation","stop","onMouseLeave","start","StackSection","_techData$markdownRem","_techData$markdownRem2","techData","useStaticQuery","query","techArr","markdownRemark","stack","StackCarousel","map","tech","StackUnit","key","AiFillBug","_postData$markupData","_postData$markupData$","_postData$markupData$2","_postData$markupData$3","_postData$lang","_postData$lang$nodes","_postData$en","_postData$en$nodes","_sectionMarkup$blogSe","_sectionMarkup$blogSe2","postData","sectionMarkup","nodes","find","node","fields","language","blog","en","TemplateSection","blogSectionTitle","blogSectionLinkTitle","PostPreview","_projectsPreviewData$","_projectsPreviewData$2","_projectsPreviewData$3","_projectsPreviewData$4","_projectsPreviewData$5","_projectsPreviewData$6","_sectionMarkup$morePr","_sectionMarkup$morePr2","excludeId","projectsPreviewData","projects","filter","moreProjectsSectionTitle","moreProjectsSectionLinkTitle","i","ProjectPreview","review","company","person","position","location","html","avatar","FaQuoteRight","color","dangerouslySetInnerHTML","__html","_reviewsData$markupDa","_reviewsData$markupDa2","_reviewsData$markupDa3","_reviewsData$markupDa4","_reviewsData$lang","_reviewsData$lang$nod","_reviewsData$en","_reviewsData$en$nodes","_sectionMarkup$title","reviewsData","reviews","sort","a","b","Review","pageContext","IconContext","Provider","value","style","verticalAlign","Banner","bannerTitle","babylon","ProjectsSection","StaticReviewsSection","PostSection","ContactFormSection","Head","_ref2","site","HeadSeo","head","description","metaDescription","siteUrl","path","pathname","defaultOptions","active","breakpoints","jump","playOnInit","stopOnFocusIn","stopOnLastSnap","rootNode","userOptions","options","destroyed","playing","resume","timer","startTimer","emit","ownerWindow","clearInterval","setInterval","next","stopTimer","visibilityChange","documentIsHidden","ownerDocument","visibilityState","play","jumpOverride","index","nextIndex","clone","add","get","lastIndex","scrollSnapList","length","canScrollNext","scrollNext","scrollTo","name","init","emblaApiInstance","optionsHandler","mergeOptions","optionsAtMedia","optionsBase","globalOptions","allOptions","eventStore","emblaRoot","root","container","containerNode","on","destroy","off","reset","isPlaying","undefined"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js b/component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js deleted file mode 100644 index 115e3da3..00000000 --- a/component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[354],{1237:function(t,e,a){var r=a(9720).w_;t.exports.A=function(t){return r({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"}}]})(t)}},2651:function(t,e,a){var r=a(9720).w_;t.exports.l=function(t){return r({tag:"svg",attr:{viewBox:"0 0 488 512"},child:[{tag:"path",attr:{d:"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"}}]})(t)}},1112:function(t,e,a){var r=a(9720).w_;t.exports.o=function(t){return r({tag:"svg",attr:{viewBox:"0 0 496 512"},child:[{tag:"path",attr:{d:"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z"}}]})(t)}},4404:function(t,e,a){"use strict";var r=a(4160),l=a(8032),s=a(917);e.Z=t=>{let{authorAlias:e,author:a,authorPosition:o,authorPhoto:i}=t;const n=(0,l.c)(i);return(0,s.tZ)(r.rU,{to:`/blog/${e.split(" ").join("-").toLowerCase()}`,title:`${a}'s blog`,itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person",className:"flex items-center gap-4 mb-8 sm:mb-12 text-secondary-100 text-lg"},n?(0,s.tZ)(l.G,{image:n,alt:"avatar",itemProp:"image",className:"object-contain aspect-square rounded-full w-16 grayscale"}):null,(0,s.tZ)("div",{className:"flex-1 w-max"},(0,s.tZ)("p",{itemProp:"name",className:"font-semibold whitespace-nowrap"},a),(0,s.tZ)("p",{itemProp:"jobTitle",className:"text-secondary-30"},o)))}},3803:function(t,e,a){"use strict";a.r(e),a.d(e,{Head:function(){return P},default:function(){return N}});var r=a(7294),l=a(7896),s=a(9165),o=a(1164),i=a(4528),n=a.n(i),c=a(1112),m=a(5337),u=a(2651),p=a(1237),d=a(917);const h=t=>{let{url:e,media:a,children:r}=t;return(0,d.tZ)("a",{href:e,rel:"noopener noreferrer",target:"_blank",title:`Share on ${a}`,className:"hover:brightness-75"},r)};var f=t=>{let{url:e,postTitle:a,shareTitle:r}=t;return(0,d.tZ)("div",{className:"sm:basis-52 sm:shrink-0"},(0,d.tZ)("p",{className:"text-lg font-bold mb-5"},r),(0,d.tZ)("div",{className:"flex w-full items-center justify-evenly sm:justify-between py-2.5"},(0,d.tZ)(h,{media:"Twitter",url:`http://twitter.com/share?text=${a}&url=${e}`},(0,d.tZ)(n(),null)),(0,d.tZ)(h,{media:"Pinterest",url:`http://pinterest.com/pin/create/button/?url=${e}&description=${a}`},(0,d.tZ)(c.o,{size:"20px"})),(0,d.tZ)(h,{media:"Linkedin",url:`http://www.linkedin.com/shareArticle?mini=true&url=${e}&title=${a}&source=CodeCave`},(0,d.tZ)(m.l,{size:"20px"})),(0,d.tZ)(h,{media:"Google+",url:`https://plus.google.com/share?url=${e}`},(0,d.tZ)(u.l,{size:"20px"})),(0,d.tZ)(h,{media:"Facebook",url:`https://www.facebook.com/sharer/sharer.php?u=${e}&p[title]=${a}`},(0,d.tZ)(p.A,{size:"20px"}))))},x=a(4160),g=a(8032);var Z=t=>{let{title:e,text:a}=t;const r=(0,x.K2)(b),l=(0,g.c)(null==r?void 0:r.file);return(0,d.tZ)("div",{className:"flex flex-col sm:flex-row items-center w-full sm:px-12 mb-8 gap-5 justify-center"},l?(0,d.tZ)(g.G,{image:l,alt:"like",className:"object-contain aspect-square h-40"}):null,(0,d.tZ)("div",{className:"flex-1"},(0,d.tZ)("p",{className:"text-lg font-bold mb-5"},e),(0,d.tZ)("p",{className:"text-base"},a)))};const b="639074693";var v=t=>{let{keywords:e,readMoreTitle:a}=t;return(0,d.tZ)("div",{className:"w-full"},(0,d.tZ)("p",{className:"text-lg font-bold mb-5"},a),(0,d.tZ)("div",{className:"flex flex-wrap gap-2"},e.map((t=>(0,d.tZ)(x.rU,{key:t,to:`/blog/${t.split(" ").join("-").toLowerCase()}`,title:`blog about ${t}`,className:"text-sm text-secondary-10 border border-solid border-secondary-10 rounded-full px-5 py-2.5 hover:border-secondary-100 hover:text-secondary-100 hover:bg-main-70"},"#",(0,d.tZ)("span",{itemProp:"keywords"},t))))))},w=a(4404);var y=t=>{let{commentsRepo:e}=t;const a=(0,r.useRef)(null);return(0,r.useEffect)((()=>{var t;if(0===(null===(t=a.current)||void 0===t?void 0:t.children.length)){var r;const t=document.createElement("script");t.setAttribute("src","https://utteranc.es/client.js"),t.setAttribute("crossorigin","anonymous"),t.setAttribute("async","true"),t.setAttribute("repo",e),t.setAttribute("issue-term","pathname"),t.setAttribute("theme","github-dark"),null===(r=a.current)||void 0===r||r.appendChild(t)}}),[]),(0,d.tZ)("div",{className:"container pt-8"},(0,d.tZ)("h1",{className:"mt-0 mb-0 text-3xl font-normal leading-normal"},"Comments"),(0,d.tZ)("hr",{className:"my-0"}),(0,d.tZ)("div",{ref:a}))};var N=t=>{let{data:{post:{frontmatter:e,html:a,wordCount:{words:i}},author:n},pageContext:{markupData:c,lang:m,site:u}}=t;const{href:p}=(0,l.useLocation)(),{date:h,title:x,keywords:g}=e,{authorAlias:b,author:N,authorPosition:P,authorPhoto:k}=n.frontmatter,T=Math.floor(i/200),C=T||1;return(0,d.tZ)(r.Fragment,null,(0,d.tZ)("div",{itemScope:!0,itemType:"https://schema.org/Article",className:"flex bg-main-100"},(0,d.tZ)(o.Z,{maxWidthClass:"max-w-2xl",className:"flex-col text-secondary-100 text-lg md:!px-0 pt-8 sm:pt-16"},(0,d.tZ)(w.Z,{authorAlias:b,author:N,authorPhoto:k,authorPosition:P}),(0,d.tZ)("div",{className:"w-full flex items-center justify-between mb-2.5 sm:mb-5 text-sm sm:text-base"},(0,d.tZ)("span",{itemProp:"datePublished"},h),(0,d.tZ)("span",null,c.readingTimeTitle,": ",C,null==c?void 0:c.readingTimeUnits,".")),(0,d.tZ)("h1",{className:"text-[24px] sm:text-4xl font-semibold mb-8",itemProp:"headline"},x),(0,d.tZ)("article",{className:"single-post",dangerouslySetInnerHTML:{__html:a},itemProp:"articleBody"}),(0,d.tZ)("div",{className:"flex flex-col sm:flex-row w-full gap-8 lg:gap-16 mb-8 md:mb-12"},g?(0,d.tZ)(v,{keywords:g,readMoreTitle:c.readMoreOnTopicTitle}):null,(0,d.tZ)(f,{url:p,postTitle:x,shareTitle:c.sharePostTitle})),(0,d.tZ)(Z,{title:c.postFooterTitle,text:c.postFooterText}),(0,d.tZ)(y,{commentsRepo:u.commentsRepo})),(0,d.tZ)(s.Lx,{itemProp:"copyrightHolder",lang:m})))};const P=t=>{let{data:{post:{frontmatter:{title:e,text:a}}},pageContext:r,location:l}=t;return(0,d.tZ)(s.Ag,{title:`${r.markupData.head} | ${e.toUpperCase()}`,siteUrl:r.site.siteUrl,description:`${a.split(" ").slice(0,22).join(" ")}...`,path:l.pathname,lang:r.lang})}},4528:function(t,e,a){var r=a(7294);function l(t){return r.createElement("svg",t,[r.createElement("g",{clipPath:"url(#clip0_1390_2975)",key:0},r.createElement("path",{d:"M15.7511 0H18.8178L12.1179 8.47193L20 20H13.8282L8.99457 13.0081L3.46363 20H0.394883L7.56109 10.9385L0 0H6.32809L10.6975 6.39068L15.7511 0ZM14.6747 17.9691H16.3741L5.40481 1.92425H3.58137L14.6747 17.9691Z",fill:"#E4E4E4"})),r.createElement("defs",{key:1},r.createElement("clipPath",{id:"clip0_1390_2975"},r.createElement("rect",{width:"20",height:"20",fill:"white"})))])}l.defaultProps={width:"20",height:"20",viewBox:"0 0 20 20",fill:"none"},t.exports=l,l.default=l}}]); -//# sourceMappingURL=component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js.map \ No newline at end of file diff --git a/component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js.map b/component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js.map deleted file mode 100644 index a327322a..00000000 --- a/component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaFacebook.js","webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaGoogle.js","webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaPinterest.js","webpack://code-cave/./src/components/posts/postAuthorCard.tsx","webpack://code-cave/./src/components/posts/shareButtons.tsx","webpack://code-cave/./src/components/posts/postFooter.tsx","webpack://code-cave/./src/components/posts/postHashtags.tsx","webpack://code-cave/./src/components/posts/comments.tsx","webpack://code-cave/./src/pagesTemplates/post.tsx","webpack://code-cave/./src/assets/posts/X.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaFacebook = function FaFacebook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 512 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaGoogle = function FaGoogle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 488 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaPinterest = function FaPinterest (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 496 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z\"}}]})(props);\n};\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IPostAuthor } from \"../../types/post.type\";\n\nconst PostAuthorCard = ({\n authorAlias,\n author,\n authorPosition,\n authorPhoto,\n}: IPostAuthor) => {\n const avatar = getImage(authorPhoto);\n\n return (\n \n {avatar ? (\n \n ) : null}\n
\n

\n {author}\n

\n

\n {authorPosition}\n

\n
\n \n );\n};\n\nexport default PostAuthorCard;\n","import React from \"react\";\n\nimport X from \"../../assets/posts/X.svg\";\nimport { FaPinterest } from \"@react-icons/all-files/fa/FaPinterest\";\nimport { FaLinkedin } from \"@react-icons/all-files/fa/FaLinkedin\";\nimport { FaGoogle } from \"@react-icons/all-files/fa/FaGoogle\";\nimport { FaFacebook } from \"@react-icons/all-files/fa/FaFacebook\";\n\nconst ShareButtons = ({\n url,\n postTitle,\n shareTitle,\n}: {\n url: string;\n postTitle: string;\n shareTitle: string;\n}) => {\n return (\n
\n

{shareTitle}

\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport const ShareButton = ({\n url,\n media,\n children,\n}: React.PropsWithChildren<{ url: string; media: string }>) => {\n return (\n \n {children}\n \n );\n};\n\nexport default ShareButtons;\n","import React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\nimport { GatsbyImage, ImageDataLike, getImage } from \"gatsby-plugin-image\";\n\nconst PostFooter = ({ title, text }: { title: string; text: string }) => {\n const fileData = useStaticQuery(query) as { file: ImageDataLike | null };\n const image = getImage(fileData?.file);\n\n return (\n
\n {image ? (\n \n ) : null}\n
\n

{title}

\n

{text}

\n
\n
\n );\n};\n\nexport default PostFooter;\n\nexport const query = graphql`\n query {\n file(name: { eq: \"postFooterImage\" }) {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 160\n )\n }\n }\n }\n`;\n","import { Link } from \"gatsby\";\nimport React from \"react\";\n\nconst PostHashtags = ({\n keywords,\n readMoreTitle,\n}: {\n keywords: string[];\n readMoreTitle: string;\n}) => {\n return (\n
\n

{readMoreTitle}

\n
\n {keywords.map((hashtag) => (\n \n #{hashtag}\n \n ))}\n
\n
\n );\n};\n\nexport default PostHashtags;\n","import React, { useEffect, useRef } from \"react\";\n\nconst Comments = ({ commentsRepo }: { commentsRepo: string }) => {\n const ref = useRef(null);\n\n useEffect(() => {\n if (ref.current?.children.length === 0) {\n const scriptEl = document.createElement(\"script\");\n scriptEl.setAttribute(\"src\", \"https://utteranc.es/client.js\");\n scriptEl.setAttribute(\"crossorigin\", \"anonymous\");\n scriptEl.setAttribute(\"async\", \"true\");\n scriptEl.setAttribute(\"repo\", commentsRepo);\n scriptEl.setAttribute(\"issue-term\", \"pathname\");\n scriptEl.setAttribute(\"theme\", \"github-dark\");\n ref.current?.appendChild(scriptEl);\n }\n }, []);\n\n return (\n
\n

\n Comments\n

\n
\n
\n
\n );\n};\n\nexport default Comments;\n","import React from \"react\";\nimport { HeadFC, Link, PageProps, graphql } from \"gatsby\";\nimport { useLocation } from \"@reach/router\";\n\nimport { IPostPageContext, IPostQueryResult } from \"../types/post.type\";\n\nimport { HeadSeo, LocalBusinessMetadata } from \"../components/common/metadata\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport ShareButtons from \"../components/posts/shareButtons\";\nimport PostFooter from \"../components/posts/postFooter\";\nimport PostHashtags from \"../components/posts/postHashtags\";\nimport PostAuthorCard from \"../components/posts/postAuthorCard\";\nimport Comments from \"../components/posts/comments\";\n\nconst Post = ({\n data: {\n post: {\n frontmatter,\n html,\n wordCount: { words },\n },\n author: authorData,\n },\n pageContext: { markupData, lang, site },\n}: PageProps) => {\n const { href: currentUrl } = useLocation();\n\n const { date, title, keywords } = frontmatter;\n const { authorAlias, author, authorPosition, authorPhoto } =\n authorData.frontmatter;\n\n const minutes = Math.floor(words / 200);\n const readingTime = minutes ? minutes : 1;\n\n return (\n <>\n \n \n \n\n
\n {date}\n\n \n {markupData.readingTimeTitle}: {readingTime}\n {markupData?.readingTimeUnits}.\n \n
\n\n \n {title}\n \n\n \n\n
\n {keywords ? (\n \n ) : null}\n\n \n
\n\n \n\n \n \n \n
\n \n );\n};\n\nexport default Post;\n\nexport const Head: HeadFC = ({\n data: {\n post: {\n frontmatter: { title, text },\n },\n },\n pageContext,\n location,\n}) => (\n \n);\n\nexport const query = graphql`\n query ($id: String, $lang: String, $authorId: String) {\n post: markdownRemark(id: { eq: $id }) {\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n keywords\n }\n html\n wordCount {\n words\n }\n }\n author: markdownRemark(id: { eq: $authorId }) {\n frontmatter {\n authorAlias\n author\n authorPosition\n authorPhoto {\n childImageSharp {\n gatsbyImageData(\n width: 64\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n`;\n","var React = require('react');\n\nfunction X (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"g\",{\"clipPath\":\"url(#clip0_1390_2975)\",\"key\":0},React.createElement(\"path\",{\"d\":\"M15.7511 0H18.8178L12.1179 8.47193L20 20H13.8282L8.99457 13.0081L3.46363 20H0.394883L7.56109 10.9385L0 0H6.32809L10.6975 6.39068L15.7511 0ZM14.6747 17.9691H16.3741L5.40481 1.92425H3.58137L14.6747 17.9691Z\",\"fill\":\"#E4E4E4\"})),React.createElement(\"defs\",{\"key\":1},React.createElement(\"clipPath\",{\"id\":\"clip0_1390_2975\"},React.createElement(\"rect\",{\"width\":\"20\",\"height\":\"20\",\"fill\":\"white\"})))]);\n}\n\nX.defaultProps = {\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 20 20\",\"fill\":\"none\"};\n\nmodule.exports = X;\n\nX.default = X;\n"],"names":["GenIcon","module","exports","props","_ref","authorAlias","author","authorPosition","authorPhoto","avatar","getImage","___EmotionJSX","Link","to","split","join","toLowerCase","title","itemProp","itemScope","itemType","className","GatsbyImage","image","alt","ShareButton","_ref2","url","media","children","href","rel","target","postTitle","shareTitle","X","FaPinterest","size","FaLinkedin","FaGoogle","FaFacebook","text","fileData","useStaticQuery","query","file","keywords","readMoreTitle","map","hashtag","key","commentsRepo","ref","useRef","useEffect","_ref$current","current","length","_ref$current2","scriptEl","document","createElement","setAttribute","appendChild","data","post","frontmatter","html","wordCount","words","authorData","pageContext","markupData","lang","site","currentUrl","useLocation","date","minutes","Math","floor","readingTime","React","ContentContainer","maxWidthClass","PostAuthorCard","readingTimeTitle","readingTimeUnits","dangerouslySetInnerHTML","__html","PostHashtags","readMoreOnTopicTitle","ShareButtons","sharePostTitle","PostFooter","postFooterTitle","postFooterText","Comments","LocalBusinessMetadata","Head","location","HeadSeo","head","toUpperCase","siteUrl","description","slice","path","pathname","defaultProps","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js b/component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js new file mode 100644 index 00000000..f705dcc3 --- /dev/null +++ b/component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js @@ -0,0 +1,2 @@ +(self.webpackChunkcode_cave=self.webpackChunkcode_cave||[]).push([[354],{1237:function(t,e,a){var r=a(9720).w_;t.exports.A=function(t){return r({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"}}]})(t)}},2651:function(t,e,a){var r=a(9720).w_;t.exports.l=function(t){return r({tag:"svg",attr:{viewBox:"0 0 488 512"},child:[{tag:"path",attr:{d:"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"}}]})(t)}},1112:function(t,e,a){var r=a(9720).w_;t.exports.o=function(t){return r({tag:"svg",attr:{viewBox:"0 0 496 512"},child:[{tag:"path",attr:{d:"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z"}}]})(t)}},4404:function(t,e,a){"use strict";var r=a(4160),o=a(8032),l=a(917);e.Z=t=>{let{authorAlias:e,author:a,authorPosition:s,authorPhoto:i}=t;const n=(0,o.c)(i);return(0,l.tZ)(r.rU,{to:`/blog/${e.split(" ").join("-").toLowerCase()}`,title:`${a}'s blog`,itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person",className:"flex items-center gap-4 mb-8 sm:mb-12 text-secondary-100 text-lg"},n?(0,l.tZ)(o.G,{image:n,alt:"avatar",itemProp:"image",className:"object-contain aspect-square rounded-full w-16 grayscale"}):null,(0,l.tZ)("div",{className:"flex-1 w-max"},(0,l.tZ)("p",{itemProp:"name",className:"font-semibold whitespace-nowrap"},a),(0,l.tZ)("p",{itemProp:"jobTitle",className:"text-secondary-30"},s)))}},7724:function(t,e,a){"use strict";a.r(e),a.d(e,{Head:function(){return T},default:function(){return k}});var r=a(7294),o=a(7896),l=a(9165),s=a(1164),i=a(4528),n=a.n(i),c=a(1112),m=a(5337),p=a(2651),d=a(1237),u=a(917);const h=t=>{let{url:e,media:a,children:r}=t;return(0,u.tZ)("a",{href:e,rel:"noopener noreferrer",target:"_blank",title:`Share on ${a}`,className:"hover:brightness-75"},r)};var g=t=>{let{url:e,postTitle:a,shareTitle:r}=t;return(0,u.tZ)("div",{className:"sm:basis-52 sm:shrink-0"},(0,u.tZ)("p",{className:"text-lg font-bold mb-5"},r),(0,u.tZ)("div",{className:"flex w-full items-center justify-evenly sm:justify-between py-2.5"},(0,u.tZ)(h,{media:"Twitter",url:`http://twitter.com/share?text=${a}&url=${e}`},(0,u.tZ)(n(),null)),(0,u.tZ)(h,{media:"Pinterest",url:`http://pinterest.com/pin/create/button/?url=${e}&description=${a}`},(0,u.tZ)(c.o,{size:"20px"})),(0,u.tZ)(h,{media:"Linkedin",url:`http://www.linkedin.com/shareArticle?mini=true&url=${e}&title=${a}&source=CodeCave`},(0,u.tZ)(m.l,{size:"20px"})),(0,u.tZ)(h,{media:"Google+",url:`https://plus.google.com/share?url=${e}`},(0,u.tZ)(p.l,{size:"20px"})),(0,u.tZ)(h,{media:"Facebook",url:`https://www.facebook.com/sharer/sharer.php?u=${e}&p[title]=${a}`},(0,u.tZ)(d.A,{size:"20px"}))))},f=a(4160),x=a(8032);var Z=t=>{let{title:e,text:a}=t;const r=(0,f.K2)(b),o=(0,x.c)(null==r?void 0:r.file);return(0,u.tZ)("div",{className:"flex flex-col sm:flex-row items-center w-full sm:px-12 mb-8 gap-5 justify-center"},o?(0,u.tZ)(x.G,{image:o,alt:"like",className:"object-contain aspect-square h-40"}):null,(0,u.tZ)("div",{className:"flex-1"},(0,u.tZ)("p",{className:"text-lg font-bold mb-5"},e),(0,u.tZ)("p",{className:"text-base"},a)))};const b="639074693";var w=t=>{let{keywords:e,readMoreTitle:a}=t;return(0,u.tZ)("div",{className:"w-full"},(0,u.tZ)("p",{className:"text-lg font-bold mb-5"},a),(0,u.tZ)("div",{className:"flex flex-wrap gap-2"},e.map((t=>(0,u.tZ)(f.rU,{key:t,to:`/blog/${t.split(" ").join("-").toLowerCase()}`,title:`blog about ${t}`,className:"text-sm text-secondary-10 border border-solid border-secondary-10 rounded-full px-5 py-2.5 hover:border-secondary-100 hover:text-secondary-100 hover:bg-main-70"},"#",(0,u.tZ)("span",{itemProp:"keywords"},t))))))},v=a(4404),y=a(5893);function N({id:t,host:e,repo:o,repoId:l,category:s,categoryId:i,mapping:n,term:c,strict:m,reactionsEnabled:p,emitMetadata:d,inputPosition:u,theme:h,lang:g,loading:f}){const[x,Z]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{x||(a.e(355).then(a.bind(a,4355)),Z(!0))}),[]),x?(0,y.jsx)("giscus-widget",{id:t,host:e,repo:o,repoid:l,category:s,categoryid:i,mapping:n,term:c,strict:m,reactionsenabled:p,emitmetadata:d,inputposition:u,theme:h,lang:g,loading:f}):null}var P=t=>{let{setup:e}=t;return(0,u.tZ)("div",{className:"w-full mb-8 grayscale brightness-[1.4]"},(0,u.tZ)(N,{id:"comments",repo:e.repo,repoId:e.repoId,category:"Announcements",categoryId:e.categoryId,mapping:"pathname",reactionsEnabled:"0",emitMetadata:"0",inputPosition:"top",theme:"transparent_dark",lang:"ru",loading:"lazy"}))};var k=t=>{let{data:{post:{frontmatter:e,html:a,wordCount:{words:i}},author:n},pageContext:{markupData:c,lang:m,site:p}}=t;const{href:d}=(0,o.useLocation)(),{date:h,title:f,keywords:x}=e,{authorAlias:b,author:y,authorPosition:N,authorPhoto:k}=n.frontmatter,T=Math.floor(i/200),$=T||1;return(0,u.tZ)(r.Fragment,null,(0,u.tZ)("div",{itemScope:!0,itemType:"https://schema.org/Article",className:"flex bg-main-100"},(0,u.tZ)(s.Z,{maxWidthClass:"max-w-2xl",className:"flex-col text-secondary-100 text-lg md:!px-0 pt-8 sm:pt-16"},(0,u.tZ)(v.Z,{authorAlias:b,author:y,authorPhoto:k,authorPosition:N}),(0,u.tZ)("div",{className:"w-full flex items-center justify-between mb-2.5 sm:mb-5 text-sm sm:text-base"},(0,u.tZ)("span",{itemProp:"datePublished"},h),(0,u.tZ)("span",null,c.readingTimeTitle,": ",$,null==c?void 0:c.readingTimeUnits,".")),(0,u.tZ)("h1",{className:"text-[24px] sm:text-4xl font-semibold mb-8",itemProp:"headline"},f),(0,u.tZ)("article",{className:"single-post",dangerouslySetInnerHTML:{__html:a},itemProp:"articleBody"}),(0,u.tZ)("div",{className:"flex flex-col sm:flex-row w-full gap-8 lg:gap-16 mb-8 md:mb-12"},x?(0,u.tZ)(w,{keywords:x,readMoreTitle:c.readMoreOnTopicTitle}):null,(0,u.tZ)(g,{url:d,postTitle:f,shareTitle:c.sharePostTitle})),(0,u.tZ)(Z,{title:c.postFooterTitle,text:c.postFooterText}),(0,u.tZ)(P,{setup:p.commentsSetup})),(0,u.tZ)(l.Lx,{itemProp:"copyrightHolder",lang:m})))};const T=t=>{let{data:{post:{frontmatter:{title:e,text:a}}},pageContext:r,location:o}=t;return(0,u.tZ)(l.Ag,{title:`${r.markupData.head} | ${e.toUpperCase()}`,siteUrl:r.site.siteUrl,description:`${a.split(" ").slice(0,22).join(" ")}...`,path:o.pathname,lang:r.lang})}},4528:function(t,e,a){var r=a(7294);function o(t){return r.createElement("svg",t,[r.createElement("g",{clipPath:"url(#clip0_1390_2975)",key:0},r.createElement("path",{d:"M15.7511 0H18.8178L12.1179 8.47193L20 20H13.8282L8.99457 13.0081L3.46363 20H0.394883L7.56109 10.9385L0 0H6.32809L10.6975 6.39068L15.7511 0ZM14.6747 17.9691H16.3741L5.40481 1.92425H3.58137L14.6747 17.9691Z",fill:"#E4E4E4"})),r.createElement("defs",{key:1},r.createElement("clipPath",{id:"clip0_1390_2975"},r.createElement("rect",{width:"20",height:"20",fill:"white"})))])}o.defaultProps={width:"20",height:"20",viewBox:"0 0 20 20",fill:"none"},t.exports=o,o.default=o}}]); +//# sourceMappingURL=component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js.map \ No newline at end of file diff --git a/component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js.map b/component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js.map new file mode 100644 index 00000000..e7549269 --- /dev/null +++ b/component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaFacebook.js","webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaGoogle.js","webpack://code-cave/./node_modules/@react-icons/all-files/fa/FaPinterest.js","webpack://code-cave/./src/components/posts/postAuthorCard.tsx","webpack://code-cave/./src/components/posts/shareButtons.tsx","webpack://code-cave/./src/components/posts/postFooter.tsx","webpack://code-cave/./src/components/posts/postHashtags.tsx","webpack://code-cave/./node_modules/@giscus/react/dist/index.js","webpack://code-cave/./src/components/posts/comments.tsx","webpack://code-cave/./src/pagesTemplates/post.tsx","webpack://code-cave/./src/assets/posts/X.svg"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaFacebook = function FaFacebook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 512 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaGoogle = function FaGoogle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 488 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z\"}}]})(props);\n};\n","// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.FaPinterest = function FaPinterest (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 496 512\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z\"}}]})(props);\n};\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IPostAuthor } from \"../../types/post.type\";\n\nconst PostAuthorCard = ({\n authorAlias,\n author,\n authorPosition,\n authorPhoto,\n}: IPostAuthor) => {\n const avatar = getImage(authorPhoto);\n\n return (\n \n {avatar ? (\n \n ) : null}\n
\n

\n {author}\n

\n

\n {authorPosition}\n

\n
\n \n );\n};\n\nexport default PostAuthorCard;\n","import React from \"react\";\n\nimport X from \"../../assets/posts/X.svg\";\nimport { FaPinterest } from \"@react-icons/all-files/fa/FaPinterest\";\nimport { FaLinkedin } from \"@react-icons/all-files/fa/FaLinkedin\";\nimport { FaGoogle } from \"@react-icons/all-files/fa/FaGoogle\";\nimport { FaFacebook } from \"@react-icons/all-files/fa/FaFacebook\";\n\nconst ShareButtons = ({\n url,\n postTitle,\n shareTitle,\n}: {\n url: string;\n postTitle: string;\n shareTitle: string;\n}) => {\n return (\n
\n

{shareTitle}

\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport const ShareButton = ({\n url,\n media,\n children,\n}: React.PropsWithChildren<{ url: string; media: string }>) => {\n return (\n \n {children}\n \n );\n};\n\nexport default ShareButtons;\n","import React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\nimport { GatsbyImage, ImageDataLike, getImage } from \"gatsby-plugin-image\";\n\nconst PostFooter = ({ title, text }: { title: string; text: string }) => {\n const fileData = useStaticQuery(query) as { file: ImageDataLike | null };\n const image = getImage(fileData?.file);\n\n return (\n
\n {image ? (\n \n ) : null}\n
\n

{title}

\n

{text}

\n
\n
\n );\n};\n\nexport default PostFooter;\n\nexport const query = graphql`\n query {\n file(name: { eq: \"postFooterImage\" }) {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 160\n )\n }\n }\n }\n`;\n","import { Link } from \"gatsby\";\nimport React from \"react\";\n\nconst PostHashtags = ({\n keywords,\n readMoreTitle,\n}: {\n keywords: string[];\n readMoreTitle: string;\n}) => {\n return (\n
\n

{readMoreTitle}

\n
\n {keywords.map((hashtag) => (\n \n #{hashtag}\n \n ))}\n
\n
\n );\n};\n\nexport default PostHashtags;\n","import { jsx as b } from \"react/jsx-runtime\";\nimport { useState as j, useEffect as w } from \"react\";\nfunction G({ id: e, host: i, repo: r, repoId: o, category: u, categoryId: n, mapping: s, term: a, strict: f, reactionsEnabled: d, emitMetadata: m, inputPosition: c, theme: p, lang: l, loading: g }) {\n const [t, x] = j(!1);\n return w(() => {\n t || (import(\"./giscus-BNK3dBIH.js\"), x(!0));\n }, []), t ? b(\"giscus-widget\", { id: e, host: i, repo: r, repoid: o, category: u, categoryid: n, mapping: s, term: a, strict: f, reactionsenabled: d, emitmetadata: m, inputposition: c, theme: p, lang: l, loading: g }) : null;\n}\nexport {\n G as default\n};\n","import React from \"react\";\nimport Giscus from \"@giscus/react\";\n\nimport { ICommentsSetup } from \"../../types/common.type\";\n\nconst Comments = ({ setup }: { setup: ICommentsSetup }) => {\n return (\n
\n \n
\n );\n};\n\nexport default Comments;\n","import React from \"react\";\nimport { HeadFC, Link, PageProps, graphql } from \"gatsby\";\nimport { useLocation } from \"@reach/router\";\n\nimport { IPostPageContext, IPostQueryResult } from \"../types/post.type\";\n\nimport { HeadSeo, LocalBusinessMetadata } from \"../components/common/metadata\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport ShareButtons from \"../components/posts/shareButtons\";\nimport PostFooter from \"../components/posts/postFooter\";\nimport PostHashtags from \"../components/posts/postHashtags\";\nimport PostAuthorCard from \"../components/posts/postAuthorCard\";\nimport Comments from \"../components/posts/comments\";\n\nconst Post = ({\n data: {\n post: {\n frontmatter,\n html,\n wordCount: { words },\n },\n author: authorData,\n },\n pageContext: { markupData, lang, site },\n}: PageProps) => {\n const { href: currentUrl } = useLocation();\n\n const { date, title, keywords } = frontmatter;\n const { authorAlias, author, authorPosition, authorPhoto } =\n authorData.frontmatter;\n\n const minutes = Math.floor(words / 200);\n const readingTime = minutes ? minutes : 1;\n\n return (\n <>\n \n \n \n\n
\n {date}\n\n \n {markupData.readingTimeTitle}: {readingTime}\n {markupData?.readingTimeUnits}.\n \n
\n\n \n {title}\n \n\n \n\n
\n {keywords ? (\n \n ) : null}\n\n \n
\n\n \n\n \n \n \n \n \n );\n};\n\nexport default Post;\n\nexport const Head: HeadFC = ({\n data: {\n post: {\n frontmatter: { title, text },\n },\n },\n pageContext,\n location,\n}) => (\n \n);\n\nexport const query = graphql`\n query ($id: String, $lang: String, $authorId: String) {\n post: markdownRemark(id: { eq: $id }) {\n frontmatter {\n date(formatString: \"DD MMM YYYY\", locale: $lang)\n title\n text\n keywords\n }\n html\n wordCount {\n words\n }\n }\n author: markdownRemark(id: { eq: $authorId }) {\n frontmatter {\n authorAlias\n author\n authorPosition\n authorPhoto {\n childImageSharp {\n gatsbyImageData(\n width: 64\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n )\n }\n }\n }\n }\n }\n`;\n","var React = require('react');\n\nfunction X (props) {\n return React.createElement(\"svg\",props,[React.createElement(\"g\",{\"clipPath\":\"url(#clip0_1390_2975)\",\"key\":0},React.createElement(\"path\",{\"d\":\"M15.7511 0H18.8178L12.1179 8.47193L20 20H13.8282L8.99457 13.0081L3.46363 20H0.394883L7.56109 10.9385L0 0H6.32809L10.6975 6.39068L15.7511 0ZM14.6747 17.9691H16.3741L5.40481 1.92425H3.58137L14.6747 17.9691Z\",\"fill\":\"#E4E4E4\"})),React.createElement(\"defs\",{\"key\":1},React.createElement(\"clipPath\",{\"id\":\"clip0_1390_2975\"},React.createElement(\"rect\",{\"width\":\"20\",\"height\":\"20\",\"fill\":\"white\"})))]);\n}\n\nX.defaultProps = {\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 20 20\",\"fill\":\"none\"};\n\nmodule.exports = X;\n\nX.default = X;\n"],"names":["GenIcon","module","exports","props","_ref","authorAlias","author","authorPosition","authorPhoto","avatar","getImage","___EmotionJSX","Link","to","split","join","toLowerCase","title","itemProp","itemScope","itemType","className","GatsbyImage","image","alt","ShareButton","_ref2","url","media","children","href","rel","target","postTitle","shareTitle","X","FaPinterest","size","FaLinkedin","FaGoogle","FaFacebook","text","fileData","useStaticQuery","query","file","keywords","readMoreTitle","map","hashtag","key","G","id","e","host","i","repo","r","repoId","o","category","u","categoryId","n","mapping","s","term","a","strict","f","reactionsEnabled","d","emitMetadata","m","inputPosition","c","theme","p","lang","l","loading","g","t","x","repoid","categoryid","reactionsenabled","emitmetadata","inputposition","setup","Giscus","data","post","frontmatter","html","wordCount","words","authorData","pageContext","markupData","site","currentUrl","useLocation","date","minutes","Math","floor","readingTime","React","ContentContainer","maxWidthClass","PostAuthorCard","readingTimeTitle","readingTimeUnits","dangerouslySetInnerHTML","__html","PostHashtags","readMoreOnTopicTitle","ShareButtons","sharePostTitle","PostFooter","postFooterTitle","postFooterText","Comments","commentsSetup","LocalBusinessMetadata","Head","location","HeadSeo","head","toUpperCase","siteUrl","description","slice","path","pathname","createElement","defaultProps","default"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-projects-tsx-efcf98f36bb35506a959.js.map b/component---src-pages-templates-projects-tsx-efcf98f36bb35506a959.js.map index 0c352c3d..e00bc8ad 100644 --- a/component---src-pages-templates-projects-tsx-efcf98f36bb35506a959.js.map +++ b/component---src-pages-templates-projects-tsx-efcf98f36bb35506a959.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-templates-projects-tsx-efcf98f36bb35506a959.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/projects/projectPreview.tsx","webpack://code-cave/./src/pagesTemplates/projects.tsx","webpack://code-cave/./src/types/common.type.ts"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IProjectPreviewQueryResult } from \"../../types/project.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { LocalBusinessMetadata } from \"../common/metadata\";\n\nconst ProjectPreview = ({\n project,\n className,\n theme,\n lang,\n}: {\n project: IProjectPreviewQueryResult;\n className?: string;\n theme: Theme;\n lang: TLang;\n}) => {\n const cover = getImage(project.frontmatter.cover);\n const { title, teamSize, duration } = project.frontmatter;\n\n const fontColorClass10 =\n theme === Theme.light\n ? \"text-main-100 hover:text-main-10\"\n : \"text-secondary-100 hover:text-secondary-10\";\n const bgColors =\n theme === Theme.light\n ? \"bg-secondary-100 hover:bg-secondary-100\"\n : \"bg-main-100 hover:bg-main-100\";\n\n return (\n \n
\n {cover ? (\n \n ) : null}\n
\n

\n {duration}\n

\n

\n {teamSize}\n

\n
\n
\n
\n \n {title}\n \n \n
\n \n \n );\n};\n\nexport default ProjectPreview;\n","import React from \"react\";\n\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\n\nimport { IProjectsPageContext, IProjectsPageData } from \"../types/project.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport ContentContainer from \"../components/common/contentContainer\";\nimport ProjectPreview from \"../components/projects/projectPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\n\nconst Projects = ({\n data,\n pageContext,\n}: PageProps) => {\n const projects = data.allMarkdownRemark.nodes;\n const { currentPage, pagesQuantity, lang, markupData } = pageContext;\n\n return (\n
\n

{markupData.head}

\n {/*

{markupData.bannerTitle}

*/}\n \n
\n {projects\n ? projects.map((project) => (\n \n ))\n : null}\n
\n {pagesQuantity > 1 ? (\n \n ) : null}\n
\n
\n );\n};\n\nexport default Projects;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps) => (\n \n);\n\nexport const query = graphql`\n query ($skip: Int!, $limit: Int!, $lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"projects\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n title\n teamSize\n duration\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsRepo: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n"],"names":["GenIcon","module","exports","props","theme","onClick","className","children","border","attr","colorClasses","Theme","dark","___EmotionJSX","_extends","_ref","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","length","_","i","nextPage","Link","to","Button","light","map","page","key","project","lang","cover","getImage","frontmatter","title","teamSize","duration","fontColorClass10","bgColors","id","itemScope","itemType","GatsbyImage","image","alt","itemProp","BsArrowUpRight","size","LocalBusinessMetadata","data","pageContext","projects","allMarkdownRemark","nodes","markupData","head","ContentContainer","maxWidthClass","ProjectPreview","Pagination","pagination","next","Head","_ref2","site","location","HeadSeo","bannerTitle","toUpperCase","siteUrl","description","path","pathname"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-templates-projects-tsx-efcf98f36bb35506a959.js","mappings":"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","sources":["webpack://code-cave/./node_modules/@react-icons/all-files/bs/BsArrowUpRight.js","webpack://code-cave/./src/components/common/button.tsx","webpack://code-cave/./src/components/common/pagination.tsx","webpack://code-cave/./src/components/projects/projectPreview.tsx","webpack://code-cave/./src/pagesTemplates/projects.tsx","webpack://code-cave/./src/types/common.type.ts"],"sourcesContent":["// THIS FILE IS AUTO GENERATED\nvar GenIcon = require('../lib').GenIcon\nmodule.exports.BsArrowUpRight = function BsArrowUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 16 16\",\"fill\":\"currentColor\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M6.5 4a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v5a.5.5 0 01-1 0V4.5H7a.5.5 0 01-.5-.5z\",\"clipRule\":\"evenodd\"}},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M12.354 3.646a.5.5 0 010 .708l-9 9a.5.5 0 01-.708-.708l9-9a.5.5 0 01.708 0z\",\"clipRule\":\"evenodd\"}}]})(props);\n};\n","import React from \"react\";\n\nimport { Theme } from \"../../types/common.type\";\n\ninterface IButtonProps extends React.ButtonHTMLAttributes {\n theme: Theme;\n onClick?: () => any;\n className?: string;\n border?: boolean;\n}\n\nconst Button = (props: React.PropsWithChildren) => {\n const { theme, onClick, className, children, border, ...attr } = props;\n\n const colorClasses = `${\n theme === Theme.dark\n ? \"bg-main-100 text-secondary-100 border-secondary-100 hover:bg-main-70\"\n : \"bg-secondary-100 text-main-100 border-main-100 hover:bg-secondary-30\"\n }`;\n\n return (\n \n {children}\n \n );\n};\n\nexport default Button;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Button from \"./button\";\n\nconst Pagination = ({\n section,\n pagesQuantity,\n currentPage,\n nextPageTitle,\n className,\n}: {\n section: \"projects\" | `blog${string}`;\n pagesQuantity: number;\n currentPage: number;\n nextPageTitle?: string;\n className?: string;\n}) => {\n const pages = Array.from({ length: pagesQuantity }, (_, i) => i + 1);\n const nextPage = currentPage + 1;\n\n return (\n
\n {currentPage < pagesQuantity ? (\n \n \n {nextPageTitle ?? \"Next page\"}\n \n \n ) : null}\n\n \n
\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport { GatsbyImage, getImage } from \"gatsby-plugin-image\";\n\nimport { IProjectPreviewQueryResult } from \"../../types/project.type\";\nimport { TLang, Theme } from \"../../types/common.type\";\n\nimport { BsArrowUpRight } from \"@react-icons/all-files/bs/BsArrowUpRight\";\n\nimport { LocalBusinessMetadata } from \"../common/metadata\";\n\nconst ProjectPreview = ({\n project,\n className,\n theme,\n lang,\n}: {\n project: IProjectPreviewQueryResult;\n className?: string;\n theme: Theme;\n lang: TLang;\n}) => {\n const cover = getImage(project.frontmatter.cover);\n const { title, teamSize, duration } = project.frontmatter;\n\n const fontColorClass10 =\n theme === Theme.light\n ? \"text-main-100 hover:text-main-10\"\n : \"text-secondary-100 hover:text-secondary-10\";\n const bgColors =\n theme === Theme.light\n ? \"bg-secondary-100 hover:bg-secondary-100\"\n : \"bg-main-100 hover:bg-main-100\";\n\n return (\n \n
\n {cover ? (\n \n ) : null}\n
\n

\n {duration}\n

\n

\n {teamSize}\n

\n
\n
\n
\n \n {title}\n \n \n
\n \n \n );\n};\n\nexport default ProjectPreview;\n","import React from \"react\";\n\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\n\nimport { IProjectsPageContext, IProjectsPageData } from \"../types/project.type\";\nimport { Theme } from \"../types/common.type\";\n\nimport ContentContainer from \"../components/common/contentContainer\";\nimport ProjectPreview from \"../components/projects/projectPreview\";\nimport Pagination from \"../components/common/pagination\";\nimport { HeadSeo } from \"../components/common/metadata\";\n\nconst Projects = ({\n data,\n pageContext,\n}: PageProps) => {\n const projects = data.allMarkdownRemark.nodes;\n const { currentPage, pagesQuantity, lang, markupData } = pageContext;\n\n return (\n
\n

{markupData.head}

\n {/*

{markupData.bannerTitle}

*/}\n \n
\n {projects\n ? projects.map((project) => (\n \n ))\n : null}\n
\n {pagesQuantity > 1 ? (\n \n ) : null}\n
\n
\n );\n};\n\nexport default Projects;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps) => (\n \n);\n\nexport const query = graphql`\n query ($skip: Int!, $limit: Int!, $lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"projects\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { date: DESC } }\n limit: $limit\n skip: $skip\n ) {\n nodes {\n id\n frontmatter {\n title\n teamSize\n duration\n cover {\n childImageSharp {\n gatsbyImageData(\n formats: [AUTO, WEBP, AVIF]\n placeholder: BLURRED\n width: 600\n )\n }\n }\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsSetup: ICommentsSetup;\n}\n\nexport interface ICommentsSetup {\n repo: `${string}/${string}`;\n repoId: string;\n categoryId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n"],"names":["GenIcon","module","exports","props","theme","onClick","className","children","border","attr","colorClasses","Theme","dark","___EmotionJSX","_extends","_ref","section","pagesQuantity","currentPage","nextPageTitle","pages","Array","from","length","_","i","nextPage","Link","to","Button","light","map","page","key","project","lang","cover","getImage","frontmatter","title","teamSize","duration","fontColorClass10","bgColors","id","itemScope","itemType","GatsbyImage","image","alt","itemProp","BsArrowUpRight","size","LocalBusinessMetadata","data","pageContext","projects","allMarkdownRemark","nodes","markupData","head","ContentContainer","maxWidthClass","ProjectPreview","Pagination","pagination","next","Head","_ref2","site","location","HeadSeo","bannerTitle","toUpperCase","siteUrl","description","path","pathname"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-templates-workflow-tsx-3b5bfd63b270d61e9cb0.js.map b/component---src-pages-templates-workflow-tsx-3b5bfd63b270d61e9cb0.js.map index ad3ad71e..6743e6d5 100644 --- a/component---src-pages-templates-workflow-tsx-3b5bfd63b270d61e9cb0.js.map +++ b/component---src-pages-templates-workflow-tsx-3b5bfd63b270d61e9cb0.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-templates-workflow-tsx-3b5bfd63b270d61e9cb0.js","mappings":"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","sources":["webpack://code-cave/./src/components/common/templateSection.tsx","webpack://code-cave/./src/components/workflow/workflowStep.tsx","webpack://code-cave/./src/components/whyUs/whyUsReason.tsx","webpack://code-cave/./src/components/whyUs/whyUsSection.tsx","webpack://code-cave/./src/pagesTemplates/workflow.tsx","webpack://code-cave/./src/types/common.type.ts"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\n\ninterface ITemplateSectionProps extends React.HTMLAttributes {\n title: string;\n theme: Theme;\n isArrowLink?: boolean;\n linkTitle?: string;\n subTitle?: string;\n section?: string;\n className?: string;\n borderT?: boolean;\n borderB?: boolean;\n}\n\nconst TemplateSection = ({\n section,\n theme,\n title,\n linkTitle,\n subTitle,\n className,\n children,\n borderT,\n borderB,\n isArrowLink = true,\n ...attr\n}: PropsWithChildren) => {\n const mainColorClass =\n theme === Theme.dark ? \"text-secondary-100\" : \"text-main-100\";\n const linkColorClass =\n theme === Theme.dark\n ? \"text-secondary-100 hover:text-secondary-70\"\n : \"text-main-100 hover:text-main-10\";\n const bgColorClass =\n theme === Theme.dark ? \"bg-main-100\" : \"bg-secondary-100\";\n\n return (\n <>\n {borderT ? : null}\n \n \n
\n

\n {title.toUpperCase()}\n

\n {section ? (\n \n {linkTitle ? linkTitle.toUpperCase() : \"DISCOVER MORE\"}{\" \"}\n {isArrowLink ? <>→ : null}\n \n ) : null}\n {subTitle ? (\n \n {subTitle.toUpperCase()}\n

\n ) : null}\n
\n {children}\n \n \n {borderB ? : null}\n \n );\n};\n\nexport default TemplateSection;\n","import React, { useEffect, useState, useRef } from \"react\";\n\nimport { IWorkflowStep } from \"../../types/workflow.type\";\n\nconst WorkflowStep = ({\n step,\n scroll,\n stepNumber,\n className,\n}: {\n step: IWorkflowStep;\n scroll: boolean;\n stepNumber: number;\n className?: string;\n}) => {\n const div = useRef(null);\n const [coverWidth, setCoverWidth] = useState<\"w-[100%]\" | \"w-0\">(\"w-[100%]\");\n\n useEffect(() => {\n if (!div.current || !window) return;\n const divBottom = div.current.getBoundingClientRect().bottom;\n\n if (window.innerHeight > divBottom) setCoverWidth(\"w-0\");\n }, [scroll]);\n\n const {\n html,\n frontmatter: { title },\n } = step;\n\n return (\n \n \n

\n {stepNumber}\n

\n
\n

{title}

\n \n
\n \n );\n};\n\nexport default WorkflowStep;\n","import React from \"react\";\n\nimport { IWhyUsReason } from \"../../types/whyUs.type\";\n\nconst WhyUsReason = ({\n reason: {\n frontmatter: { title },\n html,\n },\n className,\n}: {\n reason: IWhyUsReason;\n className?: string;\n}) => {\n return (\n \n

{title}

\n \n \n \n );\n};\n\nexport default WhyUsReason;\n","import React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport { IWhyUsQueryResult, IWhyUsReason } from \"../../types/whyUs.type\";\nimport { ILang, Theme } from \"../../types/common.type\";\n\nimport TemplateSection from \"../common/templateSection\";\nimport WhyUsReason from \"./whyUsReason\";\n\nconst WhyUsSection = ({ lang }: ILang) => {\n const whyUsQueryData = useStaticQuery(query) as IWhyUsQueryResult;\n\n let whyUsReasons: IWhyUsReason[] | null | undefined;\n if (lang in whyUsQueryData)\n whyUsReasons = whyUsQueryData?.[lang]?.nodes as\n | IWhyUsReason[]\n | null\n | undefined;\n else whyUsQueryData?.en?.nodes;\n\n const sectionTitle =\n whyUsQueryData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.whyUs?.title ?? \"why us\";\n\n return (\n <>\n {whyUsReasons?.length ? (\n \n
\n
\n {whyUsReasons.map(\n (reason, i) =>\n i % 2 === 0 && \n )}\n
\n
\n {whyUsReasons.map(\n (reason, i) =>\n i % 2 != 0 && \n )}\n
\n
\n
\n ) : null}\n \n );\n};\n\nexport default WhyUsSection;\n\nconst query = graphql`\n {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"whyUs\" }, language: { eq: \"en\" } }\n }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n }\n fields {\n language\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"whyUs\" }, language: { eq: \"ru\" } }\n }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n }\n fields {\n language\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n whyUs {\n title\n }\n }\n }\n }\n }\n`;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\nimport { getImage } from \"gatsby-plugin-image\";\n\nimport {\n IWorkflowPageContext,\n IWorkflowStepsQueryResult,\n} from \"../types/workflow.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport WorkflowStep from \"../components/workflow/workflowStep\";\nimport WhyUsSection from \"../components/whyUs/whyUsSection\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport Border from \"../assets/common/border.svg\";\nimport ContactFormSection from \"../components/forms/contactFormSection\";\n\nconst Workflow = ({\n data,\n pageContext: { markupData, lang },\n}: PageProps) => {\n const workflowSteps = data.allMarkdownRemark.nodes;\n const bannerImage = getImage(markupData.image);\n\n const isInitial = useRef(true);\n const [scroll, setScroll] = useState(false);\n\n const scrollHandler = () => {\n setScroll((scroll) => !scroll);\n };\n\n useEffect(() => {\n if (!isInitial.current || !window) return;\n isInitial.current = false;\n\n window.addEventListener(\"scroll\", scrollHandler);\n\n return () => window.removeEventListener(\"scroll\", scrollHandler);\n }, []);\n\n return (\n <>\n \n
\n \n {workflowSteps\n ? workflowSteps.map((step, i) => (\n \n ))\n : null}\n \n \n
\n \n \n \n );\n};\n\nexport default Workflow;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps) => (\n \n);\n\nexport const query = graphql`\n query ($lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"workflow\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { step: ASC } }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n image {\n publicURL\n }\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsRepo: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n"],"names":["_ref","section","theme","title","linkTitle","subTitle","className","children","borderT","borderB","isArrowLink","attr","mainColorClass","Theme","dark","linkColorClass","bgColorClass","___EmotionJSX","React","Border","_extends","ContentContainer","maxWidthClass","toUpperCase","Link","to","step","scroll","stepNumber","div","useRef","coverWidth","setCoverWidth","useState","useEffect","current","window","divBottom","getBoundingClientRect","bottom","innerHeight","html","frontmatter","ref","dangerouslySetInnerHTML","__html","reason","_whyUsQueryData$lang","_whyUsQueryData$en","_whyUsQueryData$marku","_whyUsQueryData$marku2","_whyUsQueryData$marku3","_whyUsQueryData$marku4","_whyUsQueryData$marku5","_whyUsQueryData$marku6","_whyUsReasons","lang","whyUsQueryData","useStaticQuery","query","whyUsReasons","nodes","en","sectionTitle","markupData","find","node","fields","language","whyUs","length","TemplateSection","map","i","WhyUsReason","key","id","data","pageContext","workflowSteps","allMarkdownRemark","bannerImage","getImage","image","isInitial","setScroll","scrollHandler","addEventListener","removeEventListener","Banner","heightClass","bannerTitle","borderBottom","WorkflowStep","WhyUsSection","ContactFormSection","Head","_ref2","site","location","HeadSeo","head","description","siteUrl","path","pathname"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-templates-workflow-tsx-3b5bfd63b270d61e9cb0.js","mappings":"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","sources":["webpack://code-cave/./src/components/common/templateSection.tsx","webpack://code-cave/./src/components/workflow/workflowStep.tsx","webpack://code-cave/./src/components/whyUs/whyUsReason.tsx","webpack://code-cave/./src/components/whyUs/whyUsSection.tsx","webpack://code-cave/./src/pagesTemplates/workflow.tsx","webpack://code-cave/./src/types/common.type.ts"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\nimport { Link } from \"gatsby\";\n\nimport { Theme } from \"../../types/common.type\";\n\nimport Border from \"../../assets/common/border.svg\";\n\nimport ContentContainer from \"./contentContainer\";\n\ninterface ITemplateSectionProps extends React.HTMLAttributes {\n title: string;\n theme: Theme;\n isArrowLink?: boolean;\n linkTitle?: string;\n subTitle?: string;\n section?: string;\n className?: string;\n borderT?: boolean;\n borderB?: boolean;\n}\n\nconst TemplateSection = ({\n section,\n theme,\n title,\n linkTitle,\n subTitle,\n className,\n children,\n borderT,\n borderB,\n isArrowLink = true,\n ...attr\n}: PropsWithChildren) => {\n const mainColorClass =\n theme === Theme.dark ? \"text-secondary-100\" : \"text-main-100\";\n const linkColorClass =\n theme === Theme.dark\n ? \"text-secondary-100 hover:text-secondary-70\"\n : \"text-main-100 hover:text-main-10\";\n const bgColorClass =\n theme === Theme.dark ? \"bg-main-100\" : \"bg-secondary-100\";\n\n return (\n <>\n {borderT ? : null}\n \n \n
\n

\n {title.toUpperCase()}\n

\n {section ? (\n \n {linkTitle ? linkTitle.toUpperCase() : \"DISCOVER MORE\"}{\" \"}\n {isArrowLink ? <>→ : null}\n \n ) : null}\n {subTitle ? (\n \n {subTitle.toUpperCase()}\n

\n ) : null}\n
\n {children}\n \n \n {borderB ? : null}\n \n );\n};\n\nexport default TemplateSection;\n","import React, { useEffect, useState, useRef } from \"react\";\n\nimport { IWorkflowStep } from \"../../types/workflow.type\";\n\nconst WorkflowStep = ({\n step,\n scroll,\n stepNumber,\n className,\n}: {\n step: IWorkflowStep;\n scroll: boolean;\n stepNumber: number;\n className?: string;\n}) => {\n const div = useRef(null);\n const [coverWidth, setCoverWidth] = useState<\"w-[100%]\" | \"w-0\">(\"w-[100%]\");\n\n useEffect(() => {\n if (!div.current || !window) return;\n const divBottom = div.current.getBoundingClientRect().bottom;\n\n if (window.innerHeight > divBottom) setCoverWidth(\"w-0\");\n }, [scroll]);\n\n const {\n html,\n frontmatter: { title },\n } = step;\n\n return (\n \n \n

\n {stepNumber}\n

\n
\n

{title}

\n \n
\n \n );\n};\n\nexport default WorkflowStep;\n","import React from \"react\";\n\nimport { IWhyUsReason } from \"../../types/whyUs.type\";\n\nconst WhyUsReason = ({\n reason: {\n frontmatter: { title },\n html,\n },\n className,\n}: {\n reason: IWhyUsReason;\n className?: string;\n}) => {\n return (\n \n

{title}

\n \n \n \n );\n};\n\nexport default WhyUsReason;\n","import React from \"react\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nimport { IWhyUsQueryResult, IWhyUsReason } from \"../../types/whyUs.type\";\nimport { ILang, Theme } from \"../../types/common.type\";\n\nimport TemplateSection from \"../common/templateSection\";\nimport WhyUsReason from \"./whyUsReason\";\n\nconst WhyUsSection = ({ lang }: ILang) => {\n const whyUsQueryData = useStaticQuery(query) as IWhyUsQueryResult;\n\n let whyUsReasons: IWhyUsReason[] | null | undefined;\n if (lang in whyUsQueryData)\n whyUsReasons = whyUsQueryData?.[lang]?.nodes as\n | IWhyUsReason[]\n | null\n | undefined;\n else whyUsQueryData?.en?.nodes;\n\n const sectionTitle =\n whyUsQueryData?.markupData?.nodes?.find(\n (node) => node.fields.language === lang\n )?.frontmatter?.whyUs?.title ?? \"why us\";\n\n return (\n <>\n {whyUsReasons?.length ? (\n \n
\n
\n {whyUsReasons.map(\n (reason, i) =>\n i % 2 === 0 && \n )}\n
\n
\n {whyUsReasons.map(\n (reason, i) =>\n i % 2 != 0 && \n )}\n
\n
\n
\n ) : null}\n \n );\n};\n\nexport default WhyUsSection;\n\nconst query = graphql`\n {\n en: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"whyUs\" }, language: { eq: \"en\" } }\n }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n }\n fields {\n language\n }\n }\n }\n ru: allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"whyUs\" }, language: { eq: \"ru\" } }\n }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n }\n fields {\n language\n }\n }\n }\n markupData: allMarkdownRemark(\n filter: { fields: { sourceName: { eq: \"common\" } } }\n sort: { frontmatter: { order: ASC } }\n ) {\n nodes {\n fields {\n language\n }\n frontmatter {\n whyUs {\n title\n }\n }\n }\n }\n }\n`;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\nimport { getImage } from \"gatsby-plugin-image\";\n\nimport {\n IWorkflowPageContext,\n IWorkflowStepsQueryResult,\n} from \"../types/workflow.type\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport WorkflowStep from \"../components/workflow/workflowStep\";\nimport WhyUsSection from \"../components/whyUs/whyUsSection\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport Border from \"../assets/common/border.svg\";\nimport ContactFormSection from \"../components/forms/contactFormSection\";\n\nconst Workflow = ({\n data,\n pageContext: { markupData, lang },\n}: PageProps) => {\n const workflowSteps = data.allMarkdownRemark.nodes;\n const bannerImage = getImage(markupData.image);\n\n const isInitial = useRef(true);\n const [scroll, setScroll] = useState(false);\n\n const scrollHandler = () => {\n setScroll((scroll) => !scroll);\n };\n\n useEffect(() => {\n if (!isInitial.current || !window) return;\n isInitial.current = false;\n\n window.addEventListener(\"scroll\", scrollHandler);\n\n return () => window.removeEventListener(\"scroll\", scrollHandler);\n }, []);\n\n return (\n <>\n \n
\n \n {workflowSteps\n ? workflowSteps.map((step, i) => (\n \n ))\n : null}\n \n \n
\n \n \n \n );\n};\n\nexport default Workflow;\n\nexport const Head: HeadFC = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps) => (\n \n);\n\nexport const query = graphql`\n query ($lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"workflow\" }, language: { eq: $lang } }\n }\n sort: { frontmatter: { step: ASC } }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n image {\n publicURL\n }\n }\n }\n }\n }\n`;\n","export interface ILang {\n lang: TLang;\n}\n\nexport type TLang = \"en\" | \"ru\";\n\nexport type TLinks = \"services\" | \"workflow\" | \"projects\" | \"blog\";\n\nexport interface IBasePageContext extends ILang {\n site: ISiteMetadata;\n}\n\nexport interface IMdQueryResult {\n allMarkdownRemark: {\n nodes: T[];\n };\n}\n\nexport interface ISiteMetadata {\n title: string;\n description: string;\n siteUrl: string;\n image: string;\n analyticsId: string;\n commentsSetup: ICommentsSetup;\n}\n\nexport interface ICommentsSetup {\n repo: `${string}/${string}`;\n repoId: string;\n categoryId: string;\n}\n\nexport enum Theme {\n dark = \"dark\",\n light = \"light\",\n}\n"],"names":["_ref","section","theme","title","linkTitle","subTitle","className","children","borderT","borderB","isArrowLink","attr","mainColorClass","Theme","dark","linkColorClass","bgColorClass","___EmotionJSX","React","Border","_extends","ContentContainer","maxWidthClass","toUpperCase","Link","to","step","scroll","stepNumber","div","useRef","coverWidth","setCoverWidth","useState","useEffect","current","window","divBottom","getBoundingClientRect","bottom","innerHeight","html","frontmatter","ref","dangerouslySetInnerHTML","__html","reason","_whyUsQueryData$lang","_whyUsQueryData$en","_whyUsQueryData$marku","_whyUsQueryData$marku2","_whyUsQueryData$marku3","_whyUsQueryData$marku4","_whyUsQueryData$marku5","_whyUsQueryData$marku6","_whyUsReasons","lang","whyUsQueryData","useStaticQuery","query","whyUsReasons","nodes","en","sectionTitle","markupData","find","node","fields","language","whyUs","length","TemplateSection","map","i","WhyUsReason","key","id","data","pageContext","workflowSteps","allMarkdownRemark","bannerImage","getImage","image","isInitial","setScroll","scrollHandler","addEventListener","removeEventListener","Banner","heightClass","bannerTitle","borderBottom","WorkflowStep","WhyUsSection","ContactFormSection","Head","_ref2","site","location","HeadSeo","head","description","siteUrl","path","pathname"],"sourceRoot":""} \ No newline at end of file diff --git a/cookie-policy/index.html b/cookie-policy/index.html index bf604acf..cef02605 100644 --- a/cookie-policy/index.html +++ b/cookie-policy/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/index.html b/index.html index 4d07cf87..662b1e4a 100644 --- a/index.html +++ b/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/page-data/app-data.json b/page-data/app-data.json index bde924cb..c861499d 100644 --- a/page-data/app-data.json +++ b/page-data/app-data.json @@ -1 +1 @@ -{"webpackCompilationHash":"bc0f3264ebc8ce50e681"} +{"webpackCompilationHash":"a413b43c33ecf5a04780"} diff --git a/page-data/blog/10582553-73a2-569f-8bdd-980e1f77c10a/page-data.json b/page-data/blog/10582553-73a2-569f-8bdd-980e1f77c10a/page-data.json index fa7b8897..db73a5bb 100644 --- a/page-data/blog/10582553-73a2-569f-8bdd-980e1f77c10a/page-data.json +++ b/page-data/blog/10582553-73a2-569f-8bdd-980e1f77c10a/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/10582553-73a2-569f-8bdd-980e1f77c10a/","result":{"data":{"post":{"frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","keywords":["devops","azure devops","confluence","changelog"]},"html":"

Streamlining Changelog Creation with Azure DevOps and Confluence

\n

In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.

\n

\n \n \n \n \n \n \n \n \n \n \n
Self-Hosted build Agent for Azure Pipelines
\n

\n

By the end of this article, you will have a script that automates the extraction of changelog information from the latest and previous versions of a repository using Git commands. It then uses the ConfluencePS module to create a new Confluence page displaying the changelog. The script is configured to run in Azure Pipelines under certain conditions, such as when a new tag is created in the repository.

\n

Let’s start!

\n

What do we need?

\n
    \n
  1. Receive release information.
  2. \n
  3. Retrieving the changelog between previous and latest version.
  4. \n
  5. Create a Confluence page.
  6. \n
  7. Integration with Azure pipelines.
  8. \n
\n

Let's start by preparing Confluence to create a new changelogs folder. To do this we need to follow these steps:

\n

Step 1: Creating a Parent Page:

\n
    \n
  • Sign in to your Confluence account.
  • \n
  • Go to the Space where you want to create the changelogs folder.
  • \n
  • Create a new page that will serve as the parent page for all future changelogs pages. This can be done by selecting \"Create\" and following the instructions to create a page.
  • \n
\n

Step 2: Getting SpaceKey:

\n
    \n
  • The SpaceKey is usually shown in the URL when you are in a Confluence space.
  • \n
  • If the key does not appear in the URL, you can find it by going to Space tools > Overview > Space details.
  • \n
\n

Step 3: Getting Parent Page ID:

\n
    \n
  • The Parent Page ID (ParentID) can be found in the URL when you are on the page that will serve as the parent of changelogs. In the page URL, look at the pageId parameter, this will be the ParentID.
  • \n
\n

Step 4: Confluence Site URL entry:

\n\n

You now have all the information you need to create new changelogs pages using the script.

\n
\n

[⚠️ Warning:]Make sure you have the appropriate permissions to create and edit pages in your chosen Confluence space.

\n
\n

Step 5: Creating PowerShell Script

\n

Now we create a file confluence.ps1 in the root of our repository.

\n

Firstly our script gets a list of changes between these versions. (Line 1-11)

\n

Next the script creates a new Confluence page that displays the change log, using the ConfluencePS module, passes it to the environment variable for our pipeline. (Line 13-33)

\n
Param ([String]$username, [String]$password) # Get username and password options from Azure Pipeline\n$repoPath = \".\" # Set the repository path as the current directory\n$currentVersion = git describe --abbrev=0 HEAD  # Get the latest version of the repository using git\n# Write-Host $currentVersion\n$prevVersion = git describe --abbrev=0 $currentVersion^  #Get the previous version of the repository using git\n# Write-Host $prevVersion\n$changelog = git log --no-merges --pretty=\"- %s<br />\" \"$prevVersion..$currentVersion\"  #Get the list of changes between the two versions using git\n# Write-Host $changelog\n# exit -0\n$confluenceUrl = \"https://your.atlassian.net/wiki\"  #Set the Confluence URL\n$securePassword = $password | ConvertTo-SecureString -AsPlainText -Force #Convert the password to a secure string\n$credentials = New-Object System.Management.Automation.PSCredential `\n     -ArgumentList $username, $securePassword   #Create a credential object for Confluence\n#Check if the module ConfluencePS is installed\nif (-not (Get-Module -Name ConfluencePS -ListAvailable)) {\n    Install-Module -Name ConfluencePS -Scope CurrentUser -Force\n}\nImport-Module ConfluencePS # Import the module ConfluencePS\nSet-ConfluenceInfo -BaseURI $confluenceUrl -Credential $credentials   #Set the information about Confluence using the URL and credentials\n$body = @\"\n<h2>What's new in comparison with version $prevVersion</h2>\n<pre>$changelog</pre>\n\"@\n$page = New-ConfluencePage -Title \"What's new in $currentVersion\" -SpaceKey YOURSPACEKEY -ParentID YOUR_PARENT_ID -Body $body  #Create a new Confluence page with the given title, space key and body\n$pageObj = Get-ConfluencePage -PageID $page.ID     # Get the Confluence page object by ID\nWrite-Output $pageObj.URL     #Print the page URL to the screen\nWrite-Host \"##vso[task.setvariable variable=confluenceUrl]$($pageObj.URL)\"    #Set the variable confluenceUrl for Azure Pipeline using the page URL
\n
\n

[⚠️ Warning:] To use this script, you need to change the following:
> $confluenceUrl to your Confluence site URL. (line 13)

\n
\n

YOURSPACEKEY on the key of your space in Confluence. (line 30)
\nYOUR_PARENT_ID on the ID of the parent page where the new page is to be created. (line 30)
\n• Make sure you have Git installed and available in your script path.
\n• Make sure you have rights to create pages in the specified Confluence space.
\n• If you are not using Azure Pipeline, remove or modify the lines associated with Write-Host \"##vso[task.setvariable variable=confluenceUrl]$($pageObj.URL)\" to suit your runtime environment.

\n

In the script, you can experiment with the body of the page and the list of data that you want to send to the changelog.

\n

Step 6: Integration with Azure pipelines.

\n

The task is configured to run in Azure Pipelines and only runs under certain conditions, such as when a new tag is created in the repository.\n$USERNAME and $PASSWORD variables are stored in pipeline secrets and are passed during pipeline startup. The task causes our script to run.

\n
Azure Pipeline Task\n\n- task: PowerShell@2\n  condition: and(not(eq(variables['Build.Reason'], 'PullRequest')), BeginsWith(variables['Build.SourceBranch'], 'refs/tags/'))\n  displayName: Create a changelog and create a page in Confluence.\n  inputs:\n    file path: .\\confluence.ps1\n    arguments: '-username $(USERNAME) -password $(PASSWORD)'
\n

Add it to your Azure pipeline. As a result, we have a page with changes!

\n

Conclusion

\n

Automating change logs with Azure DevOps and Confluence simplifies the documentation process and keeps information up to date. This approach allows teams to focus on development, leaving the routine work of documenting changes.

\n

This blog provides a high-level overview of the integration process and can serve as a starting point for teams looking to improve their change management processes. We hope it was useful.

\n

We wish you a great mood and interesting tasks!

","wordCount":{"words":722}},"author":{"frontmatter":{"authorAlias":"Podryabinkina","author":"Alina Podryabinkina","authorPosition":"DevOps Engineer","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFbElEQVR42lWSiVPSaRjHf2ur8Du4BDVFVBRFKwhQDm/EEvFC8wKtPKFMbb0qNa0pa7dZK9NJrbTNjMQDvEIRFfHWwANrdmd3/5p90cmZnXnmnWfeeT7P9zvf94W2F/S7llG71bi/ajxYnfq2teDcMn/fnt+xjD6oLlKIwqVcZgSdFhXKyI7nNWtVzo0vf35dPNqaP9qagwC5uzjqWAHw1MHqtHPDDPhdy8i9UuVlfog8MjQ2IlAli72RlawQc/wphOJM2dflib8cy86NY9i+NL5nNRzYDIerkwerM0ebpu62G1mSiDxZZHbshfay3L0ZnU3XP/b8YVNJbiCNXJGv+LY9v79ugoCsfWnMsQz4cefa9NHmnG1qUJMRXZAcVZoZXyIXfuho+LY6t2cet09/WtX1lytTRGzGl+GXdusUUNYD0mGd2FsxHK5NH26Y+h/VZonCSjLitXmyluIUq67/X/um0zqzM/NpTf/utzqNJDzgj87mLfMotLvkUgbk/orBuTm7bhquzU/KFIaVZcbdLpB21V93Wk1/79gOlyftJr1V1/dAoxYE+rxs0W6a9ZB9eQzI7ruUJ452TLqedrWMV5jAqVMladNFpZdiOirU62MDh4vG7anhhcGu2vw0Mcv3WZ162TgIOZbH9q1AFqQ9aV8xPL5VcCU6ouZKbEdlelO+vDontfeXsjX9W+OrDo1CWiJPSLwYrohiv2ouN+v7oOOoJlye16ct4723smIq04S3M4Rv60u+z4/vzY5sTw475sYG2xvVSTFyTiifFSAXsF61li8aBqBjzwbHysTB+sybjtrKVEGjKlGTxJ3vevSPbeFoaXbPNLpj/GR+37P45kV3vYbD9Eu5GNTdVmmb/eiyDZQP1qbWvwzdLUq+nRffmB9XIeOPP2u1fXxt072xDfWujQzMvP593zDce6cmzJemFLJeP9Cumj6DwPQgs4ONmeHnd7SpvKai5NocSZmUO9n31DLUszLQYxnsGrxf8/lpy0LvswwxP4xOzYtmPdTmbC2MQl8X9Y4Vw7pp6Nfq7KoMYZNaWqMUpZzz62mtso0OTNfVW+qahrTlEz2PmkquYB7unCCvVB6jMl2ybRmDdiyfwcce6my8o0poUCVWZYk0qXw+w7Mgjmse7t6d1c8+eaBrqbt/s/gc0+8c0zfcjyIO8UrjBS2AtMEnmf7Q+bAy/V7J5XpV4nXZhauy86yzZAGLUadKN77rmhvp06iVVALK8CLTKQQGBePQKZJgb+NgJwRyetFY3KrJvFsmv6UU54hDc+PYdCoRQzEYD3sSMLoXze0nNwqZSKeRfQgonUzww/Ayfph18j3U3aYtlIvz5ZLGq7LSyxcVAmZKZLA3lUQhe8Iw9rM7zu2MO4ygBAwlIngiHkcjIAFUQjIvuLk8G+KFh1xgBxelRTcUSvNjwrPELCHbD4ExIpEMw+hJ4fEIgqCgA2aoGMI86wky5wbQoOCggEuxgsbrqTVKSY4oNCeG7e9FxsMoihIQBDshf6yAQVFQ2IuE+VJJ/jQKFMmNuJaV0K7NqJALipM4SfwQnAslAPH/k64Gh0dJKOpFxKgkAoVIgERcdnWxvK0sRaOILFFE+Xp5euBgMHcMY/Cx+Al8XCgRw8LoNLq3J9OPBkl47LabGfeK4huuJvEjmO4eMHB7MgpgcOJwMM5l2HWDwCA4LJxOpdMoPp5kKDdF+KQqtfmaVCo+jz91iD+VcvVgC8AQmIgiRLD6fKA3iofdPfBQvTrhcXmCMoGDYkTwJMdSP7DTqI9JF4wS8HhMEOZPIxGAR6ilUFyWygv090UQEoaQwBwMCg8Mn6Z1kpyrUATzwCHcUEagD9XtjMd/4LIQtzGUCroAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg","srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/1f64c/author.jpg 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/af0fe/author.jpg 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/464e8/author.jpg 128w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/8cd5f/author.avif 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/34a4f/author.avif 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/d6ed5/author.avif 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/8b866/author.avif 128w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/94d43/author.webp 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/6c901/author.webp 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/aa76d/author.webp 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/5e01a/author.webp 128w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":80}}}}}},"pageContext":{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Podryabinkina","authorId":"b52b7674-8be1-5af8-b32b-a7bb5f1b4ac9"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/10582553-73a2-569f-8bdd-980e1f77c10a/","result":{"data":{"post":{"frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","keywords":["devops","azure devops","confluence","changelog"]},"html":"

Streamlining Changelog Creation with Azure DevOps and Confluence

\n

In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.

\n

\n \n \n \n \n \n \n \n \n \n \n
Self-Hosted build Agent for Azure Pipelines
\n

\n

By the end of this article, you will have a script that automates the extraction of changelog information from the latest and previous versions of a repository using Git commands. It then uses the ConfluencePS module to create a new Confluence page displaying the changelog. The script is configured to run in Azure Pipelines under certain conditions, such as when a new tag is created in the repository.

\n

Let’s start!

\n

What do we need?

\n
    \n
  1. Receive release information.
  2. \n
  3. Retrieving the changelog between previous and latest version.
  4. \n
  5. Create a Confluence page.
  6. \n
  7. Integration with Azure pipelines.
  8. \n
\n

Let's start by preparing Confluence to create a new changelogs folder. To do this we need to follow these steps:

\n

Step 1: Creating a Parent Page:

\n
    \n
  • Sign in to your Confluence account.
  • \n
  • Go to the Space where you want to create the changelogs folder.
  • \n
  • Create a new page that will serve as the parent page for all future changelogs pages. This can be done by selecting \"Create\" and following the instructions to create a page.
  • \n
\n

Step 2: Getting SpaceKey:

\n
    \n
  • The SpaceKey is usually shown in the URL when you are in a Confluence space.
  • \n
  • If the key does not appear in the URL, you can find it by going to Space tools > Overview > Space details.
  • \n
\n

Step 3: Getting Parent Page ID:

\n
    \n
  • The Parent Page ID (ParentID) can be found in the URL when you are on the page that will serve as the parent of changelogs. In the page URL, look at the pageId parameter, this will be the ParentID.
  • \n
\n

Step 4: Confluence Site URL entry:

\n\n

You now have all the information you need to create new changelogs pages using the script.

\n
\n

[⚠️ Warning:]Make sure you have the appropriate permissions to create and edit pages in your chosen Confluence space.

\n
\n

Step 5: Creating PowerShell Script

\n

Now we create a file confluence.ps1 in the root of our repository.

\n

Firstly our script gets a list of changes between these versions. (Line 1-11)

\n

Next the script creates a new Confluence page that displays the change log, using the ConfluencePS module, passes it to the environment variable for our pipeline. (Line 13-33)

\n
Param ([String]$username, [String]$password) # Get username and password options from Azure Pipeline\n$repoPath = \".\" # Set the repository path as the current directory\n$currentVersion = git describe --abbrev=0 HEAD  # Get the latest version of the repository using git\n# Write-Host $currentVersion\n$prevVersion = git describe --abbrev=0 $currentVersion^  #Get the previous version of the repository using git\n# Write-Host $prevVersion\n$changelog = git log --no-merges --pretty=\"- %s<br />\" \"$prevVersion..$currentVersion\"  #Get the list of changes between the two versions using git\n# Write-Host $changelog\n# exit -0\n$confluenceUrl = \"https://your.atlassian.net/wiki\"  #Set the Confluence URL\n$securePassword = $password | ConvertTo-SecureString -AsPlainText -Force #Convert the password to a secure string\n$credentials = New-Object System.Management.Automation.PSCredential `\n     -ArgumentList $username, $securePassword   #Create a credential object for Confluence\n#Check if the module ConfluencePS is installed\nif (-not (Get-Module -Name ConfluencePS -ListAvailable)) {\n    Install-Module -Name ConfluencePS -Scope CurrentUser -Force\n}\nImport-Module ConfluencePS # Import the module ConfluencePS\nSet-ConfluenceInfo -BaseURI $confluenceUrl -Credential $credentials   #Set the information about Confluence using the URL and credentials\n$body = @\"\n<h2>What's new in comparison with version $prevVersion</h2>\n<pre>$changelog</pre>\n\"@\n$page = New-ConfluencePage -Title \"What's new in $currentVersion\" -SpaceKey YOURSPACEKEY -ParentID YOUR_PARENT_ID -Body $body  #Create a new Confluence page with the given title, space key and body\n$pageObj = Get-ConfluencePage -PageID $page.ID     # Get the Confluence page object by ID\nWrite-Output $pageObj.URL     #Print the page URL to the screen\nWrite-Host \"##vso[task.setvariable variable=confluenceUrl]$($pageObj.URL)\"    #Set the variable confluenceUrl for Azure Pipeline using the page URL
\n
\n

[⚠️ Warning:] To use this script, you need to change the following:
> $confluenceUrl to your Confluence site URL. (line 13)

\n
\n

YOURSPACEKEY on the key of your space in Confluence. (line 30)
\nYOUR_PARENT_ID on the ID of the parent page where the new page is to be created. (line 30)
\n• Make sure you have Git installed and available in your script path.
\n• Make sure you have rights to create pages in the specified Confluence space.
\n• If you are not using Azure Pipeline, remove or modify the lines associated with Write-Host \"##vso[task.setvariable variable=confluenceUrl]$($pageObj.URL)\" to suit your runtime environment.

\n

In the script, you can experiment with the body of the page and the list of data that you want to send to the changelog.

\n

Step 6: Integration with Azure pipelines.

\n

The task is configured to run in Azure Pipelines and only runs under certain conditions, such as when a new tag is created in the repository.\n$USERNAME and $PASSWORD variables are stored in pipeline secrets and are passed during pipeline startup. The task causes our script to run.

\n
Azure Pipeline Task\n\n- task: PowerShell@2\n  condition: and(not(eq(variables['Build.Reason'], 'PullRequest')), BeginsWith(variables['Build.SourceBranch'], 'refs/tags/'))\n  displayName: Create a changelog and create a page in Confluence.\n  inputs:\n    file path: .\\confluence.ps1\n    arguments: '-username $(USERNAME) -password $(PASSWORD)'
\n

Add it to your Azure pipeline. As a result, we have a page with changes!

\n

Conclusion

\n

Automating change logs with Azure DevOps and Confluence simplifies the documentation process and keeps information up to date. This approach allows teams to focus on development, leaving the routine work of documenting changes.

\n

This blog provides a high-level overview of the integration process and can serve as a starting point for teams looking to improve their change management processes. We hope it was useful.

\n

We wish you a great mood and interesting tasks!

","wordCount":{"words":722}},"author":{"frontmatter":{"authorAlias":"Podryabinkina","author":"Alina Podryabinkina","authorPosition":"DevOps Engineer","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFbElEQVR42lWSiVPSaRjHf2ur8Du4BDVFVBRFKwhQDm/EEvFC8wKtPKFMbb0qNa0pa7dZK9NJrbTNjMQDvEIRFfHWwANrdmd3/5p90cmZnXnmnWfeeT7P9zvf94W2F/S7llG71bi/ajxYnfq2teDcMn/fnt+xjD6oLlKIwqVcZgSdFhXKyI7nNWtVzo0vf35dPNqaP9qagwC5uzjqWAHw1MHqtHPDDPhdy8i9UuVlfog8MjQ2IlAli72RlawQc/wphOJM2dflib8cy86NY9i+NL5nNRzYDIerkwerM0ebpu62G1mSiDxZZHbshfay3L0ZnU3XP/b8YVNJbiCNXJGv+LY9v79ugoCsfWnMsQz4cefa9NHmnG1qUJMRXZAcVZoZXyIXfuho+LY6t2cet09/WtX1lytTRGzGl+GXdusUUNYD0mGd2FsxHK5NH26Y+h/VZonCSjLitXmyluIUq67/X/um0zqzM/NpTf/utzqNJDzgj87mLfMotLvkUgbk/orBuTm7bhquzU/KFIaVZcbdLpB21V93Wk1/79gOlyftJr1V1/dAoxYE+rxs0W6a9ZB9eQzI7ruUJ452TLqedrWMV5jAqVMladNFpZdiOirU62MDh4vG7anhhcGu2vw0Mcv3WZ162TgIOZbH9q1AFqQ9aV8xPL5VcCU6ouZKbEdlelO+vDontfeXsjX9W+OrDo1CWiJPSLwYrohiv2ouN+v7oOOoJlye16ct4723smIq04S3M4Rv60u+z4/vzY5sTw475sYG2xvVSTFyTiifFSAXsF61li8aBqBjzwbHysTB+sybjtrKVEGjKlGTxJ3vevSPbeFoaXbPNLpj/GR+37P45kV3vYbD9Eu5GNTdVmmb/eiyDZQP1qbWvwzdLUq+nRffmB9XIeOPP2u1fXxt072xDfWujQzMvP593zDce6cmzJemFLJeP9Cumj6DwPQgs4ONmeHnd7SpvKai5NocSZmUO9n31DLUszLQYxnsGrxf8/lpy0LvswwxP4xOzYtmPdTmbC2MQl8X9Y4Vw7pp6Nfq7KoMYZNaWqMUpZzz62mtso0OTNfVW+qahrTlEz2PmkquYB7unCCvVB6jMl2ybRmDdiyfwcce6my8o0poUCVWZYk0qXw+w7Mgjmse7t6d1c8+eaBrqbt/s/gc0+8c0zfcjyIO8UrjBS2AtMEnmf7Q+bAy/V7J5XpV4nXZhauy86yzZAGLUadKN77rmhvp06iVVALK8CLTKQQGBePQKZJgb+NgJwRyetFY3KrJvFsmv6UU54hDc+PYdCoRQzEYD3sSMLoXze0nNwqZSKeRfQgonUzww/Ayfph18j3U3aYtlIvz5ZLGq7LSyxcVAmZKZLA3lUQhe8Iw9rM7zu2MO4ygBAwlIngiHkcjIAFUQjIvuLk8G+KFh1xgBxelRTcUSvNjwrPELCHbD4ExIpEMw+hJ4fEIgqCgA2aoGMI86wky5wbQoOCggEuxgsbrqTVKSY4oNCeG7e9FxsMoihIQBDshf6yAQVFQ2IuE+VJJ/jQKFMmNuJaV0K7NqJALipM4SfwQnAslAPH/k64Gh0dJKOpFxKgkAoVIgERcdnWxvK0sRaOILFFE+Xp5euBgMHcMY/Cx+Al8XCgRw8LoNLq3J9OPBkl47LabGfeK4huuJvEjmO4eMHB7MgpgcOJwMM5l2HWDwCA4LJxOpdMoPp5kKDdF+KQqtfmaVCo+jz91iD+VcvVgC8AQmIgiRLD6fKA3iofdPfBQvTrhcXmCMoGDYkTwJMdSP7DTqI9JF4wS8HhMEOZPIxGAR6ilUFyWygv090UQEoaQwBwMCg8Mn6Z1kpyrUATzwCHcUEagD9XtjMd/4LIQtzGUCroAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg","srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/1f64c/author.jpg 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/af0fe/author.jpg 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/464e8/author.jpg 128w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/8cd5f/author.avif 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/34a4f/author.avif 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/d6ed5/author.avif 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/8b866/author.avif 128w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/94d43/author.webp 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/6c901/author.webp 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/aa76d/author.webp 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/5e01a/author.webp 128w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":80}}}}}},"pageContext":{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Podryabinkina","authorId":"b52b7674-8be1-5af8-b32b-a7bb5f1b4ac9"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/page-data.json b/page-data/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/page-data.json index 2d923781..77888d09 100644 --- a/page-data/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/page-data.json +++ b/page-data/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/","result":{"data":{"post":{"frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","keywords":["post","articlename","importanttopick"]},"html":"

Part 1

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n

\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n
\nFig.2 Awesome title

\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

\n

Part 2

\n

Some list example:

\n
    \n
  • first statement;
  • \n
  • second statement;
  • \n
  • third statement;
  • \n
\n

One more list:

\n
    \n
  1. statement;
  2. \n
  3. statement;
  4. \n
  5. statement;
  6. \n
\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC.

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n

\n

This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source.

\n
<div className=\"relative\">\n  <Button\n    id=\"user-menu-button\"\n    variant=\"dark\"\n    size=\"small\"\n    aria-expanded=\"false\"\n    aria-haspopup=\"true\"\n    onClick={() => setIsContactsOpen(!isContactsOpen)}\n  >\n    <span className=\"text-xl\">Contact us</span>\n  </Button>\n  <div\n    className={`absolute flex flex-col align-center top-full left-0 z-10 mx-2 bg-main-70/20 py-1 shadow-lg ${\n      isContactsOpen ? \"\" : \"hidden\"\n    }`}\n    role=\"menu\"\n    aria-orientation=\"vertical\"\n    aria-labelledby=\"user-menu-button\"\n    tabIndex={-1}\n  >\n    <ContactsLinks />\n  </div>\n</div>
\n

Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

","wordCount":{"words":614}},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8/","result":{"data":{"post":{"frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","keywords":["post","articlename","importanttopick"]},"html":"

Part 1

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n

\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n
\nFig.2 Awesome title

\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

\n

Part 2

\n

Some list example:

\n
    \n
  • first statement;
  • \n
  • second statement;
  • \n
  • third statement;
  • \n
\n

One more list:

\n
    \n
  1. statement;
  2. \n
  3. statement;
  4. \n
  5. statement;
  6. \n
\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC.

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n

\n

This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source.

\n
<div className=\"relative\">\n  <Button\n    id=\"user-menu-button\"\n    variant=\"dark\"\n    size=\"small\"\n    aria-expanded=\"false\"\n    aria-haspopup=\"true\"\n    onClick={() => setIsContactsOpen(!isContactsOpen)}\n  >\n    <span className=\"text-xl\">Contact us</span>\n  </Button>\n  <div\n    className={`absolute flex flex-col align-center top-full left-0 z-10 mx-2 bg-main-70/20 py-1 shadow-lg ${\n      isContactsOpen ? \"\" : \"hidden\"\n    }`}\n    role=\"menu\"\n    aria-orientation=\"vertical\"\n    aria-labelledby=\"user-menu-button\"\n    tabIndex={-1}\n  >\n    <ContactsLinks />\n  </div>\n</div>
\n

Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

","wordCount":{"words":614}},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/45775c6a-7cd8-5018-9047-afbec09abf59/page-data.json b/page-data/blog/45775c6a-7cd8-5018-9047-afbec09abf59/page-data.json index b620d38a..98318471 100644 --- a/page-data/blog/45775c6a-7cd8-5018-9047-afbec09abf59/page-data.json +++ b/page-data/blog/45775c6a-7cd8-5018-9047-afbec09abf59/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/45775c6a-7cd8-5018-9047-afbec09abf59/","result":{"data":{"post":{"frontmatter":{"date":"05 Jun 2023","title":"Awesome post 1","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","keywords":["post","articlename","importanttopick"]},"html":"

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n
\nContrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.
\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n

\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

\n

Part 2

\n

Some list example:

\n
    \n
  • first statement;
  • \n
  • second statement;
  • \n
  • third statement;
  • \n
\n

One more list:

\n
    \n
  1. statement;
  2. \n
  3. statement;
  4. \n
  5. statement;
  6. \n
\n

Contrary to popular\" belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur\", from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC.

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n
This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old.

\n

Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

","wordCount":{"words":608}},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"id":"45775c6a-7cd8-5018-9047-afbec09abf59","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/45775c6a-7cd8-5018-9047-afbec09abf59/","result":{"data":{"post":{"frontmatter":{"date":"05 Jun 2023","title":"Awesome post 1","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","keywords":["post","articlename","importanttopick"]},"html":"

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n
\nContrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.
\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n

\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

\n

Part 2

\n

Some list example:

\n
    \n
  • first statement;
  • \n
  • second statement;
  • \n
  • third statement;
  • \n
\n

One more list:

\n
    \n
  1. statement;
  2. \n
  3. statement;
  4. \n
  5. statement;
  6. \n
\n

Contrary to popular\" belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur\", from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC.

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n
This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old.

\n

Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

","wordCount":{"words":608}},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"id":"45775c6a-7cd8-5018-9047-afbec09abf59","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/6a129001-a171-5d7e-9555-a943ae9d624f/page-data.json b/page-data/blog/6a129001-a171-5d7e-9555-a943ae9d624f/page-data.json index c36d216a..e9e55657 100644 --- a/page-data/blog/6a129001-a171-5d7e-9555-a943ae9d624f/page-data.json +++ b/page-data/blog/6a129001-a171-5d7e-9555-a943ae9d624f/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/6a129001-a171-5d7e-9555-a943ae9d624f/","result":{"data":{"post":{"frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","keywords":["post","articlename","importanttopick"]},"html":"

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

","wordCount":{"words":129}},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/6a129001-a171-5d7e-9555-a943ae9d624f/","result":{"data":{"post":{"frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","keywords":["post","articlename","importanttopick"]},"html":"

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

","wordCount":{"words":129}},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/page-data.json b/page-data/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/page-data.json index 5eeef123..3cdcfcbc 100644 --- a/page-data/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/page-data.json +++ b/page-data/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/","result":{"data":{"post":{"frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","keywords":["post","articlename","importanttopick","keywordlong","hashtag"]},"html":"

Professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites

\n

Part 1

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n

\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old.

\n

Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n

\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

\n

Part 2

\n

Some list example:

\n
    \n
  • first statement;
  • \n
  • second statement;
  • \n
  • third statement;
  • \n
\n

One more list:

\n
    \n
  1. statement;
  2. \n
  3. statement;
  4. \n
  5. statement;
  6. \n
\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC.

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n

\n

This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

","wordCount":{"words":707}},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/91d98aad-6ec6-5e71-b6ca-daff730c0ca4/","result":{"data":{"post":{"frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","keywords":["post","articlename","importanttopick","keywordlong","hashtag"]},"html":"

Professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites

\n

Part 1

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n

\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old.

\n

Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n

\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

\n

Part 2

\n

Some list example:

\n
    \n
  • first statement;
  • \n
  • second statement;
  • \n
  • third statement;
  • \n
\n

One more list:

\n
    \n
  1. statement;
  2. \n
  3. statement;
  4. \n
  5. statement;
  6. \n
\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC.

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n

\n

This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

","wordCount":{"words":707}},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/page-data.json b/page-data/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/page-data.json index e1a47366..9a8dcfe8 100644 --- a/page-data/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/page-data.json +++ b/page-data/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/","result":{"data":{"post":{"frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","keywords":["post","articlename","importanttopick"]},"html":"

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

","wordCount":{"words":129}},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/aa06b558-51ae-5f78-9989-0baadffbbc36/","result":{"data":{"post":{"frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","keywords":["post","articlename","importanttopick"]},"html":"

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

","wordCount":{"words":129}},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/articlename/page-data.json b/page-data/blog/articlename/page-data.json index 0dd6ca6e..808f11f7 100644 --- a/page-data/blog/articlename/page-data.json +++ b/page-data/blog/articlename/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/articlename/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"articlename"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/articlename/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"articlename"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/articlename/page/1/page-data.json b/page-data/blog/articlename/page/1/page-data.json index aacb1997..1cae8a59 100644 --- a/page-data/blog/articlename/page/1/page-data.json +++ b/page-data/blog/articlename/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/articlename/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"articlename"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/articlename/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"articlename"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/articlename/page/2/page-data.json b/page-data/blog/articlename/page/2/page-data.json index 326143ee..ed1a348d 100644 --- a/page-data/blog/articlename/page/2/page-data.json +++ b/page-data/blog/articlename/page/2/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/articlename/page/2/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"45775c6a-7cd8-5018-9047-afbec09abf59","frontmatter":{"date":"05 Jun 2023","title":"Awesome post 1","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":608}}]}},"pageContext":{"limit":5,"skip":5,"pagesQuantity":2,"currentPage":2,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"articlename"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/articlename/page/2/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"45775c6a-7cd8-5018-9047-afbec09abf59","frontmatter":{"date":"05 Jun 2023","title":"Awesome post 1","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":608}}]}},"pageContext":{"limit":5,"skip":5,"pagesQuantity":2,"currentPage":2,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"articlename"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/azure-devops/page-data.json b/page-data/blog/azure-devops/page-data.json index b3482e80..a8095fc8 100644 --- a/page-data/blog/azure-devops/page-data.json +++ b/page-data/blog/azure-devops/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/azure-devops/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"azure devops"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/azure-devops/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"azure devops"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/azure-devops/page/1/page-data.json b/page-data/blog/azure-devops/page/1/page-data.json index fea904bc..2363398e 100644 --- a/page-data/blog/azure-devops/page/1/page-data.json +++ b/page-data/blog/azure-devops/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/azure-devops/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"azure devops"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/azure-devops/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"azure devops"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/azure/page-data.json b/page-data/blog/azure/page-data.json index efee8b88..dd06b73f 100644 --- a/page-data/blog/azure/page-data.json +++ b/page-data/blog/azure/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/azure/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"azure"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/azure/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"azure"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/azure/page/1/page-data.json b/page-data/blog/azure/page/1/page-data.json index a6b3f6e5..9842b5df 100644 --- a/page-data/blog/azure/page/1/page-data.json +++ b/page-data/blog/azure/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/azure/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"azure"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/azure/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"azure"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/page-data.json b/page-data/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/page-data.json index 6d08c605..2742f6de 100644 --- a/page-data/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/page-data.json +++ b/page-data/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/","result":{"data":{"post":{"frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","keywords":["devops","cloud-init","proxmox","VM","virtualization"]},"html":"

Proxmox and Cloud-Init virtual machine templates

\n

In the world of virtualization, efficiency and automation are key. This is where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for easily managing virtual machines (VMs). One of the most interesting features of Proxmox is the ability to use virtual machine templates in combination with Cloud-Init, which simplifies the deployment process and makes it as smooth as in the cloud.\nLet's figure it out.

\n

\n \n \n \n \n \n \n \n \n \n \n
Proxmox VM Templates and Cloud-Init
\n

\n

What is Proxmox?

\n

Proxmox is a free and open source virtualization platform, which means anyone can use or modify it at no cost. It's like a set of tools that allows you to create multiple isolated computers (virtual machines) on a single physical machine. These virtual machines can simultaneously run multiple operating systems such as Windows or Linux, making them versatile for testing, development, or even production environments.

\n

Proxmox is the manager of these virtual environments. It uses a technology called KVM (kernel-based virtual machine), which ensures that each virtual machine runs smoothly without interfering with others. In addition, Proxmox can handle so-called containers via LXC (Linux Containers), which are even lighter than VMs and great for running individual applications with minimal overhead.

\n

You also can manage your VMs and containers from a browser. Web-based interface designed to be user-friendly, so even those new to virtualization can get started without too much trouble.

\n

What are Proxmox VM Templates?

\n

Proxmox VM templates are essentially pre-configured VMs that serve as blueprints for creating new instances. They include the operating system, installed software, and system configurations. The beauty of templates is that they save time and ensure consistency across deployments. You can quickly spin up new VMs without going through the entire installation and configuration process each time.

\n

The Role of Cloud-Init

\n

Cloud-Init is a versatile package that supports various distributions and handles the initial setup of a VM instance, such as network configuration and SSH key distribution. When a VM boots for the first time, Cloud-Init applies the predefined settings, allowing for a hands-off approach to VM provisioning https://pve.proxmox.com/wiki/Cloud-Init_Support.

\n

Combining Proxmox Templates with Cloud-Init

\n

Integrating Cloud-Init with Proxmox VM templates brings the best of both worlds. Here's how you can leverage this combination to your advantage:

\n

Step 1: Preparing Your Template

\n

Start by preparing your VM with the desired configuration. Install the operating system and all necessary packages, including Cloud-Init. Once your VM is ready, convert it into a template to serve as the foundation for future VMs.

\n

Below is the script we use to create the template:

\n
#! /bin/bash\n\n# Install Cloud-Init enabled Ubuntu VM in Proxmox\n\n# Download Ubuntu Cloud Image (Ubuntu 22.04 cloudimg)\nwget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\n\n# Install qemu-guest-agent on Ubuntu Cloud Image\n# The libguestfs-tools package must be installed on the system where the ubuntu cloudimg will be modified.\napt-get update\napt-get install libguestfs-tools\n\n# This step will install qemu-guest-agent on the Ubuntu cloud image via virt-customize.\nvirt-customize -a jammy-server-cloudimg-amd64.img --install qemu-guest-agent\n\n# Install git\nvirt-customize -a jammy-server-cloudimg-amd64.img --install git\n\n# Set environment variables. Change these as necessary.\nexport STORAGE_POOL=\"DATA\"\nexport VM_ID=\"1000\"\nexport VM_NAME=\"jammy-template\"\n\n# Create Proxmox VM image from Ubuntu Cloud Image.\nqm create $VM_ID --name $VM_NAME --memory 2048 --net0 virtio,bridge=vmbr2 --scsihw virtio-scsi-pci\nqm set $VM_ID --scsi0 $STORAGE_POOL:0,import-from=/root/jammy-server-cloudimg-amd64.img\n\n# Create Cloud-Init Disk and configure boot.\nqm set $VM_ID --ide2 $STORAGE_POOL:cloudinit\nqm set $VM_ID --boot order=scsi0\nqm set $VM_ID --serial0 socket --vga serial0\n# qm resize $VM_ID scsi0 +20G\n\n# Convert VM to Template\nqm template $VM_ID\n\n# Clean Up\nrm jammy-server-cloudimg-amd64.img
\n

Step 2: Deploying VMs from the Template

\n

With your template in place, you can create linked clones quickly. These clones are lightweight and share the base image with the template, which means rapid deployment. Before starting the new VM, configure the network and SSH keys through the Proxmox interface.

\n

Step 3: Customizing with Cloud-Init

\n

When you start a VM from the template, Cloud-Init kicks in. It reads the configuration data from an ISO image attached to the VM as a CD-ROM. This data includes network settings, user accounts, and SSH keys. Proxmox automatically generates this ISO image, and Cloud-Init applies the settings on the first boot.

\n

We go through steps 2 and 3 via Terraform. This significantly speeds up the process when you need to change some template parameters and create several identical machines at the same time.

\n

Best Practices:

\n
    \n
  • SSH Key Authentication: It's recommended to use SSH keys for authentication rather than passwords for security reasons. Proxmox can store encrypted passwords, but keys are a safer alternative.
  • \n
  • Serial Console: Many Cloud-Init images rely on a serial console, which is a requirement for OpenStack. Ensure that your template is configured to use a serial console as the display.
  • \n
  • Custom Configuration: While many distributions offer ready-to-use Cloud-Init images, creating your own ensures that you know exactly what's installed, making it easier to customize later.
  • \n
\n
\n

Conclusion

\n

Proxmox VM templates combined with Cloud-Init provide a powerful, efficient, and automated way to manage VM deployments. This synergy not only saves time but also ensures that each VM is configured consistently according to your standards.

\n

If you want to learn more, I suggest you start by exploring the official Proxmox documentation and community forums for detailed guides and support

\n

Happy virtualizing!

","wordCount":{"words":714}},"author":{"frontmatter":{"authorAlias":"Podryabinkina","author":"Alina Podryabinkina","authorPosition":"DevOps Engineer","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFbElEQVR42lWSiVPSaRjHf2ur8Du4BDVFVBRFKwhQDm/EEvFC8wKtPKFMbb0qNa0pa7dZK9NJrbTNjMQDvEIRFfHWwANrdmd3/5p90cmZnXnmnWfeeT7P9zvf94W2F/S7llG71bi/ajxYnfq2teDcMn/fnt+xjD6oLlKIwqVcZgSdFhXKyI7nNWtVzo0vf35dPNqaP9qagwC5uzjqWAHw1MHqtHPDDPhdy8i9UuVlfog8MjQ2IlAli72RlawQc/wphOJM2dflib8cy86NY9i+NL5nNRzYDIerkwerM0ebpu62G1mSiDxZZHbshfay3L0ZnU3XP/b8YVNJbiCNXJGv+LY9v79ugoCsfWnMsQz4cefa9NHmnG1qUJMRXZAcVZoZXyIXfuho+LY6t2cet09/WtX1lytTRGzGl+GXdusUUNYD0mGd2FsxHK5NH26Y+h/VZonCSjLitXmyluIUq67/X/um0zqzM/NpTf/utzqNJDzgj87mLfMotLvkUgbk/orBuTm7bhquzU/KFIaVZcbdLpB21V93Wk1/79gOlyftJr1V1/dAoxYE+rxs0W6a9ZB9eQzI7ruUJ452TLqedrWMV5jAqVMladNFpZdiOirU62MDh4vG7anhhcGu2vw0Mcv3WZ162TgIOZbH9q1AFqQ9aV8xPL5VcCU6ouZKbEdlelO+vDontfeXsjX9W+OrDo1CWiJPSLwYrohiv2ouN+v7oOOoJlye16ct4723smIq04S3M4Rv60u+z4/vzY5sTw475sYG2xvVSTFyTiifFSAXsF61li8aBqBjzwbHysTB+sybjtrKVEGjKlGTxJ3vevSPbeFoaXbPNLpj/GR+37P45kV3vYbD9Eu5GNTdVmmb/eiyDZQP1qbWvwzdLUq+nRffmB9XIeOPP2u1fXxt072xDfWujQzMvP593zDce6cmzJemFLJeP9Cumj6DwPQgs4ONmeHnd7SpvKai5NocSZmUO9n31DLUszLQYxnsGrxf8/lpy0LvswwxP4xOzYtmPdTmbC2MQl8X9Y4Vw7pp6Nfq7KoMYZNaWqMUpZzz62mtso0OTNfVW+qahrTlEz2PmkquYB7unCCvVB6jMl2ybRmDdiyfwcce6my8o0poUCVWZYk0qXw+w7Mgjmse7t6d1c8+eaBrqbt/s/gc0+8c0zfcjyIO8UrjBS2AtMEnmf7Q+bAy/V7J5XpV4nXZhauy86yzZAGLUadKN77rmhvp06iVVALK8CLTKQQGBePQKZJgb+NgJwRyetFY3KrJvFsmv6UU54hDc+PYdCoRQzEYD3sSMLoXze0nNwqZSKeRfQgonUzww/Ayfph18j3U3aYtlIvz5ZLGq7LSyxcVAmZKZLA3lUQhe8Iw9rM7zu2MO4ygBAwlIngiHkcjIAFUQjIvuLk8G+KFh1xgBxelRTcUSvNjwrPELCHbD4ExIpEMw+hJ4fEIgqCgA2aoGMI86wky5wbQoOCggEuxgsbrqTVKSY4oNCeG7e9FxsMoihIQBDshf6yAQVFQ2IuE+VJJ/jQKFMmNuJaV0K7NqJALipM4SfwQnAslAPH/k64Gh0dJKOpFxKgkAoVIgERcdnWxvK0sRaOILFFE+Xp5euBgMHcMY/Cx+Al8XCgRw8LoNLq3J9OPBkl47LabGfeK4huuJvEjmO4eMHB7MgpgcOJwMM5l2HWDwCA4LJxOpdMoPp5kKDdF+KQqtfmaVCo+jz91iD+VcvVgC8AQmIgiRLD6fKA3iofdPfBQvTrhcXmCMoGDYkTwJMdSP7DTqI9JF4wS8HhMEOZPIxGAR6ilUFyWygv090UQEoaQwBwMCg8Mn6Z1kpyrUATzwCHcUEagD9XtjMd/4LIQtzGUCroAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg","srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/1f64c/author.jpg 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/af0fe/author.jpg 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/464e8/author.jpg 128w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/8cd5f/author.avif 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/34a4f/author.avif 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/d6ed5/author.avif 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/8b866/author.avif 128w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/94d43/author.webp 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/6c901/author.webp 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/aa76d/author.webp 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/5e01a/author.webp 128w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":80}}}}}},"pageContext":{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Podryabinkina","authorId":"b52b7674-8be1-5af8-b32b-a7bb5f1b4ac9"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/c924c93c-fac0-517e-92e7-c5b5aaa083c2/","result":{"data":{"post":{"frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","keywords":["devops","cloud-init","proxmox","VM","virtualization"]},"html":"

Proxmox and Cloud-Init virtual machine templates

\n

In the world of virtualization, efficiency and automation are key. This is where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for easily managing virtual machines (VMs). One of the most interesting features of Proxmox is the ability to use virtual machine templates in combination with Cloud-Init, which simplifies the deployment process and makes it as smooth as in the cloud.\nLet's figure it out.

\n

\n \n \n \n \n \n \n \n \n \n \n
Proxmox VM Templates and Cloud-Init
\n

\n

What is Proxmox?

\n

Proxmox is a free and open source virtualization platform, which means anyone can use or modify it at no cost. It's like a set of tools that allows you to create multiple isolated computers (virtual machines) on a single physical machine. These virtual machines can simultaneously run multiple operating systems such as Windows or Linux, making them versatile for testing, development, or even production environments.

\n

Proxmox is the manager of these virtual environments. It uses a technology called KVM (kernel-based virtual machine), which ensures that each virtual machine runs smoothly without interfering with others. In addition, Proxmox can handle so-called containers via LXC (Linux Containers), which are even lighter than VMs and great for running individual applications with minimal overhead.

\n

You also can manage your VMs and containers from a browser. Web-based interface designed to be user-friendly, so even those new to virtualization can get started without too much trouble.

\n

What are Proxmox VM Templates?

\n

Proxmox VM templates are essentially pre-configured VMs that serve as blueprints for creating new instances. They include the operating system, installed software, and system configurations. The beauty of templates is that they save time and ensure consistency across deployments. You can quickly spin up new VMs without going through the entire installation and configuration process each time.

\n

The Role of Cloud-Init

\n

Cloud-Init is a versatile package that supports various distributions and handles the initial setup of a VM instance, such as network configuration and SSH key distribution. When a VM boots for the first time, Cloud-Init applies the predefined settings, allowing for a hands-off approach to VM provisioning https://pve.proxmox.com/wiki/Cloud-Init_Support.

\n

Combining Proxmox Templates with Cloud-Init

\n

Integrating Cloud-Init with Proxmox VM templates brings the best of both worlds. Here's how you can leverage this combination to your advantage:

\n

Step 1: Preparing Your Template

\n

Start by preparing your VM with the desired configuration. Install the operating system and all necessary packages, including Cloud-Init. Once your VM is ready, convert it into a template to serve as the foundation for future VMs.

\n

Below is the script we use to create the template:

\n
#! /bin/bash\n\n# Install Cloud-Init enabled Ubuntu VM in Proxmox\n\n# Download Ubuntu Cloud Image (Ubuntu 22.04 cloudimg)\nwget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\n\n# Install qemu-guest-agent on Ubuntu Cloud Image\n# The libguestfs-tools package must be installed on the system where the ubuntu cloudimg will be modified.\napt-get update\napt-get install libguestfs-tools\n\n# This step will install qemu-guest-agent on the Ubuntu cloud image via virt-customize.\nvirt-customize -a jammy-server-cloudimg-amd64.img --install qemu-guest-agent\n\n# Install git\nvirt-customize -a jammy-server-cloudimg-amd64.img --install git\n\n# Set environment variables. Change these as necessary.\nexport STORAGE_POOL=\"DATA\"\nexport VM_ID=\"1000\"\nexport VM_NAME=\"jammy-template\"\n\n# Create Proxmox VM image from Ubuntu Cloud Image.\nqm create $VM_ID --name $VM_NAME --memory 2048 --net0 virtio,bridge=vmbr2 --scsihw virtio-scsi-pci\nqm set $VM_ID --scsi0 $STORAGE_POOL:0,import-from=/root/jammy-server-cloudimg-amd64.img\n\n# Create Cloud-Init Disk and configure boot.\nqm set $VM_ID --ide2 $STORAGE_POOL:cloudinit\nqm set $VM_ID --boot order=scsi0\nqm set $VM_ID --serial0 socket --vga serial0\n# qm resize $VM_ID scsi0 +20G\n\n# Convert VM to Template\nqm template $VM_ID\n\n# Clean Up\nrm jammy-server-cloudimg-amd64.img
\n

Step 2: Deploying VMs from the Template

\n

With your template in place, you can create linked clones quickly. These clones are lightweight and share the base image with the template, which means rapid deployment. Before starting the new VM, configure the network and SSH keys through the Proxmox interface.

\n

Step 3: Customizing with Cloud-Init

\n

When you start a VM from the template, Cloud-Init kicks in. It reads the configuration data from an ISO image attached to the VM as a CD-ROM. This data includes network settings, user accounts, and SSH keys. Proxmox automatically generates this ISO image, and Cloud-Init applies the settings on the first boot.

\n

We go through steps 2 and 3 via Terraform. This significantly speeds up the process when you need to change some template parameters and create several identical machines at the same time.

\n

Best Practices:

\n
    \n
  • SSH Key Authentication: It's recommended to use SSH keys for authentication rather than passwords for security reasons. Proxmox can store encrypted passwords, but keys are a safer alternative.
  • \n
  • Serial Console: Many Cloud-Init images rely on a serial console, which is a requirement for OpenStack. Ensure that your template is configured to use a serial console as the display.
  • \n
  • Custom Configuration: While many distributions offer ready-to-use Cloud-Init images, creating your own ensures that you know exactly what's installed, making it easier to customize later.
  • \n
\n
\n

Conclusion

\n

Proxmox VM templates combined with Cloud-Init provide a powerful, efficient, and automated way to manage VM deployments. This synergy not only saves time but also ensures that each VM is configured consistently according to your standards.

\n

If you want to learn more, I suggest you start by exploring the official Proxmox documentation and community forums for detailed guides and support

\n

Happy virtualizing!

","wordCount":{"words":714}},"author":{"frontmatter":{"authorAlias":"Podryabinkina","author":"Alina Podryabinkina","authorPosition":"DevOps Engineer","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFbElEQVR42lWSiVPSaRjHf2ur8Du4BDVFVBRFKwhQDm/EEvFC8wKtPKFMbb0qNa0pa7dZK9NJrbTNjMQDvEIRFfHWwANrdmd3/5p90cmZnXnmnWfeeT7P9zvf94W2F/S7llG71bi/ajxYnfq2teDcMn/fnt+xjD6oLlKIwqVcZgSdFhXKyI7nNWtVzo0vf35dPNqaP9qagwC5uzjqWAHw1MHqtHPDDPhdy8i9UuVlfog8MjQ2IlAli72RlawQc/wphOJM2dflib8cy86NY9i+NL5nNRzYDIerkwerM0ebpu62G1mSiDxZZHbshfay3L0ZnU3XP/b8YVNJbiCNXJGv+LY9v79ugoCsfWnMsQz4cefa9NHmnG1qUJMRXZAcVZoZXyIXfuho+LY6t2cet09/WtX1lytTRGzGl+GXdusUUNYD0mGd2FsxHK5NH26Y+h/VZonCSjLitXmyluIUq67/X/um0zqzM/NpTf/utzqNJDzgj87mLfMotLvkUgbk/orBuTm7bhquzU/KFIaVZcbdLpB21V93Wk1/79gOlyftJr1V1/dAoxYE+rxs0W6a9ZB9eQzI7ruUJ452TLqedrWMV5jAqVMladNFpZdiOirU62MDh4vG7anhhcGu2vw0Mcv3WZ162TgIOZbH9q1AFqQ9aV8xPL5VcCU6ouZKbEdlelO+vDontfeXsjX9W+OrDo1CWiJPSLwYrohiv2ouN+v7oOOoJlye16ct4723smIq04S3M4Rv60u+z4/vzY5sTw475sYG2xvVSTFyTiifFSAXsF61li8aBqBjzwbHysTB+sybjtrKVEGjKlGTxJ3vevSPbeFoaXbPNLpj/GR+37P45kV3vYbD9Eu5GNTdVmmb/eiyDZQP1qbWvwzdLUq+nRffmB9XIeOPP2u1fXxt072xDfWujQzMvP593zDce6cmzJemFLJeP9Cumj6DwPQgs4ONmeHnd7SpvKai5NocSZmUO9n31DLUszLQYxnsGrxf8/lpy0LvswwxP4xOzYtmPdTmbC2MQl8X9Y4Vw7pp6Nfq7KoMYZNaWqMUpZzz62mtso0OTNfVW+qahrTlEz2PmkquYB7unCCvVB6jMl2ybRmDdiyfwcce6my8o0poUCVWZYk0qXw+w7Mgjmse7t6d1c8+eaBrqbt/s/gc0+8c0zfcjyIO8UrjBS2AtMEnmf7Q+bAy/V7J5XpV4nXZhauy86yzZAGLUadKN77rmhvp06iVVALK8CLTKQQGBePQKZJgb+NgJwRyetFY3KrJvFsmv6UU54hDc+PYdCoRQzEYD3sSMLoXze0nNwqZSKeRfQgonUzww/Ayfph18j3U3aYtlIvz5ZLGq7LSyxcVAmZKZLA3lUQhe8Iw9rM7zu2MO4ygBAwlIngiHkcjIAFUQjIvuLk8G+KFh1xgBxelRTcUSvNjwrPELCHbD4ExIpEMw+hJ4fEIgqCgA2aoGMI86wky5wbQoOCggEuxgsbrqTVKSY4oNCeG7e9FxsMoihIQBDshf6yAQVFQ2IuE+VJJ/jQKFMmNuJaV0K7NqJALipM4SfwQnAslAPH/k64Gh0dJKOpFxKgkAoVIgERcdnWxvK0sRaOILFFE+Xp5euBgMHcMY/Cx+Al8XCgRw8LoNLq3J9OPBkl47LabGfeK4huuJvEjmO4eMHB7MgpgcOJwMM5l2HWDwCA4LJxOpdMoPp5kKDdF+KQqtfmaVCo+jz91iD+VcvVgC8AQmIgiRLD6fKA3iofdPfBQvTrhcXmCMoGDYkTwJMdSP7DTqI9JF4wS8HhMEOZPIxGAR6ilUFyWygv090UQEoaQwBwMCg8Mn6Z1kpyrUATzwCHcUEagD9XtjMd/4LIQtzGUCroAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg","srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/1f64c/author.jpg 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/af0fe/author.jpg 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/464e8/author.jpg 128w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/8cd5f/author.avif 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/34a4f/author.avif 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/d6ed5/author.avif 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/8b866/author.avif 128w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/94d43/author.webp 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/6c901/author.webp 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/aa76d/author.webp 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/5e01a/author.webp 128w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":80}}}}}},"pageContext":{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Podryabinkina","authorId":"b52b7674-8be1-5af8-b32b-a7bb5f1b4ac9"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/changelog/page-data.json b/page-data/blog/changelog/page-data.json index 812ec604..d4215472 100644 --- a/page-data/blog/changelog/page-data.json +++ b/page-data/blog/changelog/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/changelog/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"changelog"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/changelog/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"changelog"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/changelog/page/1/page-data.json b/page-data/blog/changelog/page/1/page-data.json index c65b842f..d3c7cbfa 100644 --- a/page-data/blog/changelog/page/1/page-data.json +++ b/page-data/blog/changelog/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/changelog/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"changelog"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/changelog/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"changelog"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/cloud-init/page-data.json b/page-data/blog/cloud-init/page-data.json index e4d754ec..7da9e747 100644 --- a/page-data/blog/cloud-init/page-data.json +++ b/page-data/blog/cloud-init/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/cloud-init/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"cloud-init"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/cloud-init/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"cloud-init"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/cloud-init/page/1/page-data.json b/page-data/blog/cloud-init/page/1/page-data.json index 28907132..ceb8119e 100644 --- a/page-data/blog/cloud-init/page/1/page-data.json +++ b/page-data/blog/cloud-init/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/cloud-init/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"cloud-init"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/cloud-init/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"cloud-init"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/confluence/page-data.json b/page-data/blog/confluence/page-data.json index 92bfa400..d4fe48dd 100644 --- a/page-data/blog/confluence/page-data.json +++ b/page-data/blog/confluence/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/confluence/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"confluence"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/confluence/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"confluence"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/confluence/page/1/page-data.json b/page-data/blog/confluence/page/1/page-data.json index b2c1fc9e..e183a661 100644 --- a/page-data/blog/confluence/page/1/page-data.json +++ b/page-data/blog/confluence/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/confluence/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"confluence"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/confluence/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"confluence"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/devops/page-data.json b/page-data/blog/devops/page-data.json index 55d29cc8..f04f6c79 100644 --- a/page-data/blog/devops/page-data.json +++ b/page-data/blog/devops/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/devops/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}},{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}},{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"devops"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/devops/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}},{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}},{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"devops"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/devops/page/1/page-data.json b/page-data/blog/devops/page/1/page-data.json index 40a5659b..d4d6a865 100644 --- a/page-data/blog/devops/page/1/page-data.json +++ b/page-data/blog/devops/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/devops/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}},{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}},{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"devops"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/devops/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}},{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}},{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"devops"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/page-data.json b/page-data/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/page-data.json index ae9801bf..2af67ae7 100644 --- a/page-data/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/page-data.json +++ b/page-data/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/","result":{"data":{"post":{"frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","keywords":["devops","azure","self-hosted build agent"]},"html":"

Self-Hosted build Agent for Azure Pipelines

\n

Welcome to our guide to installing the Azure Agent\nIn this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines.

\n

\n \n \n \n\n

Configuring a self-hosted Agent might seem complicated but by following the below steps we can easily configure an agent in our Agent Pool.

\n

So, let's move step by step

\n

Step 1: Creating Agent Pool

\n
    \n
  • Sign in to Microsoft Azure
  • \n
  • Log in to your development project in DevOps (https://dev.azure.com/<your project name>).
  • \n
  • Go to Project Settings -> Pipelines -> Agent Pools and click New Agent Pool.
  • \n
  • Choose self-hosted Agent
  • \n
  • Enter the agent name and click Create
  • \n
\n

\n \n \n \n \n \n \n \n \n \n \n
Self-Hosted build Agent for Azure Pipelines
\n

\n

Step 2: Generate Personal Access Token (PAT)

\n

You need to go to the Personal Access Tokens section under User Settings located in the top right corner of your screen. Name it accordingly and grant permissions as per your requirements.

\n

\n \n \n \n \n \n \n \n \n \n \n
Self-Hosted build Agent for Azure Pipelines
\n

\n

\n \n \n \n \n \n \n \n \n \n \n
Self-Hosted build Agent for Azure Pipelines
\n

\n

If you have any questions, try following the instructions in this link - PAT key.

\n

Step 3: Check prerequisites

\n

Before you begin the installation process, please ensure that your system meets the requirements; links to official documentation are provided below.

\n\n

When it comes to safety, here are the basic principles:

\n
    \n
  • Secure agent folders as they contain sensitive information.
  • \n
  • Use the least required permissions for agent functionality.
  • \n
\n

Step 4: Get The Agent

\n

Once the agent pool is created and PAT is generated, select the pool and click New Agent. In the new pop-up window, choose the operating system which you need and move forward accordingly.

\n

\n \n \n \n \n \n \n \n \n \n \n
Self-Hosted build Agent for Azure Pipelines
\n

\n

Step 5: Configure Agent

\n

We'll look at the Linux configuration as a guide; with other operating systems the steps will be similar.

\n

Once you've clicked \"Download\" or copied the URL, you'll need to log into your virtual machine.

\n

Create an agent folder and navigate to it using the following command:

\n
mkdir myagent && cd myagent
\n

Download the agent using the following command in case of Linux:

\n
wget https://vstsagentpackage.azureedge.net/agent/3.240.1/vsts-agent-linux-x64-3.240.1.tar.gz
\n

Unzip the contents using the following command:

\n
tar zxvf ./vsts-agent-linux-x64-3.240.1.tar.gz
\n

After extracting the contents, configure the agent using the command:

\n
./config.sh
\n

\n \n \n \n \n \n \n \n \n \n \n
Self-Hosted build Agent for Azure Pipelines
\n
\nProvide the server URL: (https://dev.azure.com/<your project name>), PAT key and the agent pool name you created earlier, agent name and work folder.

\n

Once the agent is configured, it will show as below under your agent pool in Azure DevOps with red mark - Offline.

\n

You can run the agent interactively using this script:

\n
./run.sh
\n

it will bring your agent from Offline to Online.

\n

Once ./run.sh ends, our agent will go offline again and will not be available for deployments until we run it again.

\n

To eliminate unnecessary routine steps and have an agent that is always listening, we will configure it as a service.

\n

We can create a service using this script in your agent folder:

\n
./svc.sh install && ./svc.sh start
\n

Or create a service configuration file

\n
sudo nano /etc/systemd/system/agent.service
\n

Paste the following content into the file:

\n
[Unit]\nDescription=Azure-devops-agent-ubuntu service\n\n[Service]\nUser=<your username>\nExecStart=/path/to/your/agent/run.sh\nRestart=always\n\n[Install]\nWantedBy=multi-user.target
\n

Replace <your username> and /path/to/your/agent/run.sh with your details.

\n

After saving the file, activate and start the service:

\n
sudo systemctl daemon-reload\nsudo systemctl enable agent.service\nsudo systemctl start agent.service\nsudo systemctl status agent.service
\n

The service for your Azure agent is now activated and will run continuously and will be available to take build tasks now!

\n

Final Thoughts

\n

Whether you are using Windows, Linux or MacOS, installing the Azure Agent is an important step in automating your build and deployment processes. By following detailed instructions for each operating system, you can ensure seamless and secure integration with Azure services.

\n

We hope this detailed guide was helpful to you. If you have questions or need more help, please refer to the official Azure documentation.

","wordCount":{"words":763}},"author":{"frontmatter":{"authorAlias":"Podryabinkina","author":"Alina Podryabinkina","authorPosition":"DevOps Engineer","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFbElEQVR42lWSiVPSaRjHf2ur8Du4BDVFVBRFKwhQDm/EEvFC8wKtPKFMbb0qNa0pa7dZK9NJrbTNjMQDvEIRFfHWwANrdmd3/5p90cmZnXnmnWfeeT7P9zvf94W2F/S7llG71bi/ajxYnfq2teDcMn/fnt+xjD6oLlKIwqVcZgSdFhXKyI7nNWtVzo0vf35dPNqaP9qagwC5uzjqWAHw1MHqtHPDDPhdy8i9UuVlfog8MjQ2IlAli72RlawQc/wphOJM2dflib8cy86NY9i+NL5nNRzYDIerkwerM0ebpu62G1mSiDxZZHbshfay3L0ZnU3XP/b8YVNJbiCNXJGv+LY9v79ugoCsfWnMsQz4cefa9NHmnG1qUJMRXZAcVZoZXyIXfuho+LY6t2cet09/WtX1lytTRGzGl+GXdusUUNYD0mGd2FsxHK5NH26Y+h/VZonCSjLitXmyluIUq67/X/um0zqzM/NpTf/utzqNJDzgj87mLfMotLvkUgbk/orBuTm7bhquzU/KFIaVZcbdLpB21V93Wk1/79gOlyftJr1V1/dAoxYE+rxs0W6a9ZB9eQzI7ruUJ452TLqedrWMV5jAqVMladNFpZdiOirU62MDh4vG7anhhcGu2vw0Mcv3WZ162TgIOZbH9q1AFqQ9aV8xPL5VcCU6ouZKbEdlelO+vDontfeXsjX9W+OrDo1CWiJPSLwYrohiv2ouN+v7oOOoJlye16ct4723smIq04S3M4Rv60u+z4/vzY5sTw475sYG2xvVSTFyTiifFSAXsF61li8aBqBjzwbHysTB+sybjtrKVEGjKlGTxJ3vevSPbeFoaXbPNLpj/GR+37P45kV3vYbD9Eu5GNTdVmmb/eiyDZQP1qbWvwzdLUq+nRffmB9XIeOPP2u1fXxt072xDfWujQzMvP593zDce6cmzJemFLJeP9Cumj6DwPQgs4ONmeHnd7SpvKai5NocSZmUO9n31DLUszLQYxnsGrxf8/lpy0LvswwxP4xOzYtmPdTmbC2MQl8X9Y4Vw7pp6Nfq7KoMYZNaWqMUpZzz62mtso0OTNfVW+qahrTlEz2PmkquYB7unCCvVB6jMl2ybRmDdiyfwcce6my8o0poUCVWZYk0qXw+w7Mgjmse7t6d1c8+eaBrqbt/s/gc0+8c0zfcjyIO8UrjBS2AtMEnmf7Q+bAy/V7J5XpV4nXZhauy86yzZAGLUadKN77rmhvp06iVVALK8CLTKQQGBePQKZJgb+NgJwRyetFY3KrJvFsmv6UU54hDc+PYdCoRQzEYD3sSMLoXze0nNwqZSKeRfQgonUzww/Ayfph18j3U3aYtlIvz5ZLGq7LSyxcVAmZKZLA3lUQhe8Iw9rM7zu2MO4ygBAwlIngiHkcjIAFUQjIvuLk8G+KFh1xgBxelRTcUSvNjwrPELCHbD4ExIpEMw+hJ4fEIgqCgA2aoGMI86wky5wbQoOCggEuxgsbrqTVKSY4oNCeG7e9FxsMoihIQBDshf6yAQVFQ2IuE+VJJ/jQKFMmNuJaV0K7NqJALipM4SfwQnAslAPH/k64Gh0dJKOpFxKgkAoVIgERcdnWxvK0sRaOILFFE+Xp5euBgMHcMY/Cx+Al8XCgRw8LoNLq3J9OPBkl47LabGfeK4huuJvEjmO4eMHB7MgpgcOJwMM5l2HWDwCA4LJxOpdMoPp5kKDdF+KQqtfmaVCo+jz91iD+VcvVgC8AQmIgiRLD6fKA3iofdPfBQvTrhcXmCMoGDYkTwJMdSP7DTqI9JF4wS8HhMEOZPIxGAR6ilUFyWygv090UQEoaQwBwMCg8Mn6Z1kpyrUATzwCHcUEagD9XtjMd/4LIQtzGUCroAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg","srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/1f64c/author.jpg 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/af0fe/author.jpg 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/464e8/author.jpg 128w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/8cd5f/author.avif 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/34a4f/author.avif 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/d6ed5/author.avif 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/8b866/author.avif 128w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/94d43/author.webp 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/6c901/author.webp 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/aa76d/author.webp 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/5e01a/author.webp 128w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":80}}}}}},"pageContext":{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Podryabinkina","authorId":"b52b7674-8be1-5af8-b32b-a7bb5f1b4ac9"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/e173a2ae-ebb5-5219-9479-035dde5fe8c8/","result":{"data":{"post":{"frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","keywords":["devops","azure","self-hosted build agent"]},"html":"

Self-Hosted build Agent for Azure Pipelines

\n

Welcome to our guide to installing the Azure Agent\nIn this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines.

\n

\n \n \n \n\n

Configuring a self-hosted Agent might seem complicated but by following the below steps we can easily configure an agent in our Agent Pool.

\n

So, let's move step by step

\n

Step 1: Creating Agent Pool

\n
    \n
  • Sign in to Microsoft Azure
  • \n
  • Log in to your development project in DevOps (https://dev.azure.com/<your project name>).
  • \n
  • Go to Project Settings -> Pipelines -> Agent Pools and click New Agent Pool.
  • \n
  • Choose self-hosted Agent
  • \n
  • Enter the agent name and click Create
  • \n
\n

\n \n \n \n \n \n \n \n \n \n \n
Self-Hosted build Agent for Azure Pipelines
\n

\n

Step 2: Generate Personal Access Token (PAT)

\n

You need to go to the Personal Access Tokens section under User Settings located in the top right corner of your screen. Name it accordingly and grant permissions as per your requirements.

\n

\n \n \n \n \n \n \n \n \n \n \n
Self-Hosted build Agent for Azure Pipelines
\n

\n

\n \n \n \n \n \n \n \n \n \n \n
Self-Hosted build Agent for Azure Pipelines
\n

\n

If you have any questions, try following the instructions in this link - PAT key.

\n

Step 3: Check prerequisites

\n

Before you begin the installation process, please ensure that your system meets the requirements; links to official documentation are provided below.

\n\n

When it comes to safety, here are the basic principles:

\n
    \n
  • Secure agent folders as they contain sensitive information.
  • \n
  • Use the least required permissions for agent functionality.
  • \n
\n

Step 4: Get The Agent

\n

Once the agent pool is created and PAT is generated, select the pool and click New Agent. In the new pop-up window, choose the operating system which you need and move forward accordingly.

\n

\n \n \n \n \n \n \n \n \n \n \n
Self-Hosted build Agent for Azure Pipelines
\n

\n

Step 5: Configure Agent

\n

We'll look at the Linux configuration as a guide; with other operating systems the steps will be similar.

\n

Once you've clicked \"Download\" or copied the URL, you'll need to log into your virtual machine.

\n

Create an agent folder and navigate to it using the following command:

\n
mkdir myagent && cd myagent
\n

Download the agent using the following command in case of Linux:

\n
wget https://vstsagentpackage.azureedge.net/agent/3.240.1/vsts-agent-linux-x64-3.240.1.tar.gz
\n

Unzip the contents using the following command:

\n
tar zxvf ./vsts-agent-linux-x64-3.240.1.tar.gz
\n

After extracting the contents, configure the agent using the command:

\n
./config.sh
\n

\n \n \n \n \n \n \n \n \n \n \n
Self-Hosted build Agent for Azure Pipelines
\n
\nProvide the server URL: (https://dev.azure.com/<your project name>), PAT key and the agent pool name you created earlier, agent name and work folder.

\n

Once the agent is configured, it will show as below under your agent pool in Azure DevOps with red mark - Offline.

\n

You can run the agent interactively using this script:

\n
./run.sh
\n

it will bring your agent from Offline to Online.

\n

Once ./run.sh ends, our agent will go offline again and will not be available for deployments until we run it again.

\n

To eliminate unnecessary routine steps and have an agent that is always listening, we will configure it as a service.

\n

We can create a service using this script in your agent folder:

\n
./svc.sh install && ./svc.sh start
\n

Or create a service configuration file

\n
sudo nano /etc/systemd/system/agent.service
\n

Paste the following content into the file:

\n
[Unit]\nDescription=Azure-devops-agent-ubuntu service\n\n[Service]\nUser=<your username>\nExecStart=/path/to/your/agent/run.sh\nRestart=always\n\n[Install]\nWantedBy=multi-user.target
\n

Replace <your username> and /path/to/your/agent/run.sh with your details.

\n

After saving the file, activate and start the service:

\n
sudo systemctl daemon-reload\nsudo systemctl enable agent.service\nsudo systemctl start agent.service\nsudo systemctl status agent.service
\n

The service for your Azure agent is now activated and will run continuously and will be available to take build tasks now!

\n

Final Thoughts

\n

Whether you are using Windows, Linux or MacOS, installing the Azure Agent is an important step in automating your build and deployment processes. By following detailed instructions for each operating system, you can ensure seamless and secure integration with Azure services.

\n

We hope this detailed guide was helpful to you. If you have questions or need more help, please refer to the official Azure documentation.

","wordCount":{"words":763}},"author":{"frontmatter":{"authorAlias":"Podryabinkina","author":"Alina Podryabinkina","authorPosition":"DevOps Engineer","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFbElEQVR42lWSiVPSaRjHf2ur8Du4BDVFVBRFKwhQDm/EEvFC8wKtPKFMbb0qNa0pa7dZK9NJrbTNjMQDvEIRFfHWwANrdmd3/5p90cmZnXnmnWfeeT7P9zvf94W2F/S7llG71bi/ajxYnfq2teDcMn/fnt+xjD6oLlKIwqVcZgSdFhXKyI7nNWtVzo0vf35dPNqaP9qagwC5uzjqWAHw1MHqtHPDDPhdy8i9UuVlfog8MjQ2IlAli72RlawQc/wphOJM2dflib8cy86NY9i+NL5nNRzYDIerkwerM0ebpu62G1mSiDxZZHbshfay3L0ZnU3XP/b8YVNJbiCNXJGv+LY9v79ugoCsfWnMsQz4cefa9NHmnG1qUJMRXZAcVZoZXyIXfuho+LY6t2cet09/WtX1lytTRGzGl+GXdusUUNYD0mGd2FsxHK5NH26Y+h/VZonCSjLitXmyluIUq67/X/um0zqzM/NpTf/utzqNJDzgj87mLfMotLvkUgbk/orBuTm7bhquzU/KFIaVZcbdLpB21V93Wk1/79gOlyftJr1V1/dAoxYE+rxs0W6a9ZB9eQzI7ruUJ452TLqedrWMV5jAqVMladNFpZdiOirU62MDh4vG7anhhcGu2vw0Mcv3WZ162TgIOZbH9q1AFqQ9aV8xPL5VcCU6ouZKbEdlelO+vDontfeXsjX9W+OrDo1CWiJPSLwYrohiv2ouN+v7oOOoJlye16ct4723smIq04S3M4Rv60u+z4/vzY5sTw475sYG2xvVSTFyTiifFSAXsF61li8aBqBjzwbHysTB+sybjtrKVEGjKlGTxJ3vevSPbeFoaXbPNLpj/GR+37P45kV3vYbD9Eu5GNTdVmmb/eiyDZQP1qbWvwzdLUq+nRffmB9XIeOPP2u1fXxt072xDfWujQzMvP593zDce6cmzJemFLJeP9Cumj6DwPQgs4ONmeHnd7SpvKai5NocSZmUO9n31DLUszLQYxnsGrxf8/lpy0LvswwxP4xOzYtmPdTmbC2MQl8X9Y4Vw7pp6Nfq7KoMYZNaWqMUpZzz62mtso0OTNfVW+qahrTlEz2PmkquYB7unCCvVB6jMl2ybRmDdiyfwcce6my8o0poUCVWZYk0qXw+w7Mgjmse7t6d1c8+eaBrqbt/s/gc0+8c0zfcjyIO8UrjBS2AtMEnmf7Q+bAy/V7J5XpV4nXZhauy86yzZAGLUadKN77rmhvp06iVVALK8CLTKQQGBePQKZJgb+NgJwRyetFY3KrJvFsmv6UU54hDc+PYdCoRQzEYD3sSMLoXze0nNwqZSKeRfQgonUzww/Ayfph18j3U3aYtlIvz5ZLGq7LSyxcVAmZKZLA3lUQhe8Iw9rM7zu2MO4ygBAwlIngiHkcjIAFUQjIvuLk8G+KFh1xgBxelRTcUSvNjwrPELCHbD4ExIpEMw+hJ4fEIgqCgA2aoGMI86wky5wbQoOCggEuxgsbrqTVKSY4oNCeG7e9FxsMoihIQBDshf6yAQVFQ2IuE+VJJ/jQKFMmNuJaV0K7NqJALipM4SfwQnAslAPH/k64Gh0dJKOpFxKgkAoVIgERcdnWxvK0sRaOILFFE+Xp5euBgMHcMY/Cx+Al8XCgRw8LoNLq3J9OPBkl47LabGfeK4huuJvEjmO4eMHB7MgpgcOJwMM5l2HWDwCA4LJxOpdMoPp5kKDdF+KQqtfmaVCo+jz91iD+VcvVgC8AQmIgiRLD6fKA3iofdPfBQvTrhcXmCMoGDYkTwJMdSP7DTqI9JF4wS8HhMEOZPIxGAR6ilUFyWygv090UQEoaQwBwMCg8Mn6Z1kpyrUATzwCHcUEagD9XtjMd/4LIQtzGUCroAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg","srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/1f64c/author.jpg 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/af0fe/author.jpg 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/464e8/author.jpg 128w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/8cd5f/author.avif 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/34a4f/author.avif 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/d6ed5/author.avif 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/8b866/author.avif 128w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/94d43/author.webp 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/6c901/author.webp 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/aa76d/author.webp 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/5e01a/author.webp 128w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":80}}}}}},"pageContext":{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Podryabinkina","authorId":"b52b7674-8be1-5af8-b32b-a7bb5f1b4ac9"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/page-data.json b/page-data/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/page-data.json index 2db041d3..c4c1a794 100644 --- a/page-data/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/page-data.json +++ b/page-data/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/","result":{"data":{"post":{"frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","keywords":["post","articlename","importanttopick"]},"html":"

Part 1

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n
\nContrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.
\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n
\nContrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

\n

Part 2

\n

Some list example:

\n
    \n
  • first statement;
  • \n
  • second statement;
  • \n
  • third statement;
  • \n
\n

One more list:

\n
    \n
  1. statement;
  2. \n
  3. statement;
  4. \n
  5. statement;
  6. \n
\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC.

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n
This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

","wordCount":{"words":610}},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-post-tsx","path":"/blog/f7437acb-56dc-5ec6-9370-7726f39da57a/","result":{"data":{"post":{"frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","keywords":["post","articlename","importanttopick"]},"html":"

Part 1

\n

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n
\nContrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.
\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n
\nContrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

\n

Part 2

\n

Some list example:

\n
    \n
  • first statement;
  • \n
  • second statement;
  • \n
  • third statement;
  • \n
\n

One more list:

\n
    \n
  1. statement;
  2. \n
  3. statement;
  4. \n
  5. statement;
  6. \n
\n

Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC.

\n \n \n \n \n \n \n \n \n \n \n
Awesome post
\n
This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32. Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.

","wordCount":{"words":610}},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409","639074693"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/hashtag/page-data.json b/page-data/blog/hashtag/page-data.json index aeb65ca1..ca2d4e67 100644 --- a/page-data/blog/hashtag/page-data.json +++ b/page-data/blog/hashtag/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/hashtag/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"hashtag"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/hashtag/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"hashtag"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/hashtag/page/1/page-data.json b/page-data/blog/hashtag/page/1/page-data.json index 01889520..cdb2a2b6 100644 --- a/page-data/blog/hashtag/page/1/page-data.json +++ b/page-data/blog/hashtag/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/hashtag/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"hashtag"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/hashtag/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"hashtag"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/importanttopick/page-data.json b/page-data/blog/importanttopick/page-data.json index fe251b21..b0dac953 100644 --- a/page-data/blog/importanttopick/page-data.json +++ b/page-data/blog/importanttopick/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/importanttopick/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"importanttopick"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/importanttopick/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"importanttopick"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/importanttopick/page/1/page-data.json b/page-data/blog/importanttopick/page/1/page-data.json index 08ed9786..11c78dce 100644 --- a/page-data/blog/importanttopick/page/1/page-data.json +++ b/page-data/blog/importanttopick/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/importanttopick/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"importanttopick"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/importanttopick/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"importanttopick"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/importanttopick/page/2/page-data.json b/page-data/blog/importanttopick/page/2/page-data.json index 5e50d9c9..95fd7714 100644 --- a/page-data/blog/importanttopick/page/2/page-data.json +++ b/page-data/blog/importanttopick/page/2/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/importanttopick/page/2/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"45775c6a-7cd8-5018-9047-afbec09abf59","frontmatter":{"date":"05 Jun 2023","title":"Awesome post 1","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":608}}]}},"pageContext":{"limit":5,"skip":5,"pagesQuantity":2,"currentPage":2,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"importanttopick"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/importanttopick/page/2/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"45775c6a-7cd8-5018-9047-afbec09abf59","frontmatter":{"date":"05 Jun 2023","title":"Awesome post 1","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":608}}]}},"pageContext":{"limit":5,"skip":5,"pagesQuantity":2,"currentPage":2,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"importanttopick"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/keywordlong/page-data.json b/page-data/blog/keywordlong/page-data.json index f889d8e4..c2734da8 100644 --- a/page-data/blog/keywordlong/page-data.json +++ b/page-data/blog/keywordlong/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/keywordlong/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"keywordlong"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/keywordlong/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"keywordlong"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/keywordlong/page/1/page-data.json b/page-data/blog/keywordlong/page/1/page-data.json index 651de85f..d8cf1fad 100644 --- a/page-data/blog/keywordlong/page/1/page-data.json +++ b/page-data/blog/keywordlong/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/keywordlong/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"keywordlong"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/keywordlong/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"keywordlong"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/page-data.json b/page-data/blog/page-data.json index 673558bc..0e4f7633 100644 --- a/page-data/blog/page-data.json +++ b/page-data/blog/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-tsx","path":"/blog/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}},{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}},{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}},{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-tsx","path":"/blog/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}},{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}},{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}},{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/page/1/page-data.json b/page-data/blog/page/1/page-data.json index d2ac4f80..e8b09951 100644 --- a/page-data/blog/page/1/page-data.json +++ b/page-data/blog/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-tsx","path":"/blog/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}},{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}},{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}},{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-tsx","path":"/blog/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}},{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}},{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}},{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/page/2/page-data.json b/page-data/blog/page/2/page-data.json index 89ef9f68..574b9035 100644 --- a/page-data/blog/page/2/page-data.json +++ b/page-data/blog/page/2/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-tsx","path":"/blog/page/2/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"45775c6a-7cd8-5018-9047-afbec09abf59","frontmatter":{"date":"05 Jun 2023","title":"Awesome post 1","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":608}}]}},"pageContext":{"limit":5,"skip":5,"pagesQuantity":2,"currentPage":2,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-tsx","path":"/blog/page/2/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"45775c6a-7cd8-5018-9047-afbec09abf59","frontmatter":{"date":"05 Jun 2023","title":"Awesome post 1","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":608}}]}},"pageContext":{"limit":5,"skip":5,"pagesQuantity":2,"currentPage":2,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/podryabinkina/page-data.json b/page-data/blog/podryabinkina/page-data.json index e3e173f4..1f2c61c7 100644 --- a/page-data/blog/podryabinkina/page-data.json +++ b/page-data/blog/podryabinkina/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-author-tsx","path":"/blog/podryabinkina/","result":{"data":{"posts":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}},{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}},{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]},"author":{"frontmatter":{"authorAlias":"Podryabinkina","author":"Alina Podryabinkina","authorPosition":"DevOps Engineer","authorDescription":"Passionate about automating processes and enhancing system reliability. Thrives on tackling complex projects that push the boundaries of her expertise.","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFbElEQVR42lWSiVPSaRjHf2ur8Du4BDVFVBRFKwhQDm/EEvFC8wKtPKFMbb0qNa0pa7dZK9NJrbTNjMQDvEIRFfHWwANrdmd3/5p90cmZnXnmnWfeeT7P9zvf94W2F/S7llG71bi/ajxYnfq2teDcMn/fnt+xjD6oLlKIwqVcZgSdFhXKyI7nNWtVzo0vf35dPNqaP9qagwC5uzjqWAHw1MHqtHPDDPhdy8i9UuVlfog8MjQ2IlAli72RlawQc/wphOJM2dflib8cy86NY9i+NL5nNRzYDIerkwerM0ebpu62G1mSiDxZZHbshfay3L0ZnU3XP/b8YVNJbiCNXJGv+LY9v79ugoCsfWnMsQz4cefa9NHmnG1qUJMRXZAcVZoZXyIXfuho+LY6t2cet09/WtX1lytTRGzGl+GXdusUUNYD0mGd2FsxHK5NH26Y+h/VZonCSjLitXmyluIUq67/X/um0zqzM/NpTf/utzqNJDzgj87mLfMotLvkUgbk/orBuTm7bhquzU/KFIaVZcbdLpB21V93Wk1/79gOlyftJr1V1/dAoxYE+rxs0W6a9ZB9eQzI7ruUJ452TLqedrWMV5jAqVMladNFpZdiOirU62MDh4vG7anhhcGu2vw0Mcv3WZ162TgIOZbH9q1AFqQ9aV8xPL5VcCU6ouZKbEdlelO+vDontfeXsjX9W+OrDo1CWiJPSLwYrohiv2ouN+v7oOOoJlye16ct4723smIq04S3M4Rv60u+z4/vzY5sTw475sYG2xvVSTFyTiifFSAXsF61li8aBqBjzwbHysTB+sybjtrKVEGjKlGTxJ3vevSPbeFoaXbPNLpj/GR+37P45kV3vYbD9Eu5GNTdVmmb/eiyDZQP1qbWvwzdLUq+nRffmB9XIeOPP2u1fXxt072xDfWujQzMvP593zDce6cmzJemFLJeP9Cumj6DwPQgs4ONmeHnd7SpvKai5NocSZmUO9n31DLUszLQYxnsGrxf8/lpy0LvswwxP4xOzYtmPdTmbC2MQl8X9Y4Vw7pp6Nfq7KoMYZNaWqMUpZzz62mtso0OTNfVW+qahrTlEz2PmkquYB7unCCvVB6jMl2ybRmDdiyfwcce6my8o0poUCVWZYk0qXw+w7Mgjmse7t6d1c8+eaBrqbt/s/gc0+8c0zfcjyIO8UrjBS2AtMEnmf7Q+bAy/V7J5XpV4nXZhauy86yzZAGLUadKN77rmhvp06iVVALK8CLTKQQGBePQKZJgb+NgJwRyetFY3KrJvFsmv6UU54hDc+PYdCoRQzEYD3sSMLoXze0nNwqZSKeRfQgonUzww/Ayfph18j3U3aYtlIvz5ZLGq7LSyxcVAmZKZLA3lUQhe8Iw9rM7zu2MO4ygBAwlIngiHkcjIAFUQjIvuLk8G+KFh1xgBxelRTcUSvNjwrPELCHbD4ExIpEMw+hJ4fEIgqCgA2aoGMI86wky5wbQoOCggEuxgsbrqTVKSY4oNCeG7e9FxsMoihIQBDshf6yAQVFQ2IuE+VJJ/jQKFMmNuJaV0K7NqJALipM4SfwQnAslAPH/k64Gh0dJKOpFxKgkAoVIgERcdnWxvK0sRaOILFFE+Xp5euBgMHcMY/Cx+Al8XCgRw8LoNLq3J9OPBkl47LabGfeK4huuJvEjmO4eMHB7MgpgcOJwMM5l2HWDwCA4LJxOpdMoPp5kKDdF+KQqtfmaVCo+jz91iD+VcvVgC8AQmIgiRLD6fKA3iofdPfBQvTrhcXmCMoGDYkTwJMdSP7DTqI9JF4wS8HhMEOZPIxGAR6ilUFyWygv090UQEoaQwBwMCg8Mn6Z1kpyrUATzwCHcUEagD9XtjMd/4LIQtzGUCroAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg","srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/1f64c/author.jpg 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/af0fe/author.jpg 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/464e8/author.jpg 128w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/8cd5f/author.avif 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/34a4f/author.avif 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/d6ed5/author.avif 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/8b866/author.avif 128w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/94d43/author.webp 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/6c901/author.webp 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/aa76d/author.webp 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/5e01a/author.webp 128w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":80}}}}}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Podryabinkina","authorId":"b52b7674-8be1-5af8-b32b-a7bb5f1b4ac9"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-author-tsx","path":"/blog/podryabinkina/","result":{"data":{"posts":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}},{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}},{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]},"author":{"frontmatter":{"authorAlias":"Podryabinkina","author":"Alina Podryabinkina","authorPosition":"DevOps Engineer","authorDescription":"Passionate about automating processes and enhancing system reliability. Thrives on tackling complex projects that push the boundaries of her expertise.","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFbElEQVR42lWSiVPSaRjHf2ur8Du4BDVFVBRFKwhQDm/EEvFC8wKtPKFMbb0qNa0pa7dZK9NJrbTNjMQDvEIRFfHWwANrdmd3/5p90cmZnXnmnWfeeT7P9zvf94W2F/S7llG71bi/ajxYnfq2teDcMn/fnt+xjD6oLlKIwqVcZgSdFhXKyI7nNWtVzo0vf35dPNqaP9qagwC5uzjqWAHw1MHqtHPDDPhdy8i9UuVlfog8MjQ2IlAli72RlawQc/wphOJM2dflib8cy86NY9i+NL5nNRzYDIerkwerM0ebpu62G1mSiDxZZHbshfay3L0ZnU3XP/b8YVNJbiCNXJGv+LY9v79ugoCsfWnMsQz4cefa9NHmnG1qUJMRXZAcVZoZXyIXfuho+LY6t2cet09/WtX1lytTRGzGl+GXdusUUNYD0mGd2FsxHK5NH26Y+h/VZonCSjLitXmyluIUq67/X/um0zqzM/NpTf/utzqNJDzgj87mLfMotLvkUgbk/orBuTm7bhquzU/KFIaVZcbdLpB21V93Wk1/79gOlyftJr1V1/dAoxYE+rxs0W6a9ZB9eQzI7ruUJ452TLqedrWMV5jAqVMladNFpZdiOirU62MDh4vG7anhhcGu2vw0Mcv3WZ162TgIOZbH9q1AFqQ9aV8xPL5VcCU6ouZKbEdlelO+vDontfeXsjX9W+OrDo1CWiJPSLwYrohiv2ouN+v7oOOoJlye16ct4723smIq04S3M4Rv60u+z4/vzY5sTw475sYG2xvVSTFyTiifFSAXsF61li8aBqBjzwbHysTB+sybjtrKVEGjKlGTxJ3vevSPbeFoaXbPNLpj/GR+37P45kV3vYbD9Eu5GNTdVmmb/eiyDZQP1qbWvwzdLUq+nRffmB9XIeOPP2u1fXxt072xDfWujQzMvP593zDce6cmzJemFLJeP9Cumj6DwPQgs4ONmeHnd7SpvKai5NocSZmUO9n31DLUszLQYxnsGrxf8/lpy0LvswwxP4xOzYtmPdTmbC2MQl8X9Y4Vw7pp6Nfq7KoMYZNaWqMUpZzz62mtso0OTNfVW+qahrTlEz2PmkquYB7unCCvVB6jMl2ybRmDdiyfwcce6my8o0poUCVWZYk0qXw+w7Mgjmse7t6d1c8+eaBrqbt/s/gc0+8c0zfcjyIO8UrjBS2AtMEnmf7Q+bAy/V7J5XpV4nXZhauy86yzZAGLUadKN77rmhvp06iVVALK8CLTKQQGBePQKZJgb+NgJwRyetFY3KrJvFsmv6UU54hDc+PYdCoRQzEYD3sSMLoXze0nNwqZSKeRfQgonUzww/Ayfph18j3U3aYtlIvz5ZLGq7LSyxcVAmZKZLA3lUQhe8Iw9rM7zu2MO4ygBAwlIngiHkcjIAFUQjIvuLk8G+KFh1xgBxelRTcUSvNjwrPELCHbD4ExIpEMw+hJ4fEIgqCgA2aoGMI86wky5wbQoOCggEuxgsbrqTVKSY4oNCeG7e9FxsMoihIQBDshf6yAQVFQ2IuE+VJJ/jQKFMmNuJaV0K7NqJALipM4SfwQnAslAPH/k64Gh0dJKOpFxKgkAoVIgERcdnWxvK0sRaOILFFE+Xp5euBgMHcMY/Cx+Al8XCgRw8LoNLq3J9OPBkl47LabGfeK4huuJvEjmO4eMHB7MgpgcOJwMM5l2HWDwCA4LJxOpdMoPp5kKDdF+KQqtfmaVCo+jz91iD+VcvVgC8AQmIgiRLD6fKA3iofdPfBQvTrhcXmCMoGDYkTwJMdSP7DTqI9JF4wS8HhMEOZPIxGAR6ilUFyWygv090UQEoaQwBwMCg8Mn6Z1kpyrUATzwCHcUEagD9XtjMd/4LIQtzGUCroAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg","srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/1f64c/author.jpg 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/af0fe/author.jpg 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/464e8/author.jpg 128w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/8cd5f/author.avif 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/34a4f/author.avif 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/d6ed5/author.avif 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/8b866/author.avif 128w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/94d43/author.webp 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/6c901/author.webp 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/aa76d/author.webp 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/5e01a/author.webp 128w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":80}}}}}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Podryabinkina","authorId":"b52b7674-8be1-5af8-b32b-a7bb5f1b4ac9"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/podryabinkina/page/1/page-data.json b/page-data/blog/podryabinkina/page/1/page-data.json index fd207a37..a753b7df 100644 --- a/page-data/blog/podryabinkina/page/1/page-data.json +++ b/page-data/blog/podryabinkina/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-author-tsx","path":"/blog/podryabinkina/page/1/","result":{"data":{"posts":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}},{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}},{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]},"author":{"frontmatter":{"authorAlias":"Podryabinkina","author":"Alina Podryabinkina","authorPosition":"DevOps Engineer","authorDescription":"Passionate about automating processes and enhancing system reliability. Thrives on tackling complex projects that push the boundaries of her expertise.","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFbElEQVR42lWSiVPSaRjHf2ur8Du4BDVFVBRFKwhQDm/EEvFC8wKtPKFMbb0qNa0pa7dZK9NJrbTNjMQDvEIRFfHWwANrdmd3/5p90cmZnXnmnWfeeT7P9zvf94W2F/S7llG71bi/ajxYnfq2teDcMn/fnt+xjD6oLlKIwqVcZgSdFhXKyI7nNWtVzo0vf35dPNqaP9qagwC5uzjqWAHw1MHqtHPDDPhdy8i9UuVlfog8MjQ2IlAli72RlawQc/wphOJM2dflib8cy86NY9i+NL5nNRzYDIerkwerM0ebpu62G1mSiDxZZHbshfay3L0ZnU3XP/b8YVNJbiCNXJGv+LY9v79ugoCsfWnMsQz4cefa9NHmnG1qUJMRXZAcVZoZXyIXfuho+LY6t2cet09/WtX1lytTRGzGl+GXdusUUNYD0mGd2FsxHK5NH26Y+h/VZonCSjLitXmyluIUq67/X/um0zqzM/NpTf/utzqNJDzgj87mLfMotLvkUgbk/orBuTm7bhquzU/KFIaVZcbdLpB21V93Wk1/79gOlyftJr1V1/dAoxYE+rxs0W6a9ZB9eQzI7ruUJ452TLqedrWMV5jAqVMladNFpZdiOirU62MDh4vG7anhhcGu2vw0Mcv3WZ162TgIOZbH9q1AFqQ9aV8xPL5VcCU6ouZKbEdlelO+vDontfeXsjX9W+OrDo1CWiJPSLwYrohiv2ouN+v7oOOoJlye16ct4723smIq04S3M4Rv60u+z4/vzY5sTw475sYG2xvVSTFyTiifFSAXsF61li8aBqBjzwbHysTB+sybjtrKVEGjKlGTxJ3vevSPbeFoaXbPNLpj/GR+37P45kV3vYbD9Eu5GNTdVmmb/eiyDZQP1qbWvwzdLUq+nRffmB9XIeOPP2u1fXxt072xDfWujQzMvP593zDce6cmzJemFLJeP9Cumj6DwPQgs4ONmeHnd7SpvKai5NocSZmUO9n31DLUszLQYxnsGrxf8/lpy0LvswwxP4xOzYtmPdTmbC2MQl8X9Y4Vw7pp6Nfq7KoMYZNaWqMUpZzz62mtso0OTNfVW+qahrTlEz2PmkquYB7unCCvVB6jMl2ybRmDdiyfwcce6my8o0poUCVWZYk0qXw+w7Mgjmse7t6d1c8+eaBrqbt/s/gc0+8c0zfcjyIO8UrjBS2AtMEnmf7Q+bAy/V7J5XpV4nXZhauy86yzZAGLUadKN77rmhvp06iVVALK8CLTKQQGBePQKZJgb+NgJwRyetFY3KrJvFsmv6UU54hDc+PYdCoRQzEYD3sSMLoXze0nNwqZSKeRfQgonUzww/Ayfph18j3U3aYtlIvz5ZLGq7LSyxcVAmZKZLA3lUQhe8Iw9rM7zu2MO4ygBAwlIngiHkcjIAFUQjIvuLk8G+KFh1xgBxelRTcUSvNjwrPELCHbD4ExIpEMw+hJ4fEIgqCgA2aoGMI86wky5wbQoOCggEuxgsbrqTVKSY4oNCeG7e9FxsMoihIQBDshf6yAQVFQ2IuE+VJJ/jQKFMmNuJaV0K7NqJALipM4SfwQnAslAPH/k64Gh0dJKOpFxKgkAoVIgERcdnWxvK0sRaOILFFE+Xp5euBgMHcMY/Cx+Al8XCgRw8LoNLq3J9OPBkl47LabGfeK4huuJvEjmO4eMHB7MgpgcOJwMM5l2HWDwCA4LJxOpdMoPp5kKDdF+KQqtfmaVCo+jz91iD+VcvVgC8AQmIgiRLD6fKA3iofdPfBQvTrhcXmCMoGDYkTwJMdSP7DTqI9JF4wS8HhMEOZPIxGAR6ilUFyWygv090UQEoaQwBwMCg8Mn6Z1kpyrUATzwCHcUEagD9XtjMd/4LIQtzGUCroAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg","srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/1f64c/author.jpg 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/af0fe/author.jpg 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/464e8/author.jpg 128w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/8cd5f/author.avif 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/34a4f/author.avif 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/d6ed5/author.avif 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/8b866/author.avif 128w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/94d43/author.webp 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/6c901/author.webp 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/aa76d/author.webp 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/5e01a/author.webp 128w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":80}}}}}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Podryabinkina","authorId":"b52b7674-8be1-5af8-b32b-a7bb5f1b4ac9"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-author-tsx","path":"/blog/podryabinkina/page/1/","result":{"data":{"posts":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}},{"id":"10582553-73a2-569f-8bdd-980e1f77c10a","frontmatter":{"date":"02 Dec 2023","title":"Streamlining Changelog Creation with Azure DevOps and Confluence","text":"In the fast-paced world of software development, maintaining a detailed record of changes is crucial. Changelogs serve as a vital tool, tracking every update, fix, or feature added to a project. Integrating Azure DevOps with Confluence can create a seamless changelog management system that enhances transparency and efficiency. This blog post explores how to automate changelog creation in Confluence using a PowerShell script that extracts release information from an Azure DevOps repository.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEj0lEQVR42iVS+VNaZxR9/1Hb3zJtp5NM00lNqmksmlg1imLU+NS4EASNuKK44BJQgyEKLk0QCYqyLwo8tse+vsf2QAU1RmtNJ+0PaeznZObMnTtnzrnf/e69kExt2bgCsqFB5FqbXGcFiUyNbOvtSoNjS2vb1Fq/CLb09i2dTa61yjUIYKRKE/RWZQYACgBgVhicO/ZAJHngCSftPiwQ2/dF04gnakZD2wYHqAhw5ddZNzUIpEe8FlcIRI3JhfpjQTxtdYW7+id1u479w5N5kWRVso2lc65gPIgTFjSkNDp1ZrfR6lUYHJDDhzn9MZsnihM5o81b+4R5u5DyazHFE8DwzJFSbbh5p7QGZjg9oeTesc0dQdAQMMtB/xorpN5FXYFYOL6nMrmHp4UVtU9rGmjkWmpX7zilrh1u7vz6Wl4rfRCxoi20gTW5ftcRtDhDTj+uN7shrcltRDw9w7yJl+vucMrtDYUjGPB/de32N9fybuWX3btPaaP1D4/xSCWPpmcWzQ6/0mhPZXKeUBwK48RfFx86Olkl5JaGtr7vfyz8vaqloo5+q+Bh/m+UojIYbh/Mu1tRWtlotbs+/P2P2x/ZVJu39A7lDgpFcMIXif/3+fMYh/ftjXvzy7JoKgvmJ1iW8oWS11JVJJm9XVil05suLy/xZObd6Tl4bNceMCA+SLSmvJ5XUl3f0UQdIMPd4M/tDDaROcATRCqTzRwcnpyeP6hsrm/sqIVpT+m9VZTmATbX5AwBPxTCiLv361icl7HMSSiRLa9pu18OewKReCqDeCIiidqCBtsY7PqW3u9uFpVUwM/5K3IdojA6VSYX5IskprgLz/rGGT1jg2xePqm6qp7mDUSxBOEOxmUaBOyiBu5qpA6AKfQOcxFngDu39Kx/anVdDbl8Uc4Uv481+biF2UTtv3mnvLGt1xeMEnsHQSytMKK+aKqwpP6Hn0gPKa2PGhnkOur1OxXTgjUseQBN81fa6QNFZQ3bOsuuI0BnjoENo55ggsjYfbhYYbZ7sReLa0OcOblqRyCS1DZ3d7O4m1qbDvFCQ9NC3ouldvrgjZ9LCkiU0kqY1sUORuPEfjaS2DehISx1QCqDB0e5ny4vTVY32KhIrOgeX5BpEWhJohydesWeFLwQSqfmlvtHZsEl2VBfIpUGlzi/Kn+zoS0ufcwcnHx/8REcfCdzhMtfGeYtB2IZaNvgrGpiCpbWQeF/P136o0m4tSeXOwrjqezR6dnFR75ISmNyePMrQGBxeFtpfeMzotmlTZnWDr3VObkCMZvDnxO85r96M8FbLC6DJybn/XhmZkHa1MFmjc/PCMSjXKFcY17f1IiW13iCN88XpGKlBSLDnXBb7zBn9knHQCO1H7THYI78QqK00oee0NkPyK0tNNYf60rWlLC8ll5AqqYyWOQ6Gp01qzF7IZXRvrZl1Fg8WotXbQbRo9xF36osi2IFWLLG4t3eQTe0VpBIFMZVqUYoVspUJocf8+FpKJk9SeVOY3vHAPH9L/FdMvc+ffxnInsS278iAQP41OEZcXSWOT4nDq/0GJH7H4wRHg5A4W/XAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png","srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/de3a1/intro.png 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/30cdc/intro.png 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/81307/intro.avif 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/aa5b9/intro.avif 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1441f6fa5d6f422fe91db317638f9f32/c65bc/intro.webp 150w,\n/static/1441f6fa5d6f422fe91db317638f9f32/078c3/intro.webp 300w,\n/static/1441f6fa5d6f422fe91db317638f9f32/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":722}},{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]},"author":{"frontmatter":{"authorAlias":"Podryabinkina","author":"Alina Podryabinkina","authorPosition":"DevOps Engineer","authorDescription":"Passionate about automating processes and enhancing system reliability. Thrives on tackling complex projects that push the boundaries of her expertise.","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAIAAAC+dZmEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFbElEQVR42lWSiVPSaRjHf2ur8Du4BDVFVBRFKwhQDm/EEvFC8wKtPKFMbb0qNa0pa7dZK9NJrbTNjMQDvEIRFfHWwANrdmd3/5p90cmZnXnmnWfeeT7P9zvf94W2F/S7llG71bi/ajxYnfq2teDcMn/fnt+xjD6oLlKIwqVcZgSdFhXKyI7nNWtVzo0vf35dPNqaP9qagwC5uzjqWAHw1MHqtHPDDPhdy8i9UuVlfog8MjQ2IlAli72RlawQc/wphOJM2dflib8cy86NY9i+NL5nNRzYDIerkwerM0ebpu62G1mSiDxZZHbshfay3L0ZnU3XP/b8YVNJbiCNXJGv+LY9v79ugoCsfWnMsQz4cefa9NHmnG1qUJMRXZAcVZoZXyIXfuho+LY6t2cet09/WtX1lytTRGzGl+GXdusUUNYD0mGd2FsxHK5NH26Y+h/VZonCSjLitXmyluIUq67/X/um0zqzM/NpTf/utzqNJDzgj87mLfMotLvkUgbk/orBuTm7bhquzU/KFIaVZcbdLpB21V93Wk1/79gOlyftJr1V1/dAoxYE+rxs0W6a9ZB9eQzI7ruUJ452TLqedrWMV5jAqVMladNFpZdiOirU62MDh4vG7anhhcGu2vw0Mcv3WZ162TgIOZbH9q1AFqQ9aV8xPL5VcCU6ouZKbEdlelO+vDontfeXsjX9W+OrDo1CWiJPSLwYrohiv2ouN+v7oOOoJlye16ct4723smIq04S3M4Rv60u+z4/vzY5sTw475sYG2xvVSTFyTiifFSAXsF61li8aBqBjzwbHysTB+sybjtrKVEGjKlGTxJ3vevSPbeFoaXbPNLpj/GR+37P45kV3vYbD9Eu5GNTdVmmb/eiyDZQP1qbWvwzdLUq+nRffmB9XIeOPP2u1fXxt072xDfWujQzMvP593zDce6cmzJemFLJeP9Cumj6DwPQgs4ONmeHnd7SpvKai5NocSZmUO9n31DLUszLQYxnsGrxf8/lpy0LvswwxP4xOzYtmPdTmbC2MQl8X9Y4Vw7pp6Nfq7KoMYZNaWqMUpZzz62mtso0OTNfVW+qahrTlEz2PmkquYB7unCCvVB6jMl2ybRmDdiyfwcce6my8o0poUCVWZYk0qXw+w7Mgjmse7t6d1c8+eaBrqbt/s/gc0+8c0zfcjyIO8UrjBS2AtMEnmf7Q+bAy/V7J5XpV4nXZhauy86yzZAGLUadKN77rmhvp06iVVALK8CLTKQQGBePQKZJgb+NgJwRyetFY3KrJvFsmv6UU54hDc+PYdCoRQzEYD3sSMLoXze0nNwqZSKeRfQgonUzww/Ayfph18j3U3aYtlIvz5ZLGq7LSyxcVAmZKZLA3lUQhe8Iw9rM7zu2MO4ygBAwlIngiHkcjIAFUQjIvuLk8G+KFh1xgBxelRTcUSvNjwrPELCHbD4ExIpEMw+hJ4fEIgqCgA2aoGMI86wky5wbQoOCggEuxgsbrqTVKSY4oNCeG7e9FxsMoihIQBDshf6yAQVFQ2IuE+VJJ/jQKFMmNuJaV0K7NqJALipM4SfwQnAslAPH/k64Gh0dJKOpFxKgkAoVIgERcdnWxvK0sRaOILFFE+Xp5euBgMHcMY/Cx+Al8XCgRw8LoNLq3J9OPBkl47LabGfeK4huuJvEjmO4eMHB7MgpgcOJwMM5l2HWDwCA4LJxOpdMoPp5kKDdF+KQqtfmaVCo+jz91iD+VcvVgC8AQmIgiRLD6fKA3iofdPfBQvTrhcXmCMoGDYkTwJMdSP7DTqI9JF4wS8HhMEOZPIxGAR6ilUFyWygv090UQEoaQwBwMCg8Mn6Z1kpyrUATzwCHcUEagD9XtjMd/4LIQtzGUCroAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg","srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/1f64c/author.jpg 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/af0fe/author.jpg 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/c032f/author.jpg 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/464e8/author.jpg 128w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/8cd5f/author.avif 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/34a4f/author.avif 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/d6ed5/author.avif 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/8b866/author.avif 128w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/20f2a8d8398e868f0d50bd7fb356ffdb/94d43/author.webp 16w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/6c901/author.webp 32w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/aa76d/author.webp 64w,\n/static/20f2a8d8398e868f0d50bd7fb356ffdb/5e01a/author.webp 128w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":80}}}}}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Podryabinkina","authorId":"b52b7674-8be1-5af8-b32b-a7bb5f1b4ac9"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/post/page-data.json b/page-data/blog/post/page-data.json index 35186b1b..043ae236 100644 --- a/page-data/blog/post/page-data.json +++ b/page-data/blog/post/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/post/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"post"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/post/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"post"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/post/page/1/page-data.json b/page-data/blog/post/page/1/page-data.json index 4456262d..caaedc55 100644 --- a/page-data/blog/post/page/1/page-data.json +++ b/page-data/blog/post/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/post/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"post"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/post/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"post"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/post/page/2/page-data.json b/page-data/blog/post/page/2/page-data.json index 989e06ac..2a12ae39 100644 --- a/page-data/blog/post/page/2/page-data.json +++ b/page-data/blog/post/page/2/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/post/page/2/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"45775c6a-7cd8-5018-9047-afbec09abf59","frontmatter":{"date":"05 Jun 2023","title":"Awesome post 1","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":608}}]}},"pageContext":{"limit":5,"skip":5,"pagesQuantity":2,"currentPage":2,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"post"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/post/page/2/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"45775c6a-7cd8-5018-9047-afbec09abf59","frontmatter":{"date":"05 Jun 2023","title":"Awesome post 1","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":608}}]}},"pageContext":{"limit":5,"skip":5,"pagesQuantity":2,"currentPage":2,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"post"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/proxmox/page-data.json b/page-data/blog/proxmox/page-data.json index e7aa3b48..dd9a255b 100644 --- a/page-data/blog/proxmox/page-data.json +++ b/page-data/blog/proxmox/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/proxmox/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"proxmox"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/proxmox/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"proxmox"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/proxmox/page/1/page-data.json b/page-data/blog/proxmox/page/1/page-data.json index 24d5cbbc..f7931ba4 100644 --- a/page-data/blog/proxmox/page/1/page-data.json +++ b/page-data/blog/proxmox/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/proxmox/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"proxmox"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/proxmox/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"proxmox"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/self-hosted-build-agent/page-data.json b/page-data/blog/self-hosted-build-agent/page-data.json index f3580b44..17299cf0 100644 --- a/page-data/blog/self-hosted-build-agent/page-data.json +++ b/page-data/blog/self-hosted-build-agent/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/self-hosted-build-agent/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"self-hosted build agent"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/self-hosted-build-agent/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"self-hosted build agent"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/self-hosted-build-agent/page/1/page-data.json b/page-data/blog/self-hosted-build-agent/page/1/page-data.json index f25d80d8..71dff695 100644 --- a/page-data/blog/self-hosted-build-agent/page/1/page-data.json +++ b/page-data/blog/self-hosted-build-agent/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/self-hosted-build-agent/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"self-hosted build agent"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/self-hosted-build-agent/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"e173a2ae-ebb5-5219-9479-035dde5fe8c8","frontmatter":{"date":"15 Mar 2024","title":"Self-Hosted build Agent for Azure Pipelines","text":"Welcome to our guide to installing the Azure Agent In this post, we'll cover the installation process, whether you're setting up a self-hosted agent for Azure Pipelines","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAAEqUlEQVR42jVUC0xTVxhulmwzLts0xESjTKagQ9xE0SnETR1iRwsI8lbBLeAowgRxmELlUQSxTGiAUiwWoTw3yriWCuFVSgu1ZUBHKVZKYSChIFAYr9t7+7p390pMvpz8Oef/zv845/8INhSyYkCwFbYisAUzEBhBIBTFYcNsFLYhuIHiDtAWtlgEnIM5oUYLvmXCXFHUMmGEHy1ALRtGxAq+MYEQCoEwuAptYNchiBFBjdb3ZDyCfnNtEQbn19debYL9mn/3F/W7TcNxK5vZ+pVfp9f1VrhA2MebXZk1gn8ZoNdGI0axoPAW2TQGmgbmFtP7tPmTK2eTuPuedafOLLOGJ7y1hlOTG0mzq3GtAzS5VqAe79aq5i0msw3cimxZMUwDOuW9TrVXrdJVMm/foDimWyKPLnp16b7k9Xfq55JnliNVM8XPe0qkI0K5kq5bq1zESyCgqG1wZqpOP00pBgjEXE/ZfOCK+bjK8IVEv+dBy65cUdngKLlH+dubTUaDyKNQWKJQV6imZiEQ6x9hde2/czWaHWpor2LGuV5xOa38Gkdor7VGi7Wn89s/pTafAdRE6dTjXtVx39vkyISCxgbRwBA0rbCiCIHBFWyLKFC3+pZu1O+XLQfRq4kckWfdP5ldo04dqx9fLb6YUnGlvj+Q2+3Pav4qMss9h5vwQqrRjqKolXD74bPPbxUZrtsJKgM+qZu+1jfvVqXy4PQfqxy1i+d9+H38dxTmmVulHtTK4FaNg2+Sy73yiIaX4teTOFk3oXMulVFIocFU1iGeJrnjtWP91PaYyu0kGpHGeaDQkOvF7jeLnaKYN7MYh86E7SRSzz7pbOxToljay+vrzDL2hcQcB676aKHkQMYLp7Ds87TywJHZ0CVrQFWfXUD6AfewkyF3vkkq8S4ELhUKvi5sl8y9xR6Y0CVX7iYlBldLjmY+3++X5lXQED78hj2uv9g3f1g4tSso8+SNDCbtxpWoRLenMnKl1D2BdSKO9VA9h31EQs/LgQ8Oh/gw+OeLWy+3jbAnFxxfwTuT/3SNYTgEp53OA8hNgz/SK6KKqqJy8omPuLd5vKu5XGHvEF5zt3xw2yE/Ym4DRabzHV/9LJwZHHvH3j3c/1ZK6N0sbwbgVigKLO/yoORmUoIzJie8e5U+tJy8KiFOTmQDHx0J+SGt4lwSx7lE+m0kLSMuPonNv5THP3y3LAqQk6NoLo9b9qXw91zNvf6k6SduGxsQAiMDFiztxNLnBIcAx2hmRFmbazTDg9Vyv1l+JCTdo7Q9PLXEk8rLJp1ozLxQ0yW+Wcx/2K9NkI7VKoc1I2IbihIgC8ht6r5f1Sr5W8SJ9Y+Jjj1IF8TkcUKpnIOxnL10QRZfXJ36c6NcFsGTudT2kGqBIG7v2Mws3jCzDZsqNL30D7+CmrgyILui6VR8CSmbReH3+tB59OE5al37juQ6V3ZXJl/KqO/gdAwtLb01I8Z3I4mLhkk8oGoaGtcuGH6vELj+wvQDRoeWN8fW1g2oWSRR+N5hPhUp1o0QipgQPJjlvRi8EyAExUqwgmbQarNsGNdgyyaCwDYbLkz4EWJGEcuWSOHAxQfXn/8BLFwotU5H9gkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png","srcSet":"/static/5b09e340899c3ea191d650dd40043308/de3a1/intro.png 150w,\n/static/5b09e340899c3ea191d650dd40043308/30cdc/intro.png 300w,\n/static/5b09e340899c3ea191d650dd40043308/c7240/intro.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/81307/intro.avif 150w,\n/static/5b09e340899c3ea191d650dd40043308/aa5b9/intro.avif 300w,\n/static/5b09e340899c3ea191d650dd40043308/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/5b09e340899c3ea191d650dd40043308/c65bc/intro.webp 150w,\n/static/5b09e340899c3ea191d650dd40043308/078c3/intro.webp 300w,\n/static/5b09e340899c3ea191d650dd40043308/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":763}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"self-hosted build agent"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/virtualization/page-data.json b/page-data/blog/virtualization/page-data.json index 9d0f70d1..0689946e 100644 --- a/page-data/blog/virtualization/page-data.json +++ b/page-data/blog/virtualization/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/virtualization/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"virtualization"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/virtualization/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"virtualization"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/virtualization/page/1/page-data.json b/page-data/blog/virtualization/page/1/page-data.json index 9f05ed7c..3b068ba0 100644 --- a/page-data/blog/virtualization/page/1/page-data.json +++ b/page-data/blog/virtualization/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/virtualization/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"virtualization"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/virtualization/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"virtualization"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/vm/page-data.json b/page-data/blog/vm/page-data.json index 347ed5cb..9170a039 100644 --- a/page-data/blog/vm/page-data.json +++ b/page-data/blog/vm/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/vm/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"VM"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/vm/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"VM"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/vm/page/1/page-data.json b/page-data/blog/vm/page/1/page-data.json index 4fd5377f..56dba3bd 100644 --- a/page-data/blog/vm/page/1/page-data.json +++ b/page-data/blog/vm/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/vm/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"hashtag":"VM"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-hashtag-tsx","path":"/blog/vm/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"c924c93c-fac0-517e-92e7-c5b5aaa083c2","frontmatter":{"date":"21 Jul 2023","title":"Proxmox VM Templates and Cloud-Init","text":"In the world of virtualization, efficiency and automation are key. That's where Proxmox Virtual Environment (VE) comes into play, offering a robust solution for managing virtual machines (VMs) with ease. One of the most powerful features of Proxmox is its ability to use VM templates in conjunction with Cloud-Init, streamlining the deployment process and making it as smooth as a cloud","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEz0lEQVR42gHEBDv7AAULGQUNHgQQIQIRJAIVKgQgOAYoQQcvSwk0UQw3UQ4+Wgs2UQ05VAovSQUfNQQYLQMTJQQPHwUNHAULGAAEDBwDDyACFioIMEsMP1wOP1sPRGIfcJEtkbEaXXsyi6gueZcaVnURT24FMUwFKkQEHzUDFikDDyAFDBsAAxIlBCA2AR00GGSEMZu8Glt5J2mHTJy4csDYgrfJmsPSqMvXkLjGaqS6RIaiJXKSBilDAxwyAxUpAw4fAAMYLAYuSggzTyZdekl/mF2InICis6S/yrDEztDf493q7dTj58/f48LT2ZGttz5ofRlYeA5HZgQdNAMSJAADGC4KMEsRUXFahpxzjp5vgZCHm6mrv8movMacsbuZr7ZxiJJbdYBNaHQ5TVsePFAviKgle50EJ0IDGCwABSM8KFt4KmyIOn6bOmV8Q2FzTmZ4PVVqO1ZsJDtNMU5fJkNUL0xbPWFxMllvR3CITZKsIGF+HEpmBCE4AAozTh9uj1aXsYOvwCBFWhEjMiM+Ux88VC1PZSA4SzFRZilKXy5NYjxngSVegXOPobrZ4UaRrSZkghM2UAANPlozd5W11N7E1dk7Y3gaLkArSWAjTGgrSmIeOU8mUGsjUm0qVnA2dpgnapBriZrG2N2iy9kxdZMUQ14AP3SPrMnWrL/Fgp6qYoWWPVVmIEJcH1h3KFFuG0RgH1NzIF6AJmmNM4qzKnabobrHtMzUtsnQnb/NK155AFKAl561vJauto6nsHSSn1t2hSBIZR1ghCZbfRtXeh1egx9tlCh4oTKNtSJihpGsubrQ2Ki+xqa8w0hzigA4aYKmvcW5zNGjucE7U2QmSGEfSGYcYYclZoobY4kbaZMea5Ahc58uirRJgaGlwtCsx9K4zNOrwspEcokAh6a1rb7CfpmkaomYSGBwFig9HElsInScIGWMFlZ8FVuFElaALH2jXbPVgrnSbpivWYKYf5ynvs/UdJaoAFF3iXeToZCps3yVolVzhBcnORFIbhZsmxphjDB5nzx1lz6Krz12mypegkx5lWmUqousvIyntGeDkFN4iQBJbX6uwMaOpq9oh5dUd4xshZR7q8BYrM4aXYdDi7BGc5FRfZh/qLxih55Re5KoyNa/1d3V5el2jJkoTF8AVnuMiqSvYoKTXH6QZYSWhKa2iqu7td3qj7bKRW2LI0hlUH+YosXUtM3XvdXfqsbTcpOjlrC5t8nQQGV5ACJIXB01SBwyRkdkd4qns1V1iF6BlIOjs73Y4n2brStScJrA0o+uvoSjsbvQ18DT2WF9jFBtfm2IlTBXawAZPlMnRVUkPEsvR1dcfI9ig5VZfpJ+oLB9nq1McolGdJF/prt3malpiJqNp7O70ddVZXIACRkcNkYcQlgACixDIklfOl9yQmRzGS9BEyI2Fyc4HTFEL0hbb4+gMl13ETJOM1NpPmF2Ql9xTGZ1MExeGjVHLUtdEzVMAAMgNQwvRh1EWjNabidEVQsdLwQYLQMbMh08U0ptgEx5jw4nPgIIFhUjMgkPHQwdLTFXaSRNZA8zSQUhNgACFigDHzUJLEMVOlIhSV4aPlQKOVQMN1EjUGhAcYlJeI0pUmkJITYDDh4GFicYNkgbQ1gLLkUDITYCFyk7gtmFiAfURwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg","srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/96deb/intro.jpg 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0fdf4/intro.jpg 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/a89ca/intro.jpg 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/81307/intro.avif 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/aa5b9/intro.avif 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/0c8d0/intro.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/1218f3f01ec49437d381271c6bcea5e0/c65bc/intro.webp 150w,\n/static/1218f3f01ec49437d381271c6bcea5e0/078c3/intro.webp 300w,\n/static/1218f3f01ec49437d381271c6bcea5e0/6d09e/intro.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}},"wordCount":{"words":714}}]}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"hashtag":"VM"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/zhmayev/page-data.json b/page-data/blog/zhmayev/page-data.json index f3199e13..100789a5 100644 --- a/page-data/blog/zhmayev/page-data.json +++ b/page-data/blog/zhmayev/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-author-tsx","path":"/blog/zhmayev/","result":{"data":{"posts":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorDescription":"Full-stack Software Developer, Solution architect, Entrepreneur. Working in IT since 2008. Enjoys being challenged with projects that require him to work outside of his knowledge set.","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-author-tsx","path":"/blog/zhmayev/","result":{"data":{"posts":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorDescription":"Full-stack Software Developer, Solution architect, Entrepreneur. Working in IT since 2008. Enjoys being challenged with projects that require him to work outside of his knowledge set.","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/zhmayev/page/1/page-data.json b/page-data/blog/zhmayev/page/1/page-data.json index 1412794d..30a983a0 100644 --- a/page-data/blog/zhmayev/page/1/page-data.json +++ b/page-data/blog/zhmayev/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-author-tsx","path":"/blog/zhmayev/page/1/","result":{"data":{"posts":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorDescription":"Full-stack Software Developer, Solution architect, Entrepreneur. Working in IT since 2008. Enjoys being challenged with projects that require him to work outside of his knowledge set.","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-author-tsx","path":"/blog/zhmayev/page/1/","result":{"data":{"posts":{"nodes":[{"id":"91d98aad-6ec6-5e71-b6ca-daff730c0ca4","frontmatter":{"date":"12 Jun 2023","title":"Awesome post 6","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":707}},{"id":"1f201db1-7d1d-5ef0-b138-fe7b3dc57ba8","frontmatter":{"date":"11 Jun 2023","title":"Awesome post 5","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":614}},{"id":"f7437acb-56dc-5ec6-9370-7726f39da57a","frontmatter":{"date":"10 Jun 2023","title":"Awesome post 4","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":610}},{"id":"aa06b558-51ae-5f78-9989-0baadffbbc36","frontmatter":{"date":"08 Jun 2023","title":"Awesome post 2","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}},{"id":"6a129001-a171-5d7e-9555-a943ae9d624f","frontmatter":{"date":"07 Jun 2023","title":"Awesome post 3","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":129}}]},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorDescription":"Full-stack Software Developer, Solution architect, Entrepreneur. Working in IT since 2008. Enjoys being challenged with projects that require him to work outside of his knowledge set.","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"limit":5,"skip":0,"pagesQuantity":2,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/blog/zhmayev/page/2/page-data.json b/page-data/blog/zhmayev/page/2/page-data.json index 3a9be1a0..014b4116 100644 --- a/page-data/blog/zhmayev/page/2/page-data.json +++ b/page-data/blog/zhmayev/page/2/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-blog-by-author-tsx","path":"/blog/zhmayev/page/2/","result":{"data":{"posts":{"nodes":[{"id":"45775c6a-7cd8-5018-9047-afbec09abf59","frontmatter":{"date":"05 Jun 2023","title":"Awesome post 1","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":608}}]},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorDescription":"Full-stack Software Developer, Solution architect, Entrepreneur. Working in IT since 2008. Enjoys being challenged with projects that require him to work outside of his knowledge set.","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"limit":5,"skip":5,"pagesQuantity":2,"currentPage":2,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-blog-by-author-tsx","path":"/blog/zhmayev/page/2/","result":{"data":{"posts":{"nodes":[{"id":"45775c6a-7cd8-5018-9047-afbec09abf59","frontmatter":{"date":"05 Jun 2023","title":"Awesome post 1","text":"Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of \"de Finibus Bonorum et Malorum\" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, \"Lorem ipsum dolor sit amet..\", comes from a line in section 1.10.32.","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACPklEQVR42o1U227TQBDNf/HAl/WJZ15A6h+AWgoChESFqpDSNiRcSsJFApI0jUnT3Hy3d+31JYeZdUIiU0otrdZezZxz5sysK3aY4KbLDBLM/etjKlcdWledEVgUp8jSFI64IaArEx0sVZHkyhR+nCEkoDzPUetGuN/w8HHuQUSpJuacfwOKVJfUOI8w8xWEysBPEOd6v3sU4Nb2HE1DQhAJW1BWW1mVw7tHiqZegp12iEtXIUoKwK0DiXt1gQs3w4NPoSZdAfHulAElsbliHeTLpWdJjrHp4eDLFD+nMXy1QJZlcDVQYYtHsSZ9z/wNwGffiN1RCMmXVVPMgBUuMJ6YsGYW+bqgxIwAMkxIPfvLJbOY1jDCQ1LONlSYpdqRGBGgL9dKGTBOF+jaFr7OTNgU7MUR2oaDgbWuYmXTuaV0rlYo4uQPkBMW73weqRzb0wFu96rYcQZ47Bg4mUwRiBy2WDWyWJ7YKJml86FmDQtfxp7C236Il40uDNeEQgqRJWiNJMZUMiuzl7F/dZnBhrbSsrXJNDJNQ2H/9BeevBviUVthtx2jMYhx0rHJ7xgBAc6IdF4anYq1NPb4LMJzak5KN8Eg4GpH4JTM3mt52HpxiTuvLOz/iHRHuYqYhr9+LrH3OdTvZlAabA7i+WK13KCjnsAbItmttvG0+h7N7xcYWpFunLVUxaMyckoKy3fRWXpa7wscdgVqPYnDfoLaWawt2UzebOC1PwdeH+h61QiQlb7uhDTYkfbX+s8f6Td8JW7ht0aWRwAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e89878735987983b99492d885250d035/60da4/blogCover.png","srcSet":"/static/e89878735987983b99492d885250d035/17981/blogCover.png 150w,\n/static/e89878735987983b99492d885250d035/e9a60/blogCover.png 300w,\n/static/e89878735987983b99492d885250d035/60da4/blogCover.png 600w,\n/static/e89878735987983b99492d885250d035/a3486/blogCover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e89878735987983b99492d885250d035/e625e/blogCover.avif 150w,\n/static/e89878735987983b99492d885250d035/2574e/blogCover.avif 300w,\n/static/e89878735987983b99492d885250d035/d3834/blogCover.avif 600w,\n/static/e89878735987983b99492d885250d035/387a3/blogCover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/e89878735987983b99492d885250d035/e80bb/blogCover.webp 150w,\n/static/e89878735987983b99492d885250d035/a8059/blogCover.webp 300w,\n/static/e89878735987983b99492d885250d035/9a858/blogCover.webp 600w,\n/static/e89878735987983b99492d885250d035/c3710/blogCover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":450}}}},"wordCount":{"words":608}}]},"author":{"frontmatter":{"authorAlias":"Zhmayev","author":"Yaroslav Zhmayev","authorPosition":"Solution Architect, CEO","authorDescription":"Full-stack Software Developer, Solution architect, Entrepreneur. Working in IT since 2008. Enjoys being challenged with projects that require him to work outside of his knowledge set.","authorPhoto":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADMElEQVR42m2UuUsrURTGJ4kLLoOilSCCS2+jaCMIgqBoISgmaLAQFFwQFEQLQRQEl0IwphUbC9NoZ2Ej+he4b0lU3F/U3pnJ98453BsmeW/g496Ze87vLPfeMYz0x6dGMzs7eyArK2ufFCMlfD7fH1Lc6/Xuk4JkU5jhk/Z4SF6ekLGfHB8IAlKSwDyCvmkl1RhjW+XvVYw0oIeMQhpEsujdpu8pmALbJEvZ8Pum9jdcdIMWwgr2S3IoOgoKClBTU4OKigoUFRXB4/FA2bAcZauhKRaX2aeMODK4TM6so6MDa2trWFlZwfT0NGpra+W7C5ryIUZAZ2hShKiOyjDOzjRNzM/PY3t7Gzs7O9jY2MDY2BjKy8szgY7KMsYsgwA6O1tnx6WVlpZicHBQMuzp6UFvby9GRkbQ1NQkaxz0P1n2GzSJZALZuKSkBI2NjZiZmUEgEBDNzs6itbUVbW1tKC4ulsDqFNiKsWu4joiknpOTI33ifnHvGLi8vIytrS0sLCygq6sLfr8f+fn5qZ13lf1guOjIBA4PD6OzsxPd3d0YHR3F4uKiZFpVVSU2+oy6+2loupbe4erqakxMTGBqagpLS0upTNvb26UVbJOXl5cJdf4pOTc3V7Lksbm5WTKbnJxES0sL6urqEAwGMT4+LkDuNY8kR4Gl5F2VGd8AbSDAyspKaT6vl5WVCezg4ACHh4cIhUJyChoaGngDbRUgwoe6X+2sxTejvr4eQ0NDiEQiOD4+xvr6Oubm5rC3t4fz83PRzc0NotEo4vE4zs7OcHR0ZK+urnICfQadKVNddITDYScWi+Hx8VGMLy8vcX9/L853d3e4vb0VMfD6+hoXFxc4PT11np6e8PLyEj05OTH1bQnwBnx+flrswM4M0mIgi+e85p4T3Hp7e2Nwn5AAyIWmaJs/Pz9s/EvGjhviHllchbL5/f7+ZnDYzZLfF714KNrm19cXXl9fk2RskWwNcckmmEUlJhOJBJcdYl9W2v9Q06l3fnKKfXx8gJR8fn6WnrJ4/v7+nuQ1snlgW51ZJlCXL79z2slCKitITvukOOkPKcGB+ButDVxdXZluH/38BXl3pMODFsoqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png","srcSet":"/static/36d76e77f734df007af98d1cabd833d8/fbc98/author.png 16w,\n/static/36d76e77f734df007af98d1cabd833d8/914ee/author.png 32w,\n/static/36d76e77f734df007af98d1cabd833d8/b18f9/author.png 64w","sizes":"(min-width: 64px) 64px, 100vw"},"sources":[{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e8e20/author.avif 16w,\n/static/36d76e77f734df007af98d1cabd833d8/b6d61/author.avif 32w,\n/static/36d76e77f734df007af98d1cabd833d8/4f4ab/author.avif 64w","type":"image/avif","sizes":"(min-width: 64px) 64px, 100vw"},{"srcSet":"/static/36d76e77f734df007af98d1cabd833d8/e789a/author.webp 16w,\n/static/36d76e77f734df007af98d1cabd833d8/ef6ff/author.webp 32w,\n/static/36d76e77f734df007af98d1cabd833d8/a9ea7/author.webp 64w","type":"image/webp","sizes":"(min-width: 64px) 64px, 100vw"}]},"width":64,"height":65}}}}}},"pageContext":{"limit":5,"skip":5,"pagesQuantity":2,"currentPage":2,"lang":"en","markupData":{"bannerTitle":"Well unknown facts","blogByAuthorBannerTitle":"Articles by the author","blogByHashtagBannerTitle":"Articles Featuring","head":"CodeCave Blog","readPostLink":"Open article","readingTimeTitle":"Reading time","readingTimeUnits":"m","postFooterTitle":"Congratulations! Now you can show off with your new knowledge!","postFooterText":"If you want us to uncover some other Well unknown facts, you can contact us via the socials or e-mail below. See you!","sharePostTitle":"Share this post","readMoreOnTopicTitle":"Read more on","blogSectionTitle":"new in our blog","blogSectionLinkTitle":"all posts","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD1UlEQVR42pWUX0zTVxTHCwT501JKaWmBrsUV5N9gIixsuqgwlDCge7Hooli0yp9ZRR+0BdryxxU7oVCQgC3Kn1IMf0S3xLlMI2Mapw+a6JMGX9yMe3EPbvoimHw99xJJnIPpw82vub33ez7nnO89gqioKLzLkkqlkMvliI6O5r+XOid4FzEmFBkZiaCgIISFhSEiIoKLMvH3EnxNFRwcDI1GA4vFgry8PHyo1UIsFkMoFEImk71BvKQgOygSibiYXl+Ge/fu4+X8PC5f+hkOhwOmfSZkrc7ixOHh4Yu0gv+iYt+AgABotYnw+/2Ym5vDo0e/49zUJI47nejr7cXQ4BDcnW7UVNcgOzsbK1aEcGrBv6lYtNDQUOytrMTjx3/i+fNnuHv3DsbHx+AbHibRKTTa7XC1tWNsbAxdbjfG6Wsxm6GKVy0IMiGGHBgYiKysNbh48SeieoHZ2fu4dvVXDA0MwNXeDk9fH/wjI7h58wbOjI7CcsSMbncXBgdOw+v1ID09HQKWIqsD66KZojx58hf++fspZn6ZRmdHB4YHB9F+vA1ej4eo2jjZMUcrJscniK6LU/d0d6PJ3rggyCyQm5uLW7duY36eavXHQ/zw/Xn0e7041d/Pa+Y96eE0vmEfJicmUF1ZBVPNN+jt6eGp7qqoQN6GjdwJnDAjI4NHYh1sqKuDo+UoRkf8sFutOEkNsFlt2GUwoKW5mUjsGDh9Ctd/u4ZOlwtlej0+ycmBtb4BO7Zvh4DVLiQkBPFxcWhqbKRauehyBewNVkydPcvJeohk+so0Dpj2o+07J2ZmpvFgdhaObx3YuH49mumeTqdb6LJEIqHuxEOjVnPL6LdswYkT3TAfPgLDjnK0kud+vHAB9XX1VAIvX9VVVbyue4xGnhGzDXMGu79om5UJCUhOToaYapqelkYCdXAec2KvcQ8tI5ytrWhpaoKupBRRBJFDIpsKNkFNIEzsLWOLqcuMNjMjE6XFJRCSH4uKiqhuLZzyYG0t1n62Fh9RJ5kjNhcU4PN167hvme3eenrszUrooMGwE1/pSpFEr0ROB9UaNfabTCjcXEj12oBDtQfxRX4+PiVnlBQXLw6KNwTZBouUTw9/xOfj6bP91ZkfIykxkYgk2Fa2FUeJ1mazwWjcDZFQxJuw5LRh6SoUCqKSQ6P6AAlqDd9TqVT4eus2lJeXIzU1FV8WFiJOGcvT/t/xxQRer/jYOEpbC6VCSeWIgTJGgZSkVVDExCCS/pe+z4BlhxmBTBYNbcJKJCcmIS0lBbFKJQ+23AxddsCyywvCMkhYEE4mXVbwFQflxPovnsZUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png","srcSet":"/static/b358397f973ed74732db29698c1773d1/7458e/blog.png 75w,\n/static/b358397f973ed74732db29698c1773d1/de3a1/blog.png 150w,\n/static/b358397f973ed74732db29698c1773d1/30cdc/blog.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/b358397f973ed74732db29698c1773d1/eb54c/blog.avif 75w,\n/static/b358397f973ed74732db29698c1773d1/81307/blog.avif 150w,\n/static/b358397f973ed74732db29698c1773d1/aa5b9/blog.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/b358397f973ed74732db29698c1773d1/18188/blog.webp 75w,\n/static/b358397f973ed74732db29698c1773d1/c65bc/blog.webp 150w,\n/static/b358397f973ed74732db29698c1773d1/078c3/blog.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}},"authorAlias":"Zhmayev","authorId":"23a05467-9e8e-55ae-a8e5-1eb92b1c807d"}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/index/page-data.json b/page-data/index/page-data.json index f8fd6568..26c6c23c 100644 --- a/page-data/index/page-data.json +++ b/page-data/index/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-index-tsx","path":"/","result":{"pageContext":{"lang":"en","markupData":{"bannerTitle":"Let's start","head":"CodeCave is Crafting Digital Solutions with Precision","metaDescription":"Our company is dedicated to every project, presenting comprehensive services in software development and IT consulting, providing innovative solutions"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["1287994371","2469162486","2595676272","3518807326","637289409","641077248","772577693"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-index-tsx","path":"/","result":{"pageContext":{"lang":"en","markupData":{"bannerTitle":"Let's start","head":"CodeCave is Crafting Digital Solutions with Precision","metaDescription":"Our company is dedicated to every project, presenting comprehensive services in software development and IT consulting, providing innovative solutions"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["1287994371","2469162486","2595676272","3518807326","637289409","641077248","772577693"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/page-data.json b/page-data/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/page-data.json index 13e4cde6..0c4dd1a1 100644 --- a/page-data/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/page-data.json +++ b/page-data/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/","result":{"data":{"markdownRemark":{"id":"08716ab8-fc5f-5f90-9fc0-a8218ec51923","html":"

CODECAVE have developed a beautiful, modern, user-friendly website corresponding to the all customers’ needs.

","frontmatter":{"stack":["React","Gatsby","MUI"],"title":"Website for architectual agency","description":"The website for LLC “Art-studio ‘Zrobim’” reflects the studio’s commitment to architectural excellence and client collaboration. It serves as a digital portfolio showcasing their extensive experience and innovative approach to design. It features a variety of completed projects, providing insights into their design process and the outcomes of their creative alliances with clients. The site is designed to offer an intuitive and informative experience for visitors, whether they are potential clients looking to start a project or simply exploring the world of contemporary architecture.","challenge":"LLC “Art-studio “Zrobim” needed a dynamic website presenting the offered services like private house designing, interior designing, villages, and blocks of houses designing.","clientDescription":"LLC “Art-studio “Zrobim” is a team of architects striving to make housing affordable and of high quality.","logo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAYAAAASYli2AAAACXBIWXMAAA7DAAAOwwHHb6hkAAADa0lEQVR42tVV2StvURjdhndzmWcpJZGU8j/4C7x6khcl8oQQGTJnCgmZ53l4ERGZ+pUk85RMP3OZ1m19OSf3SPferlvurq+zz17fXnvvb62zj1JKwcLCAnza29vj+voaWru8vISbm5tgDFtbW+zv7+v46ekpnJ2d8Z5DfX9CR0dHODk5wcbGBgEBAbi5udEnmM1mBAcHC5GdnR38/PxweHio42dnZwgKCpK55CCXur29hRZ3d3d4fX3VJ7DPsd/FGQpf3L6ecGdnB4zt7W3s7e3h5eVFB9mnCMSYQ/zp6elTnKGojqWlpSjk4ODwQWV3d3ddZQpjVNnFxUUwcrwp/Y99eHV19XeEPj4+8PX1hYeHB0JDQ0V6rZE8MjJSMC8vL4SEhODo6EjHLy4uEBERITg5yPUf2Ob7+5D+sbKyEoX4cRttw4JrKtMFRpVdXV0FI4f4mR1ra2sZ5I1hJPT09NQJaXwjoWYrcrxt7IuN7e/vL/egt7c3wsPDP/gwKipKMPosLCwMx8fHP/mQPiVODnIpFvZ9GNuf4jrh8/OzPKkig5enNs5g45MYn+9x7dJl/1MfMsl4O/8ql6G6u7sxMDCAwcFBrKysoL29Xd4fHh6k6A0NDTLG9/n5eXR0dGB1dVXEo+8WFxexu7srxGNjY1AmkwkFBQWIj49HYWEh+vv7hYB9xsjIiJCWlJQgKytL3lNSUjAxMYGWlhbExsaitLQU9/f3CAwMhOKfjYmsByclJiYiPT1ddpyfny8rn5+fIzs7G8nJyWhqakJaWpoQciFuJiMjA0NDQ4iOjoaKiYlBfX29rJCbm4uZmRkkJSVheXkZqamp8uzt7UVRUREyMzMxOzsrC1VXVwthTU2NnCQuLk7yVVlZGVpbW9HV1YWFhQX5LfLbZL0ODg5QXFyMxsZGGWeN6urqZHf8J6+trUlsbGxgenoaS0tLH1XWLMJiM5Fta2sLc3NzQmpU/eTkBOvr69J/fHyE6uzsRHl5OSYnJ6W4VJ3HqaioQEJCAtra2jA8PCxHYl2J9fT0YHR0FFVVVXJcalBbWysiKQ5QBB69r69P6snj8KhTU1Nobm6WSVyAdczJyZFaUSR+eiRnDglJrFhoJlZWVmJzc1M8yJ1yNR6ZO+EuOYm7JzlryTwuOj4+LsLQanl5efgBQDKrD6YV0P4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/f3289fa154f0e6304425c852deed980b/abeb2/clientLogo.png","srcSet":"/static/f3289fa154f0e6304425c852deed980b/a0e88/clientLogo.png 45w,\n/static/f3289fa154f0e6304425c852deed980b/1c9d6/clientLogo.png 90w,\n/static/f3289fa154f0e6304425c852deed980b/abeb2/clientLogo.png 180w,\n/static/f3289fa154f0e6304425c852deed980b/c5727/clientLogo.png 360w","sizes":"(min-width: 180px) 180px, 100vw"},"sources":[{"srcSet":"/static/f3289fa154f0e6304425c852deed980b/8ffd0/clientLogo.avif 45w,\n/static/f3289fa154f0e6304425c852deed980b/bb5eb/clientLogo.avif 90w,\n/static/f3289fa154f0e6304425c852deed980b/da446/clientLogo.avif 180w,\n/static/f3289fa154f0e6304425c852deed980b/fdc76/clientLogo.avif 360w","type":"image/avif","sizes":"(min-width: 180px) 180px, 100vw"},{"srcSet":"/static/f3289fa154f0e6304425c852deed980b/eb644/clientLogo.webp 45w,\n/static/f3289fa154f0e6304425c852deed980b/a824c/clientLogo.webp 90w,\n/static/f3289fa154f0e6304425c852deed980b/126ee/clientLogo.webp 180w,\n/static/f3289fa154f0e6304425c852deed980b/7f6ee/clientLogo.webp 360w","type":"image/webp","sizes":"(min-width: 180px) 180px, 100vw"}]},"width":180,"height":287}}},"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEBklEQVR42o1UWUyUVxgdtS7MMCj7vg5awFbc0ApateyrCjPIlkJfigOD4/JElYGptlQjmJooM0gJtE3BBgiKjkAjwcgiMxOcFGYCCS8Q+8YuvgDheL+bDIFYmv7Jzb/de+655zvfETg7OmGj4eTgCPudu+Dq7AKxSASRjZA/uzg5b7hG8F+Avt4+UF5Uws5WjIjw4zh18hS2fbKVv28Eug6QJrm7unFmO7Zth8RfgrYnT1Bx5w7GxsawuLiIh9XVOHTgIBztHfg8WrMWfB0gTbIVirAncDcK5HK0NLfAYDBgcHAQMzMzsF6zs7NIl8rg4ebOJaB16wBpB/ro5+OL/G/z8eD+fRiNRvT09kKn06G7uxtzc3NYWVnB8vIyurq6oFQqcSB0P3ZLArk0VpYckHYhXRLiEtDb04POjg60tbWhvb0dHezZZDJhaWmJs6t5WIOoyCikpJxh90gkJyXhs5C98Pb0Wg+4U2yH+Jg46J7pMD4+junpaVgsFrS2tqKuthYLCwuor6tD1OlISNPSUKRQ4MrlK8g8nwEvD89VPVcBxSJbyNKkaG5uRk52Dl52v8Tw0DAusSpHnv4KmqoqyKRS1NfX4/at25DJ0lFaqsYl5WX4eHlzwFWGJC4d+UxyCq9qdmYWB7hW/B3UZWomRTyyMjKRevYcnuueo6KyEopCBcrLy6EqUXGGVmIc0FYohM32HSguLobRYMRdtqCpqQllpWW4eeMmYmNiGVgqPx4VqKGxEeU//AiNRoOSa9exNziEE6ImEBDVuNg4dtQWPGZ6kUWokqY3Jtz7+R63T0xUNJcj7Vwq+vr68IgBEvuS6yXISD+Pb3LzkBifgMAACQRBnwbxAtBl0OvR398PvUGPnlevMDU5yX1osZg567zcXL5hqUqFpMREhH9xDOFHjyEnKxsqBk7eFPj7+kHzoIoXgJjNz8+j68ULPHv6lFtlkoHeYlpp2fFIjr86O3GxqAjy/Au4yqp8Q/09CuUF2L8vFHZiMQTUalTFggtyVGurMTIywg08NTWJ0dFRbp2B16+hHxhAbc0v+LPxEfclHV3NND4adoSHxmbBJt5lAjcXV0gCAnDkcBhSkpKhKCiEVquFeXiYe2/h/XtMTEyg4Y8GpusbDA39zW0TxuYLbWx4WBCQtbd5lQmUSk+Oj42O4QUgxhQEZrMZ7xjw23/eorKygqVOBGdE4RESFAySzGGX/cfhQC4ng1J/nog4jmjWXuS/vK9z8fuvvzEdf8KWTZv5oGqGfr4Phw8eQoCf/8fhYB1kTAoI8hUB0yCxT574kkcWsaI5dJJg5g4Ctpp6w4Alpp7uHhyYdqckoUUki/U/vdOggtIG/yuxaeHauLf26tr//5bYHwAGByLOnddQVQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/541da7254eca101084504751a7e14ba1/d6138/cover.png","srcSet":"/static/541da7254eca101084504751a7e14ba1/15e42/cover.png 100w,\n/static/541da7254eca101084504751a7e14ba1/5aead/cover.png 200w,\n/static/541da7254eca101084504751a7e14ba1/d6138/cover.png 400w,\n/static/541da7254eca101084504751a7e14ba1/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/541da7254eca101084504751a7e14ba1/6d0de/cover.avif 100w,\n/static/541da7254eca101084504751a7e14ba1/f2685/cover.avif 200w,\n/static/541da7254eca101084504751a7e14ba1/4ff31/cover.avif 400w,\n/static/541da7254eca101084504751a7e14ba1/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/541da7254eca101084504751a7e14ba1/d8057/cover.webp 100w,\n/static/541da7254eca101084504751a7e14ba1/2e34e/cover.webp 200w,\n/static/541da7254eca101084504751a7e14ba1/416c3/cover.webp 400w,\n/static/541da7254eca101084504751a7e14ba1/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["2 senior frontend developers","1 UI/UX designer","1 QA engineer","1 DevOps engineer"],"screenshots":[{"id":"3f826381-8647-5000-9155-7b810d8e6df3","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABTklEQVR42n1SW47CMAzMXTkFN+KvAgn6g4QAIQGFltTpg2cXLjKbMYRtV+x+jGwnnbE9qUnTFM45WGuR5/m/EJEOeDYYDDAajVBVFWazGcxut9PLLMsUh8PhDTYJIJmNf2O9XmO73argfD6HOZ1OSuDB+XzG5XJBXdcq8Jdge0ryCObUMiSTQLGmaXC/33G73VAURUeQBIrxvN2YCJbxzHDNMA1JJIQPwmTtfLPZYL/f4/F4qPByuXzb8xakUJIkCnpKkBTQ9pU+xXGMKIrQ6/XQ7/exWq3Ax1VBTsPONJYGf0LYgqAoa042HA4xHo8xmUwwnU51O3M8HmG5Vuv3sPZTlM7rlmWh/ok43WKxWCD3mxpecP+fXybz9XMKxlCLhFeWzmuz5mRsTE9N7nwhpUehsD4XH8W9cld6wvOeubjqFUu4ooIrK42sr80XvgEj5K521deawAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/ed39ec5f30b5a4d41c830b269d033662/6c95c/screen1.png","srcSet":"/static/ed39ec5f30b5a4d41c830b269d033662/64b46/screen1.png 218w,\n/static/ed39ec5f30b5a4d41c830b269d033662/dd776/screen1.png 436w,\n/static/ed39ec5f30b5a4d41c830b269d033662/6c95c/screen1.png 871w,\n/static/ed39ec5f30b5a4d41c830b269d033662/c1927/screen1.png 1742w","sizes":"(min-width: 871px) 871px, 100vw"},"sources":[{"srcSet":"/static/ed39ec5f30b5a4d41c830b269d033662/827f2/screen1.avif 218w,\n/static/ed39ec5f30b5a4d41c830b269d033662/98332/screen1.avif 436w,\n/static/ed39ec5f30b5a4d41c830b269d033662/54962/screen1.avif 871w,\n/static/ed39ec5f30b5a4d41c830b269d033662/9ed7c/screen1.avif 1742w","type":"image/avif","sizes":"(min-width: 871px) 871px, 100vw"},{"srcSet":"/static/ed39ec5f30b5a4d41c830b269d033662/fa6b4/screen1.webp 218w,\n/static/ed39ec5f30b5a4d41c830b269d033662/04210/screen1.webp 436w,\n/static/ed39ec5f30b5a4d41c830b269d033662/111cd/screen1.webp 871w,\n/static/ed39ec5f30b5a4d41c830b269d033662/10fd4/screen1.webp 1742w","type":"image/webp","sizes":"(min-width: 871px) 871px, 100vw"}]},"width":871,"height":424.00000000000006}}},{"id":"514d9c4b-0f23-5192-85aa-9afa9f3d7a9f","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACuUlEQVR42iWS60uTURjA338g+tCH6FtQ9q1IpZsKOi0yMe/aUnMpXiC1LYwUy3JhNS3TZcOSyG4fyowMN5TZNLVt2tzFic3ZNMIuFpSX8kM3f513HXg4PM/L+b3P7zxHGhsbw+fzMTU1hcvlYnx8nIkJL9PT06LmFzUn7+bmWfqBiFUWv6+ysPSXbyIWllex9Nuxjbj5+QfmPiwgjTmdvJ6cFJCJINDr9WK3j2IwGLh3pz34g7n38/wSBz7OL/L56wpLKwIs4Mti//TlBy6Pj17zAB6vHykwM8sLs5Gn91txe7w4X1lprSultbaQNn09LreHrq4urLYRTlaU0VCvQ16//4LJ1MOjjscYrrcQp4hEq61FklUdQttus+LxeHC7XYz0P8MxaArW5O9NVxuprTxOaV4qUZGRmPuG6O7uJjsriZICJWXFeSgz08hVpiB5hapz1IqpqxNZf3h4mMFhK1ah7RS5TwA77t/mYOwe1CUqbuhq2B+1m/zMJC6fUdNyoYrGsxqKcrI4kqNECnYlLn7EbkMekMVioa/PzMBAPzabjZnZWc5UnWLd2jWUFx+lQVtFSlwESfH7hImRtmsN1KgLSYjeRWjotv/KA5Y+HtxtF7qeIFTuTB6Q3W4PTvuERsPGDeuJ2bEVxZ4w4qN3ciBOwfPuDq7UVaPOikGxYxuh4duR/H4/DodDqA4FYTJEBrrdbpE7mH4ToP2GnvLcZLRqFTfPC83Tx0SejkF7ivrKMgoSownbsomQzSFIM4G3vLT0ijt8iF90Iz8TuatAIIDRaKS310znk9tU1+Ry7nwRFRVZaMrTKS5MQJUbS0l+PCkpUSj2hpOcGoHUYzHRdqsV3aWLNDc309TUhF6vD4ZOp0PfrEdTUUpiWiwZhxPIyE4grzCDvKJMlKpkDonILz6EqiiDnPxU/gE1bD5GL+iJ2QAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/2653e/screen2.png","srcSet":"/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/802a7/screen2.png 220w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/37479/screen2.png 439w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/2653e/screen2.png 878w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/10f58/screen2.png 1756w","sizes":"(min-width: 878px) 878px, 100vw"},"sources":[{"srcSet":"/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/f87c9/screen2.avif 220w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/77c22/screen2.avif 439w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/dd3b5/screen2.avif 878w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/3e6f1/screen2.avif 1756w","type":"image/avif","sizes":"(min-width: 878px) 878px, 100vw"},{"srcSet":"/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/797a6/screen2.webp 220w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/f1dca/screen2.webp 439w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/05710/screen2.webp 878w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/36f10/screen2.webp 1756w","type":"image/webp","sizes":"(min-width: 878px) 878px, 100vw"}]},"width":878,"height":423.99999999999994}}},{"id":"393091cd-76e8-528c-a39e-ca08b7518914","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAYAAAASYli2AAAACXBIWXMAAA7DAAAOwwHHb6hkAAADbUlEQVR42qVWW0tUURg9D/2JHqJnIepNrN6CwHqLIrSIIOhCWJgVgdCFkBKS6KaZGglaWJIpls44F2fG+93RuZrR+NAfiOhNV7O2rNN2GG818M3e59tnr/2t9X177+NEo1HMzc0hFoshHo9jfn4e9P2rOQSbmJiAz+dDX18fBgcHzQIzMzOYnZ3dthnAyclJ9Pf3o6enB6FQyAyMj4+bhbZrjiiTrijT6MtnGluXMv9IjxEx0qmpKbcvk482NjZmnm0QW3dDeXp6GpFIxOhHC4fDGBkZwcDAgLHh4WEMDQ2ZdzhGYDtKvkuZXEBGyBc5gRoKgL5gMGgiEtVcysqB+g5fphFUmVU/95lMck1zhePogRExdNFiSx+NUdPHVtJQCo7ZoDSHFKShKHOy6LIdHR11k8LSYGKUOFKlRC5lUeJqWtlOAgE2KhPNdwtbWihLthGIfo2rn6un/DRTh+xIQ1LkriF1RcvIJQWjpk+LcT6pu2UjQIJQM00kiDSVlkqMtmfeOlT4FJriUzN7l1B8+rVjlKD1SssRfwKpBGja7AJia/vsRCg57mlDIFsjahcIBAxV6SdNafQRMC9laaiCJiVN1AJ8WaeQzK4GRu0Crred1M+nk+hJf7uMjIYEYNiMji2NZcREsUToJ00VvE4ljtv6uRoSUFuP2klHe/+yVSUQVNnmfD6v0ZAPWlmHAifYW5DPOr7sU13z15zYOnU3O/5z93C+7erk2+z/dY3mrriZbQmQdBKJhLn1dOHL7OetfAS4WfZ6veay5yHBPrPt8XjczPv9fvcjYMOLPhpdrUNe8gTgdvN4erNfEV70+bzZ0gllFwmiN+uLRMLZSTMYG8+e2BNrr1qZk04uIJ1atcWFb0gn01n7imQiBY0tpBaRSqaMLzYfy7ZpxGPJvJ8rTm1zNRpbn6Gj9y1etdTgQ/drfPK/QU/kHTq8zWjrbEBr1xP4Ql344m/H50AHWj6+RJe3DZnMEpaW/lomk4Fz+Pxu3Km/hMqnZ1FQvANHy3ahvP4AzlTtwal7BbhSfQhlD47g+ftraO1+gYpHx1FaUYTKxxfw6/dP8LeysgL9nKqGi6hrv4WSsn0oqShE8eWdOHZ7L8qbCnG99iDK6/bjbmMpHjaeQ2egCTdrTuL0jSJcvX8C33+kDMjyyrIL+Afj6lc0GC8mIAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/25f595deba823140f5a8512c3f8a8ecc/e184d/screen3.png","srcSet":"/static/25f595deba823140f5a8512c3f8a8ecc/99a42/screen3.png 67w,\n/static/25f595deba823140f5a8512c3f8a8ecc/d0328/screen3.png 135w,\n/static/25f595deba823140f5a8512c3f8a8ecc/e184d/screen3.png 269w","sizes":"(min-width: 269px) 269px, 100vw"},"sources":[{"srcSet":"/static/25f595deba823140f5a8512c3f8a8ecc/12c61/screen3.avif 67w,\n/static/25f595deba823140f5a8512c3f8a8ecc/1ec49/screen3.avif 135w,\n/static/25f595deba823140f5a8512c3f8a8ecc/77157/screen3.avif 269w","type":"image/avif","sizes":"(min-width: 269px) 269px, 100vw"},{"srcSet":"/static/25f595deba823140f5a8512c3f8a8ecc/8cee5/screen3.webp 67w,\n/static/25f595deba823140f5a8512c3f8a8ecc/a4695/screen3.webp 135w,\n/static/25f595deba823140f5a8512c3f8a8ecc/1a1a9/screen3.webp 269w","type":"image/webp","sizes":"(min-width: 269px) 269px, 100vw"}]},"width":269,"height":424}}},{"id":"04e954ab-37ef-5b1a-bc2c-25a6fcf11e76","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAYAAAASYli2AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAFhElEQVR42qWU6U+UVxSH50Ob9EO1WhdEXFDjVlQqIoGBkWVANgUFES1oxQ1RqlZqrVajTYo1mlhTUWti0igYGFDWYXZm2IUZGFb77zy954XXWsVU2w+/nHvPvfd5zzn3vscwOTmBaELXxJR0/6v113wTb0pfU9YwPj6uHJNqYVKzk5OTrwDv0tSeqf36mfHxKb9hdHSU4eFhgsGgZoeU9Lnue3M8PL1nOKjm02ONMzSEYdAfoP55O3UN7dRY2nhS26KsVRs3NNpotbp41uygVq03tjq1cUOTg/pGO3XPbFTXtWm2t6cH77MqDAODfs1ZbbFT+9yNpbmDP562qgNOGq0+mpQamlxYGpWUbbJ24HB302rzUad89c1uGpo9dHf58NVdE2BAOdw8b+3g90e1lJ25SHbOXn66col7VVVY6ltoc3TSZOvC0tJBU7uXZk3yMS9WR5dSpwJ2Ynt4UqWsIvz1t0ccKzuHKTGDdRFbMZpSSTbFs2RRKGnJKZSXneRu1X2Vrg2Xtx9X5wA2Tx8OTy9OTw9Wu5dOn4/mO0cwdHh9mLfnsmLVBqK2mpS2kWzOIsOcyOezZ7Fw3nzmzJpDaEgoCcZ4ykpPTMOt1FvqaGxq4XF1NT0q5TuX9mHweLxkZudz8OAhTEnpREYZSTJnkhhv5JOPPmbxohDCFocy69PZSp+xYP4CVq4IJzc7nttXDlB1/RzXKy8qoIeCnWYBdmBOzebBvbukpucQsXErCSYzt27d5IfLV9mzp4BtJhNLwpYxd848FWkIK5eHsTVqCVfPpHPhSDLHS5LxuNsxq/IY3G4PKSkZ3PjlOtsS01n/xRZiYuKpeVpDY1srN2/e4MezJRzNiaGi4hwVFy9RWJjO9rS1lB4yceZwKmWHYnG62khKTcbgcrlJSEjmRuXPxCeksGr1BrZEGzl/9hS3Ky9x8ftvyU+JojQ3mgcPq3j0tJo79yspP5XGgaIojhZspnR/JA5nG9tSUgToIiY6lsprl4mNTSB8+RrWrN3E+fIjPKg8zXflJaQmxREfF83er/I5eqyYcxXFHDmQQMGujeSkLuVQwSacditxxiQFdDqJWBdBmqKvVzZ82SpWhK8mzZzGruwscjIz2ZGRSWHebo6VHOD44WK+Lsphz+448nZuoDhvHScORmNrb2b3rh1SQztZKStZGz6X+fPm8OX6hRg3hxEauoBlS0NYsyaMtRFhREYvY3vWRrKzN1FcHEdqxiqMMYvIz1iqahiJ3d5KQeFO9Q59Lk5UZLL3sIkdhSay9xnJK0oktyiJ/eoGS05u5/jpLIpKk9lVHM+egwnq9vPIzY1Vtx9JuqrvhbJMPK52vik/gWFoKEB/fzejY37VfkYYGx3mz4kx1dtUVwkOEBzxMzjQR3DIj39wkBcvXhAIDDIyPETA76f/xYA636c1h76+PgzB4AjydOrrn2Gx1NPS0srjJ9VYre3YbHbkndbVWaipearWLVo/HFca0/roBC9fTjIyMqKg/XR1dWGQXtbd3aUOuhXYhU/9k23q/blcTjo7O5EMAoEAvb29Krp+1fdGtN4nEJGMh1QflHUtQplMpRFAH/slFfXFQZWidPTx6WjEjo2NaXq9g0vTFaCcewuoQ6ba+t8AXeKbyqpby0APQKKTsxpQJj2qqLKoRyZffRMo6UlEAwMDqsZWHA4HXq9XmwtDrEHPv2f6lgQqcwFLjWaKULIRkN1u16J8CyiHZSIbxUoKYmXtXWlLpB6PRwtET1kDCkQcetF1wEygmcAiKY+AhfUPoIxl8d9Ar9dUB0qZNKB+s2LlDcqCbJLN7wOdESgXoT+BmS7ig4Az1fBDJOckiFc1lAhlIjckEf4XySvRn5tBwtb/y/8j/ZIMH1Kv99FftIdeCJoYV+EAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/b2f1613499d6c77329c5618cd9a1fe5b/f765d/screen4.png","srcSet":"/static/b2f1613499d6c77329c5618cd9a1fe5b/99a42/screen4.png 67w,\n/static/b2f1613499d6c77329c5618cd9a1fe5b/7b7f7/screen4.png 134w,\n/static/b2f1613499d6c77329c5618cd9a1fe5b/f765d/screen4.png 268w","sizes":"(min-width: 268px) 268px, 100vw"},"sources":[{"srcSet":"/static/b2f1613499d6c77329c5618cd9a1fe5b/12c61/screen4.avif 67w,\n/static/b2f1613499d6c77329c5618cd9a1fe5b/af0aa/screen4.avif 134w,\n/static/b2f1613499d6c77329c5618cd9a1fe5b/93972/screen4.avif 268w","type":"image/avif","sizes":"(min-width: 268px) 268px, 100vw"},{"srcSet":"/static/b2f1613499d6c77329c5618cd9a1fe5b/8cee5/screen4.webp 67w,\n/static/b2f1613499d6c77329c5618cd9a1fe5b/8742b/screen4.webp 134w,\n/static/b2f1613499d6c77329c5618cd9a1fe5b/fd52b/screen4.webp 268w","type":"image/webp","sizes":"(min-width: 268px) 268px, 100vw"}]},"width":268,"height":424}}}]}}},"pageContext":{"id":"08716ab8-fc5f-5f90-9fc0-a8218ec51923","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/","result":{"data":{"markdownRemark":{"id":"08716ab8-fc5f-5f90-9fc0-a8218ec51923","html":"

CODECAVE have developed a beautiful, modern, user-friendly website corresponding to the all customers’ needs.

","frontmatter":{"stack":["React","Gatsby","MUI"],"title":"Website for architectual agency","description":"The website for LLC “Art-studio ‘Zrobim’” reflects the studio’s commitment to architectural excellence and client collaboration. It serves as a digital portfolio showcasing their extensive experience and innovative approach to design. It features a variety of completed projects, providing insights into their design process and the outcomes of their creative alliances with clients. The site is designed to offer an intuitive and informative experience for visitors, whether they are potential clients looking to start a project or simply exploring the world of contemporary architecture.","challenge":"LLC “Art-studio “Zrobim” needed a dynamic website presenting the offered services like private house designing, interior designing, villages, and blocks of houses designing.","clientDescription":"LLC “Art-studio “Zrobim” is a team of architects striving to make housing affordable and of high quality.","logo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAYAAAASYli2AAAACXBIWXMAAA7DAAAOwwHHb6hkAAADa0lEQVR42tVV2StvURjdhndzmWcpJZGU8j/4C7x6khcl8oQQGTJnCgmZ53l4ERGZ+pUk85RMP3OZ1m19OSf3SPferlvurq+zz17fXnvvb62zj1JKwcLCAnza29vj+voaWru8vISbm5tgDFtbW+zv7+v46ekpnJ2d8Z5DfX9CR0dHODk5wcbGBgEBAbi5udEnmM1mBAcHC5GdnR38/PxweHio42dnZwgKCpK55CCXur29hRZ3d3d4fX3VJ7DPsd/FGQpf3L6ecGdnB4zt7W3s7e3h5eVFB9mnCMSYQ/zp6elTnKGojqWlpSjk4ODwQWV3d3ddZQpjVNnFxUUwcrwp/Y99eHV19XeEPj4+8PX1hYeHB0JDQ0V6rZE8MjJSMC8vL4SEhODo6EjHLy4uEBERITg5yPUf2Ob7+5D+sbKyEoX4cRttw4JrKtMFRpVdXV0FI4f4mR1ra2sZ5I1hJPT09NQJaXwjoWYrcrxt7IuN7e/vL/egt7c3wsPDP/gwKipKMPosLCwMx8fHP/mQPiVODnIpFvZ9GNuf4jrh8/OzPKkig5enNs5g45MYn+9x7dJl/1MfMsl4O/8ql6G6u7sxMDCAwcFBrKysoL29Xd4fHh6k6A0NDTLG9/n5eXR0dGB1dVXEo+8WFxexu7srxGNjY1AmkwkFBQWIj49HYWEh+vv7hYB9xsjIiJCWlJQgKytL3lNSUjAxMYGWlhbExsaitLQU9/f3CAwMhOKfjYmsByclJiYiPT1ddpyfny8rn5+fIzs7G8nJyWhqakJaWpoQciFuJiMjA0NDQ4iOjoaKiYlBfX29rJCbm4uZmRkkJSVheXkZqamp8uzt7UVRUREyMzMxOzsrC1VXVwthTU2NnCQuLk7yVVlZGVpbW9HV1YWFhQX5LfLbZL0ODg5QXFyMxsZGGWeN6urqZHf8J6+trUlsbGxgenoaS0tLH1XWLMJiM5Fta2sLc3NzQmpU/eTkBOvr69J/fHyE6uzsRHl5OSYnJ6W4VJ3HqaioQEJCAtra2jA8PCxHYl2J9fT0YHR0FFVVVXJcalBbWysiKQ5QBB69r69P6snj8KhTU1Nobm6WSVyAdczJyZFaUSR+eiRnDglJrFhoJlZWVmJzc1M8yJ1yNR6ZO+EuOYm7JzlryTwuOj4+LsLQanl5efgBQDKrD6YV0P4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/f3289fa154f0e6304425c852deed980b/abeb2/clientLogo.png","srcSet":"/static/f3289fa154f0e6304425c852deed980b/a0e88/clientLogo.png 45w,\n/static/f3289fa154f0e6304425c852deed980b/1c9d6/clientLogo.png 90w,\n/static/f3289fa154f0e6304425c852deed980b/abeb2/clientLogo.png 180w,\n/static/f3289fa154f0e6304425c852deed980b/c5727/clientLogo.png 360w","sizes":"(min-width: 180px) 180px, 100vw"},"sources":[{"srcSet":"/static/f3289fa154f0e6304425c852deed980b/8ffd0/clientLogo.avif 45w,\n/static/f3289fa154f0e6304425c852deed980b/bb5eb/clientLogo.avif 90w,\n/static/f3289fa154f0e6304425c852deed980b/da446/clientLogo.avif 180w,\n/static/f3289fa154f0e6304425c852deed980b/fdc76/clientLogo.avif 360w","type":"image/avif","sizes":"(min-width: 180px) 180px, 100vw"},{"srcSet":"/static/f3289fa154f0e6304425c852deed980b/eb644/clientLogo.webp 45w,\n/static/f3289fa154f0e6304425c852deed980b/a824c/clientLogo.webp 90w,\n/static/f3289fa154f0e6304425c852deed980b/126ee/clientLogo.webp 180w,\n/static/f3289fa154f0e6304425c852deed980b/7f6ee/clientLogo.webp 360w","type":"image/webp","sizes":"(min-width: 180px) 180px, 100vw"}]},"width":180,"height":287}}},"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEBklEQVR42o1UWUyUVxgdtS7MMCj7vg5awFbc0ApateyrCjPIlkJfigOD4/JElYGptlQjmJooM0gJtE3BBgiKjkAjwcgiMxOcFGYCCS8Q+8YuvgDheL+bDIFYmv7Jzb/de+655zvfETg7OmGj4eTgCPudu+Dq7AKxSASRjZA/uzg5b7hG8F+Avt4+UF5Uws5WjIjw4zh18hS2fbKVv28Eug6QJrm7unFmO7Zth8RfgrYnT1Bx5w7GxsawuLiIh9XVOHTgIBztHfg8WrMWfB0gTbIVirAncDcK5HK0NLfAYDBgcHAQMzMzsF6zs7NIl8rg4ebOJaB16wBpB/ro5+OL/G/z8eD+fRiNRvT09kKn06G7uxtzc3NYWVnB8vIyurq6oFQqcSB0P3ZLArk0VpYckHYhXRLiEtDb04POjg60tbWhvb0dHezZZDJhaWmJs6t5WIOoyCikpJxh90gkJyXhs5C98Pb0Wg+4U2yH+Jg46J7pMD4+junpaVgsFrS2tqKuthYLCwuor6tD1OlISNPSUKRQ4MrlK8g8nwEvD89VPVcBxSJbyNKkaG5uRk52Dl52v8Tw0DAusSpHnv4KmqoqyKRS1NfX4/at25DJ0lFaqsYl5WX4eHlzwFWGJC4d+UxyCq9qdmYWB7hW/B3UZWomRTyyMjKRevYcnuueo6KyEopCBcrLy6EqUXGGVmIc0FYohM32HSguLobRYMRdtqCpqQllpWW4eeMmYmNiGVgqPx4VqKGxEeU//AiNRoOSa9exNziEE6ImEBDVuNg4dtQWPGZ6kUWokqY3Jtz7+R63T0xUNJcj7Vwq+vr68IgBEvuS6yXISD+Pb3LzkBifgMAACQRBnwbxAtBl0OvR398PvUGPnlevMDU5yX1osZg567zcXL5hqUqFpMREhH9xDOFHjyEnKxsqBk7eFPj7+kHzoIoXgJjNz8+j68ULPHv6lFtlkoHeYlpp2fFIjr86O3GxqAjy/Au4yqp8Q/09CuUF2L8vFHZiMQTUalTFggtyVGurMTIywg08NTWJ0dFRbp2B16+hHxhAbc0v+LPxEfclHV3NND4adoSHxmbBJt5lAjcXV0gCAnDkcBhSkpKhKCiEVquFeXiYe2/h/XtMTEyg4Y8GpusbDA39zW0TxuYLbWx4WBCQtbd5lQmUSk+Oj42O4QUgxhQEZrMZ7xjw23/eorKygqVOBGdE4RESFAySzGGX/cfhQC4ng1J/nog4jmjWXuS/vK9z8fuvvzEdf8KWTZv5oGqGfr4Phw8eQoCf/8fhYB1kTAoI8hUB0yCxT574kkcWsaI5dJJg5g4Ctpp6w4Alpp7uHhyYdqckoUUki/U/vdOggtIG/yuxaeHauLf26tr//5bYHwAGByLOnddQVQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/541da7254eca101084504751a7e14ba1/d6138/cover.png","srcSet":"/static/541da7254eca101084504751a7e14ba1/15e42/cover.png 100w,\n/static/541da7254eca101084504751a7e14ba1/5aead/cover.png 200w,\n/static/541da7254eca101084504751a7e14ba1/d6138/cover.png 400w,\n/static/541da7254eca101084504751a7e14ba1/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/541da7254eca101084504751a7e14ba1/6d0de/cover.avif 100w,\n/static/541da7254eca101084504751a7e14ba1/f2685/cover.avif 200w,\n/static/541da7254eca101084504751a7e14ba1/4ff31/cover.avif 400w,\n/static/541da7254eca101084504751a7e14ba1/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/541da7254eca101084504751a7e14ba1/d8057/cover.webp 100w,\n/static/541da7254eca101084504751a7e14ba1/2e34e/cover.webp 200w,\n/static/541da7254eca101084504751a7e14ba1/416c3/cover.webp 400w,\n/static/541da7254eca101084504751a7e14ba1/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["2 senior frontend developers","1 UI/UX designer","1 QA engineer","1 DevOps engineer"],"screenshots":[{"id":"3f826381-8647-5000-9155-7b810d8e6df3","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABTklEQVR42n1SW47CMAzMXTkFN+KvAgn6g4QAIQGFltTpg2cXLjKbMYRtV+x+jGwnnbE9qUnTFM45WGuR5/m/EJEOeDYYDDAajVBVFWazGcxut9PLLMsUh8PhDTYJIJmNf2O9XmO73argfD6HOZ1OSuDB+XzG5XJBXdcq8Jdge0ryCObUMiSTQLGmaXC/33G73VAURUeQBIrxvN2YCJbxzHDNMA1JJIQPwmTtfLPZYL/f4/F4qPByuXzb8xakUJIkCnpKkBTQ9pU+xXGMKIrQ6/XQ7/exWq3Ax1VBTsPONJYGf0LYgqAoa042HA4xHo8xmUwwnU51O3M8HmG5Vuv3sPZTlM7rlmWh/ok43WKxWCD3mxpecP+fXybz9XMKxlCLhFeWzmuz5mRsTE9N7nwhpUehsD4XH8W9cld6wvOeubjqFUu4ooIrK42sr80XvgEj5K521deawAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/ed39ec5f30b5a4d41c830b269d033662/6c95c/screen1.png","srcSet":"/static/ed39ec5f30b5a4d41c830b269d033662/64b46/screen1.png 218w,\n/static/ed39ec5f30b5a4d41c830b269d033662/dd776/screen1.png 436w,\n/static/ed39ec5f30b5a4d41c830b269d033662/6c95c/screen1.png 871w,\n/static/ed39ec5f30b5a4d41c830b269d033662/c1927/screen1.png 1742w","sizes":"(min-width: 871px) 871px, 100vw"},"sources":[{"srcSet":"/static/ed39ec5f30b5a4d41c830b269d033662/827f2/screen1.avif 218w,\n/static/ed39ec5f30b5a4d41c830b269d033662/98332/screen1.avif 436w,\n/static/ed39ec5f30b5a4d41c830b269d033662/54962/screen1.avif 871w,\n/static/ed39ec5f30b5a4d41c830b269d033662/9ed7c/screen1.avif 1742w","type":"image/avif","sizes":"(min-width: 871px) 871px, 100vw"},{"srcSet":"/static/ed39ec5f30b5a4d41c830b269d033662/fa6b4/screen1.webp 218w,\n/static/ed39ec5f30b5a4d41c830b269d033662/04210/screen1.webp 436w,\n/static/ed39ec5f30b5a4d41c830b269d033662/111cd/screen1.webp 871w,\n/static/ed39ec5f30b5a4d41c830b269d033662/10fd4/screen1.webp 1742w","type":"image/webp","sizes":"(min-width: 871px) 871px, 100vw"}]},"width":871,"height":424.00000000000006}}},{"id":"514d9c4b-0f23-5192-85aa-9afa9f3d7a9f","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACuUlEQVR42iWS60uTURjA338g+tCH6FtQ9q1IpZsKOi0yMe/aUnMpXiC1LYwUy3JhNS3TZcOSyG4fyowMN5TZNLVt2tzFic3ZNMIuFpSX8kM3f513HXg4PM/L+b3P7zxHGhsbw+fzMTU1hcvlYnx8nIkJL9PT06LmFzUn7+bmWfqBiFUWv6+ysPSXbyIWllex9Nuxjbj5+QfmPiwgjTmdvJ6cFJCJINDr9WK3j2IwGLh3pz34g7n38/wSBz7OL/L56wpLKwIs4Mti//TlBy6Pj17zAB6vHykwM8sLs5Gn91txe7w4X1lprSultbaQNn09LreHrq4urLYRTlaU0VCvQ16//4LJ1MOjjscYrrcQp4hEq61FklUdQttus+LxeHC7XYz0P8MxaArW5O9NVxuprTxOaV4qUZGRmPuG6O7uJjsriZICJWXFeSgz08hVpiB5hapz1IqpqxNZf3h4mMFhK1ah7RS5TwA77t/mYOwe1CUqbuhq2B+1m/zMJC6fUdNyoYrGsxqKcrI4kqNECnYlLn7EbkMekMVioa/PzMBAPzabjZnZWc5UnWLd2jWUFx+lQVtFSlwESfH7hImRtmsN1KgLSYjeRWjotv/KA5Y+HtxtF7qeIFTuTB6Q3W4PTvuERsPGDeuJ2bEVxZ4w4qN3ciBOwfPuDq7UVaPOikGxYxuh4duR/H4/DodDqA4FYTJEBrrdbpE7mH4ToP2GnvLcZLRqFTfPC83Tx0SejkF7ivrKMgoSownbsomQzSFIM4G3vLT0ijt8iF90Iz8TuatAIIDRaKS310znk9tU1+Ry7nwRFRVZaMrTKS5MQJUbS0l+PCkpUSj2hpOcGoHUYzHRdqsV3aWLNDc309TUhF6vD4ZOp0PfrEdTUUpiWiwZhxPIyE4grzCDvKJMlKpkDonILz6EqiiDnPxU/gE1bD5GL+iJ2QAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/2653e/screen2.png","srcSet":"/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/802a7/screen2.png 220w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/37479/screen2.png 439w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/2653e/screen2.png 878w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/10f58/screen2.png 1756w","sizes":"(min-width: 878px) 878px, 100vw"},"sources":[{"srcSet":"/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/f87c9/screen2.avif 220w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/77c22/screen2.avif 439w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/dd3b5/screen2.avif 878w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/3e6f1/screen2.avif 1756w","type":"image/avif","sizes":"(min-width: 878px) 878px, 100vw"},{"srcSet":"/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/797a6/screen2.webp 220w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/f1dca/screen2.webp 439w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/05710/screen2.webp 878w,\n/static/e0a1e1ff1f7b6434ab696bbc11bdc4fd/36f10/screen2.webp 1756w","type":"image/webp","sizes":"(min-width: 878px) 878px, 100vw"}]},"width":878,"height":423.99999999999994}}},{"id":"393091cd-76e8-528c-a39e-ca08b7518914","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAYAAAASYli2AAAACXBIWXMAAA7DAAAOwwHHb6hkAAADbUlEQVR42qVWW0tUURg9D/2JHqJnIepNrN6CwHqLIrSIIOhCWJgVgdCFkBKS6KaZGglaWJIpls44F2fG+93RuZrR+NAfiOhNV7O2rNN2GG818M3e59tnr/2t9X177+NEo1HMzc0hFoshHo9jfn4e9P2rOQSbmJiAz+dDX18fBgcHzQIzMzOYnZ3dthnAyclJ9Pf3o6enB6FQyAyMj4+bhbZrjiiTrijT6MtnGluXMv9IjxEx0qmpKbcvk482NjZmnm0QW3dDeXp6GpFIxOhHC4fDGBkZwcDAgLHh4WEMDQ2ZdzhGYDtKvkuZXEBGyBc5gRoKgL5gMGgiEtVcysqB+g5fphFUmVU/95lMck1zhePogRExdNFiSx+NUdPHVtJQCo7ZoDSHFKShKHOy6LIdHR11k8LSYGKUOFKlRC5lUeJqWtlOAgE2KhPNdwtbWihLthGIfo2rn6un/DRTh+xIQ1LkriF1RcvIJQWjpk+LcT6pu2UjQIJQM00kiDSVlkqMtmfeOlT4FJriUzN7l1B8+rVjlKD1SssRfwKpBGja7AJia/vsRCg57mlDIFsjahcIBAxV6SdNafQRMC9laaiCJiVN1AJ8WaeQzK4GRu0Crred1M+nk+hJf7uMjIYEYNiMji2NZcREsUToJ00VvE4ljtv6uRoSUFuP2klHe/+yVSUQVNnmfD6v0ZAPWlmHAifYW5DPOr7sU13z15zYOnU3O/5z93C+7erk2+z/dY3mrriZbQmQdBKJhLn1dOHL7OetfAS4WfZ6veay5yHBPrPt8XjczPv9fvcjYMOLPhpdrUNe8gTgdvN4erNfEV70+bzZ0gllFwmiN+uLRMLZSTMYG8+e2BNrr1qZk04uIJ1atcWFb0gn01n7imQiBY0tpBaRSqaMLzYfy7ZpxGPJvJ8rTm1zNRpbn6Gj9y1etdTgQ/drfPK/QU/kHTq8zWjrbEBr1xP4Ql344m/H50AHWj6+RJe3DZnMEpaW/lomk4Fz+Pxu3Km/hMqnZ1FQvANHy3ahvP4AzlTtwal7BbhSfQhlD47g+ftraO1+gYpHx1FaUYTKxxfw6/dP8LeysgL9nKqGi6hrv4WSsn0oqShE8eWdOHZ7L8qbCnG99iDK6/bjbmMpHjaeQ2egCTdrTuL0jSJcvX8C33+kDMjyyrIL+Afj6lc0GC8mIAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/25f595deba823140f5a8512c3f8a8ecc/e184d/screen3.png","srcSet":"/static/25f595deba823140f5a8512c3f8a8ecc/99a42/screen3.png 67w,\n/static/25f595deba823140f5a8512c3f8a8ecc/d0328/screen3.png 135w,\n/static/25f595deba823140f5a8512c3f8a8ecc/e184d/screen3.png 269w","sizes":"(min-width: 269px) 269px, 100vw"},"sources":[{"srcSet":"/static/25f595deba823140f5a8512c3f8a8ecc/12c61/screen3.avif 67w,\n/static/25f595deba823140f5a8512c3f8a8ecc/1ec49/screen3.avif 135w,\n/static/25f595deba823140f5a8512c3f8a8ecc/77157/screen3.avif 269w","type":"image/avif","sizes":"(min-width: 269px) 269px, 100vw"},{"srcSet":"/static/25f595deba823140f5a8512c3f8a8ecc/8cee5/screen3.webp 67w,\n/static/25f595deba823140f5a8512c3f8a8ecc/a4695/screen3.webp 135w,\n/static/25f595deba823140f5a8512c3f8a8ecc/1a1a9/screen3.webp 269w","type":"image/webp","sizes":"(min-width: 269px) 269px, 100vw"}]},"width":269,"height":424}}},{"id":"04e954ab-37ef-5b1a-bc2c-25a6fcf11e76","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAYAAAASYli2AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAFhElEQVR42qWU6U+UVxSH50Ob9EO1WhdEXFDjVlQqIoGBkWVANgUFES1oxQ1RqlZqrVajTYo1mlhTUWti0igYGFDWYXZm2IUZGFb77zy954XXWsVU2w+/nHvPvfd5zzn3vscwOTmBaELXxJR0/6v113wTb0pfU9YwPj6uHJNqYVKzk5OTrwDv0tSeqf36mfHxKb9hdHSU4eFhgsGgZoeU9Lnue3M8PL1nOKjm02ONMzSEYdAfoP55O3UN7dRY2nhS26KsVRs3NNpotbp41uygVq03tjq1cUOTg/pGO3XPbFTXtWm2t6cH77MqDAODfs1ZbbFT+9yNpbmDP562qgNOGq0+mpQamlxYGpWUbbJ24HB302rzUad89c1uGpo9dHf58NVdE2BAOdw8b+3g90e1lJ25SHbOXn66col7VVVY6ltoc3TSZOvC0tJBU7uXZk3yMS9WR5dSpwJ2Ynt4UqWsIvz1t0ccKzuHKTGDdRFbMZpSSTbFs2RRKGnJKZSXneRu1X2Vrg2Xtx9X5wA2Tx8OTy9OTw9Wu5dOn4/mO0cwdHh9mLfnsmLVBqK2mpS2kWzOIsOcyOezZ7Fw3nzmzJpDaEgoCcZ4ykpPTMOt1FvqaGxq4XF1NT0q5TuX9mHweLxkZudz8OAhTEnpREYZSTJnkhhv5JOPPmbxohDCFocy69PZSp+xYP4CVq4IJzc7nttXDlB1/RzXKy8qoIeCnWYBdmBOzebBvbukpucQsXErCSYzt27d5IfLV9mzp4BtJhNLwpYxd848FWkIK5eHsTVqCVfPpHPhSDLHS5LxuNsxq/IY3G4PKSkZ3PjlOtsS01n/xRZiYuKpeVpDY1srN2/e4MezJRzNiaGi4hwVFy9RWJjO9rS1lB4yceZwKmWHYnG62khKTcbgcrlJSEjmRuXPxCeksGr1BrZEGzl/9hS3Ky9x8ftvyU+JojQ3mgcPq3j0tJo79yspP5XGgaIojhZspnR/JA5nG9tSUgToIiY6lsprl4mNTSB8+RrWrN3E+fIjPKg8zXflJaQmxREfF83er/I5eqyYcxXFHDmQQMGujeSkLuVQwSacditxxiQFdDqJWBdBmqKvVzZ82SpWhK8mzZzGruwscjIz2ZGRSWHebo6VHOD44WK+Lsphz+448nZuoDhvHScORmNrb2b3rh1SQztZKStZGz6X+fPm8OX6hRg3hxEauoBlS0NYsyaMtRFhREYvY3vWRrKzN1FcHEdqxiqMMYvIz1iqahiJ3d5KQeFO9Q59Lk5UZLL3sIkdhSay9xnJK0oktyiJ/eoGS05u5/jpLIpKk9lVHM+egwnq9vPIzY1Vtx9JuqrvhbJMPK52vik/gWFoKEB/fzejY37VfkYYGx3mz4kx1dtUVwkOEBzxMzjQR3DIj39wkBcvXhAIDDIyPETA76f/xYA636c1h76+PgzB4AjydOrrn2Gx1NPS0srjJ9VYre3YbHbkndbVWaipearWLVo/HFca0/roBC9fTjIyMqKg/XR1dWGQXtbd3aUOuhXYhU/9k23q/blcTjo7O5EMAoEAvb29Krp+1fdGtN4nEJGMh1QflHUtQplMpRFAH/slFfXFQZWidPTx6WjEjo2NaXq9g0vTFaCcewuoQ6ba+t8AXeKbyqpby0APQKKTsxpQJj2qqLKoRyZffRMo6UlEAwMDqsZWHA4HXq9XmwtDrEHPv2f6lgQqcwFLjWaKULIRkN1u16J8CyiHZSIbxUoKYmXtXWlLpB6PRwtET1kDCkQcetF1wEygmcAiKY+AhfUPoIxl8d9Ar9dUB0qZNKB+s2LlDcqCbJLN7wOdESgXoT+BmS7ig4Az1fBDJOckiFc1lAhlIjckEf4XySvRn5tBwtb/y/8j/ZIMH1Kv99FftIdeCJoYV+EAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/b2f1613499d6c77329c5618cd9a1fe5b/f765d/screen4.png","srcSet":"/static/b2f1613499d6c77329c5618cd9a1fe5b/99a42/screen4.png 67w,\n/static/b2f1613499d6c77329c5618cd9a1fe5b/7b7f7/screen4.png 134w,\n/static/b2f1613499d6c77329c5618cd9a1fe5b/f765d/screen4.png 268w","sizes":"(min-width: 268px) 268px, 100vw"},"sources":[{"srcSet":"/static/b2f1613499d6c77329c5618cd9a1fe5b/12c61/screen4.avif 67w,\n/static/b2f1613499d6c77329c5618cd9a1fe5b/af0aa/screen4.avif 134w,\n/static/b2f1613499d6c77329c5618cd9a1fe5b/93972/screen4.avif 268w","type":"image/avif","sizes":"(min-width: 268px) 268px, 100vw"},{"srcSet":"/static/b2f1613499d6c77329c5618cd9a1fe5b/8cee5/screen4.webp 67w,\n/static/b2f1613499d6c77329c5618cd9a1fe5b/8742b/screen4.webp 134w,\n/static/b2f1613499d6c77329c5618cd9a1fe5b/fd52b/screen4.webp 268w","type":"image/webp","sizes":"(min-width: 268px) 268px, 100vw"}]},"width":268,"height":424}}}]}}},"pageContext":{"id":"08716ab8-fc5f-5f90-9fc0-a8218ec51923","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/projects/4010b091-889b-5be1-ab5a-bde195aa7729/page-data.json b/page-data/projects/4010b091-889b-5be1-ab5a-bde195aa7729/page-data.json index c9be2dca..05ac03df 100644 --- a/page-data/projects/4010b091-889b-5be1-ab5a-bde195aa7729/page-data.json +++ b/page-data/projects/4010b091-889b-5be1-ab5a-bde195aa7729/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/4010b091-889b-5be1-ab5a-bde195aa7729/","result":{"data":{"markdownRemark":{"id":"4010b091-889b-5be1-ab5a-bde195aa7729","html":"

3D Configurator for selecting and configuring interior and entrance doors models with the possibility of 3D visualization of the chosen door in the doorway.

","frontmatter":{"stack":["React","JS","HTML","NodeJS","NestJS","Swagger"],"title":"3D configurator","description":"3D Сonfigurator is an interactive tool that allows users customize and visualize products in a three-dimensional space. It’s integrated into websites, providing a user-friendly interface to choose products. Users start by selecting the product they want to customize and are presented with various options like colors, materials, sizes, and features. The Configurator updates the product in real-time, showing how changes affect the final product. Once satisfied with the customizations, users can finalize their design and proceed to order. The Configurator offers an enhanced shopping experience, reduced returns due to mismatched expectations, and increased customer engagement.","challenge":"Make door purchasing easy and clear process for everybody. Reduce the time of the purchase. Exclude the unforced errors while selecting the door. Save created models and their components. Get the specification of the order. Increase the amount of sold doors.","clientDescription":"Yurkas is a door company that has been selling interior and entrance doors together with relevant completing parts for more than 20 years. The company regularly widens the doors range and services offered. The company aims to make door purchasing process of maximum comfort.","logo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsTAAALEwEAmpwYAAABe0lEQVR42mNQ1XHbKa/hXiSi5LX06W6e5f+/MHgxifimqei4bFfQdFmtrO3urqjpslBFxyMGSM9nAAKgnD1Q7pGCrru6iq6HjKKm63YlbbdVSlrukQyy6u7Prewcbi5qVlP8do3D/v8bhplcon6lyrquu4CaDqvqecYparrtUNR2/6io45EEMhBIr1DS8byqpONRr6LjkwFkLwKJ6+m5cjPIqLsfTooxj/h/lnnBz5NM+/6/Y/BjF/fNUdFx3qis4W6UlpbGCjR4k4qeewbQhQs0jLyNgfwjShouBQparntUdTy8gPRWRS3XlUpablEMxsYeygwM/5kf7+Q1v7eNzw1kk6q+k7SasY8IiG1vb8+ha+KtBKJVtDy09PX9FbS0vCRActpAvcbGLvwgtcrabo7q6n68DGr67tnqBu5VEir+WWIKwf7axm6ZGnpeQep6nhnq+t4OmobeSer6Xgka+p6pWsbeoRqGHhHq+p6JIL66gUeJNthBYMAIIgEl52iheqojDQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/ef4980cfd11043b1bfe84c482a7c1844/5149b/clientLogo.png","srcSet":"/static/ef4980cfd11043b1bfe84c482a7c1844/201a0/clientLogo.png 45w,\n/static/ef4980cfd11043b1bfe84c482a7c1844/93883/clientLogo.png 90w,\n/static/ef4980cfd11043b1bfe84c482a7c1844/5149b/clientLogo.png 180w","sizes":"(min-width: 180px) 180px, 100vw"},"sources":[{"srcSet":"/static/ef4980cfd11043b1bfe84c482a7c1844/aef49/clientLogo.avif 45w,\n/static/ef4980cfd11043b1bfe84c482a7c1844/6ff63/clientLogo.avif 90w,\n/static/ef4980cfd11043b1bfe84c482a7c1844/e9c95/clientLogo.avif 180w","type":"image/avif","sizes":"(min-width: 180px) 180px, 100vw"},{"srcSet":"/static/ef4980cfd11043b1bfe84c482a7c1844/94e0c/clientLogo.webp 45w,\n/static/ef4980cfd11043b1bfe84c482a7c1844/c07b1/clientLogo.webp 90w,\n/static/ef4980cfd11043b1bfe84c482a7c1844/2ab4e/clientLogo.webp 180w","type":"image/webp","sizes":"(min-width: 180px) 180px, 100vw"}]},"width":180,"height":49}}},"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEYElEQVR42qVUSVNUVxR+NCSLxCGKWUQ0ajaKYVDmGUwAkVHmboiC0jST0EyFdAMyNtjdC2l0oYAEGbuZGhASSwaraIYCqsCFxKIgUBV2UPyGL+demvTCZRan3r3vnfPd753zfVcQCVawohAE4X8FwxAd4QhwdHCARCJBQnwCkhITIU4WQyyWIDkpmdbJkIjFFBJI6D1/R3uWw3Lj4+L59+v29sfgAlxuusA4YoTBoMeAwYDBgQFMTExgZHgYo0Yj3o6/xfjYGF+zd2Ojo5QzCIPeAH2/HkODQ3BydLIABvj784S+3l6eNGYu1uv7qaCfCgb5IX19vXxvHBkh0DG+Pq7x9faxAHp7eaG4sAi3AoPg5uqKJ1VVSLt3H9euXoUznczCycERjj874Po1ezxMf4CqyirccHJGWOhtlJaUwtPDwwL4tc1XiL0bCw93D5w7a4tU6me2LAvy/AKom57iaWPTf5GbnYP8vDwkUr/PnP4OQQGBiKNaa5GIBkOAR1MWIJfLER0ZhZ8uX0FNdTWGh0fQ+qoVq6urWFlZwfLyMlaWV/Di+QuMj4/jcVkZrly6jAQaSm5OLmfHp8zArK1EaH7WDFmmDJHhkejo6MDOzi7aWtug1WrR1dXFQ6NW43X7a/7t1cuXiAiPILAcqBpUZumYGbKor6tDXU0tGurq+W9ub2+jva0dhflydHb8TkDtvAU93T3Y2Nig/HoCakCTqhGKcsURQyszQxYVFRVQ1TdA81SNqopKmObm8HH9I0qKS1BKUSQvRPnjcnz6tIGZ6WmUlZZBTblNjY0oLJB/CVhcVIRaM8M86kl/Xx/W19cwb5pHgJ8/bgUFYWlpCWtra3jT2Yksqezor2rrkJkhtQCa7YIsmQxKhQJKoi8mNwwNDcFkMmFzcxN3wsIQExODra0tzM/Po7enhw9DQYyVCiVSU1I4BpsFZ8g291J/41rMz3tEg4mATqfD5OQkpqamEOgfiJDgYMx++IB3f76DVq3B7ZBQnstqGPgXDJMSErnGpA8zuLZqq2u4A0bJZlPv32Oa+sbkMkCOqVQq4efjiwdp6bwmKiLSwvAYMDoqmoOl0CXgSQJvVKlIi8NYXFzEwcEB9vf3sbCwACNZsoYOc3d1463JoJrQ4BALQxuRNWysrckdKaTDTM7Uw80duuZmzMxMk+Z2cHh4yONvWs/OzkKj0eCm8w3ukJysbP7LjBjDEk588y23EDut5kk1t5yPlzcX7ue/PmN3dxd7/+xhb2+Pg2+QbFh/3VzckEVGYDXxcXE4ffIUGJbAFsxy7EJ43tLC/cpOLCARs6upm7mk8w2Pnu5ufrtkSqU8hxlARw6roEmHh93BqRMnIXxvew7enl40yQDeaD9fP34/Bv/yK9Lvp3HGj3LzuDZl0kyuBjY0V8rxp1xfqmE6ZX23PXP2iCGjeuG8HTf78ZO1oKVZhz8mJrn2TKY5fk9qNVrExtzFpYs/4qLdBZ5r98N5jsGw/gXxiloEl3XVyQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/6f44bc6e2f75db97570cc19ea632c28c/d6138/cover.png","srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/15e42/cover.png 100w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/5aead/cover.png 200w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/d6138/cover.png 400w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/6d0de/cover.avif 100w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/f2685/cover.avif 200w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/4ff31/cover.avif 400w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/d8057/cover.webp 100w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/2e34e/cover.webp 200w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/416c3/cover.webp 400w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["3 senior frontend developers","1 UI/UX designer","1 QA engineer","1 DevOps engineer","1 PM"],"screenshots":[{"id":"f7705de5-0cc5-5485-9613-acdf7b801859","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABu0lEQVR42m1T24rUQBCd//8GX0S8oOsIog8uIuqr4IOsyOLurJNJZib3dG6dTic5nupsZh2w4FDVnapTt87q5naDu62PvFA4HmMU1IVSSLMcqiyhVMm7EllWIE1zxEmGOM4QRSnCMKJNHSWML/Hj6horrTVE+r6fYS0s0XUG4zhikSjJsT/ETKRQ1Q06Y9C2ldNaGwzjBG/nY9W2GtM0YRgGh2kaHbGQynkcB0e4C/a4/n3rfLuuOyWT82L79DlVuEjbdmiYZBgeqmNy6FbBmhR2mAlmTA6Lr+8HUmE7B9GhIZkXhGyrdE5LIItAWdWIODtV1myzd5UteKiQhDIPCR54qbue89GoSdz31rU7E0+cU+e+ySiE5F9ZzsGeLcvWojhH0+hTG0JmOGzbm3uiFuv3X/Hk5Qc8f/0RT19dYv3uCy7efnb2s4tLvFh/wqPHb7DK+DwMlyBEkkmWJFjaEC1b9IIEGy/E3S5y2Pox/tzbm22I3SHDt+8/sVJlhSxXJLX4n8impeLeTmcworkgy7yiRTyfLR+OCeKUDzkncVGfISeqmlvXnG1jzlATuWoQJvwhooK+Gle/bvAXmwr+GmQdHi4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/88913e70ae8a630c65e3a8bbeb7fe14c/00704/screen1.png","srcSet":"/static/88913e70ae8a630c65e3a8bbeb7fe14c/14c85/screen1.png 156w,\n/static/88913e70ae8a630c65e3a8bbeb7fe14c/3a84c/screen1.png 312w,\n/static/88913e70ae8a630c65e3a8bbeb7fe14c/00704/screen1.png 624w","sizes":"(min-width: 624px) 624px, 100vw"},"sources":[{"srcSet":"/static/88913e70ae8a630c65e3a8bbeb7fe14c/25010/screen1.avif 156w,\n/static/88913e70ae8a630c65e3a8bbeb7fe14c/41ae6/screen1.avif 312w,\n/static/88913e70ae8a630c65e3a8bbeb7fe14c/576e5/screen1.avif 624w","type":"image/avif","sizes":"(min-width: 624px) 624px, 100vw"},{"srcSet":"/static/88913e70ae8a630c65e3a8bbeb7fe14c/4a2af/screen1.webp 156w,\n/static/88913e70ae8a630c65e3a8bbeb7fe14c/6724c/screen1.webp 312w,\n/static/88913e70ae8a630c65e3a8bbeb7fe14c/20134/screen1.webp 624w","type":"image/webp","sizes":"(min-width: 624px) 624px, 100vw"}]},"width":624,"height":314}}},{"id":"6f5f71e2-4e3a-59a7-b098-20d7013c5b85","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACLklEQVR42m2Sy27TUBCG/Sw8Bg/RFUiwAiQEK8SiQCsVFiBEUFeAECtYgISgpVIlRAW0C4oopKG5uekt6Y3e06ZO7PgaO/bHGacVG0b6reOZOTP//HO0Y8PAaFlEURfbcYnjJD13OiFxkqToKp/nBdi2Tdt2FNwUlspvWiaWZad3yvoyGsriOKYTdAiCQBXqpPB9n263Sy+ecGRYmG1PxSJ8FQ/DiMDx6XgujuORqJylpRW0RBh047SoQEzYiS9JBAmJ8pn5Z1hTVzHXvmLu1thqrdMfF8gki+wcLNI+XKBSKfYYnppcllFcNZ6MeuJNv5/fP+HlwyvkZj6iVxepbNZ4s64zvr3M8qdXrL3NUPg+1WMoEHZW22V795CW0kTGFF9ywjrzaJgL5y7y+sM4Y9k5pos605O/yP4oUnx6i9JgH7mJMTTPD1JGIqofhHi+6Cd6ik69s3B8cfcmQ31n6b93hzOXLnNt+D43Hp9n6Pl1KpMZNr7cJj8zgSabNZpWusVTPaMwVA0idQ57hZWvOPqOb5kHzGd/kqutUt3+Q3VjgY29VVr1NaLWJksVHc1xPcUi6I2nCsq/sE5ONJQGHbVRxzBp14+JVIN/ysLpKxFbqa6iyfrNVLOY/5lIEYZdApUnlp2dZXBggNGREfKFPKVyiXm9TLlUIPd7Dq2h3pe8McN0aCoYpp2imcLBdkVj0TZUhWMaxy2qtXX29g/ZrzfY2Ttia+eAeqPJXFHnLy2s3gIrwzmfAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/d769b482d11e04202013b5e0f8372c31/00704/screen2.png","srcSet":"/static/d769b482d11e04202013b5e0f8372c31/14c85/screen2.png 156w,\n/static/d769b482d11e04202013b5e0f8372c31/3a84c/screen2.png 312w,\n/static/d769b482d11e04202013b5e0f8372c31/00704/screen2.png 624w","sizes":"(min-width: 624px) 624px, 100vw"},"sources":[{"srcSet":"/static/d769b482d11e04202013b5e0f8372c31/25010/screen2.avif 156w,\n/static/d769b482d11e04202013b5e0f8372c31/41ae6/screen2.avif 312w,\n/static/d769b482d11e04202013b5e0f8372c31/576e5/screen2.avif 624w","type":"image/avif","sizes":"(min-width: 624px) 624px, 100vw"},{"srcSet":"/static/d769b482d11e04202013b5e0f8372c31/4a2af/screen2.webp 156w,\n/static/d769b482d11e04202013b5e0f8372c31/6724c/screen2.webp 312w,\n/static/d769b482d11e04202013b5e0f8372c31/20134/screen2.webp 624w","type":"image/webp","sizes":"(min-width: 624px) 624px, 100vw"}]},"width":624,"height":314}}},{"id":"59d7e112-6700-5053-b5e9-be7c9f1c5987","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABYElEQVR42o1S2U4DMQzc//8tBKoqQCqHgIoHBOIQYsseubPJME6b7YqnRhrFdpzx2Enz8fmFcTQIIXLXmKaEOE2wztGekFLmnqGNw6gM+kGh70dCYVC6xNp2R7RQ2qMBV0oJjgQV3ntYa1kkyDFyzmh3A9Ez7uFZPMSpnBvmOTtQTE/boRGyvZJUIJdDjAXLmKgXeB/oJxI7aG0RSbwXlctZUbhc0ppiYjgkVoWOySNbrAQiQuLLHIk1SxXGeLy9f+OHrdV4hXUeHWdXc/dkebaFzDFnJpSA0g67buRFVeTPhHwobWyBkMgDymXxZZ7p8JCFECesdGg5cq6yZDfGFuL/bTd5djDLL0nHvOLLbEW5zFdpwwKxqLvePGF1eY+L9S0eti+nKzQ2lJFU+CB/NeJqs8X5+g5nqxs8Pr+i+WXViq7XR3sQW8O4AOs5XxOgrSAWiN+Plp9bPjyL8EHF/gOrIQzPCjBu5wAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/8275a7a743d1973f533c6084b8524293/75421/screen3.png","srcSet":"/static/8275a7a743d1973f533c6084b8524293/14c85/screen3.png 156w,\n/static/8275a7a743d1973f533c6084b8524293/54045/screen3.png 312w,\n/static/8275a7a743d1973f533c6084b8524293/75421/screen3.png 624w","sizes":"(min-width: 624px) 624px, 100vw"},"sources":[{"srcSet":"/static/8275a7a743d1973f533c6084b8524293/25010/screen3.avif 156w,\n/static/8275a7a743d1973f533c6084b8524293/7e89e/screen3.avif 312w,\n/static/8275a7a743d1973f533c6084b8524293/7de96/screen3.avif 624w","type":"image/avif","sizes":"(min-width: 624px) 624px, 100vw"},{"srcSet":"/static/8275a7a743d1973f533c6084b8524293/4a2af/screen3.webp 156w,\n/static/8275a7a743d1973f533c6084b8524293/fecfa/screen3.webp 312w,\n/static/8275a7a743d1973f533c6084b8524293/78fc8/screen3.webp 624w","type":"image/webp","sizes":"(min-width: 624px) 624px, 100vw"}]},"width":624,"height":316}}}]}}},"pageContext":{"id":"4010b091-889b-5be1-ab5a-bde195aa7729","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/4010b091-889b-5be1-ab5a-bde195aa7729/","result":{"data":{"markdownRemark":{"id":"4010b091-889b-5be1-ab5a-bde195aa7729","html":"

3D Configurator for selecting and configuring interior and entrance doors models with the possibility of 3D visualization of the chosen door in the doorway.

","frontmatter":{"stack":["React","JS","HTML","NodeJS","NestJS","Swagger"],"title":"3D configurator","description":"3D Сonfigurator is an interactive tool that allows users customize and visualize products in a three-dimensional space. It’s integrated into websites, providing a user-friendly interface to choose products. Users start by selecting the product they want to customize and are presented with various options like colors, materials, sizes, and features. The Configurator updates the product in real-time, showing how changes affect the final product. Once satisfied with the customizations, users can finalize their design and proceed to order. The Configurator offers an enhanced shopping experience, reduced returns due to mismatched expectations, and increased customer engagement.","challenge":"Make door purchasing easy and clear process for everybody. Reduce the time of the purchase. Exclude the unforced errors while selecting the door. Save created models and their components. Get the specification of the order. Increase the amount of sold doors.","clientDescription":"Yurkas is a door company that has been selling interior and entrance doors together with relevant completing parts for more than 20 years. The company regularly widens the doors range and services offered. The company aims to make door purchasing process of maximum comfort.","logo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsTAAALEwEAmpwYAAABe0lEQVR42mNQ1XHbKa/hXiSi5LX06W6e5f+/MHgxifimqei4bFfQdFmtrO3urqjpslBFxyMGSM9nAAKgnD1Q7pGCrru6iq6HjKKm63YlbbdVSlrukQyy6u7Prewcbi5qVlP8do3D/v8bhplcon6lyrquu4CaDqvqecYparrtUNR2/6io45EEMhBIr1DS8byqpONRr6LjkwFkLwKJ6+m5cjPIqLsfTooxj/h/lnnBz5NM+/6/Y/BjF/fNUdFx3qis4W6UlpbGCjR4k4qeewbQhQs0jLyNgfwjShouBQparntUdTy8gPRWRS3XlUpablEMxsYeygwM/5kf7+Q1v7eNzw1kk6q+k7SasY8IiG1vb8+ha+KtBKJVtDy09PX9FbS0vCRActpAvcbGLvwgtcrabo7q6n68DGr67tnqBu5VEir+WWIKwf7axm6ZGnpeQep6nhnq+t4OmobeSer6Xgka+p6pWsbeoRqGHhHq+p6JIL66gUeJNthBYMAIIgEl52iheqojDQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/ef4980cfd11043b1bfe84c482a7c1844/5149b/clientLogo.png","srcSet":"/static/ef4980cfd11043b1bfe84c482a7c1844/201a0/clientLogo.png 45w,\n/static/ef4980cfd11043b1bfe84c482a7c1844/93883/clientLogo.png 90w,\n/static/ef4980cfd11043b1bfe84c482a7c1844/5149b/clientLogo.png 180w","sizes":"(min-width: 180px) 180px, 100vw"},"sources":[{"srcSet":"/static/ef4980cfd11043b1bfe84c482a7c1844/aef49/clientLogo.avif 45w,\n/static/ef4980cfd11043b1bfe84c482a7c1844/6ff63/clientLogo.avif 90w,\n/static/ef4980cfd11043b1bfe84c482a7c1844/e9c95/clientLogo.avif 180w","type":"image/avif","sizes":"(min-width: 180px) 180px, 100vw"},{"srcSet":"/static/ef4980cfd11043b1bfe84c482a7c1844/94e0c/clientLogo.webp 45w,\n/static/ef4980cfd11043b1bfe84c482a7c1844/c07b1/clientLogo.webp 90w,\n/static/ef4980cfd11043b1bfe84c482a7c1844/2ab4e/clientLogo.webp 180w","type":"image/webp","sizes":"(min-width: 180px) 180px, 100vw"}]},"width":180,"height":49}}},"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEYElEQVR42qVUSVNUVxR+NCSLxCGKWUQ0ajaKYVDmGUwAkVHmboiC0jST0EyFdAMyNtjdC2l0oYAEGbuZGhASSwaraIYCqsCFxKIgUBV2UPyGL+demvTCZRan3r3vnfPd753zfVcQCVawohAE4X8FwxAd4QhwdHCARCJBQnwCkhITIU4WQyyWIDkpmdbJkIjFFBJI6D1/R3uWw3Lj4+L59+v29sfgAlxuusA4YoTBoMeAwYDBgQFMTExgZHgYo0Yj3o6/xfjYGF+zd2Ojo5QzCIPeAH2/HkODQ3BydLIABvj784S+3l6eNGYu1uv7qaCfCgb5IX19vXxvHBkh0DG+Pq7x9faxAHp7eaG4sAi3AoPg5uqKJ1VVSLt3H9euXoUznczCycERjj874Po1ezxMf4CqyirccHJGWOhtlJaUwtPDwwL4tc1XiL0bCw93D5w7a4tU6me2LAvy/AKom57iaWPTf5GbnYP8vDwkUr/PnP4OQQGBiKNaa5GIBkOAR1MWIJfLER0ZhZ8uX0FNdTWGh0fQ+qoVq6urWFlZwfLyMlaWV/Di+QuMj4/jcVkZrly6jAQaSm5OLmfHp8zArK1EaH7WDFmmDJHhkejo6MDOzi7aWtug1WrR1dXFQ6NW43X7a/7t1cuXiAiPILAcqBpUZumYGbKor6tDXU0tGurq+W9ub2+jva0dhflydHb8TkDtvAU93T3Y2Nig/HoCakCTqhGKcsURQyszQxYVFRVQ1TdA81SNqopKmObm8HH9I0qKS1BKUSQvRPnjcnz6tIGZ6WmUlZZBTblNjY0oLJB/CVhcVIRaM8M86kl/Xx/W19cwb5pHgJ8/bgUFYWlpCWtra3jT2Yksqezor2rrkJkhtQCa7YIsmQxKhQJKoi8mNwwNDcFkMmFzcxN3wsIQExODra0tzM/Po7enhw9DQYyVCiVSU1I4BpsFZ8g291J/41rMz3tEg4mATqfD5OQkpqamEOgfiJDgYMx++IB3f76DVq3B7ZBQnstqGPgXDJMSErnGpA8zuLZqq2u4A0bJZlPv32Oa+sbkMkCOqVQq4efjiwdp6bwmKiLSwvAYMDoqmoOl0CXgSQJvVKlIi8NYXFzEwcEB9vf3sbCwACNZsoYOc3d1463JoJrQ4BALQxuRNWysrckdKaTDTM7Uw80duuZmzMxMk+Z2cHh4yONvWs/OzkKj0eCm8w3ukJysbP7LjBjDEk588y23EDut5kk1t5yPlzcX7ue/PmN3dxd7/+xhb2+Pg2+QbFh/3VzckEVGYDXxcXE4ffIUGJbAFsxy7EJ43tLC/cpOLCARs6upm7mk8w2Pnu5ufrtkSqU8hxlARw6roEmHh93BqRMnIXxvew7enl40yQDeaD9fP34/Bv/yK9Lvp3HGj3LzuDZl0kyuBjY0V8rxp1xfqmE6ZX23PXP2iCGjeuG8HTf78ZO1oKVZhz8mJrn2TKY5fk9qNVrExtzFpYs/4qLdBZ5r98N5jsGw/gXxiloEl3XVyQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/6f44bc6e2f75db97570cc19ea632c28c/d6138/cover.png","srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/15e42/cover.png 100w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/5aead/cover.png 200w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/d6138/cover.png 400w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/6d0de/cover.avif 100w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/f2685/cover.avif 200w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/4ff31/cover.avif 400w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/d8057/cover.webp 100w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/2e34e/cover.webp 200w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/416c3/cover.webp 400w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["3 senior frontend developers","1 UI/UX designer","1 QA engineer","1 DevOps engineer","1 PM"],"screenshots":[{"id":"f7705de5-0cc5-5485-9613-acdf7b801859","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABu0lEQVR42m1T24rUQBCd//8GX0S8oOsIog8uIuqr4IOsyOLurJNJZib3dG6dTic5nupsZh2w4FDVnapTt87q5naDu62PvFA4HmMU1IVSSLMcqiyhVMm7EllWIE1zxEmGOM4QRSnCMKJNHSWML/Hj6horrTVE+r6fYS0s0XUG4zhikSjJsT/ETKRQ1Q06Y9C2ldNaGwzjBG/nY9W2GtM0YRgGh2kaHbGQynkcB0e4C/a4/n3rfLuuOyWT82L79DlVuEjbdmiYZBgeqmNy6FbBmhR2mAlmTA6Lr+8HUmE7B9GhIZkXhGyrdE5LIItAWdWIODtV1myzd5UteKiQhDIPCR54qbue89GoSdz31rU7E0+cU+e+ySiE5F9ZzsGeLcvWojhH0+hTG0JmOGzbm3uiFuv3X/Hk5Qc8f/0RT19dYv3uCy7efnb2s4tLvFh/wqPHb7DK+DwMlyBEkkmWJFjaEC1b9IIEGy/E3S5y2Pox/tzbm22I3SHDt+8/sVJlhSxXJLX4n8impeLeTmcworkgy7yiRTyfLR+OCeKUDzkncVGfISeqmlvXnG1jzlATuWoQJvwhooK+Gle/bvAXmwr+GmQdHi4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/88913e70ae8a630c65e3a8bbeb7fe14c/00704/screen1.png","srcSet":"/static/88913e70ae8a630c65e3a8bbeb7fe14c/14c85/screen1.png 156w,\n/static/88913e70ae8a630c65e3a8bbeb7fe14c/3a84c/screen1.png 312w,\n/static/88913e70ae8a630c65e3a8bbeb7fe14c/00704/screen1.png 624w","sizes":"(min-width: 624px) 624px, 100vw"},"sources":[{"srcSet":"/static/88913e70ae8a630c65e3a8bbeb7fe14c/25010/screen1.avif 156w,\n/static/88913e70ae8a630c65e3a8bbeb7fe14c/41ae6/screen1.avif 312w,\n/static/88913e70ae8a630c65e3a8bbeb7fe14c/576e5/screen1.avif 624w","type":"image/avif","sizes":"(min-width: 624px) 624px, 100vw"},{"srcSet":"/static/88913e70ae8a630c65e3a8bbeb7fe14c/4a2af/screen1.webp 156w,\n/static/88913e70ae8a630c65e3a8bbeb7fe14c/6724c/screen1.webp 312w,\n/static/88913e70ae8a630c65e3a8bbeb7fe14c/20134/screen1.webp 624w","type":"image/webp","sizes":"(min-width: 624px) 624px, 100vw"}]},"width":624,"height":314}}},{"id":"6f5f71e2-4e3a-59a7-b098-20d7013c5b85","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACLklEQVR42m2Sy27TUBCG/Sw8Bg/RFUiwAiQEK8SiQCsVFiBEUFeAECtYgISgpVIlRAW0C4oopKG5uekt6Y3e06ZO7PgaO/bHGacVG0b6reOZOTP//HO0Y8PAaFlEURfbcYnjJD13OiFxkqToKp/nBdi2Tdt2FNwUlspvWiaWZad3yvoyGsriOKYTdAiCQBXqpPB9n263Sy+ecGRYmG1PxSJ8FQ/DiMDx6XgujuORqJylpRW0RBh047SoQEzYiS9JBAmJ8pn5Z1hTVzHXvmLu1thqrdMfF8gki+wcLNI+XKBSKfYYnppcllFcNZ6MeuJNv5/fP+HlwyvkZj6iVxepbNZ4s64zvr3M8qdXrL3NUPg+1WMoEHZW22V795CW0kTGFF9ywjrzaJgL5y7y+sM4Y9k5pos605O/yP4oUnx6i9JgH7mJMTTPD1JGIqofhHi+6Cd6ik69s3B8cfcmQ31n6b93hzOXLnNt+D43Hp9n6Pl1KpMZNr7cJj8zgSabNZpWusVTPaMwVA0idQ57hZWvOPqOb5kHzGd/kqutUt3+Q3VjgY29VVr1NaLWJksVHc1xPcUi6I2nCsq/sE5ONJQGHbVRxzBp14+JVIN/ysLpKxFbqa6iyfrNVLOY/5lIEYZdApUnlp2dZXBggNGREfKFPKVyiXm9TLlUIPd7Dq2h3pe8McN0aCoYpp2imcLBdkVj0TZUhWMaxy2qtXX29g/ZrzfY2Ttia+eAeqPJXFHnLy2s3gIrwzmfAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/d769b482d11e04202013b5e0f8372c31/00704/screen2.png","srcSet":"/static/d769b482d11e04202013b5e0f8372c31/14c85/screen2.png 156w,\n/static/d769b482d11e04202013b5e0f8372c31/3a84c/screen2.png 312w,\n/static/d769b482d11e04202013b5e0f8372c31/00704/screen2.png 624w","sizes":"(min-width: 624px) 624px, 100vw"},"sources":[{"srcSet":"/static/d769b482d11e04202013b5e0f8372c31/25010/screen2.avif 156w,\n/static/d769b482d11e04202013b5e0f8372c31/41ae6/screen2.avif 312w,\n/static/d769b482d11e04202013b5e0f8372c31/576e5/screen2.avif 624w","type":"image/avif","sizes":"(min-width: 624px) 624px, 100vw"},{"srcSet":"/static/d769b482d11e04202013b5e0f8372c31/4a2af/screen2.webp 156w,\n/static/d769b482d11e04202013b5e0f8372c31/6724c/screen2.webp 312w,\n/static/d769b482d11e04202013b5e0f8372c31/20134/screen2.webp 624w","type":"image/webp","sizes":"(min-width: 624px) 624px, 100vw"}]},"width":624,"height":314}}},{"id":"59d7e112-6700-5053-b5e9-be7c9f1c5987","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABYElEQVR42o1S2U4DMQzc//8tBKoqQCqHgIoHBOIQYsseubPJME6b7YqnRhrFdpzx2Enz8fmFcTQIIXLXmKaEOE2wztGekFLmnqGNw6gM+kGh70dCYVC6xNp2R7RQ2qMBV0oJjgQV3ntYa1kkyDFyzmh3A9Ez7uFZPMSpnBvmOTtQTE/boRGyvZJUIJdDjAXLmKgXeB/oJxI7aG0RSbwXlctZUbhc0ppiYjgkVoWOySNbrAQiQuLLHIk1SxXGeLy9f+OHrdV4hXUeHWdXc/dkebaFzDFnJpSA0g67buRFVeTPhHwobWyBkMgDymXxZZ7p8JCFECesdGg5cq6yZDfGFuL/bTd5djDLL0nHvOLLbEW5zFdpwwKxqLvePGF1eY+L9S0eti+nKzQ2lJFU+CB/NeJqs8X5+g5nqxs8Pr+i+WXViq7XR3sQW8O4AOs5XxOgrSAWiN+Plp9bPjyL8EHF/gOrIQzPCjBu5wAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/8275a7a743d1973f533c6084b8524293/75421/screen3.png","srcSet":"/static/8275a7a743d1973f533c6084b8524293/14c85/screen3.png 156w,\n/static/8275a7a743d1973f533c6084b8524293/54045/screen3.png 312w,\n/static/8275a7a743d1973f533c6084b8524293/75421/screen3.png 624w","sizes":"(min-width: 624px) 624px, 100vw"},"sources":[{"srcSet":"/static/8275a7a743d1973f533c6084b8524293/25010/screen3.avif 156w,\n/static/8275a7a743d1973f533c6084b8524293/7e89e/screen3.avif 312w,\n/static/8275a7a743d1973f533c6084b8524293/7de96/screen3.avif 624w","type":"image/avif","sizes":"(min-width: 624px) 624px, 100vw"},{"srcSet":"/static/8275a7a743d1973f533c6084b8524293/4a2af/screen3.webp 156w,\n/static/8275a7a743d1973f533c6084b8524293/fecfa/screen3.webp 312w,\n/static/8275a7a743d1973f533c6084b8524293/78fc8/screen3.webp 624w","type":"image/webp","sizes":"(min-width: 624px) 624px, 100vw"}]},"width":624,"height":316}}}]}}},"pageContext":{"id":"4010b091-889b-5be1-ab5a-bde195aa7729","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/page-data.json b/page-data/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/page-data.json index 48896db3..a687c247 100644 --- a/page-data/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/page-data.json +++ b/page-data/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/","result":{"data":{"markdownRemark":{"id":"4057e0b3-692b-5512-a1fc-cb93bd81fe0e","html":"

A monitoring system based on open-source technologies was developed, allowing the company to abandon expensive solutions and gain deeper control over the performance and availability of its services. The system includes Grafana for data visualization and alerting, Prometheus for metric collection, and Loki for log aggregation, enabling prompt incident response and infrastructure operation optimization.

\n

As the result of implementing the new monitoring system, the company was able to significantly reduce expenses on IT infrastructure support, increase the speed of incident response, and improve overall service performance. The use of our solution made unnecessary constant purchasing and licenses maintenance, reducing the solution ownership total cost.

","frontmatter":{"stack":["Grafana","Prometheus","Loki","Kubernetes","Helm"],"title":"DevOps monitoring system","description":"Our monitoring system offers a complex approach to IT infrastructure management, enabling rapid detection and resolution of issues, thereby minimizing downtime and ensuring uninterrupted service operation. This enhances overall efficiency, reduces risks, and optimizes costs. Thanks to a standardized approach to real-time monitoring, analytics, and data visualization, our system becomes not just a tool, but a strategic asset that contributes to the growth of our clients' businesses.","challenge":"The company faced the need to enhance the efficiency of its IT infrastructures through the implementation of monitoring systems. The commercial monitoring system was costly and did not provide the necessary flexibility and scalability.","clientDescription":"NDA - a company specializing in providing 3D design solutions, including software development, system integration, and IT consulting.","logo":null,"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABCcAAAQnAEmzTo0AAAFMUlEQVR42iVUWVBTVxi+z44gKAGRBBBRUFlkLyIapVRBZQBDkCWBQJSwRSWADgkgIBAVVMQEJEZZAlEgQFxAFmurganjTOGhTnVGO4I61hk7PvjgU/3639OHM+fem5zzf/+3/JyqSIVrndfQ0tyMspJSBG4JQNL+/ZAckaBEVYwChQKy7GykHk5BWmoqjhUqYbPZsPLuHYqOH0d6ahrS09Lg5ekJf79N4EKDQ+llA3Kzc1BdVY01Ts7sUkn6ETpciNLiEpwoL6e9GEelmTjX2ISUQ4dxMCkJpSXFUBYW4PDBQ+xiT4/14MLDwqGmA/sTf8LuXfHw9fZhzyfK1VCXlaGvtw9vl5fx96dPePrUgeioKLi6uCA6Mgq1Oh1ysrIQQ9/i43ZBRYi5nKxs2O12avMAgrcHQ5aTg2PKQvbjXfsEvn79io8fP+LDhw/49u0blhYXERIcDME6N+zdI8Y+WtsCt2J0ZAQvXvwBLoYq7RPvhaqoCAeTk5Evl6OqshKX2i9hft6BcdsoHty/z9bwHSt+efwYz58/x9DgIJIPJMHdTYATajWMBgMCNm8BJ9ogxG6Cm5jwIxR5ctTptHi3soJ/v3/HzZtmar2MKClDsaqIirTh3l07lpff4suXL3g49RDhO8IQFREBF+c11Ho0OOfVThB5CeHs5ISjmVIszM/j/fv3ePPmL9TX1iI1JYUh0WlrMDc3i6WlJaxQwYH+fty5bcXnz/8gM0OK40olrl3tAOe/yR+rV63CduLBOjiE169fY2ZmBo/m5qCpqMCe+Hgo8uU419SAW4R4bnYWi4u/E8plav9ndFy5gi6jAWfr6qA9cxqcNCMDGZIM5q87Viv6+/oYj2p1OQYHLIwrG/HYSdWNhk7icRjjY2OYmpyklqdwproSjfW1aNO34HzLOXCVhIJXtLmpCW0XLkAuk2HnD7Gop4pPfn3CRHA4HHj58k/oamqI6wQ01NfjvL4VFSdPwnD1Cgwdl2G63o2mhkZwZaWl0Ov10NKfdVotqiurmLd41UaGh2Hq6WF8PXv2GxYWFpCwdx8tMfJJQM2pCtTSmZ7uboyPj1P7xGGJSoUj6enooYNnqfKZ06chz5UhOiISh8hGJ8kS/K4sUDCzBxHXfJKCtwchJjIaeTI5bphMVHQAjY2EsK+3F91dXejuNqL94kWKVDK8hUK4ua5lUdro44sdIaHMvJ7u67HB3QN+9M1/ox82k6ASAjM6OgL7xDimpibB9VM70/RgHxshgquxNSAAQso2fxmfBt5fIqEIAoEAHgJ3CNaug6/IG9sCAhG3M44ckI/eWzeZ8Xkw3OS9u7ANW2Hu6SbptchIT0NYSAjc6CB/mZvrOkIsYgXWEzoPSgZ/YRRRkn00C6dIGJOpB5WaSkSGR4B7QBeODN9mVXgf5eXmIkEsRkhQEBtHvOm9aQm9vBhCPl7i3XuQTTNAV6MlIS4zG7169QrT09PgjAYjmXgWnR0duHr5EtovXARvJV6EpMRE4i6Qccoj9PPdiJ0xsZCSb/n5abUO4T4BamxoIOM3oUqjAecj8mFkH6CRZb5hoqxOYMjSTyZthiw3hwaHmLUSFxuLnOwsak1DA7mTzcU6iqbDMY/WllZK22qEhYb+78NNpJivjw8K8hWs/YkxGyXiNmtHU3GKhkYe2/nhYL5hxqDFwnyqVBQQNcHwoRnqusYF7W1t4PjhKpVImAD8JNZTtS6jkWV2Zmaaxc5sNkPf2oKe69dhGRigOFpgIXfUEOc8DTw6XsRMqRT/AbN9kxzlNuWvAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/c884efc5b3a893cd66340687b7f94bd3/d6138/cover.png","srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/15e42/cover.png 100w,\n/static/c884efc5b3a893cd66340687b7f94bd3/5aead/cover.png 200w,\n/static/c884efc5b3a893cd66340687b7f94bd3/d6138/cover.png 400w,\n/static/c884efc5b3a893cd66340687b7f94bd3/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/6d0de/cover.avif 100w,\n/static/c884efc5b3a893cd66340687b7f94bd3/f2685/cover.avif 200w,\n/static/c884efc5b3a893cd66340687b7f94bd3/4ff31/cover.avif 400w,\n/static/c884efc5b3a893cd66340687b7f94bd3/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/d8057/cover.webp 100w,\n/static/c884efc5b3a893cd66340687b7f94bd3/2e34e/cover.webp 200w,\n/static/c884efc5b3a893cd66340687b7f94bd3/416c3/cover.webp 400w,\n/static/c884efc5b3a893cd66340687b7f94bd3/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["2 DevOps engineer","1 PM"],"screenshots":[{"id":"91be2f47-0cf7-5134-aec1-c70927bd170b","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACC0lEQVR42j1TWW7bMBTUFdrEjrWR4iaSkiVLtoPA2VynS/pVBAUK9Aa9/wmmQwHJx0ASl3kz742yxnooG+BCj7qx0LZD7CbEPmFGoz1q6QiLvJCohEYhFMpaQ+kWjXJcr7Beb7BaF8hy2aC0GuPdHtK2ECQVPFRJA+u3qJYicSEuSCZIUmoDmYhUh2sR8Fl0+CQHXBUKmVQe2gdc3p4QYoR2HYbpFp4q5+M9QrdDG0fE7YyiUjC+hwmRhRxO+xk/Twe8nU/48/URc98hKxuNyhjcPh9hnF0It+MRBS01JkBSWUJ6T2vCOMhgqdago7PeGTwMDuddi1ZTYbIgTItVXmNdCqypYkVseNnQal0r3GzKBXnBMzyX2uDYDmHYCtujUpF2Na43NTKVVJQKxY1AsRHwqxLjVQ7FAVg/wpkBhr0yessCw+Kg0WFpg2sD11p4H+FD4OCosGkMXo8DXvYdXuaAv5cf+Pf6G1PYQfoO0/MFw8MZ4/0TxuMdi/QcSEviAKU4HLastRbBMQmcflZzc378gpkXZl6cz99x+PYLiuoEe+enmdgjTgfEYUQ6XzFCNowoOfX0LWld6Lj0ODOUm2zntC0abhKCuROMTcpizn6mHMbtgZOf0XNgUltMhxNmIlnvhv2S2ZThLIU6YVNKXm5YRX082zBwuv7jOylK7ymTnkRpP/0M7/uJ4z+L6R+NcAkhIgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/febc0/screen1.png","srcSet":"/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/bafb4/screen1.png 156w,\n/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/885bb/screen1.png 312w,\n/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/febc0/screen1.png 623w","sizes":"(min-width: 623px) 623px, 100vw"},"sources":[{"srcSet":"/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/73be3/screen1.avif 156w,\n/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/3afd4/screen1.avif 312w,\n/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/1d9a2/screen1.avif 623w","type":"image/avif","sizes":"(min-width: 623px) 623px, 100vw"},{"srcSet":"/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/cfe18/screen1.webp 156w,\n/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/f09e2/screen1.webp 312w,\n/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/27a83/screen1.webp 623w","type":"image/webp","sizes":"(min-width: 623px) 623px, 100vw"}]},"width":623,"height":322}}},{"id":"912c6fd4-f133-5701-b6cc-f3e3be581b0f","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACLElEQVR42j1SW47UMBDMJXZmJw8nfsR27DgzmcfOPmClXQkQK8EHEn8cgDtwAW5dlA3io9Rx7O6urupqUB6jT5A2ojce23bATSNwy6j5L98ZxqaTuG36v6h76DEiTnskv2B2CTNj4ttKKItOKNhWwncKThjMwwgvdCla9wNuux7NoLDrhoKa/zu+mY3Do5vwzgfcjR6PdkKl3QxvJnxgt1e34GVMeLEJ92pissR0TQiPC/zdDHuKsJcIlTwMGQpjccNmWzbdiAFboup6g4ZstoPEht03bY4SNxyr1yOu3664//6A89cLzl/O5RyeErreQsgRNXMaTlYzJ8cqF7NxhfNkGo+w04G67WGoidAO8ci7FBDWFfPpWKAnspOuvNN25ts98/Y8H6hhr+ECCziaohxhC9rBoOVdz8RtLagZGRGZWdNpKE0zpwWKcklC2wA1BlTlwA9BkbPY2cVcII+wy47SpJoFNruWdzSkM9RWl6Y5V44ThlI06xryyJyfa7Ijcuyk51p0EEKy44RlOVCKtbDNb+U/RgMZmrwhNR3P+rU9DElV5aGaycRi27DI6Q1q/Qh1eIUNB8S0ll0sorPgkGWRHJ/7e5w8HoLBJRo8J4uHOGWXFfaX91hOT5jXK57ffuLzj9/49P1XYWIDjdifi5s1Xcys83gdzczj+hg5soPhRmhtUeWtD/GAlJiYTgiBO8dFdT5SU1mQGWWG/7Wl1jvqWeRik47yCDLP+AOMMTvm3WIfmAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/5262312ba63645acae2471355daeb6e8/6cda3/screen2.png","srcSet":"/static/5262312ba63645acae2471355daeb6e8/c5b1e/screen2.png 156w,\n/static/5262312ba63645acae2471355daeb6e8/16ced/screen2.png 312w,\n/static/5262312ba63645acae2471355daeb6e8/6cda3/screen2.png 623w","sizes":"(min-width: 623px) 623px, 100vw"},"sources":[{"srcSet":"/static/5262312ba63645acae2471355daeb6e8/27108/screen2.avif 156w,\n/static/5262312ba63645acae2471355daeb6e8/8241a/screen2.avif 312w,\n/static/5262312ba63645acae2471355daeb6e8/be75a/screen2.avif 623w","type":"image/avif","sizes":"(min-width: 623px) 623px, 100vw"},{"srcSet":"/static/5262312ba63645acae2471355daeb6e8/e8e11/screen2.webp 156w,\n/static/5262312ba63645acae2471355daeb6e8/7ac80/screen2.webp 312w,\n/static/5262312ba63645acae2471355daeb6e8/a6e48/screen2.webp 623w","type":"image/webp","sizes":"(min-width: 623px) 623px, 100vw"}]},"width":623,"height":332}}},{"id":"163b38a1-d919-53f7-802f-c183b4493c43","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB/klEQVR42l2SWXeiQBCF+QlxAcMiiBDZXKAVlSgqmGg0MyfxIW+z/P9fceeCHnPOPHzndt0umq6ukkzrCV3LRVvR8dBU0JI1GKYD3bBrT+5UGN9UnvKfd8tpyzokw3LgDEJ4wQjBMIHBwzWzD7VrQ9FMdHQLstqtUTTC+JHfyNy7esyp1kRRTUhW38PxfMHn119cvv7AHUQweehkMsUkniGpECk1ZUydLpEuc4jZEkkyg5imdY4Q8/pSkmH7UAwHLcOFbPn8+wCeP4JIUkRhjJBJYTBGRMKwUsb+1Quqqqj+LbZ5Ocnk9fuuj57tQmVJKksa+GPk5SuyTYFFvsNivbtqfo3n629qj5ptS/jDGJLujvB2+YXT5TfSzRvfcwTT7uPwo8D75wvONfs7d+/jqifq8Sf3Lgckc8GSwwUcUcCON7VqdsADXfjjCN6IzRoGGAx9Etzw8RR6Nd7dC3i7ALbjsmR21Ow5sHhI17TReTTQ41voXReNtoomR6HJUWq0tXrd4sgoqlVTxY3b3kNL48hVY9MPMM+2SFd7xFmJrhtBZ5eTRCBN55gkCWKu59U6niAWU6zWa+T5MzsrkGUZp0Bgt90gioaQVG8GM1qQJXpJAT1cos35yp9XOL+84lAUZIfTvsSeH5WbHGW+wmG3w5He+4FvWBb4OB0xE1P8AwRdLml40WccAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1be8529d986d42447544037c05d74fb5/d80bc/screen3.png","srcSet":"/static/1be8529d986d42447544037c05d74fb5/255c4/screen3.png 156w,\n/static/1be8529d986d42447544037c05d74fb5/000a2/screen3.png 312w,\n/static/1be8529d986d42447544037c05d74fb5/d80bc/screen3.png 623w","sizes":"(min-width: 623px) 623px, 100vw"},"sources":[{"srcSet":"/static/1be8529d986d42447544037c05d74fb5/63c57/screen3.avif 156w,\n/static/1be8529d986d42447544037c05d74fb5/b4133/screen3.avif 312w,\n/static/1be8529d986d42447544037c05d74fb5/ae504/screen3.avif 623w","type":"image/avif","sizes":"(min-width: 623px) 623px, 100vw"},{"srcSet":"/static/1be8529d986d42447544037c05d74fb5/bb139/screen3.webp 156w,\n/static/1be8529d986d42447544037c05d74fb5/a1f22/screen3.webp 312w,\n/static/1be8529d986d42447544037c05d74fb5/1a915/screen3.webp 623w","type":"image/webp","sizes":"(min-width: 623px) 623px, 100vw"}]},"width":623,"height":319}}}]}}},"pageContext":{"id":"4057e0b3-692b-5512-a1fc-cb93bd81fe0e","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/","result":{"data":{"markdownRemark":{"id":"4057e0b3-692b-5512-a1fc-cb93bd81fe0e","html":"

A monitoring system based on open-source technologies was developed, allowing the company to abandon expensive solutions and gain deeper control over the performance and availability of its services. The system includes Grafana for data visualization and alerting, Prometheus for metric collection, and Loki for log aggregation, enabling prompt incident response and infrastructure operation optimization.

\n

As the result of implementing the new monitoring system, the company was able to significantly reduce expenses on IT infrastructure support, increase the speed of incident response, and improve overall service performance. The use of our solution made unnecessary constant purchasing and licenses maintenance, reducing the solution ownership total cost.

","frontmatter":{"stack":["Grafana","Prometheus","Loki","Kubernetes","Helm"],"title":"DevOps monitoring system","description":"Our monitoring system offers a complex approach to IT infrastructure management, enabling rapid detection and resolution of issues, thereby minimizing downtime and ensuring uninterrupted service operation. This enhances overall efficiency, reduces risks, and optimizes costs. Thanks to a standardized approach to real-time monitoring, analytics, and data visualization, our system becomes not just a tool, but a strategic asset that contributes to the growth of our clients' businesses.","challenge":"The company faced the need to enhance the efficiency of its IT infrastructures through the implementation of monitoring systems. The commercial monitoring system was costly and did not provide the necessary flexibility and scalability.","clientDescription":"NDA - a company specializing in providing 3D design solutions, including software development, system integration, and IT consulting.","logo":null,"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABCcAAAQnAEmzTo0AAAFMUlEQVR42iVUWVBTVxi+z44gKAGRBBBRUFlkLyIapVRBZQBDkCWBQJSwRSWADgkgIBAVVMQEJEZZAlEgQFxAFmurganjTOGhTnVGO4I61hk7PvjgU/3639OHM+fem5zzf/+3/JyqSIVrndfQ0tyMspJSBG4JQNL+/ZAckaBEVYwChQKy7GykHk5BWmoqjhUqYbPZsPLuHYqOH0d6ahrS09Lg5ekJf79N4EKDQ+llA3Kzc1BdVY01Ts7sUkn6ETpciNLiEpwoL6e9GEelmTjX2ISUQ4dxMCkJpSXFUBYW4PDBQ+xiT4/14MLDwqGmA/sTf8LuXfHw9fZhzyfK1VCXlaGvtw9vl5fx96dPePrUgeioKLi6uCA6Mgq1Oh1ysrIQQ9/i43ZBRYi5nKxs2O12avMAgrcHQ5aTg2PKQvbjXfsEvn79io8fP+LDhw/49u0blhYXERIcDME6N+zdI8Y+WtsCt2J0ZAQvXvwBLoYq7RPvhaqoCAeTk5Evl6OqshKX2i9hft6BcdsoHty/z9bwHSt+efwYz58/x9DgIJIPJMHdTYATajWMBgMCNm8BJ9ogxG6Cm5jwIxR5ctTptHi3soJ/v3/HzZtmar2MKClDsaqIirTh3l07lpff4suXL3g49RDhO8IQFREBF+c11Ho0OOfVThB5CeHs5ISjmVIszM/j/fv3ePPmL9TX1iI1JYUh0WlrMDc3i6WlJaxQwYH+fty5bcXnz/8gM0OK40olrl3tAOe/yR+rV63CduLBOjiE169fY2ZmBo/m5qCpqMCe+Hgo8uU419SAW4R4bnYWi4u/E8plav9ndFy5gi6jAWfr6qA9cxqcNCMDGZIM5q87Viv6+/oYj2p1OQYHLIwrG/HYSdWNhk7icRjjY2OYmpyklqdwproSjfW1aNO34HzLOXCVhIJXtLmpCW0XLkAuk2HnD7Gop4pPfn3CRHA4HHj58k/oamqI6wQ01NfjvL4VFSdPwnD1Cgwdl2G63o2mhkZwZaWl0Ov10NKfdVotqiurmLd41UaGh2Hq6WF8PXv2GxYWFpCwdx8tMfJJQM2pCtTSmZ7uboyPj1P7xGGJSoUj6enooYNnqfKZ06chz5UhOiISh8hGJ8kS/K4sUDCzBxHXfJKCtwchJjIaeTI5bphMVHQAjY2EsK+3F91dXejuNqL94kWKVDK8hUK4ua5lUdro44sdIaHMvJ7u67HB3QN+9M1/ox82k6ASAjM6OgL7xDimpibB9VM70/RgHxshgquxNSAAQso2fxmfBt5fIqEIAoEAHgJ3CNaug6/IG9sCAhG3M44ckI/eWzeZ8Xkw3OS9u7ANW2Hu6SbptchIT0NYSAjc6CB/mZvrOkIsYgXWEzoPSgZ/YRRRkn00C6dIGJOpB5WaSkSGR4B7QBeODN9mVXgf5eXmIkEsRkhQEBtHvOm9aQm9vBhCPl7i3XuQTTNAV6MlIS4zG7169QrT09PgjAYjmXgWnR0duHr5EtovXARvJV6EpMRE4i6Qccoj9PPdiJ0xsZCSb/n5abUO4T4BamxoIOM3oUqjAecj8mFkH6CRZb5hoqxOYMjSTyZthiw3hwaHmLUSFxuLnOwsak1DA7mTzcU6iqbDMY/WllZK22qEhYb+78NNpJivjw8K8hWs/YkxGyXiNmtHU3GKhkYe2/nhYL5hxqDFwnyqVBQQNcHwoRnqusYF7W1t4PjhKpVImAD8JNZTtS6jkWV2Zmaaxc5sNkPf2oKe69dhGRigOFpgIXfUEOc8DTw6XsRMqRT/AbN9kxzlNuWvAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/c884efc5b3a893cd66340687b7f94bd3/d6138/cover.png","srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/15e42/cover.png 100w,\n/static/c884efc5b3a893cd66340687b7f94bd3/5aead/cover.png 200w,\n/static/c884efc5b3a893cd66340687b7f94bd3/d6138/cover.png 400w,\n/static/c884efc5b3a893cd66340687b7f94bd3/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/6d0de/cover.avif 100w,\n/static/c884efc5b3a893cd66340687b7f94bd3/f2685/cover.avif 200w,\n/static/c884efc5b3a893cd66340687b7f94bd3/4ff31/cover.avif 400w,\n/static/c884efc5b3a893cd66340687b7f94bd3/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/d8057/cover.webp 100w,\n/static/c884efc5b3a893cd66340687b7f94bd3/2e34e/cover.webp 200w,\n/static/c884efc5b3a893cd66340687b7f94bd3/416c3/cover.webp 400w,\n/static/c884efc5b3a893cd66340687b7f94bd3/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["2 DevOps engineer","1 PM"],"screenshots":[{"id":"91be2f47-0cf7-5134-aec1-c70927bd170b","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACC0lEQVR42j1TWW7bMBTUFdrEjrWR4iaSkiVLtoPA2VynS/pVBAUK9Aa9/wmmQwHJx0ASl3kz742yxnooG+BCj7qx0LZD7CbEPmFGoz1q6QiLvJCohEYhFMpaQ+kWjXJcr7Beb7BaF8hy2aC0GuPdHtK2ECQVPFRJA+u3qJYicSEuSCZIUmoDmYhUh2sR8Fl0+CQHXBUKmVQe2gdc3p4QYoR2HYbpFp4q5+M9QrdDG0fE7YyiUjC+hwmRhRxO+xk/Twe8nU/48/URc98hKxuNyhjcPh9hnF0It+MRBS01JkBSWUJ6T2vCOMhgqdago7PeGTwMDuddi1ZTYbIgTItVXmNdCqypYkVseNnQal0r3GzKBXnBMzyX2uDYDmHYCtujUpF2Na43NTKVVJQKxY1AsRHwqxLjVQ7FAVg/wpkBhr0yessCw+Kg0WFpg2sD11p4H+FD4OCosGkMXo8DXvYdXuaAv5cf+Pf6G1PYQfoO0/MFw8MZ4/0TxuMdi/QcSEviAKU4HLastRbBMQmcflZzc378gpkXZl6cz99x+PYLiuoEe+enmdgjTgfEYUQ6XzFCNowoOfX0LWld6Lj0ODOUm2zntC0abhKCuROMTcpizn6mHMbtgZOf0XNgUltMhxNmIlnvhv2S2ZThLIU6YVNKXm5YRX082zBwuv7jOylK7ymTnkRpP/0M7/uJ4z+L6R+NcAkhIgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/febc0/screen1.png","srcSet":"/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/bafb4/screen1.png 156w,\n/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/885bb/screen1.png 312w,\n/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/febc0/screen1.png 623w","sizes":"(min-width: 623px) 623px, 100vw"},"sources":[{"srcSet":"/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/73be3/screen1.avif 156w,\n/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/3afd4/screen1.avif 312w,\n/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/1d9a2/screen1.avif 623w","type":"image/avif","sizes":"(min-width: 623px) 623px, 100vw"},{"srcSet":"/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/cfe18/screen1.webp 156w,\n/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/f09e2/screen1.webp 312w,\n/static/d06fc5a6c29b07ecfd1ae2b70a89c9df/27a83/screen1.webp 623w","type":"image/webp","sizes":"(min-width: 623px) 623px, 100vw"}]},"width":623,"height":322}}},{"id":"912c6fd4-f133-5701-b6cc-f3e3be581b0f","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACLElEQVR42j1SW47UMBDMJXZmJw8nfsR27DgzmcfOPmClXQkQK8EHEn8cgDtwAW5dlA3io9Rx7O6urupqUB6jT5A2ojce23bATSNwy6j5L98ZxqaTuG36v6h76DEiTnskv2B2CTNj4ttKKItOKNhWwncKThjMwwgvdCla9wNuux7NoLDrhoKa/zu+mY3Do5vwzgfcjR6PdkKl3QxvJnxgt1e34GVMeLEJ92pissR0TQiPC/zdDHuKsJcIlTwMGQpjccNmWzbdiAFboup6g4ZstoPEht03bY4SNxyr1yOu3664//6A89cLzl/O5RyeErreQsgRNXMaTlYzJ8cqF7NxhfNkGo+w04G67WGoidAO8ci7FBDWFfPpWKAnspOuvNN25ts98/Y8H6hhr+ECCziaohxhC9rBoOVdz8RtLagZGRGZWdNpKE0zpwWKcklC2wA1BlTlwA9BkbPY2cVcII+wy47SpJoFNruWdzSkM9RWl6Y5V44ThlI06xryyJyfa7Ijcuyk51p0EEKy44RlOVCKtbDNb+U/RgMZmrwhNR3P+rU9DElV5aGaycRi27DI6Q1q/Qh1eIUNB8S0ll0sorPgkGWRHJ/7e5w8HoLBJRo8J4uHOGWXFfaX91hOT5jXK57ffuLzj9/49P1XYWIDjdifi5s1Xcys83gdzczj+hg5soPhRmhtUeWtD/GAlJiYTgiBO8dFdT5SU1mQGWWG/7Wl1jvqWeRik47yCDLP+AOMMTvm3WIfmAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/5262312ba63645acae2471355daeb6e8/6cda3/screen2.png","srcSet":"/static/5262312ba63645acae2471355daeb6e8/c5b1e/screen2.png 156w,\n/static/5262312ba63645acae2471355daeb6e8/16ced/screen2.png 312w,\n/static/5262312ba63645acae2471355daeb6e8/6cda3/screen2.png 623w","sizes":"(min-width: 623px) 623px, 100vw"},"sources":[{"srcSet":"/static/5262312ba63645acae2471355daeb6e8/27108/screen2.avif 156w,\n/static/5262312ba63645acae2471355daeb6e8/8241a/screen2.avif 312w,\n/static/5262312ba63645acae2471355daeb6e8/be75a/screen2.avif 623w","type":"image/avif","sizes":"(min-width: 623px) 623px, 100vw"},{"srcSet":"/static/5262312ba63645acae2471355daeb6e8/e8e11/screen2.webp 156w,\n/static/5262312ba63645acae2471355daeb6e8/7ac80/screen2.webp 312w,\n/static/5262312ba63645acae2471355daeb6e8/a6e48/screen2.webp 623w","type":"image/webp","sizes":"(min-width: 623px) 623px, 100vw"}]},"width":623,"height":332}}},{"id":"163b38a1-d919-53f7-802f-c183b4493c43","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB/klEQVR42l2SWXeiQBCF+QlxAcMiiBDZXKAVlSgqmGg0MyfxIW+z/P9fceeCHnPOPHzndt0umq6ukkzrCV3LRVvR8dBU0JI1GKYD3bBrT+5UGN9UnvKfd8tpyzokw3LgDEJ4wQjBMIHBwzWzD7VrQ9FMdHQLstqtUTTC+JHfyNy7esyp1kRRTUhW38PxfMHn119cvv7AHUQweehkMsUkniGpECk1ZUydLpEuc4jZEkkyg5imdY4Q8/pSkmH7UAwHLcOFbPn8+wCeP4JIUkRhjJBJYTBGRMKwUsb+1Quqqqj+LbZ5Ocnk9fuuj57tQmVJKksa+GPk5SuyTYFFvsNivbtqfo3n629qj5ptS/jDGJLujvB2+YXT5TfSzRvfcwTT7uPwo8D75wvONfs7d+/jqifq8Sf3Lgckc8GSwwUcUcCON7VqdsADXfjjCN6IzRoGGAx9Etzw8RR6Nd7dC3i7ALbjsmR21Ow5sHhI17TReTTQ41voXReNtoomR6HJUWq0tXrd4sgoqlVTxY3b3kNL48hVY9MPMM+2SFd7xFmJrhtBZ5eTRCBN55gkCWKu59U6niAWU6zWa+T5MzsrkGUZp0Bgt90gioaQVG8GM1qQJXpJAT1cos35yp9XOL+84lAUZIfTvsSeH5WbHGW+wmG3w5He+4FvWBb4OB0xE1P8AwRdLml40WccAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1be8529d986d42447544037c05d74fb5/d80bc/screen3.png","srcSet":"/static/1be8529d986d42447544037c05d74fb5/255c4/screen3.png 156w,\n/static/1be8529d986d42447544037c05d74fb5/000a2/screen3.png 312w,\n/static/1be8529d986d42447544037c05d74fb5/d80bc/screen3.png 623w","sizes":"(min-width: 623px) 623px, 100vw"},"sources":[{"srcSet":"/static/1be8529d986d42447544037c05d74fb5/63c57/screen3.avif 156w,\n/static/1be8529d986d42447544037c05d74fb5/b4133/screen3.avif 312w,\n/static/1be8529d986d42447544037c05d74fb5/ae504/screen3.avif 623w","type":"image/avif","sizes":"(min-width: 623px) 623px, 100vw"},{"srcSet":"/static/1be8529d986d42447544037c05d74fb5/bb139/screen3.webp 156w,\n/static/1be8529d986d42447544037c05d74fb5/a1f22/screen3.webp 312w,\n/static/1be8529d986d42447544037c05d74fb5/1a915/screen3.webp 623w","type":"image/webp","sizes":"(min-width: 623px) 623px, 100vw"}]},"width":623,"height":319}}}]}}},"pageContext":{"id":"4057e0b3-692b-5512-a1fc-cb93bd81fe0e","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/projects/45987eea-191f-531c-b854-25e3d60decff/page-data.json b/page-data/projects/45987eea-191f-531c-b854-25e3d60decff/page-data.json index 4a9b88ed..120bc669 100644 --- a/page-data/projects/45987eea-191f-531c-b854-25e3d60decff/page-data.json +++ b/page-data/projects/45987eea-191f-531c-b854-25e3d60decff/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/45987eea-191f-531c-b854-25e3d60decff/","result":{"data":{"markdownRemark":{"id":"45987eea-191f-531c-b854-25e3d60decff","html":"

A web-application for the ventilation equipment selection and configuration, which allows uses to set preliminary project parameters, create a new equipment selection project, enter initial data, edit previously completed equipment selection projects, export selection results to PDF format, receive installation specifications for sending to production. The application also provides training and news sections for users.

","frontmatter":{"stack":["React","TypeScript","C#","ASP.NET Core","PostgreSQL","Docker","Swagger"],"title":"Equipment selection service","description":"The web application for selecting and configuring ventilation equipment that allows users to choose operating modes and select the most suitable components for ventilation systems in respect with such parameters as humidity, temperature, atmospheric absolute pressure, etc. The application streamlines the process of designing and selling ventilation equipment by reducing the time to process applications and ensuring that the selected components meet the specific criteria of the installation. It’s a powerful tool for professionals in this field, that allows to perform efficient and accurate configuration of complex ventilation systems.","challenge":"Automation of the equipment selection and configuration process. Accelerating the process of selecting and configuring equipment. Storing already completed projects. Generating reports with equipment characteristics. Creating and sending equipment specifications to production.","clientDescription":"The company \"ESKD Group\" has been working in the sphere of ventilation equipment, and installation and construction works for more than 10 years. It provides a wide range of services for the internal building networks installation. The main company specialization are the installation services. The company is licensed to install ventilation, air conditioning and heating systems. The company's ventilation units are produced at its own industrial site in Belarus. Thanks to its own manufacturing of ventilation equipment, the company offers high-quality supply and exhaust units at reasonable prices, designed to meet the requirements of various industrial sectors.","logo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB+0lEQVR42pVSS28SURSeX6o73TVpogtduFLBVgmS0EppaUBrBexrpBWmCS0MDoUmpaUqr7YUKM8ZYOjwmgH5ermxs3PhSU5uzj2v75zvMPgPGY//YDKZ/NM/9TFcpYlQvQV/WcJVX8WRcIb5ty5YrW4YjatIpfNIEz1LZmlSJnMNj3cfvd4AFss6TKZPRNdgt2/i9rYHpqON0VFHUEnjjtLHo8cvIQinSCRSiMXOaZEv7gDYbyHwkQQMBgeKpRokScbMzBxpdo3LyxJcLh/M79fBhAm6qd50BzT5u18gjs+wL2/BQBDy/AkCXBQPHr7A7Ow72GwbNK5SEWF8s6qPK8sKnj23gJGGGtoEYYO8sqoh9fsKwYM4YvFz2vXV6xW4CUKzeY0mWhc8WFj0QhRbePLUhHj8J51kbt4J29IGmMNaGz/qMviGjGxLAbtzCIeDxZJ9C4sfvqJeb6JcbqBQrOqLDwaPUa1KCPMJLK9sk9hN+ANRjEZjMLs7Byjkb3TotZqEfL6ssylKbSSTOQyHKrUHAxWK0oPcUfS/brdPiZvGMq6PPmyzIb2gx8MhlytC00bU9u3y8BJWw+ETajebMrj9KPb2eBT/oo7FknA6Wbp/RiBncnFR0sdpNFr0vT83UWwjfvyLoriXbKaASOQUKtn5VNLklDjuiDJ/B6s2eJ+apcHjAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/174d5fcaab213bcd2b29016b5d4de356/342a3/clientLogo.png","srcSet":"/static/174d5fcaab213bcd2b29016b5d4de356/a8daf/clientLogo.png 45w,\n/static/174d5fcaab213bcd2b29016b5d4de356/f0c21/clientLogo.png 90w,\n/static/174d5fcaab213bcd2b29016b5d4de356/342a3/clientLogo.png 180w","sizes":"(min-width: 180px) 180px, 100vw"},"sources":[{"srcSet":"/static/174d5fcaab213bcd2b29016b5d4de356/69045/clientLogo.avif 45w,\n/static/174d5fcaab213bcd2b29016b5d4de356/1a753/clientLogo.avif 90w,\n/static/174d5fcaab213bcd2b29016b5d4de356/2d7df/clientLogo.avif 180w","type":"image/avif","sizes":"(min-width: 180px) 180px, 100vw"},{"srcSet":"/static/174d5fcaab213bcd2b29016b5d4de356/fdca5/clientLogo.webp 45w,\n/static/174d5fcaab213bcd2b29016b5d4de356/6ac31/clientLogo.webp 90w,\n/static/174d5fcaab213bcd2b29016b5d4de356/bd541/clientLogo.webp 180w","type":"image/webp","sizes":"(min-width: 180px) 180px, 100vw"}]},"width":180,"height":77}}},"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAADoklEQVR42n2VyU8TURzHp50pbVHEBQIaEzVGEywiVsqmUEuhuBfaiqUiqMhWRBoVsBCQ1WhAPCgYZbkqFDQgy8liol44EfVGgoSrXNA/4OtvXplCm+rh5U3e8nnf3zqcjOMg52QhB9uTycDRzLFvOXhOHrAffJ/zX9wMoZmnyzKCiSM9LR02qw0qlYqB2V4IGAOG2lAIAlOmUCiQZzajpbkZ3o8fMTgwgMjISAZVhoXRYyEUSgvSrBAU7EJsTAx6urvhGR3FwKvXGBocxMLCAj5MTiJeo2FnpIc3MzYUiop4gR3U6XQYHxtDQ10d9BkZSDquRaouGafST6KZqfUy5eJZQeDBy+V+KAOKPuF5nh24bLNhZmYGSVotNHFHYDhtQGaGHvpMPc2ZiI/TwGLOw4/v3+CqrfUHS5DzPiDPJPv8Vmi3Y+nnErKNRmQRqLWlBffu3sO5s+eQmpKGlORk5GQZkZacgjvVNVhe/om21la/X9czgsO2iG3Iz8vDp7k5TExMQKc9gUedXWh72Ir+vj54PKMYHx9HkeMqEhOOIfPkKQYeGhjE1NQUxjweHD50SEovDi6XCy/7++H1evH2zRvYLFY0NzYxwDRdWF39hT9/frM90Q2iQpMxG10dHbhPFrx/9w59L55vAKsqqzA/P4+VlRV8/fwFF89fQEVZBQtCQ3095kj5zPQUbpSUIIPWRFhZaSma3G44q5x41tuLpMTjPqDoSNFHFeWVTP7a2hraydQzplyYsnNYhHNzTDDoT8NhL0T5rTLU1tSwM1cdDhJTiYP790Mh9wWGKbxSUAC3uxGXrQUYGRnB4uIimhobmVKjwYBUMjHXZIL5kpmli+tODX1fgvZYIqJ27IRAwYgID99IG4FSxmqxoL2tg6A2dHV2YnZ2lhK7B05yx7WiIvaoNd/CUiabHtm7ew/UijCoaISr1Cz1Nmp5vQFk0cHb1beRT5fEHBseHkZHezuqnU4UXytGMYEry8uReDSBwbZQbauVyoBq4aRGIJWcGH53wwPYC+y4fv0GJicnME0BefLkMXqf9iBBE0/+4hGhDoeSoMG9gNtc2GIJidDo6GiUFJegtLQMhYUO9FNKiYr3xMZS++KwlWBimYbsNsELolqpm1itVtTV1VNQUlkUlcxMdUDt/hMoSZcaheTXXEqfm2R6zK4oqMKU/l4YqsEGdJsAoPTiOvTAvn3YuX2Hr16DGnFwh+dCgQKhcv8v4H+/C8nkv+/GeTcU9GBXAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/4bba86a6c2c681ec6c2473039256f576/d6138/cover.png","srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/15e42/cover.png 100w,\n/static/4bba86a6c2c681ec6c2473039256f576/5aead/cover.png 200w,\n/static/4bba86a6c2c681ec6c2473039256f576/d6138/cover.png 400w,\n/static/4bba86a6c2c681ec6c2473039256f576/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/6d0de/cover.avif 100w,\n/static/4bba86a6c2c681ec6c2473039256f576/f2685/cover.avif 200w,\n/static/4bba86a6c2c681ec6c2473039256f576/4ff31/cover.avif 400w,\n/static/4bba86a6c2c681ec6c2473039256f576/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/d8057/cover.webp 100w,\n/static/4bba86a6c2c681ec6c2473039256f576/2e34e/cover.webp 200w,\n/static/4bba86a6c2c681ec6c2473039256f576/416c3/cover.webp 400w,\n/static/4bba86a6c2c681ec6c2473039256f576/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["2 senior frontend developers","1 UI/UX designer","1 QA engineer","1 DevOps engineer","1 PM"],"screenshots":[{"id":"b8395c57-1cf9-50a4-af0c-d6015571d15f","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAACHVAAAh1QEEnLSdAAABdklEQVR42pWSy1KDQBBFBxie4RUgMRjepEhizCLZuLKy0tKVVZaf4P//wnW6TfnEhYtTw0zRZ243iCxNUJcL5PkFoihCmqZIkoTX2WyGLMv+JM/nihxdPcdyueT3RdsUeLprcXPs4QchqqrEMAwoyxJxHMO2bRiGASnlCAZM04RjS17pTFDh9fUOm/WAIAjQdR02mw36vmeh502+4J2ZwLJsCCG+oWkaRNM0OBwOWK/XZ2GLXtG2jRqBrwpVOkPAlBps9UxQItuSv4S6rkNUVYX9fo/dbsfCtm05HV0Uhx6mkafmtECaTOEomSUFXFuH58jxhCSghNvtloWr1epDSPvA91EUBQ/ckLpKoTFcPJaw7zscj0cWhmHIxXRGLZOQPshnAv0DLh6fYc0tb6+u1MxCzC8KXBYd8st3oeu6LCXBT34KGUpEbRK+H+J0U+DlscPDqcE0jlhIN48xKqTZ1HXNP6ZpOXi8jfH6nOHlPoU/ceH8U/gGaT/rjM/uFLUAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/6c61b47107a3b060d5dba3aee692ef31/83dff/screen1.png","srcSet":"/static/6c61b47107a3b060d5dba3aee692ef31/00e35/screen1.png 216w,\n/static/6c61b47107a3b060d5dba3aee692ef31/283a9/screen1.png 432w,\n/static/6c61b47107a3b060d5dba3aee692ef31/83dff/screen1.png 864w","sizes":"(min-width: 864px) 864px, 100vw"},"sources":[{"srcSet":"/static/6c61b47107a3b060d5dba3aee692ef31/a645c/screen1.avif 216w,\n/static/6c61b47107a3b060d5dba3aee692ef31/8a5d3/screen1.avif 432w,\n/static/6c61b47107a3b060d5dba3aee692ef31/b1a15/screen1.avif 864w","type":"image/avif","sizes":"(min-width: 864px) 864px, 100vw"},{"srcSet":"/static/6c61b47107a3b060d5dba3aee692ef31/a526e/screen1.webp 216w,\n/static/6c61b47107a3b060d5dba3aee692ef31/08a6f/screen1.webp 432w,\n/static/6c61b47107a3b060d5dba3aee692ef31/e0dae/screen1.webp 864w","type":"image/webp","sizes":"(min-width: 864px) 864px, 100vw"}]},"width":864,"height":424}}},{"id":"c05f2d3d-ed65-5fa6-8f7b-5dfcf1b17a4f","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAApCAYAAAA1bQl+AAAACXBIWXMAAA7DAAAOwwHHb6hkAAADYklEQVR42u1VPW/TUBR1EttxHLfNR/PhJE5sJ0raNE1SktCIVlRihC4siA0QbCyI/gQmJFgRogKxsLCxISRAqpjYGPk1h3ee6yptEtpCJ8RwfN+7fj6+9753z1M0TYNpmjASlkQyOR+maSFuWLAsCzFNjOP0J4U1pFVVFQonrutiPPDR73pi7MP3p+F6PtorPq6MPNRqPm5dd3F17MLzm9je3kKr1ZKkipkwxeI67tx0ceOah7Ljo14/Tsa5U/WxfdnD7V0XedvHxxc17N114DV6eHD/Hrrdroxc0TQd5XJZ/LWGarV6ZE+CfsepwS5xXoPn0TqoVJzDdw4Mw4ASi8WgKMrFgcUejYYYj8fCjmTozWZTRtXv97G6uop2u43BYCAt3/V6Payvr8vNnEGYRKfTkR9yEYtLsnq9LgkbjYYkWltbk6nRT0ISJxKJacILT5l/se0icrkcdF2XzkgkcibMJLSsBWxubmI4HAbn6G8jjMXUo0n452g0CpbivOB3CluPaS8tLcld4+E8b+qTQSiqqolejCObzSKVSmF5eXn2cTgFJD0kVINQD52TL0OoaoAzpUxCpvg7qKqOaEyTY5Zo0k5CEnLA3Z0H00wil7Vg5y05nrfuqPYUB9aMmF4ktM5IYmeUwu5OGulUQEr/LNJjhFSKkylwszQtjnI+Dq9sIGHQH59ZliNCPkjGXt7a2pL9y16lWLDH10Qfb2wMRJ/3pJ8+9jbBMUENWFhYkHWVhIxwcXERmUxGIp1Oy+MTolSyUSjk5JgtGh4xrqMlplImeMAJpsqDTtG0bRv5fF6KcKFQkHMSM6twPTFBGHRK0gxfBpszufjkxyFBODYJEZC8pCbla66CnNIhx74NCS+t6EjEFZFqClWnArtYFClXUBSWKYfpM+1KpSIRCqxlspdPCOyKK46JpkAX924qXYCZTEvLerGeJCUZLcEfsdZThAlDRbepodPQsbESR6+polOPoNuIolWLQI2dUw+bNQPf35Vx8KaEr/s2vuzTlvHtbQCnqMmF0WggUbMUOzJJ2K4b+PnBwcHrEj6/svHppS0u8aIgK+HH+wrcUiDA0cgZI7SXdTx9lMGzx0QWzwWk3cviycM0MouhtJ35CrjgW0+Ko9ihefgjwguP8D/hf8J/jfAXZlCkZ88RUZ0AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/49ea35822731bb49e8b316035790af18/4f130/screen2.png","srcSet":"/static/49ea35822731bb49e8b316035790af18/1075b/screen2.png 52w,\n/static/49ea35822731bb49e8b316035790af18/86065/screen2.png 103w,\n/static/49ea35822731bb49e8b316035790af18/4f130/screen2.png 206w","sizes":"(min-width: 206px) 206px, 100vw"},"sources":[{"srcSet":"/static/49ea35822731bb49e8b316035790af18/44369/screen2.avif 52w,\n/static/49ea35822731bb49e8b316035790af18/2fb23/screen2.avif 103w,\n/static/49ea35822731bb49e8b316035790af18/ee1e0/screen2.avif 206w","type":"image/avif","sizes":"(min-width: 206px) 206px, 100vw"},{"srcSet":"/static/49ea35822731bb49e8b316035790af18/92c8c/screen2.webp 52w,\n/static/49ea35822731bb49e8b316035790af18/379ec/screen2.webp 103w,\n/static/49ea35822731bb49e8b316035790af18/8224d/screen2.webp 206w","type":"image/webp","sizes":"(min-width: 206px) 206px, 100vw"}]},"width":206,"height":425}}},{"id":"2d3bf1de-51a6-5028-9700-e5198a131f83","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAACHVAAAh1QEEnLSdAAAAxUlEQVR42p2RyRKCMBBEw74UFBAIm8YF9eD/f2Brj6UHCxU8vJqkMnnpJMo0JUyj0batYIyR2nXdVw67Adbucb30OE8Wx+mEsiyhxnGE1hpFUWAY2GRRVRVc14XneYLv+4sIggCKEgo4ybJMSNMUSZIIHFOqlPqJCJmQwjAMRRDHsfC3kAl5d0ZeuvETdKj+LuT7MVUURbLgOM4LviXrEqH0WbtFXWu5spzwJnyyOOlm8/hlCucSrhbWTSM/S1me57OyNcIbNnvBRCoZ56MAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/ac90845e2a1ddeae98e12594e881c117/60f64/screen3.png","srcSet":"/static/ac90845e2a1ddeae98e12594e881c117/3ff2d/screen3.png 224w,\n/static/ac90845e2a1ddeae98e12594e881c117/b62d9/screen3.png 448w,\n/static/ac90845e2a1ddeae98e12594e881c117/60f64/screen3.png 896w","sizes":"(min-width: 896px) 896px, 100vw"},"sources":[{"srcSet":"/static/ac90845e2a1ddeae98e12594e881c117/5a2bf/screen3.avif 224w,\n/static/ac90845e2a1ddeae98e12594e881c117/9424b/screen3.avif 448w,\n/static/ac90845e2a1ddeae98e12594e881c117/0fd2c/screen3.avif 896w","type":"image/avif","sizes":"(min-width: 896px) 896px, 100vw"},{"srcSet":"/static/ac90845e2a1ddeae98e12594e881c117/f67a9/screen3.webp 224w,\n/static/ac90845e2a1ddeae98e12594e881c117/3559c/screen3.webp 448w,\n/static/ac90845e2a1ddeae98e12594e881c117/0fa27/screen3.webp 896w","type":"image/webp","sizes":"(min-width: 896px) 896px, 100vw"}]},"width":896,"height":424}}},{"id":"89cb799a-844f-5e6d-93b0-1104e65761df","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAACHVAAAh1QEEnLSdAAABtklEQVR42lWRW46bUBBEMcaYh40NDO8LBmzzsOdhjyaKRqMon/mJNBuIkkVkG9lzpbsnWMpHq+8VdN3TVZrrurjv7/DyEEDlAVx3he12C8/zpDabjdx93/+v0jhEHCeoihB5FiPNMrCWxj/3xxLnoUDbKDiOgyDwkdEPaZoiDEMRDoIAlmVB13Wp+Zxr/q9/nGezGTQmqKoahdqhKBRs2xahw+GApmmQJBnW6zX1BFEUCTGT3Gq1kr6izg9qTHM+jThR7fetEMZxDKUUhr7D9fqEy+UR4zjQwxV2u0qIedg0TSyXS5nhzneN/ei6Dn3fCxUTZlkKVSo8nI94eR4wdhWOe4VTl1PPxefFYiErGoYhM7wyn2Xlum7o5Z0Q8MeECKuypJVrNHVNhpPYUOLP7wI/3xVMa03/WTcRnhExTfsIhclYjINwHBtRnJGnDe6inM45eegRFVkR2vC3DtGZtxAmUQ5KQmHBtm0lgJJ8W1oOxmOMr59zfPmU4npOYJCAYfCKulBMSbMA13QXQk6QAyhpxSxNoBsWXi8efr0H+PHdx7c3H3PDlLXYNx6cAuAz03FAk6d/Afrb26RYz4ymAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/5e064d59a0f8b2b4aa107b390ed9c92c/8832b/screen4.png","srcSet":"/static/5e064d59a0f8b2b4aa107b390ed9c92c/db69c/screen4.png 225w,\n/static/5e064d59a0f8b2b4aa107b390ed9c92c/93d82/screen4.png 450w,\n/static/5e064d59a0f8b2b4aa107b390ed9c92c/8832b/screen4.png 900w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/5e064d59a0f8b2b4aa107b390ed9c92c/4f682/screen4.avif 225w,\n/static/5e064d59a0f8b2b4aa107b390ed9c92c/87589/screen4.avif 450w,\n/static/5e064d59a0f8b2b4aa107b390ed9c92c/74bbf/screen4.avif 900w","type":"image/avif","sizes":"(min-width: 900px) 900px, 100vw"},{"srcSet":"/static/5e064d59a0f8b2b4aa107b390ed9c92c/58aa3/screen4.webp 225w,\n/static/5e064d59a0f8b2b4aa107b390ed9c92c/05407/screen4.webp 450w,\n/static/5e064d59a0f8b2b4aa107b390ed9c92c/77dba/screen4.webp 900w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":424}}},{"id":"c604ef8b-f489-54c7-b47f-cf8aad6accdd","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAACHVAAAh1QEEnLSdAAABLUlEQVR42o2Ra2+CMBiFW2kBAyhEbopuyAQcF4W5hJnt6/7/TzqjVdlMXPTDk7xN2ifn9CW2bePzfYHvrxD5Zo7J1EEQBvA8H77vIwiCm8RPcyxXz9imc2ySFdbJC4SLeJ6HQ5Pi47BGWWwwmUz7Bx6iaIFoGcE0TTDGoKrqFdow8zOnMxEp2vYN1a5FWVawLAvGmMEyNWiaBs4ZRiPaM5JQ+jsLCCEDnHOQsK93PHboug77/U4KhUhwS/Afg3A2c2WyqqpQFK+yopCJmkL2KIPQdV1UtZAVg1DXdSiKIi89IrtKKIRN0yDPMyRJcq6sSy6V7/JXKLZc13Vfu0SaplJoGioc2wBT6MNQSuQ3EcdxkG+3yLIMcRzDMAxYvXCsK+CMQOX0Lpp6kopt/wAgjM41Xh+fngAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/379f1caa5b83b9fe37b1901606ca2e04/49b5e/screen5.png","srcSet":"/static/379f1caa5b83b9fe37b1901606ca2e04/db69c/screen5.png 225w,\n/static/379f1caa5b83b9fe37b1901606ca2e04/93d82/screen5.png 450w,\n/static/379f1caa5b83b9fe37b1901606ca2e04/49b5e/screen5.png 899w","sizes":"(min-width: 899px) 899px, 100vw"},"sources":[{"srcSet":"/static/379f1caa5b83b9fe37b1901606ca2e04/4f682/screen5.avif 225w,\n/static/379f1caa5b83b9fe37b1901606ca2e04/87589/screen5.avif 450w,\n/static/379f1caa5b83b9fe37b1901606ca2e04/78f88/screen5.avif 899w","type":"image/avif","sizes":"(min-width: 899px) 899px, 100vw"},{"srcSet":"/static/379f1caa5b83b9fe37b1901606ca2e04/58aa3/screen5.webp 225w,\n/static/379f1caa5b83b9fe37b1901606ca2e04/05407/screen5.webp 450w,\n/static/379f1caa5b83b9fe37b1901606ca2e04/ddf7a/screen5.webp 899w","type":"image/webp","sizes":"(min-width: 899px) 899px, 100vw"}]},"width":899,"height":423.99999999999994}}},{"id":"5c3623f0-03ea-5158-865e-c71db59ba6e0","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAACHVAAAh1QEEnLSdAAAB5ElEQVR42m1SPW/TUBR1vvxRf8aJn+20iROcOP2wa4smJJFghCESU5laISYGJFiCGsb8j/YHIMTGhsSAMkL/ADMr/Qs53GeappEYjp7ue7rnvHPuFSzLwpNhA88eu4hCH4Zhwfc8MNcFYy4ch9HJ4FK9AUM78NFsBjjoeQg7e+h0HoBzCY7j4GHWx3jQRXwUQTdMmKYFyzDg1i3sNnxUbRvFYhHlcnkLJYIkVqAoMkqlEkRR/Ed4eBgj6h+h1+tjR1WRxvsYPD2FEj+HYu8SuUZNOxAEYQuFQiHHuuYiQr1eR5qmSJIE3W5Ilk3M3rzCcvkdF5ffEOxnRKjDIfu1Wg38A7yHw7appjhUVdsIMeYgy1JClpPqmobF/B1+//qB5dcvGA9PyLKFIGjC49my20ypz/cZGr4H07hH6Ps+JpMRHo1GGA4H0IhwdHKMl2cvcPH2NbL4gMLW0Npj9KbeNUqVAhSpCJFOWdrYzjPklvtRhHa7TQMxcX5+htnsPebzDxRDF5WKSMMyIEnyf3PcuuOESXKMOI4RhmGe0/X1T6xWK/y5ucF0Os1FWq0WuJv7K8Qj0HU9n/AdId+diH4XRT3aqyaq1SoWiwWuri7x+dNHTMZjSLKcD4GLrQeyBhfL1+WW8C9lXPlf9sGWfAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/7b6ec021d7e740af3a08e437ae16eff9/60f64/screen6.png","srcSet":"/static/7b6ec021d7e740af3a08e437ae16eff9/3ff2d/screen6.png 224w,\n/static/7b6ec021d7e740af3a08e437ae16eff9/b62d9/screen6.png 448w,\n/static/7b6ec021d7e740af3a08e437ae16eff9/60f64/screen6.png 896w","sizes":"(min-width: 896px) 896px, 100vw"},"sources":[{"srcSet":"/static/7b6ec021d7e740af3a08e437ae16eff9/5a2bf/screen6.avif 224w,\n/static/7b6ec021d7e740af3a08e437ae16eff9/9424b/screen6.avif 448w,\n/static/7b6ec021d7e740af3a08e437ae16eff9/0fd2c/screen6.avif 896w","type":"image/avif","sizes":"(min-width: 896px) 896px, 100vw"},{"srcSet":"/static/7b6ec021d7e740af3a08e437ae16eff9/f67a9/screen6.webp 224w,\n/static/7b6ec021d7e740af3a08e437ae16eff9/3559c/screen6.webp 448w,\n/static/7b6ec021d7e740af3a08e437ae16eff9/0fa27/screen6.webp 896w","type":"image/webp","sizes":"(min-width: 896px) 896px, 100vw"}]},"width":896,"height":424}}}]}}},"pageContext":{"id":"45987eea-191f-531c-b854-25e3d60decff","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/45987eea-191f-531c-b854-25e3d60decff/","result":{"data":{"markdownRemark":{"id":"45987eea-191f-531c-b854-25e3d60decff","html":"

A web-application for the ventilation equipment selection and configuration, which allows uses to set preliminary project parameters, create a new equipment selection project, enter initial data, edit previously completed equipment selection projects, export selection results to PDF format, receive installation specifications for sending to production. The application also provides training and news sections for users.

","frontmatter":{"stack":["React","TypeScript","C#","ASP.NET Core","PostgreSQL","Docker","Swagger"],"title":"Equipment selection service","description":"The web application for selecting and configuring ventilation equipment that allows users to choose operating modes and select the most suitable components for ventilation systems in respect with such parameters as humidity, temperature, atmospheric absolute pressure, etc. The application streamlines the process of designing and selling ventilation equipment by reducing the time to process applications and ensuring that the selected components meet the specific criteria of the installation. It’s a powerful tool for professionals in this field, that allows to perform efficient and accurate configuration of complex ventilation systems.","challenge":"Automation of the equipment selection and configuration process. Accelerating the process of selecting and configuring equipment. Storing already completed projects. Generating reports with equipment characteristics. Creating and sending equipment specifications to production.","clientDescription":"The company \"ESKD Group\" has been working in the sphere of ventilation equipment, and installation and construction works for more than 10 years. It provides a wide range of services for the internal building networks installation. The main company specialization are the installation services. The company is licensed to install ventilation, air conditioning and heating systems. The company's ventilation units are produced at its own industrial site in Belarus. Thanks to its own manufacturing of ventilation equipment, the company offers high-quality supply and exhaust units at reasonable prices, designed to meet the requirements of various industrial sectors.","logo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB+0lEQVR42pVSS28SURSeX6o73TVpogtduFLBVgmS0EppaUBrBexrpBWmCS0MDoUmpaUqr7YUKM8ZYOjwmgH5ermxs3PhSU5uzj2v75zvMPgPGY//YDKZ/NM/9TFcpYlQvQV/WcJVX8WRcIb5ty5YrW4YjatIpfNIEz1LZmlSJnMNj3cfvd4AFss6TKZPRNdgt2/i9rYHpqON0VFHUEnjjtLHo8cvIQinSCRSiMXOaZEv7gDYbyHwkQQMBgeKpRokScbMzBxpdo3LyxJcLh/M79fBhAm6qd50BzT5u18gjs+wL2/BQBDy/AkCXBQPHr7A7Ow72GwbNK5SEWF8s6qPK8sKnj23gJGGGtoEYYO8sqoh9fsKwYM4YvFz2vXV6xW4CUKzeY0mWhc8WFj0QhRbePLUhHj8J51kbt4J29IGmMNaGz/qMviGjGxLAbtzCIeDxZJ9C4sfvqJeb6JcbqBQrOqLDwaPUa1KCPMJLK9sk9hN+ANRjEZjMLs7Byjkb3TotZqEfL6ssylKbSSTOQyHKrUHAxWK0oPcUfS/brdPiZvGMq6PPmyzIb2gx8MhlytC00bU9u3y8BJWw+ETajebMrj9KPb2eBT/oo7FknA6Wbp/RiBncnFR0sdpNFr0vT83UWwjfvyLoriXbKaASOQUKtn5VNLklDjuiDJ/B6s2eJ+apcHjAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/174d5fcaab213bcd2b29016b5d4de356/342a3/clientLogo.png","srcSet":"/static/174d5fcaab213bcd2b29016b5d4de356/a8daf/clientLogo.png 45w,\n/static/174d5fcaab213bcd2b29016b5d4de356/f0c21/clientLogo.png 90w,\n/static/174d5fcaab213bcd2b29016b5d4de356/342a3/clientLogo.png 180w","sizes":"(min-width: 180px) 180px, 100vw"},"sources":[{"srcSet":"/static/174d5fcaab213bcd2b29016b5d4de356/69045/clientLogo.avif 45w,\n/static/174d5fcaab213bcd2b29016b5d4de356/1a753/clientLogo.avif 90w,\n/static/174d5fcaab213bcd2b29016b5d4de356/2d7df/clientLogo.avif 180w","type":"image/avif","sizes":"(min-width: 180px) 180px, 100vw"},{"srcSet":"/static/174d5fcaab213bcd2b29016b5d4de356/fdca5/clientLogo.webp 45w,\n/static/174d5fcaab213bcd2b29016b5d4de356/6ac31/clientLogo.webp 90w,\n/static/174d5fcaab213bcd2b29016b5d4de356/bd541/clientLogo.webp 180w","type":"image/webp","sizes":"(min-width: 180px) 180px, 100vw"}]},"width":180,"height":77}}},"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAADoklEQVR42n2VyU8TURzHp50pbVHEBQIaEzVGEywiVsqmUEuhuBfaiqUiqMhWRBoVsBCQ1WhAPCgYZbkqFDQgy8liol44EfVGgoSrXNA/4OtvXplCm+rh5U3e8nnf3zqcjOMg52QhB9uTycDRzLFvOXhOHrAffJ/zX9wMoZmnyzKCiSM9LR02qw0qlYqB2V4IGAOG2lAIAlOmUCiQZzajpbkZ3o8fMTgwgMjISAZVhoXRYyEUSgvSrBAU7EJsTAx6urvhGR3FwKvXGBocxMLCAj5MTiJeo2FnpIc3MzYUiop4gR3U6XQYHxtDQ10d9BkZSDquRaouGafST6KZqfUy5eJZQeDBy+V+KAOKPuF5nh24bLNhZmYGSVotNHFHYDhtQGaGHvpMPc2ZiI/TwGLOw4/v3+CqrfUHS5DzPiDPJPv8Vmi3Y+nnErKNRmQRqLWlBffu3sO5s+eQmpKGlORk5GQZkZacgjvVNVhe/om21la/X9czgsO2iG3Iz8vDp7k5TExMQKc9gUedXWh72Ir+vj54PKMYHx9HkeMqEhOOIfPkKQYeGhjE1NQUxjweHD50SEovDi6XCy/7++H1evH2zRvYLFY0NzYxwDRdWF39hT9/frM90Q2iQpMxG10dHbhPFrx/9w59L55vAKsqqzA/P4+VlRV8/fwFF89fQEVZBQtCQ3095kj5zPQUbpSUIIPWRFhZaSma3G44q5x41tuLpMTjPqDoSNFHFeWVTP7a2hraydQzplyYsnNYhHNzTDDoT8NhL0T5rTLU1tSwM1cdDhJTiYP790Mh9wWGKbxSUAC3uxGXrQUYGRnB4uIimhobmVKjwYBUMjHXZIL5kpmli+tODX1fgvZYIqJ27IRAwYgID99IG4FSxmqxoL2tg6A2dHV2YnZ2lhK7B05yx7WiIvaoNd/CUiabHtm7ew/UijCoaISr1Cz1Nmp5vQFk0cHb1beRT5fEHBseHkZHezuqnU4UXytGMYEry8uReDSBwbZQbauVyoBq4aRGIJWcGH53wwPYC+y4fv0GJicnME0BefLkMXqf9iBBE0/+4hGhDoeSoMG9gNtc2GIJidDo6GiUFJegtLQMhYUO9FNKiYr3xMZS++KwlWBimYbsNsELolqpm1itVtTV1VNQUlkUlcxMdUDt/hMoSZcaheTXXEqfm2R6zK4oqMKU/l4YqsEGdJsAoPTiOvTAvn3YuX2Hr16DGnFwh+dCgQKhcv8v4H+/C8nkv+/GeTcU9GBXAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/4bba86a6c2c681ec6c2473039256f576/d6138/cover.png","srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/15e42/cover.png 100w,\n/static/4bba86a6c2c681ec6c2473039256f576/5aead/cover.png 200w,\n/static/4bba86a6c2c681ec6c2473039256f576/d6138/cover.png 400w,\n/static/4bba86a6c2c681ec6c2473039256f576/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/6d0de/cover.avif 100w,\n/static/4bba86a6c2c681ec6c2473039256f576/f2685/cover.avif 200w,\n/static/4bba86a6c2c681ec6c2473039256f576/4ff31/cover.avif 400w,\n/static/4bba86a6c2c681ec6c2473039256f576/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/d8057/cover.webp 100w,\n/static/4bba86a6c2c681ec6c2473039256f576/2e34e/cover.webp 200w,\n/static/4bba86a6c2c681ec6c2473039256f576/416c3/cover.webp 400w,\n/static/4bba86a6c2c681ec6c2473039256f576/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["2 senior frontend developers","1 UI/UX designer","1 QA engineer","1 DevOps engineer","1 PM"],"screenshots":[{"id":"b8395c57-1cf9-50a4-af0c-d6015571d15f","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAACHVAAAh1QEEnLSdAAABdklEQVR42pWSy1KDQBBFBxie4RUgMRjepEhizCLZuLKy0tKVVZaf4P//wnW6TfnEhYtTw0zRZ243iCxNUJcL5PkFoihCmqZIkoTX2WyGLMv+JM/nihxdPcdyueT3RdsUeLprcXPs4QchqqrEMAwoyxJxHMO2bRiGASnlCAZM04RjS17pTFDh9fUOm/WAIAjQdR02mw36vmeh502+4J2ZwLJsCCG+oWkaRNM0OBwOWK/XZ2GLXtG2jRqBrwpVOkPAlBps9UxQItuSv4S6rkNUVYX9fo/dbsfCtm05HV0Uhx6mkafmtECaTOEomSUFXFuH58jxhCSghNvtloWr1epDSPvA91EUBQ/ckLpKoTFcPJaw7zscj0cWhmHIxXRGLZOQPshnAv0DLh6fYc0tb6+u1MxCzC8KXBYd8st3oeu6LCXBT34KGUpEbRK+H+J0U+DlscPDqcE0jlhIN48xKqTZ1HXNP6ZpOXi8jfH6nOHlPoU/ceH8U/gGaT/rjM/uFLUAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/6c61b47107a3b060d5dba3aee692ef31/83dff/screen1.png","srcSet":"/static/6c61b47107a3b060d5dba3aee692ef31/00e35/screen1.png 216w,\n/static/6c61b47107a3b060d5dba3aee692ef31/283a9/screen1.png 432w,\n/static/6c61b47107a3b060d5dba3aee692ef31/83dff/screen1.png 864w","sizes":"(min-width: 864px) 864px, 100vw"},"sources":[{"srcSet":"/static/6c61b47107a3b060d5dba3aee692ef31/a645c/screen1.avif 216w,\n/static/6c61b47107a3b060d5dba3aee692ef31/8a5d3/screen1.avif 432w,\n/static/6c61b47107a3b060d5dba3aee692ef31/b1a15/screen1.avif 864w","type":"image/avif","sizes":"(min-width: 864px) 864px, 100vw"},{"srcSet":"/static/6c61b47107a3b060d5dba3aee692ef31/a526e/screen1.webp 216w,\n/static/6c61b47107a3b060d5dba3aee692ef31/08a6f/screen1.webp 432w,\n/static/6c61b47107a3b060d5dba3aee692ef31/e0dae/screen1.webp 864w","type":"image/webp","sizes":"(min-width: 864px) 864px, 100vw"}]},"width":864,"height":424}}},{"id":"c05f2d3d-ed65-5fa6-8f7b-5dfcf1b17a4f","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAApCAYAAAA1bQl+AAAACXBIWXMAAA7DAAAOwwHHb6hkAAADYklEQVR42u1VPW/TUBR1EttxHLfNR/PhJE5sJ0raNE1SktCIVlRihC4siA0QbCyI/gQmJFgRogKxsLCxISRAqpjYGPk1h3ee6yptEtpCJ8RwfN+7fj6+9753z1M0TYNpmjASlkQyOR+maSFuWLAsCzFNjOP0J4U1pFVVFQonrutiPPDR73pi7MP3p+F6PtorPq6MPNRqPm5dd3F17MLzm9je3kKr1ZKkipkwxeI67tx0ceOah7Ljo14/Tsa5U/WxfdnD7V0XedvHxxc17N114DV6eHD/Hrrdroxc0TQd5XJZ/LWGarV6ZE+CfsepwS5xXoPn0TqoVJzDdw4Mw4ASi8WgKMrFgcUejYYYj8fCjmTozWZTRtXv97G6uop2u43BYCAt3/V6Payvr8vNnEGYRKfTkR9yEYtLsnq9LgkbjYYkWltbk6nRT0ISJxKJacILT5l/se0icrkcdF2XzkgkcibMJLSsBWxubmI4HAbn6G8jjMXUo0n452g0CpbivOB3CluPaS8tLcld4+E8b+qTQSiqqolejCObzSKVSmF5eXn2cTgFJD0kVINQD52TL0OoaoAzpUxCpvg7qKqOaEyTY5Zo0k5CEnLA3Z0H00wil7Vg5y05nrfuqPYUB9aMmF4ktM5IYmeUwu5OGulUQEr/LNJjhFSKkylwszQtjnI+Dq9sIGHQH59ZliNCPkjGXt7a2pL9y16lWLDH10Qfb2wMRJ/3pJ8+9jbBMUENWFhYkHWVhIxwcXERmUxGIp1Oy+MTolSyUSjk5JgtGh4xrqMlplImeMAJpsqDTtG0bRv5fF6KcKFQkHMSM6twPTFBGHRK0gxfBpszufjkxyFBODYJEZC8pCbla66CnNIhx74NCS+t6EjEFZFqClWnArtYFClXUBSWKYfpM+1KpSIRCqxlspdPCOyKK46JpkAX924qXYCZTEvLerGeJCUZLcEfsdZThAlDRbepodPQsbESR6+polOPoNuIolWLQI2dUw+bNQPf35Vx8KaEr/s2vuzTlvHtbQCnqMmF0WggUbMUOzJJ2K4b+PnBwcHrEj6/svHppS0u8aIgK+HH+wrcUiDA0cgZI7SXdTx9lMGzx0QWzwWk3cviycM0MouhtJ35CrjgW0+Ko9ihefgjwguP8D/hf8J/jfAXZlCkZ88RUZ0AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/49ea35822731bb49e8b316035790af18/4f130/screen2.png","srcSet":"/static/49ea35822731bb49e8b316035790af18/1075b/screen2.png 52w,\n/static/49ea35822731bb49e8b316035790af18/86065/screen2.png 103w,\n/static/49ea35822731bb49e8b316035790af18/4f130/screen2.png 206w","sizes":"(min-width: 206px) 206px, 100vw"},"sources":[{"srcSet":"/static/49ea35822731bb49e8b316035790af18/44369/screen2.avif 52w,\n/static/49ea35822731bb49e8b316035790af18/2fb23/screen2.avif 103w,\n/static/49ea35822731bb49e8b316035790af18/ee1e0/screen2.avif 206w","type":"image/avif","sizes":"(min-width: 206px) 206px, 100vw"},{"srcSet":"/static/49ea35822731bb49e8b316035790af18/92c8c/screen2.webp 52w,\n/static/49ea35822731bb49e8b316035790af18/379ec/screen2.webp 103w,\n/static/49ea35822731bb49e8b316035790af18/8224d/screen2.webp 206w","type":"image/webp","sizes":"(min-width: 206px) 206px, 100vw"}]},"width":206,"height":425}}},{"id":"2d3bf1de-51a6-5028-9700-e5198a131f83","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAACHVAAAh1QEEnLSdAAAAxUlEQVR42p2RyRKCMBBEw74UFBAIm8YF9eD/f2Brj6UHCxU8vJqkMnnpJMo0JUyj0batYIyR2nXdVw67Adbucb30OE8Wx+mEsiyhxnGE1hpFUWAY2GRRVRVc14XneYLv+4sIggCKEgo4ybJMSNMUSZIIHFOqlPqJCJmQwjAMRRDHsfC3kAl5d0ZeuvETdKj+LuT7MVUURbLgOM4LviXrEqH0WbtFXWu5spzwJnyyOOlm8/hlCucSrhbWTSM/S1me57OyNcIbNnvBRCoZ56MAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/ac90845e2a1ddeae98e12594e881c117/60f64/screen3.png","srcSet":"/static/ac90845e2a1ddeae98e12594e881c117/3ff2d/screen3.png 224w,\n/static/ac90845e2a1ddeae98e12594e881c117/b62d9/screen3.png 448w,\n/static/ac90845e2a1ddeae98e12594e881c117/60f64/screen3.png 896w","sizes":"(min-width: 896px) 896px, 100vw"},"sources":[{"srcSet":"/static/ac90845e2a1ddeae98e12594e881c117/5a2bf/screen3.avif 224w,\n/static/ac90845e2a1ddeae98e12594e881c117/9424b/screen3.avif 448w,\n/static/ac90845e2a1ddeae98e12594e881c117/0fd2c/screen3.avif 896w","type":"image/avif","sizes":"(min-width: 896px) 896px, 100vw"},{"srcSet":"/static/ac90845e2a1ddeae98e12594e881c117/f67a9/screen3.webp 224w,\n/static/ac90845e2a1ddeae98e12594e881c117/3559c/screen3.webp 448w,\n/static/ac90845e2a1ddeae98e12594e881c117/0fa27/screen3.webp 896w","type":"image/webp","sizes":"(min-width: 896px) 896px, 100vw"}]},"width":896,"height":424}}},{"id":"89cb799a-844f-5e6d-93b0-1104e65761df","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAACHVAAAh1QEEnLSdAAABtklEQVR42lWRW46bUBBEMcaYh40NDO8LBmzzsOdhjyaKRqMon/mJNBuIkkVkG9lzpbsnWMpHq+8VdN3TVZrrurjv7/DyEEDlAVx3he12C8/zpDabjdx93/+v0jhEHCeoihB5FiPNMrCWxj/3xxLnoUDbKDiOgyDwkdEPaZoiDEMRDoIAlmVB13Wp+Zxr/q9/nGezGTQmqKoahdqhKBRs2xahw+GApmmQJBnW6zX1BFEUCTGT3Gq1kr6izg9qTHM+jThR7fetEMZxDKUUhr7D9fqEy+UR4zjQwxV2u0qIedg0TSyXS5nhzneN/ei6Dn3fCxUTZlkKVSo8nI94eR4wdhWOe4VTl1PPxefFYiErGoYhM7wyn2Xlum7o5Z0Q8MeECKuypJVrNHVNhpPYUOLP7wI/3xVMa03/WTcRnhExTfsIhclYjINwHBtRnJGnDe6inM45eegRFVkR2vC3DtGZtxAmUQ5KQmHBtm0lgJJ8W1oOxmOMr59zfPmU4npOYJCAYfCKulBMSbMA13QXQk6QAyhpxSxNoBsWXi8efr0H+PHdx7c3H3PDlLXYNx6cAuAz03FAk6d/Afrb26RYz4ymAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/5e064d59a0f8b2b4aa107b390ed9c92c/8832b/screen4.png","srcSet":"/static/5e064d59a0f8b2b4aa107b390ed9c92c/db69c/screen4.png 225w,\n/static/5e064d59a0f8b2b4aa107b390ed9c92c/93d82/screen4.png 450w,\n/static/5e064d59a0f8b2b4aa107b390ed9c92c/8832b/screen4.png 900w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/5e064d59a0f8b2b4aa107b390ed9c92c/4f682/screen4.avif 225w,\n/static/5e064d59a0f8b2b4aa107b390ed9c92c/87589/screen4.avif 450w,\n/static/5e064d59a0f8b2b4aa107b390ed9c92c/74bbf/screen4.avif 900w","type":"image/avif","sizes":"(min-width: 900px) 900px, 100vw"},{"srcSet":"/static/5e064d59a0f8b2b4aa107b390ed9c92c/58aa3/screen4.webp 225w,\n/static/5e064d59a0f8b2b4aa107b390ed9c92c/05407/screen4.webp 450w,\n/static/5e064d59a0f8b2b4aa107b390ed9c92c/77dba/screen4.webp 900w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":424}}},{"id":"c604ef8b-f489-54c7-b47f-cf8aad6accdd","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAACHVAAAh1QEEnLSdAAABLUlEQVR42o2Ra2+CMBiFW2kBAyhEbopuyAQcF4W5hJnt6/7/TzqjVdlMXPTDk7xN2ifn9CW2bePzfYHvrxD5Zo7J1EEQBvA8H77vIwiCm8RPcyxXz9imc2ySFdbJC4SLeJ6HQ5Pi47BGWWwwmUz7Bx6iaIFoGcE0TTDGoKrqFdow8zOnMxEp2vYN1a5FWVawLAvGmMEyNWiaBs4ZRiPaM5JQ+jsLCCEDnHOQsK93PHboug77/U4KhUhwS/Afg3A2c2WyqqpQFK+yopCJmkL2KIPQdV1UtZAVg1DXdSiKIi89IrtKKIRN0yDPMyRJcq6sSy6V7/JXKLZc13Vfu0SaplJoGioc2wBT6MNQSuQ3EcdxkG+3yLIMcRzDMAxYvXCsK+CMQOX0Lpp6kopt/wAgjM41Xh+fngAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/379f1caa5b83b9fe37b1901606ca2e04/49b5e/screen5.png","srcSet":"/static/379f1caa5b83b9fe37b1901606ca2e04/db69c/screen5.png 225w,\n/static/379f1caa5b83b9fe37b1901606ca2e04/93d82/screen5.png 450w,\n/static/379f1caa5b83b9fe37b1901606ca2e04/49b5e/screen5.png 899w","sizes":"(min-width: 899px) 899px, 100vw"},"sources":[{"srcSet":"/static/379f1caa5b83b9fe37b1901606ca2e04/4f682/screen5.avif 225w,\n/static/379f1caa5b83b9fe37b1901606ca2e04/87589/screen5.avif 450w,\n/static/379f1caa5b83b9fe37b1901606ca2e04/78f88/screen5.avif 899w","type":"image/avif","sizes":"(min-width: 899px) 899px, 100vw"},{"srcSet":"/static/379f1caa5b83b9fe37b1901606ca2e04/58aa3/screen5.webp 225w,\n/static/379f1caa5b83b9fe37b1901606ca2e04/05407/screen5.webp 450w,\n/static/379f1caa5b83b9fe37b1901606ca2e04/ddf7a/screen5.webp 899w","type":"image/webp","sizes":"(min-width: 899px) 899px, 100vw"}]},"width":899,"height":423.99999999999994}}},{"id":"5c3623f0-03ea-5158-865e-c71db59ba6e0","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAACHVAAAh1QEEnLSdAAAB5ElEQVR42m1SPW/TUBR1vvxRf8aJn+20iROcOP2wa4smJJFghCESU5laISYGJFiCGsb8j/YHIMTGhsSAMkL/ADMr/Qs53GeappEYjp7ue7rnvHPuFSzLwpNhA88eu4hCH4Zhwfc8MNcFYy4ch9HJ4FK9AUM78NFsBjjoeQg7e+h0HoBzCY7j4GHWx3jQRXwUQTdMmKYFyzDg1i3sNnxUbRvFYhHlcnkLJYIkVqAoMkqlEkRR/Ed4eBgj6h+h1+tjR1WRxvsYPD2FEj+HYu8SuUZNOxAEYQuFQiHHuuYiQr1eR5qmSJIE3W5Ilk3M3rzCcvkdF5ffEOxnRKjDIfu1Wg38A7yHw7appjhUVdsIMeYgy1JClpPqmobF/B1+//qB5dcvGA9PyLKFIGjC49my20ypz/cZGr4H07hH6Ps+JpMRHo1GGA4H0IhwdHKMl2cvcPH2NbL4gMLW0Npj9KbeNUqVAhSpCJFOWdrYzjPklvtRhHa7TQMxcX5+htnsPebzDxRDF5WKSMMyIEnyf3PcuuOESXKMOI4RhmGe0/X1T6xWK/y5ucF0Os1FWq0WuJv7K8Qj0HU9n/AdId+diH4XRT3aqyaq1SoWiwWuri7x+dNHTMZjSLKcD4GLrQeyBhfL1+WW8C9lXPlf9sGWfAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/7b6ec021d7e740af3a08e437ae16eff9/60f64/screen6.png","srcSet":"/static/7b6ec021d7e740af3a08e437ae16eff9/3ff2d/screen6.png 224w,\n/static/7b6ec021d7e740af3a08e437ae16eff9/b62d9/screen6.png 448w,\n/static/7b6ec021d7e740af3a08e437ae16eff9/60f64/screen6.png 896w","sizes":"(min-width: 896px) 896px, 100vw"},"sources":[{"srcSet":"/static/7b6ec021d7e740af3a08e437ae16eff9/5a2bf/screen6.avif 224w,\n/static/7b6ec021d7e740af3a08e437ae16eff9/9424b/screen6.avif 448w,\n/static/7b6ec021d7e740af3a08e437ae16eff9/0fd2c/screen6.avif 896w","type":"image/avif","sizes":"(min-width: 896px) 896px, 100vw"},{"srcSet":"/static/7b6ec021d7e740af3a08e437ae16eff9/f67a9/screen6.webp 224w,\n/static/7b6ec021d7e740af3a08e437ae16eff9/3559c/screen6.webp 448w,\n/static/7b6ec021d7e740af3a08e437ae16eff9/0fa27/screen6.webp 896w","type":"image/webp","sizes":"(min-width: 896px) 896px, 100vw"}]},"width":896,"height":424}}}]}}},"pageContext":{"id":"45987eea-191f-531c-b854-25e3d60decff","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/page-data.json b/page-data/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/page-data.json index 81700b40..309e8579 100644 --- a/page-data/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/page-data.json +++ b/page-data/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/","result":{"data":{"markdownRemark":{"id":"9f63d17d-6164-509e-b2c7-4c655ab9ad7a","html":"

There has been developed the Client-web for the users who need direct and expedited delivery service within Belarus. The Client-web allows the user to create the orders for delivery and see order statuses.

\n

The developed Admin-web allows to create optimized delivery routes, to get the data on the vehicles and the drivers in real-time mode to have the possibility to optimize order assignment. There are blocks with Driver’s schedule, Transport catalogue, Employees list, Clients list, Orders list and the main one – Maps an Routes.

\n

The Drive’s App was developed for the driver and allows the driver to get the orders, mark the status of every delivery, and report problems on deliveries.

","frontmatter":{"stack":["C#, .NET","Blazor","Maui","MongoDB, ClickHouse","SignalR","Dapr, Redis, RabbitMQ"],"title":"Web & Mobile apps for a logistics company","description":"It is a multifunctional application including Admin web, Сlient web and Driver mobile application. It is an integrated solution that would not only improve efficiency and productivity but also provide a united platform for managing all aspects of customer engagement and service delivery. It provides interaction between all the business processes participants, automates order making and assigning processes which is very helpful for the logistians.","challenge":"Direxxt LLC wanted to lessen the expenses on cargo delivery and stop using “BTS System” (the one for optimization the routes and monitoring drivers) having their own soft for route optimization and delivery management, that would help to improve delivery management quality and speed.","clientDescription":"Direxxt LLC provides express delivery services for shipments (including shipments for the fixed time), transportation services, courier services, freight forwarding services.","logo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsTAAALEwEAmpwYAAABeElEQVR42h2OP0gCYRjGhWpsKEzrVAxOz4iG2mwpwiUamhKai87vvj/33YFcSTQYLS2G/aNAK1paogKH/iCmWJNEFNdQWyCRg1KIU8P1nh88fO/zvPB7H4eqUoNS+kIIyTPG0uCTnPMcZAXILhml55BnVMbuZSOe3BFHS2fOwK7pDW19usXDdDQ6qcvogVBqYoz3HIzRE1VVkSzLXZqmFXWdVwBwBPkFluUIgB/BlxnGGWTo89v+kaHiQMh6FkLlb19o9s/lL60uLhlE4xmH/SglWcbwArTh0O4WoDe6rl/BkWuAmgC0G+cZISmssbljl5TNuYPFV0F6+vIG363O7nFkGCmds0QbqCjKOiHKPgATsVhsGGYE8zLUnwBFYM8xQmuIs8341PTKQc/gRkGQIh+C1PzxSqbNIKrKGULhNrBer/ssy3KD+hqNhr9Wq/W3Wi2hWq3aeS9IsD38LpDzdCwcKLjFt4onOPPrFe+aHjFpc6yoo8MG/gMh2bPD9+JgqAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/b07a70959c4560fad7bd913102a574c9/73ee0/clientLogo.png","srcSet":"/static/b07a70959c4560fad7bd913102a574c9/201a0/clientLogo.png 45w,\n/static/b07a70959c4560fad7bd913102a574c9/ee172/clientLogo.png 90w,\n/static/b07a70959c4560fad7bd913102a574c9/73ee0/clientLogo.png 180w,\n/static/b07a70959c4560fad7bd913102a574c9/2bc87/clientLogo.png 360w","sizes":"(min-width: 180px) 180px, 100vw"},"sources":[{"srcSet":"/static/b07a70959c4560fad7bd913102a574c9/aef49/clientLogo.avif 45w,\n/static/b07a70959c4560fad7bd913102a574c9/7a5ef/clientLogo.avif 90w,\n/static/b07a70959c4560fad7bd913102a574c9/6abb7/clientLogo.avif 180w,\n/static/b07a70959c4560fad7bd913102a574c9/983e0/clientLogo.avif 360w","type":"image/avif","sizes":"(min-width: 180px) 180px, 100vw"},{"srcSet":"/static/b07a70959c4560fad7bd913102a574c9/94e0c/clientLogo.webp 45w,\n/static/b07a70959c4560fad7bd913102a574c9/5e8a4/clientLogo.webp 90w,\n/static/b07a70959c4560fad7bd913102a574c9/05bf8/clientLogo.webp 180w,\n/static/b07a70959c4560fad7bd913102a574c9/4baf4/clientLogo.webp 360w","type":"image/webp","sizes":"(min-width: 180px) 180px, 100vw"}]},"width":180,"height":46}}},"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEyUlEQVR42mVUaUxUVxR+MCyDAgNVZLGCFqggIAEURGBQ2WxALasOSGXXsCiLQRjZBgcFyyqLSZUUoVi1xIoVpCjEEjGpTE1wbApIjKggIcRCIgm/+HruRWiaTnIz7+W++91zvuUIGoIATQ0N6InFMDYyQkpyMiw3WcJgrT5M1q2HlaUlfLy9YahvAB1tbQj0/ZbNW7Db05M/a9BZhrGyBE1Bg2+sM/4MmzZ+Dnm+HLdv/4zYo7EQaWgiOTEJ4+PjUJQokJ6WBkcHB5iZmmKbnT20tbRgZGAILZHoX8DVh0+3sWqjIqMQ4OcPczMzJCUkYmlpCVNTU/j7wwcUFhbC1GQDXF1c4L7THc5OzpAYGv4fUEtTxEHNTc1QU12DqqoquLm4QiaTYXFxEW/fvsXCwgKU55QQ6+jCwtwcItHyGeE/LbOqNDV5dTnZ2Rh8/BiTk5O43t6Oo9ExKCooxMzMDF69eoW5uTmcKz3HAWysreG5axdiY2Ph5uoKsa7OMvgKsohAE4mv1tZWtBPY4YgoSL28UFxYhJGRv/Ds2R9482ZiFZC13tfXh65793A0JgZr16xZqVaA7IiM83Y8OQWNjY3Izc2FE5FvZ2ML2eEjeDI4iKdPf8fLl2MoUyrhQdzlnckjaqohlUo5EGufC8wqCw8LQ1BAIBISElBRUQGFQsH5s/3CGgeDQ/DTrVt49OgRhlRDqK2txemc02SvFCjLlNi3d98yIKONVci8t8PNDSeOn8CPP1znh0tKSuBgvw0bzS3wVdB+3Lx5E93d3RgYGMDFiosoKCjg/J6hTqTePhxQYrCstCDPy8flpssYGqLba2qQmXEKWSczsdnSChak+P7AIDQ1NqGz8w7U6ue8ZXZJVHgkD4GHuzu3kfN2Z+5HoYnAGBetLddI5RwkxifAe7cXttp+CQszc/h4eaPhUj0qv63kAiiKS6gqKTf8WQoB29fV1qEKJdDRoiQ9V6tRUV7BDbzXdw+ar15F551OfvBkegYyaFVXVvG21S/UqKqsRD4JIiWgHS5usKKYssTYb7UjUAMIFAIerQe9D7jnjsV+g9evX+PXnh4E+vvjxo0b1KqaGzrs61BevbPTdq5+/LE4hAQHw4+EYSKu1SPrvFD/iV/u3uUqMvXY4fn5eTwmg7e1tZFlnuDhg4doa22jCwJgJJHAgAZFRno6VV6Jhvp6RIZHIDsri+dbeP9+Gmflchwge5iuN8Gl2jqMjY2ht7cX1VXVRLoHT8Lw8DC6urqQkpSM4qIipKamUt79kHkqE8lJScRpIowlRhBYnO7f70FzczMiwsLxPf3L8/N5pteI9aAt0uItMVqmp6cx8NsAwkPDuFX2+PpyekZGR0mwLpQqSiE0NjSirq4O7KdSqZBH3mI3MU+ZbTDl08eGDM4ccOW7K5xjsa6YA5pQRwdDDnDfxhGf+jRDhWqyDKts4eNHGgyD3AZsuDIw5q89Ul9yQTm8SAxmqfPKMsTIohEZEcFNLRaLVycOX7Ozs+jo6ODEq4ZUCD10iPtK+FRhemoan+DsPSY6Gv39/ZTpl3y82VLWWX5Z7Fajx0bVxMQERomHd+/eYZw+vtbSQlOlFOUXLnCx2CE9anOn2w4kxMXDydFxtSK2t7IY4D+VxTwvM1HkzQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/fbf2d2e82f22409b4359437047ddb547/d6138/cover.png","srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/15e42/cover.png 100w,\n/static/fbf2d2e82f22409b4359437047ddb547/5aead/cover.png 200w,\n/static/fbf2d2e82f22409b4359437047ddb547/d6138/cover.png 400w,\n/static/fbf2d2e82f22409b4359437047ddb547/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/6d0de/cover.avif 100w,\n/static/fbf2d2e82f22409b4359437047ddb547/f2685/cover.avif 200w,\n/static/fbf2d2e82f22409b4359437047ddb547/4ff31/cover.avif 400w,\n/static/fbf2d2e82f22409b4359437047ddb547/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/d8057/cover.webp 100w,\n/static/fbf2d2e82f22409b4359437047ddb547/2e34e/cover.webp 200w,\n/static/fbf2d2e82f22409b4359437047ddb547/416c3/cover.webp 400w,\n/static/fbf2d2e82f22409b4359437047ddb547/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["1 senior fullstack developer","2 middle fullstack developers","1 PM","1 UI/UX designer","1 QA engineer","1 DevOps engineer"],"screenshots":[{"id":"7b8679ae-6ea9-52fe-a527-cdfa5456c214","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABUUlEQVR42pWSSU4EMQxF6/5XYct1EDQgJLqGjE4lKbrN/wlBvWDRLKzYGb6f7Uyfz68aYlJjrIok3fddU0qwHX5u6zDG+42fZNdasp7egz48fujTi9PJblZDEAiaJlZr1VKKxugQ9wQiotbyXsB+VIvkI7HFO+tET29Gz7PRaWuCSb336pzXnIteLhd1PqhEQYKjPbbW6bKsEJQmGEJsd+d5aTB5F7wnofVNkASDkoIBAh4JSMvyeLYsi0ZQbuvWaDPOuGdMp6fGtK4WdLHRsJxSKgSvTZgxW0CSCCJWkLAfUE1K0gnPs65bT2AMCD1KYw/ZpyS9xOM4GhX3Kihy7j4fsW9cOUDSs1UjDgCbYkxNkCQU4jrsNqY/4r/8rx+IX0FmuxW728pIWPGlICj4SxRkP9i/Yf8VboIk7FPGyH1C0/l9YJw6fCbjcO4xfnb28RvydgZJXPnSxgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/86b9015049de415b6533ec76e9b8947d/16902/screen0.png","srcSet":"/static/86b9015049de415b6533ec76e9b8947d/2d708/screen0.png 219w,\n/static/86b9015049de415b6533ec76e9b8947d/0190c/screen0.png 438w,\n/static/86b9015049de415b6533ec76e9b8947d/16902/screen0.png 875w,\n/static/86b9015049de415b6533ec76e9b8947d/2ad4c/screen0.png 1750w","sizes":"(min-width: 875px) 875px, 100vw"},"sources":[{"srcSet":"/static/86b9015049de415b6533ec76e9b8947d/c2aad/screen0.avif 219w,\n/static/86b9015049de415b6533ec76e9b8947d/92f38/screen0.avif 438w,\n/static/86b9015049de415b6533ec76e9b8947d/5d19d/screen0.avif 875w,\n/static/86b9015049de415b6533ec76e9b8947d/9bd84/screen0.avif 1750w","type":"image/avif","sizes":"(min-width: 875px) 875px, 100vw"},{"srcSet":"/static/86b9015049de415b6533ec76e9b8947d/02a17/screen0.webp 219w,\n/static/86b9015049de415b6533ec76e9b8947d/c7f68/screen0.webp 438w,\n/static/86b9015049de415b6533ec76e9b8947d/1464e/screen0.webp 875w,\n/static/86b9015049de415b6533ec76e9b8947d/4ef38/screen0.webp 1750w","type":"image/webp","sizes":"(min-width: 875px) 875px, 100vw"}]},"width":875,"height":424}}},{"id":"9d1d293a-cc66-52f3-aecb-b5eaacc8e669","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABWElEQVR42n2S3W6DMAyF+/7vNGkXk/YkrC2QfzsJTNWZbYoY1bSLo5Bgfzmxfam1Ydc0zRjHCaUQWPbM1c5b66JjJWoIkZHy9l/jlmW13EspDBVRRYwJKSVLdPLtfZBztgt2bfsCJs0hyy2ZBNxxvd5xUZCKuQnAG7D3bgm11sMVV3NSBOKCA1WBMVmuQltbcLuNB1ATJjdjFpXKCCHCOYecszlali5aJI4xRYlphEzlH6A+OUX4EMxFFqWcDKZq4trU2tP5Vrsz8H4GjlMUZ1JDKXRSkLj7XlesInWn6n1v0AFUaQ2tKb+B3hcDktzoU8HVRcxJnMozs7gq6u4JewVuTukMZN6ao9+5VdxixF00S/HvMcDLWk8O+QXIZ+AZ3mwW1V0U6ap7Mlc6JvQ3cK+N3jgMgwXvNVu1q9Sl093GR8dqGL5kXiPePma8f854PFap62I52qwfmj0CEqQK4i8AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/d9227fae48b3c0746b0017453679bb1f/60951/screen1.png","srcSet":"/static/d9227fae48b3c0746b0017453679bb1f/802a7/screen1.png 220w,\n/static/d9227fae48b3c0746b0017453679bb1f/3fc29/screen1.png 441w,\n/static/d9227fae48b3c0746b0017453679bb1f/60951/screen1.png 881w,\n/static/d9227fae48b3c0746b0017453679bb1f/291e9/screen1.png 1762w","sizes":"(min-width: 881px) 881px, 100vw"},"sources":[{"srcSet":"/static/d9227fae48b3c0746b0017453679bb1f/f87c9/screen1.avif 220w,\n/static/d9227fae48b3c0746b0017453679bb1f/0c2fd/screen1.avif 441w,\n/static/d9227fae48b3c0746b0017453679bb1f/23258/screen1.avif 881w,\n/static/d9227fae48b3c0746b0017453679bb1f/ef3ae/screen1.avif 1762w","type":"image/avif","sizes":"(min-width: 881px) 881px, 100vw"},{"srcSet":"/static/d9227fae48b3c0746b0017453679bb1f/797a6/screen1.webp 220w,\n/static/d9227fae48b3c0746b0017453679bb1f/430a9/screen1.webp 441w,\n/static/d9227fae48b3c0746b0017453679bb1f/50306/screen1.webp 881w,\n/static/d9227fae48b3c0746b0017453679bb1f/f31e4/screen1.webp 1762w","type":"image/webp","sizes":"(min-width: 881px) 881px, 100vw"}]},"width":881,"height":424}}},{"id":"96453bc5-a322-5920-b688-64be1cb3ef7c","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA/0lEQVR42pWR3W7DMAiF+/7Ps9u9zNSLNF0cbIx/0kpngLeumzYpufiETODkAKecC/5CpOCSE87LO2ZOmCJhohVUC2qtD5jlR9/pP0Gj1AZWYRJxkiKl6jcZ6Hu/oBZGIm8sKmrIE6WMeMChOkpJY/Y3c9Y3gzUfY1RIBeXYyOQOM1pr6L17bK1joYAoCVzFf7RL0MYxJ6SHCCG4m3GIBtL8sgakzPsdisUUXWS4G3SF1tXdHx45xeRjbtvm9L6h6ZVttybIvMOhFfwuomiHkM8L18fRvnkStHGM2+3mO5umCV85Y+xM3XLz5nmeEZYr3s4JL68zLlfB/b6NdfSOD9RQA3H22lUuAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/c4ff1/screen2.png","srcSet":"/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/62a74/screen2.png 217w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/0ec6d/screen2.png 435w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/c4ff1/screen2.png 869w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/b1a38/screen2.png 1738w","sizes":"(min-width: 869px) 869px, 100vw"},"sources":[{"srcSet":"/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/34cb0/screen2.avif 217w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/da870/screen2.avif 435w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/ab6b1/screen2.avif 869w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/e46a7/screen2.avif 1738w","type":"image/avif","sizes":"(min-width: 869px) 869px, 100vw"},{"srcSet":"/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/fed78/screen2.webp 217w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/9cd19/screen2.webp 435w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/0a495/screen2.webp 869w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/3bf78/screen2.webp 1738w","type":"image/webp","sizes":"(min-width: 869px) 869px, 100vw"}]},"width":869,"height":424}}},{"id":"2b0b4a41-2ab2-502e-8716-c49d9620daea","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB30lEQVR42qVQyZKaUBTl/78mi1SysU3Zia2NooAi86QiNCozCLg4fXldbbnP4rx37nTuwF38AGESQbEX2NozLLwllMMaK2uMF13HSJOwdv7B2cvQ3RUkYwrRmkD3iXs83FDGIdrAO4k4Rhq4PC0QJx8w9lRIiVPjBRv/DUtzjLXJQ9IWUCyeBCVoJjXTZhDVN8z1CXh3jKUzpvgrJH8C9ciDy9KSCVoHCRtvCi+UYO2X2DnvOAYybFuGZUkw1Tn9K8j2HK/Kb/xRfmGi/YRgTLDS/7LfOkk0YVbhkp6hHhZQ9+8Ioi2sQIAdSQhiDYYpQjNE7HYL7EwBliljro4wUn+wjba2QNPxUJ0lwtgClyQ1zkkM0Z9BOwpwTxuEkY5TrCA4G3BocseV4HoKbH8L09iy1bfeGz5OFuKLi/DsQvUFyjfBFUWFoqxwTS6omwa3rkXX9YQOt1uDvMjIf0Pf98xuKGeI9xRv2454y3w9+dq2BVdVDQnWiM9XZHmFJCuQUZO8bBiPLwnSvCS7ZrgmOYsnWc4wcJZPKEnrITgUF8TT/FuwZn9K/iE22EV1I3wJD00eNQWd7VqSDgmW9NR1g/v9ztbq+/sT7xl/th948ncDvlfOqMsgONzjf/B18xaf10LkLh1DtUkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/01865520f59b8eef0a6da65309a409bc/2cdb5/screen3.png","srcSet":"/static/01865520f59b8eef0a6da65309a409bc/802a7/screen3.png 220w,\n/static/01865520f59b8eef0a6da65309a409bc/e63e4/screen3.png 440w,\n/static/01865520f59b8eef0a6da65309a409bc/2cdb5/screen3.png 880w,\n/static/01865520f59b8eef0a6da65309a409bc/0a590/screen3.png 1760w","sizes":"(min-width: 880px) 880px, 100vw"},"sources":[{"srcSet":"/static/01865520f59b8eef0a6da65309a409bc/f87c9/screen3.avif 220w,\n/static/01865520f59b8eef0a6da65309a409bc/eb7a4/screen3.avif 440w,\n/static/01865520f59b8eef0a6da65309a409bc/7f69c/screen3.avif 880w,\n/static/01865520f59b8eef0a6da65309a409bc/1ec76/screen3.avif 1760w","type":"image/avif","sizes":"(min-width: 880px) 880px, 100vw"},{"srcSet":"/static/01865520f59b8eef0a6da65309a409bc/797a6/screen3.webp 220w,\n/static/01865520f59b8eef0a6da65309a409bc/8ba3f/screen3.webp 440w,\n/static/01865520f59b8eef0a6da65309a409bc/a7217/screen3.webp 880w,\n/static/01865520f59b8eef0a6da65309a409bc/dc556/screen3.webp 1760w","type":"image/webp","sizes":"(min-width: 880px) 880px, 100vw"}]},"width":880,"height":424}}},{"id":"bd4b7257-4a5f-5127-b009-f7c6a7cebbc9","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABwklEQVR42n1S226bQBDl/3+mL1WfqlRxY8mkqWs7xoCBBNvqBVpggV2ulU7PYLvpQ9SHo7ns7NnZM2Ol8Qm1aVAqBUVUVYVxHDEMA7quI1qiR14mmHt3eOdFmO3ncGMb4XEDJ7Cx9D/gMbxD9NWFVRYlNAkbQi42TYO6rmEYt21H4pFnLdL8Bz7vZ9jsH/C4/ohoe4soXsP17+F4C9jODKv4HlahKmgtJOaCF1/yWhsSdkiyBOFpiePzFwRrGxGJAtfG/mmFhX+Dm81bLMJbWIqEL5dfh9EdcpXhmG4Rn7ZwwxU8fwlHCMMN/Qe8377Bp6cZrCyvqZuZOnmdULptWVMgzUIcEw8HahcfdniOd4gODgJ/h3UwR/xNNCw1izWKoqB+7aTZ0A+TFQ2rqma+n3JNY2CIvuewhu5siV9sSh41uoVlKHhJwu9JioKXc0qgGJeUIefA0p8ZipK/YCy5LFesl7MKGc8VGypK3mFNzR9Z8i0pluFU9MXKoTwiVkjPJJrbwMcpgfhCIo/XzKmqoRz8KQdqyVSly+vuif3rD+Ml/j3FV1xrrnX9JS97Sw3POyc72PdEd0F/huS7f+L/QTT/A+sL8+s0153NAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/306c8f25d177fa9ed574b156eb38cbde/29cdb/screen4.png","srcSet":"/static/306c8f25d177fa9ed574b156eb38cbde/8a190/screen4.png 221w,\n/static/306c8f25d177fa9ed574b156eb38cbde/f26e8/screen4.png 442w,\n/static/306c8f25d177fa9ed574b156eb38cbde/29cdb/screen4.png 884w,\n/static/306c8f25d177fa9ed574b156eb38cbde/69057/screen4.png 1768w","sizes":"(min-width: 884px) 884px, 100vw"},"sources":[{"srcSet":"/static/306c8f25d177fa9ed574b156eb38cbde/65d3b/screen4.avif 221w,\n/static/306c8f25d177fa9ed574b156eb38cbde/5c88c/screen4.avif 442w,\n/static/306c8f25d177fa9ed574b156eb38cbde/eaaef/screen4.avif 884w,\n/static/306c8f25d177fa9ed574b156eb38cbde/103c1/screen4.avif 1768w","type":"image/avif","sizes":"(min-width: 884px) 884px, 100vw"},{"srcSet":"/static/306c8f25d177fa9ed574b156eb38cbde/60969/screen4.webp 221w,\n/static/306c8f25d177fa9ed574b156eb38cbde/3220b/screen4.webp 442w,\n/static/306c8f25d177fa9ed574b156eb38cbde/396ea/screen4.webp 884w,\n/static/306c8f25d177fa9ed574b156eb38cbde/95149/screen4.webp 1768w","type":"image/webp","sizes":"(min-width: 884px) 884px, 100vw"}]},"width":884,"height":424}}},{"id":"a25de992-73ea-5686-8955-ccb105cddbf3","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAsABQDASIAAhEBAxEB/8QAGgABAAIDAQAAAAAAAAAAAAAAAAEEAgMGBf/EABYBAQEBAAAAAAAAAAAAAAAAAAEAAv/aAAwDAQACEAMQAAAB9OLUNXWFRosMoI18vjPWuUR//8QAHRAAAgICAwEAAAAAAAAAAAAAAgMAARMUBBAgEv/aAAgBAQABBQLAqYFTArxd/Ig0SLyJiXW4+VynVNx8/8QAFREBAQAAAAAAAAAAAAAAAAAAECH/2gAIAQMBAT8BIQ//xAAXEQADAQAAAAAAAAAAAAAAAAAAAREg/9oACAECAQE/AayvP//EAB4QAAEDBQEBAAAAAAAAAAAAAAABAjMRICExoTJB/9oACAEBAAY/Ao0I2nhLK/CjbdmFNknDDuEnD//EACAQAAICAQMFAAAAAAAAAAAAAAABESFBMVHxEGGh0fD/2gAIAQEAAT8hojwnGHBkCvRpjonHagtjMp3aH3JNOlbLcEzi3E020kqmV+gwPNuEPsh//9oADAMBAAIAAwAAABAYDPBDD//EABgRAQADAQAAAAAAAAAAAAAAAAEQESEx/9oACAEDAQE/EIGjZsGG+x//xAAXEQADAQAAAAAAAAAAAAAAAAAAIGEh/9oACAECAQE/ELFjU//EACIQAQACAgAFBQAAAAAAAAAAAAEAESExQWGRofAQUXGBsf/aAAgBAQABPxBeyn29XHDS8QF8A003UFqY58tOS/scPROTWPuXswuuEtVXiDawD4CKrbmbBlQZ2mzswFijBpW9dYkiugdO67zatvxxH2m/iN6TnvHlP//Z"},"images":{"fallback":{"src":"/static/f5baf2719902e73fd526808dafd312d6/8bccd/screen5.jpg","srcSet":"/static/f5baf2719902e73fd526808dafd312d6/38346/screen5.jpg 48w,\n/static/f5baf2719902e73fd526808dafd312d6/d6c04/screen5.jpg 96w,\n/static/f5baf2719902e73fd526808dafd312d6/8bccd/screen5.jpg 191w,\n/static/f5baf2719902e73fd526808dafd312d6/945c7/screen5.jpg 382w","sizes":"(min-width: 191px) 191px, 100vw"},"sources":[{"srcSet":"/static/f5baf2719902e73fd526808dafd312d6/57d6c/screen5.avif 48w,\n/static/f5baf2719902e73fd526808dafd312d6/8ad7f/screen5.avif 96w,\n/static/f5baf2719902e73fd526808dafd312d6/358ff/screen5.avif 191w,\n/static/f5baf2719902e73fd526808dafd312d6/094b9/screen5.avif 382w","type":"image/avif","sizes":"(min-width: 191px) 191px, 100vw"},{"srcSet":"/static/f5baf2719902e73fd526808dafd312d6/a187f/screen5.webp 48w,\n/static/f5baf2719902e73fd526808dafd312d6/41c1b/screen5.webp 96w,\n/static/f5baf2719902e73fd526808dafd312d6/f4b4e/screen5.webp 191w,\n/static/f5baf2719902e73fd526808dafd312d6/030ce/screen5.webp 382w","type":"image/webp","sizes":"(min-width: 191px) 191px, 100vw"}]},"width":191,"height":424}}},{"id":"1626afba-b106-5e6e-8382-79ac1a24dd9f","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAsABQDASIAAhEBAxEB/8QAGgAAAgMBAQAAAAAAAAAAAAAAAAIBBAYDBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAH0S1NVCwHSVaOQAyZZV1plBP/EAB8QAAICAQQDAAAAAAAAAAAAAAADAQIxBBATFBEhQf/aAAgBAQABBQLhWcCiUq28E7ei2fpbJVkWMnceRqnQdx5//8QAFhEAAwAAAAAAAAAAAAAAAAAAECAh/9oACAEDAQE/AUg//8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERIP/aAAgBAgEBPwGsrz//xAAeEAABAwQDAAAAAAAAAAAAAAAAATOhAhEhMRMwMv/aAAgBAQAGPwK3Gg3SeE6tmFNjkGKoHIP/xAAgEAACAgICAgMAAAAAAAAAAAAAAREhMUEQUWGB0eHw/9oACAEBAAE/IXLbUC3KPpZ42JirFn0ZTwJZFzqOCcU6RN6+ymdG1TK/gNDzbhD9kP/aAAwDAQACAAMAAAAQOAM8wA//xAAZEQABBQAAAAAAAAAAAAAAAAABEBEgITH/2gAIAQMBAT8QgKF9T//EABYRAQEBAAAAAAAAAAAAAAAAAGEAIP/aAAgBAgEBPxBps//EACEQAQACAgEEAwEAAAAAAAAAAAEAESExQVFhkaFx0fCB/9oACAEBAAE/EMMItrnpGl/xLgkrXA3iZaafqoFzSdIcL0jALXC7jaxL+YxuZxDpbjVv3UTUjuJfbdcQGGVXIbNnpgLwMGlb15jv84HTuvc2rb/OI+038jfE7789p//Z"},"images":{"fallback":{"src":"/static/df7e4b30cdee886e2a8c766b827fa15e/8bccd/screen6.jpg","srcSet":"/static/df7e4b30cdee886e2a8c766b827fa15e/38346/screen6.jpg 48w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/d6c04/screen6.jpg 96w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/8bccd/screen6.jpg 191w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/945c7/screen6.jpg 382w","sizes":"(min-width: 191px) 191px, 100vw"},"sources":[{"srcSet":"/static/df7e4b30cdee886e2a8c766b827fa15e/57d6c/screen6.avif 48w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/8ad7f/screen6.avif 96w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/358ff/screen6.avif 191w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/094b9/screen6.avif 382w","type":"image/avif","sizes":"(min-width: 191px) 191px, 100vw"},{"srcSet":"/static/df7e4b30cdee886e2a8c766b827fa15e/a187f/screen6.webp 48w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/41c1b/screen6.webp 96w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/f4b4e/screen6.webp 191w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/030ce/screen6.webp 382w","type":"image/webp","sizes":"(min-width: 191px) 191px, 100vw"}]},"width":191,"height":424}}},{"id":"5013f51b-9e53-5898-8f1a-226d429b5536","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAsABQDASIAAhEBAxEB/8QAGgAAAQUBAAAAAAAAAAAAAAAAAAECAwUGBP/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAABgTqW2AmEc62Ipi8CPmzg1sDHjP8A/8QAHBAAAwACAwEAAAAAAAAAAAAAAAECEhQDBBAg/9oACAEBAAEFAmjFClfGNGNDTQ/beMzzzVG52Dc5zc7B/8QAFxEBAAMAAAAAAAAAAAAAAAAAARARIP/aAAgBAwEBPwG8CR//xAAXEQADAQAAAAAAAAAAAAAAAAAAAREg/9oACAECAQE/AayvP//EAB4QAAEDBAMAAAAAAAAAAAAAAAABMjMQESChEiEx/9oACAEBAAY/AmDBuDVGqeYci1l7pJok0SaP/8QAHxAAAgIBBAMAAAAAAAAAAAAAAAERIZEQMVFhIIHh/9oACAEBAAE/IUzEIOiMq18JrWAXyBhbL0cIoSvbRTG2XCEDjBUVbsDvYHcwP//aAAwDAQACAAMAAAAQlBI8Mw//xAAaEQEAAgMBAAAAAAAAAAAAAAABEBEAIVFx/9oACAEDAQE/EKcxZCbLfY//xAAYEQACAwAAAAAAAAAAAAAAAAAQYQABIf/aAAgBAgEBPxB9xx0f/8QAIBABAAIBBAIDAAAAAAAAAAAAAQARITFRwfBBkWGBsf/aAAgBAQABPxAKKnTEyFeuWkLtUCWVHWABEdEcp8uVlrZRG5AR8PEZGBRsxB1BhuqNpY/sK16Bgx6YAUYJqPJ1xG06P1Ow8T//2Q=="},"images":{"fallback":{"src":"/static/a076849820a2940309307b8a498bec36/8bccd/screen7.jpg","srcSet":"/static/a076849820a2940309307b8a498bec36/38346/screen7.jpg 48w,\n/static/a076849820a2940309307b8a498bec36/d6c04/screen7.jpg 96w,\n/static/a076849820a2940309307b8a498bec36/8bccd/screen7.jpg 191w,\n/static/a076849820a2940309307b8a498bec36/945c7/screen7.jpg 382w","sizes":"(min-width: 191px) 191px, 100vw"},"sources":[{"srcSet":"/static/a076849820a2940309307b8a498bec36/57d6c/screen7.avif 48w,\n/static/a076849820a2940309307b8a498bec36/8ad7f/screen7.avif 96w,\n/static/a076849820a2940309307b8a498bec36/358ff/screen7.avif 191w,\n/static/a076849820a2940309307b8a498bec36/094b9/screen7.avif 382w","type":"image/avif","sizes":"(min-width: 191px) 191px, 100vw"},{"srcSet":"/static/a076849820a2940309307b8a498bec36/a187f/screen7.webp 48w,\n/static/a076849820a2940309307b8a498bec36/41c1b/screen7.webp 96w,\n/static/a076849820a2940309307b8a498bec36/f4b4e/screen7.webp 191w,\n/static/a076849820a2940309307b8a498bec36/030ce/screen7.webp 382w","type":"image/webp","sizes":"(min-width: 191px) 191px, 100vw"}]},"width":191,"height":424}}},{"id":"d1c5e48a-317a-59bc-b5d5-38c9fd5ef749","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAsABQDASIAAhEBAxEB/8QAGgAAAgMBAQAAAAAAAAAAAAAAAAIDBAYBBf/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAABsr6rN0C4XBJG8KAcTLKuuMmJ/8QAHRAAAgICAwEAAAAAAAAAAAAAAQIAAxAUBBIgMf/aAAgBAQABBQJkAPQRKkI8nJwrhp9m5fByrhNy+f/EABkRAAEFAAAAAAAAAAAAAAAAAAEQEiAhUf/aAAgBAwEBPwFwyFJ//8QAGBEAAgMAAAAAAAAAAAAAAAAAAREAIFH/2gAIAQIBAT8BZ2M1/8QAHxAAAgAFBQAAAAAAAAAAAAAAAAECITEzoQMEIjA0/9oACAEBAAY/Amlt00eZHLSS6qkmVLmCUWC5g//EABwQAAICAwEBAAAAAAAAAAAAAAABESExQVHR8P/aAAgBAQABPyFNAYfRTIJe34IlDH9QlCMx69FDwzM5TME3qZKZ0bVMr8DQ824Q+yH/2gAMAwEAAgADAAAAEDvTAIAP/8QAGxEAAgIDAQAAAAAAAAAAAAAAAREQMQAhodH/2gAIAQMBAT8QCKd9wlliRoXcf//EABYRAQEBAAAAAAAAAAAAAAAAAGEAIP/aAAgBAgEBPxBU2f/EACAQAQACAgICAwEAAAAAAAAAAAEAESExUWFBkaGx8HH/2gAIAQEAAT8QYrWljkW52V7lfHUEXjmEdqHSygxl7jtuqxkgcIW/0xgGl6J9MRVww4WkXka4Z9Msw2oZ2mz4ZbRxCpW9e4ARzgdPHzNq2/ziPtN/kb6ne/PU/9k="},"images":{"fallback":{"src":"/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/8bccd/screen8.jpg","srcSet":"/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/38346/screen8.jpg 48w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/d6c04/screen8.jpg 96w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/8bccd/screen8.jpg 191w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/945c7/screen8.jpg 382w","sizes":"(min-width: 191px) 191px, 100vw"},"sources":[{"srcSet":"/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/57d6c/screen8.avif 48w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/8ad7f/screen8.avif 96w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/358ff/screen8.avif 191w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/094b9/screen8.avif 382w","type":"image/avif","sizes":"(min-width: 191px) 191px, 100vw"},{"srcSet":"/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/a187f/screen8.webp 48w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/41c1b/screen8.webp 96w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/f4b4e/screen8.webp 191w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/030ce/screen8.webp 382w","type":"image/webp","sizes":"(min-width: 191px) 191px, 100vw"}]},"width":191,"height":424}}}]}}},"pageContext":{"id":"9f63d17d-6164-509e-b2c7-4c655ab9ad7a","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/","result":{"data":{"markdownRemark":{"id":"9f63d17d-6164-509e-b2c7-4c655ab9ad7a","html":"

There has been developed the Client-web for the users who need direct and expedited delivery service within Belarus. The Client-web allows the user to create the orders for delivery and see order statuses.

\n

The developed Admin-web allows to create optimized delivery routes, to get the data on the vehicles and the drivers in real-time mode to have the possibility to optimize order assignment. There are blocks with Driver’s schedule, Transport catalogue, Employees list, Clients list, Orders list and the main one – Maps an Routes.

\n

The Drive’s App was developed for the driver and allows the driver to get the orders, mark the status of every delivery, and report problems on deliveries.

","frontmatter":{"stack":["C#, .NET","Blazor","Maui","MongoDB, ClickHouse","SignalR","Dapr, Redis, RabbitMQ"],"title":"Web & Mobile apps for a logistics company","description":"It is a multifunctional application including Admin web, Сlient web and Driver mobile application. It is an integrated solution that would not only improve efficiency and productivity but also provide a united platform for managing all aspects of customer engagement and service delivery. It provides interaction between all the business processes participants, automates order making and assigning processes which is very helpful for the logistians.","challenge":"Direxxt LLC wanted to lessen the expenses on cargo delivery and stop using “BTS System” (the one for optimization the routes and monitoring drivers) having their own soft for route optimization and delivery management, that would help to improve delivery management quality and speed.","clientDescription":"Direxxt LLC provides express delivery services for shipments (including shipments for the fixed time), transportation services, courier services, freight forwarding services.","logo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsTAAALEwEAmpwYAAABeElEQVR42h2OP0gCYRjGhWpsKEzrVAxOz4iG2mwpwiUamhKai87vvj/33YFcSTQYLS2G/aNAK1paogKH/iCmWJNEFNdQWyCRg1KIU8P1nh88fO/zvPB7H4eqUoNS+kIIyTPG0uCTnPMcZAXILhml55BnVMbuZSOe3BFHS2fOwK7pDW19usXDdDQ6qcvogVBqYoz3HIzRE1VVkSzLXZqmFXWdVwBwBPkFluUIgB/BlxnGGWTo89v+kaHiQMh6FkLlb19o9s/lL60uLhlE4xmH/SglWcbwArTh0O4WoDe6rl/BkWuAmgC0G+cZISmssbljl5TNuYPFV0F6+vIG363O7nFkGCmds0QbqCjKOiHKPgATsVhsGGYE8zLUnwBFYM8xQmuIs8341PTKQc/gRkGQIh+C1PzxSqbNIKrKGULhNrBer/ssy3KD+hqNhr9Wq/W3Wi2hWq3aeS9IsD38LpDzdCwcKLjFt4onOPPrFe+aHjFpc6yoo8MG/gMh2bPD9+JgqAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/b07a70959c4560fad7bd913102a574c9/73ee0/clientLogo.png","srcSet":"/static/b07a70959c4560fad7bd913102a574c9/201a0/clientLogo.png 45w,\n/static/b07a70959c4560fad7bd913102a574c9/ee172/clientLogo.png 90w,\n/static/b07a70959c4560fad7bd913102a574c9/73ee0/clientLogo.png 180w,\n/static/b07a70959c4560fad7bd913102a574c9/2bc87/clientLogo.png 360w","sizes":"(min-width: 180px) 180px, 100vw"},"sources":[{"srcSet":"/static/b07a70959c4560fad7bd913102a574c9/aef49/clientLogo.avif 45w,\n/static/b07a70959c4560fad7bd913102a574c9/7a5ef/clientLogo.avif 90w,\n/static/b07a70959c4560fad7bd913102a574c9/6abb7/clientLogo.avif 180w,\n/static/b07a70959c4560fad7bd913102a574c9/983e0/clientLogo.avif 360w","type":"image/avif","sizes":"(min-width: 180px) 180px, 100vw"},{"srcSet":"/static/b07a70959c4560fad7bd913102a574c9/94e0c/clientLogo.webp 45w,\n/static/b07a70959c4560fad7bd913102a574c9/5e8a4/clientLogo.webp 90w,\n/static/b07a70959c4560fad7bd913102a574c9/05bf8/clientLogo.webp 180w,\n/static/b07a70959c4560fad7bd913102a574c9/4baf4/clientLogo.webp 360w","type":"image/webp","sizes":"(min-width: 180px) 180px, 100vw"}]},"width":180,"height":46}}},"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEyUlEQVR42mVUaUxUVxR+MCyDAgNVZLGCFqggIAEURGBQ2WxALasOSGXXsCiLQRjZBgcFyyqLSZUUoVi1xIoVpCjEEjGpTE1wbApIjKggIcRCIgm/+HruRWiaTnIz7+W++91zvuUIGoIATQ0N6InFMDYyQkpyMiw3WcJgrT5M1q2HlaUlfLy9YahvAB1tbQj0/ZbNW7Db05M/a9BZhrGyBE1Bg2+sM/4MmzZ+Dnm+HLdv/4zYo7EQaWgiOTEJ4+PjUJQokJ6WBkcHB5iZmmKbnT20tbRgZGAILZHoX8DVh0+3sWqjIqMQ4OcPczMzJCUkYmlpCVNTU/j7wwcUFhbC1GQDXF1c4L7THc5OzpAYGv4fUEtTxEHNTc1QU12DqqoquLm4QiaTYXFxEW/fvsXCwgKU55QQ6+jCwtwcItHyGeE/LbOqNDV5dTnZ2Rh8/BiTk5O43t6Oo9ExKCooxMzMDF69eoW5uTmcKz3HAWysreG5axdiY2Ph5uoKsa7OMvgKsohAE4mv1tZWtBPY4YgoSL28UFxYhJGRv/Ds2R9482ZiFZC13tfXh65793A0JgZr16xZqVaA7IiM83Y8OQWNjY3Izc2FE5FvZ2ML2eEjeDI4iKdPf8fLl2MoUyrhQdzlnckjaqohlUo5EGufC8wqCw8LQ1BAIBISElBRUQGFQsH5s/3CGgeDQ/DTrVt49OgRhlRDqK2txemc02SvFCjLlNi3d98yIKONVci8t8PNDSeOn8CPP1znh0tKSuBgvw0bzS3wVdB+3Lx5E93d3RgYGMDFiosoKCjg/J6hTqTePhxQYrCstCDPy8flpssYGqLba2qQmXEKWSczsdnSChak+P7AIDQ1NqGz8w7U6ue8ZXZJVHgkD4GHuzu3kfN2Z+5HoYnAGBetLddI5RwkxifAe7cXttp+CQszc/h4eaPhUj0qv63kAiiKS6gqKTf8WQoB29fV1qEKJdDRoiQ9V6tRUV7BDbzXdw+ar15F551OfvBkegYyaFVXVvG21S/UqKqsRD4JIiWgHS5usKKYssTYb7UjUAMIFAIerQe9D7jnjsV+g9evX+PXnh4E+vvjxo0b1KqaGzrs61BevbPTdq5+/LE4hAQHw4+EYSKu1SPrvFD/iV/u3uUqMvXY4fn5eTwmg7e1tZFlnuDhg4doa22jCwJgJJHAgAZFRno6VV6Jhvp6RIZHIDsri+dbeP9+Gmflchwge5iuN8Gl2jqMjY2ht7cX1VXVRLoHT8Lw8DC6urqQkpSM4qIipKamUt79kHkqE8lJScRpIowlRhBYnO7f70FzczMiwsLxPf3L8/N5pteI9aAt0uItMVqmp6cx8NsAwkPDuFX2+PpyekZGR0mwLpQqSiE0NjSirq4O7KdSqZBH3mI3MU+ZbTDl08eGDM4ccOW7K5xjsa6YA5pQRwdDDnDfxhGf+jRDhWqyDKts4eNHGgyD3AZsuDIw5q89Ul9yQTm8SAxmqfPKMsTIohEZEcFNLRaLVycOX7Ozs+jo6ODEq4ZUCD10iPtK+FRhemoan+DsPSY6Gv39/ZTpl3y82VLWWX5Z7Fajx0bVxMQERomHd+/eYZw+vtbSQlOlFOUXLnCx2CE9anOn2w4kxMXDydFxtSK2t7IY4D+VxTwvM1HkzQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/fbf2d2e82f22409b4359437047ddb547/d6138/cover.png","srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/15e42/cover.png 100w,\n/static/fbf2d2e82f22409b4359437047ddb547/5aead/cover.png 200w,\n/static/fbf2d2e82f22409b4359437047ddb547/d6138/cover.png 400w,\n/static/fbf2d2e82f22409b4359437047ddb547/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/6d0de/cover.avif 100w,\n/static/fbf2d2e82f22409b4359437047ddb547/f2685/cover.avif 200w,\n/static/fbf2d2e82f22409b4359437047ddb547/4ff31/cover.avif 400w,\n/static/fbf2d2e82f22409b4359437047ddb547/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/d8057/cover.webp 100w,\n/static/fbf2d2e82f22409b4359437047ddb547/2e34e/cover.webp 200w,\n/static/fbf2d2e82f22409b4359437047ddb547/416c3/cover.webp 400w,\n/static/fbf2d2e82f22409b4359437047ddb547/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["1 senior fullstack developer","2 middle fullstack developers","1 PM","1 UI/UX designer","1 QA engineer","1 DevOps engineer"],"screenshots":[{"id":"7b8679ae-6ea9-52fe-a527-cdfa5456c214","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABUUlEQVR42pWSSU4EMQxF6/5XYct1EDQgJLqGjE4lKbrN/wlBvWDRLKzYGb6f7Uyfz68aYlJjrIok3fddU0qwHX5u6zDG+42fZNdasp7egz48fujTi9PJblZDEAiaJlZr1VKKxugQ9wQiotbyXsB+VIvkI7HFO+tET29Gz7PRaWuCSb336pzXnIteLhd1PqhEQYKjPbbW6bKsEJQmGEJsd+d5aTB5F7wnofVNkASDkoIBAh4JSMvyeLYsi0ZQbuvWaDPOuGdMp6fGtK4WdLHRsJxSKgSvTZgxW0CSCCJWkLAfUE1K0gnPs65bT2AMCD1KYw/ZpyS9xOM4GhX3Kihy7j4fsW9cOUDSs1UjDgCbYkxNkCQU4jrsNqY/4r/8rx+IX0FmuxW728pIWPGlICj4SxRkP9i/Yf8VboIk7FPGyH1C0/l9YJw6fCbjcO4xfnb28RvydgZJXPnSxgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/86b9015049de415b6533ec76e9b8947d/16902/screen0.png","srcSet":"/static/86b9015049de415b6533ec76e9b8947d/2d708/screen0.png 219w,\n/static/86b9015049de415b6533ec76e9b8947d/0190c/screen0.png 438w,\n/static/86b9015049de415b6533ec76e9b8947d/16902/screen0.png 875w,\n/static/86b9015049de415b6533ec76e9b8947d/2ad4c/screen0.png 1750w","sizes":"(min-width: 875px) 875px, 100vw"},"sources":[{"srcSet":"/static/86b9015049de415b6533ec76e9b8947d/c2aad/screen0.avif 219w,\n/static/86b9015049de415b6533ec76e9b8947d/92f38/screen0.avif 438w,\n/static/86b9015049de415b6533ec76e9b8947d/5d19d/screen0.avif 875w,\n/static/86b9015049de415b6533ec76e9b8947d/9bd84/screen0.avif 1750w","type":"image/avif","sizes":"(min-width: 875px) 875px, 100vw"},{"srcSet":"/static/86b9015049de415b6533ec76e9b8947d/02a17/screen0.webp 219w,\n/static/86b9015049de415b6533ec76e9b8947d/c7f68/screen0.webp 438w,\n/static/86b9015049de415b6533ec76e9b8947d/1464e/screen0.webp 875w,\n/static/86b9015049de415b6533ec76e9b8947d/4ef38/screen0.webp 1750w","type":"image/webp","sizes":"(min-width: 875px) 875px, 100vw"}]},"width":875,"height":424}}},{"id":"9d1d293a-cc66-52f3-aecb-b5eaacc8e669","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABWElEQVR42n2S3W6DMAyF+/7vNGkXk/YkrC2QfzsJTNWZbYoY1bSLo5Bgfzmxfam1Ydc0zRjHCaUQWPbM1c5b66JjJWoIkZHy9l/jlmW13EspDBVRRYwJKSVLdPLtfZBztgt2bfsCJs0hyy2ZBNxxvd5xUZCKuQnAG7D3bgm11sMVV3NSBOKCA1WBMVmuQltbcLuNB1ATJjdjFpXKCCHCOYecszlali5aJI4xRYlphEzlH6A+OUX4EMxFFqWcDKZq4trU2tP5Vrsz8H4GjlMUZ1JDKXRSkLj7XlesInWn6n1v0AFUaQ2tKb+B3hcDktzoU8HVRcxJnMozs7gq6u4JewVuTukMZN6ao9+5VdxixF00S/HvMcDLWk8O+QXIZ+AZ3mwW1V0U6ap7Mlc6JvQ3cK+N3jgMgwXvNVu1q9Sl093GR8dqGL5kXiPePma8f854PFap62I52qwfmj0CEqQK4i8AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/d9227fae48b3c0746b0017453679bb1f/60951/screen1.png","srcSet":"/static/d9227fae48b3c0746b0017453679bb1f/802a7/screen1.png 220w,\n/static/d9227fae48b3c0746b0017453679bb1f/3fc29/screen1.png 441w,\n/static/d9227fae48b3c0746b0017453679bb1f/60951/screen1.png 881w,\n/static/d9227fae48b3c0746b0017453679bb1f/291e9/screen1.png 1762w","sizes":"(min-width: 881px) 881px, 100vw"},"sources":[{"srcSet":"/static/d9227fae48b3c0746b0017453679bb1f/f87c9/screen1.avif 220w,\n/static/d9227fae48b3c0746b0017453679bb1f/0c2fd/screen1.avif 441w,\n/static/d9227fae48b3c0746b0017453679bb1f/23258/screen1.avif 881w,\n/static/d9227fae48b3c0746b0017453679bb1f/ef3ae/screen1.avif 1762w","type":"image/avif","sizes":"(min-width: 881px) 881px, 100vw"},{"srcSet":"/static/d9227fae48b3c0746b0017453679bb1f/797a6/screen1.webp 220w,\n/static/d9227fae48b3c0746b0017453679bb1f/430a9/screen1.webp 441w,\n/static/d9227fae48b3c0746b0017453679bb1f/50306/screen1.webp 881w,\n/static/d9227fae48b3c0746b0017453679bb1f/f31e4/screen1.webp 1762w","type":"image/webp","sizes":"(min-width: 881px) 881px, 100vw"}]},"width":881,"height":424}}},{"id":"96453bc5-a322-5920-b688-64be1cb3ef7c","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA/0lEQVR42pWR3W7DMAiF+/7Ps9u9zNSLNF0cbIx/0kpngLeumzYpufiETODkAKecC/5CpOCSE87LO2ZOmCJhohVUC2qtD5jlR9/pP0Gj1AZWYRJxkiKl6jcZ6Hu/oBZGIm8sKmrIE6WMeMChOkpJY/Y3c9Y3gzUfY1RIBeXYyOQOM1pr6L17bK1joYAoCVzFf7RL0MYxJ6SHCCG4m3GIBtL8sgakzPsdisUUXWS4G3SF1tXdHx45xeRjbtvm9L6h6ZVttybIvMOhFfwuomiHkM8L18fRvnkStHGM2+3mO5umCV85Y+xM3XLz5nmeEZYr3s4JL68zLlfB/b6NdfSOD9RQA3H22lUuAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/c4ff1/screen2.png","srcSet":"/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/62a74/screen2.png 217w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/0ec6d/screen2.png 435w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/c4ff1/screen2.png 869w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/b1a38/screen2.png 1738w","sizes":"(min-width: 869px) 869px, 100vw"},"sources":[{"srcSet":"/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/34cb0/screen2.avif 217w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/da870/screen2.avif 435w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/ab6b1/screen2.avif 869w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/e46a7/screen2.avif 1738w","type":"image/avif","sizes":"(min-width: 869px) 869px, 100vw"},{"srcSet":"/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/fed78/screen2.webp 217w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/9cd19/screen2.webp 435w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/0a495/screen2.webp 869w,\n/static/60d4d365fd3fe6b6a8c73d73dbf80bcf/3bf78/screen2.webp 1738w","type":"image/webp","sizes":"(min-width: 869px) 869px, 100vw"}]},"width":869,"height":424}}},{"id":"2b0b4a41-2ab2-502e-8716-c49d9620daea","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAB30lEQVR42qVQyZKaUBTl/78mi1SysU3Zia2NooAi86QiNCozCLg4fXldbbnP4rx37nTuwF38AGESQbEX2NozLLwllMMaK2uMF13HSJOwdv7B2cvQ3RUkYwrRmkD3iXs83FDGIdrAO4k4Rhq4PC0QJx8w9lRIiVPjBRv/DUtzjLXJQ9IWUCyeBCVoJjXTZhDVN8z1CXh3jKUzpvgrJH8C9ciDy9KSCVoHCRtvCi+UYO2X2DnvOAYybFuGZUkw1Tn9K8j2HK/Kb/xRfmGi/YRgTLDS/7LfOkk0YVbhkp6hHhZQ9+8Ioi2sQIAdSQhiDYYpQjNE7HYL7EwBliljro4wUn+wjba2QNPxUJ0lwtgClyQ1zkkM0Z9BOwpwTxuEkY5TrCA4G3BocseV4HoKbH8L09iy1bfeGz5OFuKLi/DsQvUFyjfBFUWFoqxwTS6omwa3rkXX9YQOt1uDvMjIf0Pf98xuKGeI9xRv2454y3w9+dq2BVdVDQnWiM9XZHmFJCuQUZO8bBiPLwnSvCS7ZrgmOYsnWc4wcJZPKEnrITgUF8TT/FuwZn9K/iE22EV1I3wJD00eNQWd7VqSDgmW9NR1g/v9ztbq+/sT7xl/th948ncDvlfOqMsgONzjf/B18xaf10LkLh1DtUkAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/01865520f59b8eef0a6da65309a409bc/2cdb5/screen3.png","srcSet":"/static/01865520f59b8eef0a6da65309a409bc/802a7/screen3.png 220w,\n/static/01865520f59b8eef0a6da65309a409bc/e63e4/screen3.png 440w,\n/static/01865520f59b8eef0a6da65309a409bc/2cdb5/screen3.png 880w,\n/static/01865520f59b8eef0a6da65309a409bc/0a590/screen3.png 1760w","sizes":"(min-width: 880px) 880px, 100vw"},"sources":[{"srcSet":"/static/01865520f59b8eef0a6da65309a409bc/f87c9/screen3.avif 220w,\n/static/01865520f59b8eef0a6da65309a409bc/eb7a4/screen3.avif 440w,\n/static/01865520f59b8eef0a6da65309a409bc/7f69c/screen3.avif 880w,\n/static/01865520f59b8eef0a6da65309a409bc/1ec76/screen3.avif 1760w","type":"image/avif","sizes":"(min-width: 880px) 880px, 100vw"},{"srcSet":"/static/01865520f59b8eef0a6da65309a409bc/797a6/screen3.webp 220w,\n/static/01865520f59b8eef0a6da65309a409bc/8ba3f/screen3.webp 440w,\n/static/01865520f59b8eef0a6da65309a409bc/a7217/screen3.webp 880w,\n/static/01865520f59b8eef0a6da65309a409bc/dc556/screen3.webp 1760w","type":"image/webp","sizes":"(min-width: 880px) 880px, 100vw"}]},"width":880,"height":424}}},{"id":"bd4b7257-4a5f-5127-b009-f7c6a7cebbc9","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABwklEQVR42n1S226bQBDl/3+mL1WfqlRxY8mkqWs7xoCBBNvqBVpggV2ulU7PYLvpQ9SHo7ns7NnZM2Ol8Qm1aVAqBUVUVYVxHDEMA7quI1qiR14mmHt3eOdFmO3ncGMb4XEDJ7Cx9D/gMbxD9NWFVRYlNAkbQi42TYO6rmEYt21H4pFnLdL8Bz7vZ9jsH/C4/ohoe4soXsP17+F4C9jODKv4HlahKmgtJOaCF1/yWhsSdkiyBOFpiePzFwRrGxGJAtfG/mmFhX+Dm81bLMJbWIqEL5dfh9EdcpXhmG4Rn7ZwwxU8fwlHCMMN/Qe8377Bp6cZrCyvqZuZOnmdULptWVMgzUIcEw8HahcfdniOd4gODgJ/h3UwR/xNNCw1izWKoqB+7aTZ0A+TFQ2rqma+n3JNY2CIvuewhu5siV9sSh41uoVlKHhJwu9JioKXc0qgGJeUIefA0p8ZipK/YCy5LFesl7MKGc8VGypK3mFNzR9Z8i0pluFU9MXKoTwiVkjPJJrbwMcpgfhCIo/XzKmqoRz8KQdqyVSly+vuif3rD+Ml/j3FV1xrrnX9JS97Sw3POyc72PdEd0F/huS7f+L/QTT/A+sL8+s0153NAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/306c8f25d177fa9ed574b156eb38cbde/29cdb/screen4.png","srcSet":"/static/306c8f25d177fa9ed574b156eb38cbde/8a190/screen4.png 221w,\n/static/306c8f25d177fa9ed574b156eb38cbde/f26e8/screen4.png 442w,\n/static/306c8f25d177fa9ed574b156eb38cbde/29cdb/screen4.png 884w,\n/static/306c8f25d177fa9ed574b156eb38cbde/69057/screen4.png 1768w","sizes":"(min-width: 884px) 884px, 100vw"},"sources":[{"srcSet":"/static/306c8f25d177fa9ed574b156eb38cbde/65d3b/screen4.avif 221w,\n/static/306c8f25d177fa9ed574b156eb38cbde/5c88c/screen4.avif 442w,\n/static/306c8f25d177fa9ed574b156eb38cbde/eaaef/screen4.avif 884w,\n/static/306c8f25d177fa9ed574b156eb38cbde/103c1/screen4.avif 1768w","type":"image/avif","sizes":"(min-width: 884px) 884px, 100vw"},{"srcSet":"/static/306c8f25d177fa9ed574b156eb38cbde/60969/screen4.webp 221w,\n/static/306c8f25d177fa9ed574b156eb38cbde/3220b/screen4.webp 442w,\n/static/306c8f25d177fa9ed574b156eb38cbde/396ea/screen4.webp 884w,\n/static/306c8f25d177fa9ed574b156eb38cbde/95149/screen4.webp 1768w","type":"image/webp","sizes":"(min-width: 884px) 884px, 100vw"}]},"width":884,"height":424}}},{"id":"a25de992-73ea-5686-8955-ccb105cddbf3","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAsABQDASIAAhEBAxEB/8QAGgABAAIDAQAAAAAAAAAAAAAAAAEEAgMGBf/EABYBAQEBAAAAAAAAAAAAAAAAAAEAAv/aAAwDAQACEAMQAAAB9OLUNXWFRosMoI18vjPWuUR//8QAHRAAAgICAwEAAAAAAAAAAAAAAgMAARMUBBAgEv/aAAgBAQABBQLAqYFTArxd/Ig0SLyJiXW4+VynVNx8/8QAFREBAQAAAAAAAAAAAAAAAAAAECH/2gAIAQMBAT8BIQ//xAAXEQADAQAAAAAAAAAAAAAAAAAAAREg/9oACAECAQE/AayvP//EAB4QAAEDBQEBAAAAAAAAAAAAAAABAjMRICExoTJB/9oACAEBAAY/Ao0I2nhLK/CjbdmFNknDDuEnD//EACAQAAICAQMFAAAAAAAAAAAAAAABESFBMVHxEGGh0fD/2gAIAQEAAT8hojwnGHBkCvRpjonHagtjMp3aH3JNOlbLcEzi3E020kqmV+gwPNuEPsh//9oADAMBAAIAAwAAABAYDPBDD//EABgRAQADAQAAAAAAAAAAAAAAAAEQESEx/9oACAEDAQE/EIGjZsGG+x//xAAXEQADAQAAAAAAAAAAAAAAAAAAIGEh/9oACAECAQE/ELFjU//EACIQAQACAgAFBQAAAAAAAAAAAAEAESExQWGRofAQUXGBsf/aAAgBAQABPxBeyn29XHDS8QF8A003UFqY58tOS/scPROTWPuXswuuEtVXiDawD4CKrbmbBlQZ2mzswFijBpW9dYkiugdO67zatvxxH2m/iN6TnvHlP//Z"},"images":{"fallback":{"src":"/static/f5baf2719902e73fd526808dafd312d6/8bccd/screen5.jpg","srcSet":"/static/f5baf2719902e73fd526808dafd312d6/38346/screen5.jpg 48w,\n/static/f5baf2719902e73fd526808dafd312d6/d6c04/screen5.jpg 96w,\n/static/f5baf2719902e73fd526808dafd312d6/8bccd/screen5.jpg 191w,\n/static/f5baf2719902e73fd526808dafd312d6/945c7/screen5.jpg 382w","sizes":"(min-width: 191px) 191px, 100vw"},"sources":[{"srcSet":"/static/f5baf2719902e73fd526808dafd312d6/57d6c/screen5.avif 48w,\n/static/f5baf2719902e73fd526808dafd312d6/8ad7f/screen5.avif 96w,\n/static/f5baf2719902e73fd526808dafd312d6/358ff/screen5.avif 191w,\n/static/f5baf2719902e73fd526808dafd312d6/094b9/screen5.avif 382w","type":"image/avif","sizes":"(min-width: 191px) 191px, 100vw"},{"srcSet":"/static/f5baf2719902e73fd526808dafd312d6/a187f/screen5.webp 48w,\n/static/f5baf2719902e73fd526808dafd312d6/41c1b/screen5.webp 96w,\n/static/f5baf2719902e73fd526808dafd312d6/f4b4e/screen5.webp 191w,\n/static/f5baf2719902e73fd526808dafd312d6/030ce/screen5.webp 382w","type":"image/webp","sizes":"(min-width: 191px) 191px, 100vw"}]},"width":191,"height":424}}},{"id":"1626afba-b106-5e6e-8382-79ac1a24dd9f","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAsABQDASIAAhEBAxEB/8QAGgAAAgMBAQAAAAAAAAAAAAAAAAIBBAYDBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAH0S1NVCwHSVaOQAyZZV1plBP/EAB8QAAICAQQDAAAAAAAAAAAAAAADAQIxBBATFBEhQf/aAAgBAQABBQLhWcCiUq28E7ei2fpbJVkWMnceRqnQdx5//8QAFhEAAwAAAAAAAAAAAAAAAAAAECAh/9oACAEDAQE/AUg//8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERIP/aAAgBAgEBPwGsrz//xAAeEAABAwQDAAAAAAAAAAAAAAAAATOhAhEhMRMwMv/aAAgBAQAGPwK3Gg3SeE6tmFNjkGKoHIP/xAAgEAACAgICAgMAAAAAAAAAAAAAAREhMUEQUWGB0eHw/9oACAEBAAE/IXLbUC3KPpZ42JirFn0ZTwJZFzqOCcU6RN6+ymdG1TK/gNDzbhD9kP/aAAwDAQACAAMAAAAQOAM8wA//xAAZEQABBQAAAAAAAAAAAAAAAAABEBEgITH/2gAIAQMBAT8QgKF9T//EABYRAQEBAAAAAAAAAAAAAAAAAGEAIP/aAAgBAgEBPxBps//EACEQAQACAgEEAwEAAAAAAAAAAAEAESExQVFhkaFx0fCB/9oACAEBAAE/EMMItrnpGl/xLgkrXA3iZaafqoFzSdIcL0jALXC7jaxL+YxuZxDpbjVv3UTUjuJfbdcQGGVXIbNnpgLwMGlb15jv84HTuvc2rb/OI+038jfE7789p//Z"},"images":{"fallback":{"src":"/static/df7e4b30cdee886e2a8c766b827fa15e/8bccd/screen6.jpg","srcSet":"/static/df7e4b30cdee886e2a8c766b827fa15e/38346/screen6.jpg 48w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/d6c04/screen6.jpg 96w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/8bccd/screen6.jpg 191w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/945c7/screen6.jpg 382w","sizes":"(min-width: 191px) 191px, 100vw"},"sources":[{"srcSet":"/static/df7e4b30cdee886e2a8c766b827fa15e/57d6c/screen6.avif 48w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/8ad7f/screen6.avif 96w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/358ff/screen6.avif 191w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/094b9/screen6.avif 382w","type":"image/avif","sizes":"(min-width: 191px) 191px, 100vw"},{"srcSet":"/static/df7e4b30cdee886e2a8c766b827fa15e/a187f/screen6.webp 48w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/41c1b/screen6.webp 96w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/f4b4e/screen6.webp 191w,\n/static/df7e4b30cdee886e2a8c766b827fa15e/030ce/screen6.webp 382w","type":"image/webp","sizes":"(min-width: 191px) 191px, 100vw"}]},"width":191,"height":424}}},{"id":"5013f51b-9e53-5898-8f1a-226d429b5536","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAsABQDASIAAhEBAxEB/8QAGgAAAQUBAAAAAAAAAAAAAAAAAAECAwUGBP/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAABgTqW2AmEc62Ipi8CPmzg1sDHjP8A/8QAHBAAAwACAwEAAAAAAAAAAAAAAAECEhQDBBAg/9oACAEBAAEFAmjFClfGNGNDTQ/beMzzzVG52Dc5zc7B/8QAFxEBAAMAAAAAAAAAAAAAAAAAARARIP/aAAgBAwEBPwG8CR//xAAXEQADAQAAAAAAAAAAAAAAAAAAAREg/9oACAECAQE/AayvP//EAB4QAAEDBAMAAAAAAAAAAAAAAAABMjMQESChEiEx/9oACAEBAAY/AmDBuDVGqeYci1l7pJok0SaP/8QAHxAAAgIBBAMAAAAAAAAAAAAAAAERIZEQMVFhIIHh/9oACAEBAAE/IUzEIOiMq18JrWAXyBhbL0cIoSvbRTG2XCEDjBUVbsDvYHcwP//aAAwDAQACAAMAAAAQlBI8Mw//xAAaEQEAAgMBAAAAAAAAAAAAAAABEBEAIVFx/9oACAEDAQE/EKcxZCbLfY//xAAYEQACAwAAAAAAAAAAAAAAAAAQYQABIf/aAAgBAgEBPxB9xx0f/8QAIBABAAIBBAIDAAAAAAAAAAAAAQARITFRwfBBkWGBsf/aAAgBAQABPxAKKnTEyFeuWkLtUCWVHWABEdEcp8uVlrZRG5AR8PEZGBRsxB1BhuqNpY/sK16Bgx6YAUYJqPJ1xG06P1Ow8T//2Q=="},"images":{"fallback":{"src":"/static/a076849820a2940309307b8a498bec36/8bccd/screen7.jpg","srcSet":"/static/a076849820a2940309307b8a498bec36/38346/screen7.jpg 48w,\n/static/a076849820a2940309307b8a498bec36/d6c04/screen7.jpg 96w,\n/static/a076849820a2940309307b8a498bec36/8bccd/screen7.jpg 191w,\n/static/a076849820a2940309307b8a498bec36/945c7/screen7.jpg 382w","sizes":"(min-width: 191px) 191px, 100vw"},"sources":[{"srcSet":"/static/a076849820a2940309307b8a498bec36/57d6c/screen7.avif 48w,\n/static/a076849820a2940309307b8a498bec36/8ad7f/screen7.avif 96w,\n/static/a076849820a2940309307b8a498bec36/358ff/screen7.avif 191w,\n/static/a076849820a2940309307b8a498bec36/094b9/screen7.avif 382w","type":"image/avif","sizes":"(min-width: 191px) 191px, 100vw"},{"srcSet":"/static/a076849820a2940309307b8a498bec36/a187f/screen7.webp 48w,\n/static/a076849820a2940309307b8a498bec36/41c1b/screen7.webp 96w,\n/static/a076849820a2940309307b8a498bec36/f4b4e/screen7.webp 191w,\n/static/a076849820a2940309307b8a498bec36/030ce/screen7.webp 382w","type":"image/webp","sizes":"(min-width: 191px) 191px, 100vw"}]},"width":191,"height":424}}},{"id":"d1c5e48a-317a-59bc-b5d5-38c9fd5ef749","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAsABQDASIAAhEBAxEB/8QAGgAAAgMBAQAAAAAAAAAAAAAAAAIDBAYBBf/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAABsr6rN0C4XBJG8KAcTLKuuMmJ/8QAHRAAAgICAwEAAAAAAAAAAAAAAQIAAxAUBBIgMf/aAAgBAQABBQJkAPQRKkI8nJwrhp9m5fByrhNy+f/EABkRAAEFAAAAAAAAAAAAAAAAAAEQEiAhUf/aAAgBAwEBPwFwyFJ//8QAGBEAAgMAAAAAAAAAAAAAAAAAAREAIFH/2gAIAQIBAT8BZ2M1/8QAHxAAAgAFBQAAAAAAAAAAAAAAAAECITEzoQMEIjA0/9oACAEBAAY/Amlt00eZHLSS6qkmVLmCUWC5g//EABwQAAICAwEBAAAAAAAAAAAAAAABESExQVHR8P/aAAgBAQABPyFNAYfRTIJe34IlDH9QlCMx69FDwzM5TME3qZKZ0bVMr8DQ824Q+yH/2gAMAwEAAgADAAAAEDvTAIAP/8QAGxEAAgIDAQAAAAAAAAAAAAAAAREQMQAhodH/2gAIAQMBAT8QCKd9wlliRoXcf//EABYRAQEBAAAAAAAAAAAAAAAAAGEAIP/aAAgBAgEBPxBU2f/EACAQAQACAgICAwEAAAAAAAAAAAEAESExUWFBkaGx8HH/2gAIAQEAAT8QYrWljkW52V7lfHUEXjmEdqHSygxl7jtuqxkgcIW/0xgGl6J9MRVww4WkXka4Z9Msw2oZ2mz4ZbRxCpW9e4ARzgdPHzNq2/ziPtN/kb6ne/PU/9k="},"images":{"fallback":{"src":"/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/8bccd/screen8.jpg","srcSet":"/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/38346/screen8.jpg 48w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/d6c04/screen8.jpg 96w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/8bccd/screen8.jpg 191w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/945c7/screen8.jpg 382w","sizes":"(min-width: 191px) 191px, 100vw"},"sources":[{"srcSet":"/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/57d6c/screen8.avif 48w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/8ad7f/screen8.avif 96w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/358ff/screen8.avif 191w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/094b9/screen8.avif 382w","type":"image/avif","sizes":"(min-width: 191px) 191px, 100vw"},{"srcSet":"/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/a187f/screen8.webp 48w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/41c1b/screen8.webp 96w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/f4b4e/screen8.webp 191w,\n/static/3bb3ab91cb4ba7dbcb936ff9d2785d09/030ce/screen8.webp 382w","type":"image/webp","sizes":"(min-width: 191px) 191px, 100vw"}]},"width":191,"height":424}}}]}}},"pageContext":{"id":"9f63d17d-6164-509e-b2c7-4c655ab9ad7a","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/page-data.json b/page-data/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/page-data.json index d1d2550e..2fa4ea27 100644 --- a/page-data/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/page-data.json +++ b/page-data/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/","result":{"data":{"markdownRemark":{"id":"f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb","html":"

The bimcore Revit add-in is a sophisticated tool designed to enhance the functionality of Autodesk Revit. It streamlines the workflow for architects and designers by providing an efficient way to manage and synchronize BIM (Building Information Modeling) assets directly within the Revit environment.

\n

The add-in boasts a robust architecture that facilitates the transfer of assets from the store to Revit, ensuring persistent synchronization and up-to-date content. It includes features like:

\n

• Asset Path: Automated retrieval and caching of bundles and assets, with intelligent version control.

\n

• Synchronization Logic: Timed checks for new bundles and updates, with user notifications and automatic updates based on user preferences.

\n

• Installer Updates: Regular checks for new installer versions to keep the add-in current.

","frontmatter":{"stack":[".NET","WPF","Revit API","Azure Blob Storage"],"title":"Bimcore Revit Add-In","description":"The Bimcore Revit Add-In is a set of tools designed for modeling within Autodesk Revit. It includes various families of objects that can be used to create detailed models of kitchens, storage cabinets, and more. These tools are particularly suitable for interior designers and architects, allowing them to work with exact dimensions and count the number of modules or elements needed for their designs. These add-ins streamline the design process in Revit by providing ready-to-use components that adhere to common design standards and practices. They enhance efficiency and accuracy in the modelling phase, which is crucial for successful project planning and execution.","challenge":"Simplify the access to the shop content for the users together with user management and get the statistics on content usage.","clientDescription":"Ivan Zylev, Revit families online shop owner (the content for the architectural program Revit) bimcore.one.","logo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/webp;base64,UklGRi4BAABXRUJQVlA4WAoAAAAQAAAAEwAAEwAAQUxQSIQAAAABcFvbtqK8EdwdUojcLXRvgNCzqQGHnFLIIaMlt3GfAiJiAkAT7fWmSwyyuJHk84AJ25GcR0GhN9cvImRI8s6FjPgIIQm+ihA4cV1AsPPMuvqEAdLcbHsoCMTMYAfRtlqi2alHM7listLk0dWrRClfCzda+cEA5QILZsBxzKo34pgFVA9WUDgghAAAAPADAJ0BKhQAFAA+0V6kTqglK6IoCqlwGglqAM3BiqpEWpOWUlCrigAAfWqxVpv0pz2/3F9hG3PlLwF18w9pUUclnkj1L1Ae1neYQTigO7/XZvGrtPrXqLpiRsC7Cxx8D49yzbKJuML5WC0jD6v49l6FsMAAi/9+HPay18uu0Q04LxAAAA=="},"images":{"fallback":{"src":"/static/03fccfdb78840b603d719cd217769005/52f83/clientLogo.webp","srcSet":"/static/03fccfdb78840b603d719cd217769005/29677/clientLogo.webp 45w,\n/static/03fccfdb78840b603d719cd217769005/5d191/clientLogo.webp 90w,\n/static/03fccfdb78840b603d719cd217769005/52f83/clientLogo.webp 180w,\n/static/03fccfdb78840b603d719cd217769005/27ab5/clientLogo.webp 360w","sizes":"(min-width: 180px) 180px, 100vw"},"sources":[{"srcSet":"/static/03fccfdb78840b603d719cd217769005/804a8/clientLogo.avif 45w,\n/static/03fccfdb78840b603d719cd217769005/08179/clientLogo.avif 90w,\n/static/03fccfdb78840b603d719cd217769005/07601/clientLogo.avif 180w,\n/static/03fccfdb78840b603d719cd217769005/7495b/clientLogo.avif 360w","type":"image/avif","sizes":"(min-width: 180px) 180px, 100vw"}]},"width":180,"height":180}}},"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEiklEQVR42i1UR0xcVxT9ptmmmN6HYps+tAGMgaENzNAUTBsItjEQaoJpZug2diBCCg4YK3R5aF4gjBeAKAIEZhVLCBEJIpYs2CCxccwWCZ28e8lIXzPz/rvnnXfuOVdyc5XB6959hAaH4q6Hp/gOgauzC6+5OLnAycERYaEKWN2xFP+dYWRgyPvsbGxxx9yC31tbWsP01m0YGxpBopd+Pr6ICIuA930vhCvC4C5zQ/TDqP9BnREZ8UAUWSEwQA7T26YM6GBnD0uLO3B2dIKttQ3MTc1gYmQMiYpCgoKgjI5h4PjYeN7065s3yNdqmYkqUQULM3P0/9HP4NfMnZi1zMUV9gKc3jOgj5c3g/X93odYpRLDQ0MIlMsx0N+P0uISuIqC0dFRZq7XT0KlUjFruX8AH0wPsTcTzBmQWNH1ZqZnBLs4LC4uIj9Pi4WFBYyPjwsGMiwtLeN112vsbO+grrYOpSWl4sABZD3KQs0vNay7o4MD6yv5evsgPTUNa6trYsMjrKysQJuXh7d9b/FbTw/ilLFYFWtjo2PY2dlBa2srg01PTQngEvE9jZedLxEeFg5Jkq4ZpmhSBLMlNDW+wNHhEXq6u7nTQfJA7O7u4vLykpmQXvQQ8OjIGNpb2/Dlyy5mZmYYgwGpiGyRGJ+AHwsKcPTPEaYmJ2FvaweNWoPT01PQZ3VljQs0ajW+/fsNZ2dnTOLk5ARf//qK8rKya0ASlzQgS8RERQututCsa2bAxvoGXF1d4eLiAt+/X4jGhKOurg7ra+sYGR7B4OAgwhQKeLi5s3XYh/6+fiAdCfSe51309vbi3btBXlMnq3F+fs4M9/b2xKGBWPj0CUVPnnJjNjc30dnRCR+xl9jdMrl5DVhVUcldzPwhE91Cv6eigDQj+8Qr4/BCaBvg588+zcnOEeyGsbGxgaE/h7C9vY0PH/TsT+4ypSNFo+Gu6nQ6aIWZCaChvpFPJp+2t7WzyWNjlKgor0R19c8YGBjA54XP0DXpMKnXo76+HoY3DCBRzOhhg4sCbV4+KiuqBJM80e0evB98j7m5OSwvL7N+1E26TW3Nc7bPxMQEggOD+Mo3jU0gkdPJCrRIBs/KzIY2V4uI8Ag8KyoSRq5lP5Lx5+fn8biwEAWCLXlX19TMASCpDKQb1xpSVik61IQnhY/R9eqViNoY0lJTOWLFz4qRm5OLNmFoYktpahbSEOvj42OxvwtRkVE8LCh+Eo0gKiRgEra6qgqNDY2gsUZS5GZl86DY2tzC1tYW3GQylBQXM+DB3wdoaWlh9pQoGytrSHRvT3cP9lFIUDAPhLLSn3iU0awLFWvky4ODA8zOzIqhIEd2VhbW19dxeHjIJPSiKcmqJLadREUF+QVMma5NgyFJjCuF8CUxpENaW1qxv7/PUpADiCE17OPsR3S0d4iUlEOdlMyJY0CKHy2WCHYPH0RCERLKWSYZKEnkTWJTLyYNRbS6sgrPRZfbRJarxO+MtHS+Mj0SRYzEJHZ0AnWdrksPgVKsMtIzOKsERgcmxMUjWTAiVxAIrdOtVAmJ+A/qkhVxc4KB0AAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/08f0b4d049f4e024d92a458deddda5ce/d6138/cover.png","srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/15e42/cover.png 100w,\n/static/08f0b4d049f4e024d92a458deddda5ce/5aead/cover.png 200w,\n/static/08f0b4d049f4e024d92a458deddda5ce/d6138/cover.png 400w,\n/static/08f0b4d049f4e024d92a458deddda5ce/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/6d0de/cover.avif 100w,\n/static/08f0b4d049f4e024d92a458deddda5ce/f2685/cover.avif 200w,\n/static/08f0b4d049f4e024d92a458deddda5ce/4ff31/cover.avif 400w,\n/static/08f0b4d049f4e024d92a458deddda5ce/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/d8057/cover.webp 100w,\n/static/08f0b4d049f4e024d92a458deddda5ce/2e34e/cover.webp 200w,\n/static/08f0b4d049f4e024d92a458deddda5ce/416c3/cover.webp 400w,\n/static/08f0b4d049f4e024d92a458deddda5ce/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["2 middle .NET developers","1 UI/UX designer","1 QA engineer"],"screenshots":[{"id":"31041cd7-665e-5df6-b3bf-dfd65dba1f30","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/webp;base64,UklGRkIAAABXRUJQVlA4IDYAAACQAwCdASoUAAQAPtFUo0uoJKMhsAgBABoJaQAAXlvtTSM3WYmgAP7hlo28aozRobVLFoAAAAA="},"images":{"fallback":{"src":"/static/a8225a34030e195d83a86f435f459b62/bf754/screen1.webp","srcSet":"/static/a8225a34030e195d83a86f435f459b62/c3157/screen1.webp 307w,\n/static/a8225a34030e195d83a86f435f459b62/ac16b/screen1.webp 613w,\n/static/a8225a34030e195d83a86f435f459b62/bf754/screen1.webp 1226w","sizes":"(min-width: 1226px) 1226px, 100vw"},"sources":[{"srcSet":"/static/a8225a34030e195d83a86f435f459b62/332dd/screen1.avif 307w,\n/static/a8225a34030e195d83a86f435f459b62/73a88/screen1.avif 613w,\n/static/a8225a34030e195d83a86f435f459b62/e2c6e/screen1.avif 1226w","type":"image/avif","sizes":"(min-width: 1226px) 1226px, 100vw"}]},"width":1226,"height":251}}},{"id":"bd4eaa26-e679-5129-a047-13aa976265b1","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/webp;base64,UklGRlgAAABXRUJQVlA4IEwAAADwAwCdASoUAAoAPtFWo0uoJKMhsAgBABoJZwDLLCKUZoyB80g7BRQAAP7q58xvSxdIxWDI8zWTY3cV31kovuznJkzMmj1giUyEqAAA"},"images":{"fallback":{"src":"/static/e2cca5e5147e42a7b95a83d3533f1511/0db9d/screen2.webp","srcSet":"/static/e2cca5e5147e42a7b95a83d3533f1511/def4d/screen2.webp 214w,\n/static/e2cca5e5147e42a7b95a83d3533f1511/96235/screen2.webp 427w,\n/static/e2cca5e5147e42a7b95a83d3533f1511/0db9d/screen2.webp 854w","sizes":"(min-width: 854px) 854px, 100vw"},"sources":[{"srcSet":"/static/e2cca5e5147e42a7b95a83d3533f1511/82b3c/screen2.avif 214w,\n/static/e2cca5e5147e42a7b95a83d3533f1511/d629e/screen2.avif 427w,\n/static/e2cca5e5147e42a7b95a83d3533f1511/f55f8/screen2.avif 854w","type":"image/avif","sizes":"(min-width: 854px) 854px, 100vw"}]},"width":854,"height":424}}},{"id":"926fed9f-7cc7-5aed-9124-56e3375a29dd","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/webp;base64,UklGRlAAAABXRUJQVlA4IEQAAACwAwCdASoUAAsAPtFUo0uoJKMhsAgBABoJaQAAUqH8ILKiBbU5vAD+6CctDeb4rdry6gehgQ38GiafgLsxpMCN057AAA=="},"images":{"fallback":{"src":"/static/59f179ba4d97390f6dc7a9f4393402fe/1b4ce/screen3.webp","srcSet":"/static/59f179ba4d97390f6dc7a9f4393402fe/82c1d/screen3.webp 197w,\n/static/59f179ba4d97390f6dc7a9f4393402fe/13fd0/screen3.webp 394w,\n/static/59f179ba4d97390f6dc7a9f4393402fe/1b4ce/screen3.webp 788w,\n/static/59f179ba4d97390f6dc7a9f4393402fe/26fc1/screen3.webp 1576w","sizes":"(min-width: 788px) 788px, 100vw"},"sources":[{"srcSet":"/static/59f179ba4d97390f6dc7a9f4393402fe/f5c27/screen3.avif 197w,\n/static/59f179ba4d97390f6dc7a9f4393402fe/a2e50/screen3.avif 394w,\n/static/59f179ba4d97390f6dc7a9f4393402fe/3b62e/screen3.avif 788w,\n/static/59f179ba4d97390f6dc7a9f4393402fe/ffecd/screen3.avif 1576w","type":"image/avif","sizes":"(min-width: 788px) 788px, 100vw"}]},"width":788,"height":424}}}]}}},"pageContext":{"id":"f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/","result":{"data":{"markdownRemark":{"id":"f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb","html":"

The bimcore Revit add-in is a sophisticated tool designed to enhance the functionality of Autodesk Revit. It streamlines the workflow for architects and designers by providing an efficient way to manage and synchronize BIM (Building Information Modeling) assets directly within the Revit environment.

\n

The add-in boasts a robust architecture that facilitates the transfer of assets from the store to Revit, ensuring persistent synchronization and up-to-date content. It includes features like:

\n

• Asset Path: Automated retrieval and caching of bundles and assets, with intelligent version control.

\n

• Synchronization Logic: Timed checks for new bundles and updates, with user notifications and automatic updates based on user preferences.

\n

• Installer Updates: Regular checks for new installer versions to keep the add-in current.

","frontmatter":{"stack":[".NET","WPF","Revit API","Azure Blob Storage"],"title":"Bimcore Revit Add-In","description":"The Bimcore Revit Add-In is a set of tools designed for modeling within Autodesk Revit. It includes various families of objects that can be used to create detailed models of kitchens, storage cabinets, and more. These tools are particularly suitable for interior designers and architects, allowing them to work with exact dimensions and count the number of modules or elements needed for their designs. These add-ins streamline the design process in Revit by providing ready-to-use components that adhere to common design standards and practices. They enhance efficiency and accuracy in the modelling phase, which is crucial for successful project planning and execution.","challenge":"Simplify the access to the shop content for the users together with user management and get the statistics on content usage.","clientDescription":"Ivan Zylev, Revit families online shop owner (the content for the architectural program Revit) bimcore.one.","logo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/webp;base64,UklGRi4BAABXRUJQVlA4WAoAAAAQAAAAEwAAEwAAQUxQSIQAAAABcFvbtqK8EdwdUojcLXRvgNCzqQGHnFLIIaMlt3GfAiJiAkAT7fWmSwyyuJHk84AJ25GcR0GhN9cvImRI8s6FjPgIIQm+ihA4cV1AsPPMuvqEAdLcbHsoCMTMYAfRtlqi2alHM7listLk0dWrRClfCzda+cEA5QILZsBxzKo34pgFVA9WUDgghAAAAPADAJ0BKhQAFAA+0V6kTqglK6IoCqlwGglqAM3BiqpEWpOWUlCrigAAfWqxVpv0pz2/3F9hG3PlLwF18w9pUUclnkj1L1Ae1neYQTigO7/XZvGrtPrXqLpiRsC7Cxx8D49yzbKJuML5WC0jD6v49l6FsMAAi/9+HPay18uu0Q04LxAAAA=="},"images":{"fallback":{"src":"/static/03fccfdb78840b603d719cd217769005/52f83/clientLogo.webp","srcSet":"/static/03fccfdb78840b603d719cd217769005/29677/clientLogo.webp 45w,\n/static/03fccfdb78840b603d719cd217769005/5d191/clientLogo.webp 90w,\n/static/03fccfdb78840b603d719cd217769005/52f83/clientLogo.webp 180w,\n/static/03fccfdb78840b603d719cd217769005/27ab5/clientLogo.webp 360w","sizes":"(min-width: 180px) 180px, 100vw"},"sources":[{"srcSet":"/static/03fccfdb78840b603d719cd217769005/804a8/clientLogo.avif 45w,\n/static/03fccfdb78840b603d719cd217769005/08179/clientLogo.avif 90w,\n/static/03fccfdb78840b603d719cd217769005/07601/clientLogo.avif 180w,\n/static/03fccfdb78840b603d719cd217769005/7495b/clientLogo.avif 360w","type":"image/avif","sizes":"(min-width: 180px) 180px, 100vw"}]},"width":180,"height":180}}},"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEiklEQVR42i1UR0xcVxT9ptmmmN6HYps+tAGMgaENzNAUTBsItjEQaoJpZug2diBCCg4YK3R5aF4gjBeAKAIEZhVLCBEJIpYs2CCxccwWCZ28e8lIXzPz/rvnnXfuOVdyc5XB6959hAaH4q6Hp/gOgauzC6+5OLnAycERYaEKWN2xFP+dYWRgyPvsbGxxx9yC31tbWsP01m0YGxpBopd+Pr6ICIuA930vhCvC4C5zQ/TDqP9BnREZ8UAUWSEwQA7T26YM6GBnD0uLO3B2dIKttQ3MTc1gYmQMiYpCgoKgjI5h4PjYeN7065s3yNdqmYkqUQULM3P0/9HP4NfMnZi1zMUV9gKc3jOgj5c3g/X93odYpRLDQ0MIlMsx0N+P0uISuIqC0dFRZq7XT0KlUjFruX8AH0wPsTcTzBmQWNH1ZqZnBLs4LC4uIj9Pi4WFBYyPjwsGMiwtLeN112vsbO+grrYOpSWl4sABZD3KQs0vNay7o4MD6yv5evsgPTUNa6trYsMjrKysQJuXh7d9b/FbTw/ilLFYFWtjo2PY2dlBa2srg01PTQngEvE9jZedLxEeFg5Jkq4ZpmhSBLMlNDW+wNHhEXq6u7nTQfJA7O7u4vLykpmQXvQQ8OjIGNpb2/Dlyy5mZmYYgwGpiGyRGJ+AHwsKcPTPEaYmJ2FvaweNWoPT01PQZ3VljQs0ajW+/fsNZ2dnTOLk5ARf//qK8rKya0ASlzQgS8RERQututCsa2bAxvoGXF1d4eLiAt+/X4jGhKOurg7ra+sYGR7B4OAgwhQKeLi5s3XYh/6+fiAdCfSe51309vbi3btBXlMnq3F+fs4M9/b2xKGBWPj0CUVPnnJjNjc30dnRCR+xl9jdMrl5DVhVUcldzPwhE91Cv6eigDQj+8Qr4/BCaBvg588+zcnOEeyGsbGxgaE/h7C9vY0PH/TsT+4ypSNFo+Gu6nQ6aIWZCaChvpFPJp+2t7WzyWNjlKgor0R19c8YGBjA54XP0DXpMKnXo76+HoY3DCBRzOhhg4sCbV4+KiuqBJM80e0evB98j7m5OSwvL7N+1E26TW3Nc7bPxMQEggOD+Mo3jU0gkdPJCrRIBs/KzIY2V4uI8Ag8KyoSRq5lP5Lx5+fn8biwEAWCLXlX19TMASCpDKQb1xpSVik61IQnhY/R9eqViNoY0lJTOWLFz4qRm5OLNmFoYktpahbSEOvj42OxvwtRkVE8LCh+Eo0gKiRgEra6qgqNDY2gsUZS5GZl86DY2tzC1tYW3GQylBQXM+DB3wdoaWlh9pQoGytrSHRvT3cP9lFIUDAPhLLSn3iU0awLFWvky4ODA8zOzIqhIEd2VhbW19dxeHjIJPSiKcmqJLadREUF+QVMma5NgyFJjCuF8CUxpENaW1qxv7/PUpADiCE17OPsR3S0d4iUlEOdlMyJY0CKHy2WCHYPH0RCERLKWSYZKEnkTWJTLyYNRbS6sgrPRZfbRJarxO+MtHS+Mj0SRYzEJHZ0AnWdrksPgVKsMtIzOKsERgcmxMUjWTAiVxAIrdOtVAmJ+A/qkhVxc4KB0AAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/08f0b4d049f4e024d92a458deddda5ce/d6138/cover.png","srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/15e42/cover.png 100w,\n/static/08f0b4d049f4e024d92a458deddda5ce/5aead/cover.png 200w,\n/static/08f0b4d049f4e024d92a458deddda5ce/d6138/cover.png 400w,\n/static/08f0b4d049f4e024d92a458deddda5ce/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/6d0de/cover.avif 100w,\n/static/08f0b4d049f4e024d92a458deddda5ce/f2685/cover.avif 200w,\n/static/08f0b4d049f4e024d92a458deddda5ce/4ff31/cover.avif 400w,\n/static/08f0b4d049f4e024d92a458deddda5ce/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/d8057/cover.webp 100w,\n/static/08f0b4d049f4e024d92a458deddda5ce/2e34e/cover.webp 200w,\n/static/08f0b4d049f4e024d92a458deddda5ce/416c3/cover.webp 400w,\n/static/08f0b4d049f4e024d92a458deddda5ce/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["2 middle .NET developers","1 UI/UX designer","1 QA engineer"],"screenshots":[{"id":"31041cd7-665e-5df6-b3bf-dfd65dba1f30","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/webp;base64,UklGRkIAAABXRUJQVlA4IDYAAACQAwCdASoUAAQAPtFUo0uoJKMhsAgBABoJaQAAXlvtTSM3WYmgAP7hlo28aozRobVLFoAAAAA="},"images":{"fallback":{"src":"/static/a8225a34030e195d83a86f435f459b62/bf754/screen1.webp","srcSet":"/static/a8225a34030e195d83a86f435f459b62/c3157/screen1.webp 307w,\n/static/a8225a34030e195d83a86f435f459b62/ac16b/screen1.webp 613w,\n/static/a8225a34030e195d83a86f435f459b62/bf754/screen1.webp 1226w","sizes":"(min-width: 1226px) 1226px, 100vw"},"sources":[{"srcSet":"/static/a8225a34030e195d83a86f435f459b62/332dd/screen1.avif 307w,\n/static/a8225a34030e195d83a86f435f459b62/73a88/screen1.avif 613w,\n/static/a8225a34030e195d83a86f435f459b62/e2c6e/screen1.avif 1226w","type":"image/avif","sizes":"(min-width: 1226px) 1226px, 100vw"}]},"width":1226,"height":251}}},{"id":"bd4eaa26-e679-5129-a047-13aa976265b1","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/webp;base64,UklGRlgAAABXRUJQVlA4IEwAAADwAwCdASoUAAoAPtFWo0uoJKMhsAgBABoJZwDLLCKUZoyB80g7BRQAAP7q58xvSxdIxWDI8zWTY3cV31kovuznJkzMmj1giUyEqAAA"},"images":{"fallback":{"src":"/static/e2cca5e5147e42a7b95a83d3533f1511/0db9d/screen2.webp","srcSet":"/static/e2cca5e5147e42a7b95a83d3533f1511/def4d/screen2.webp 214w,\n/static/e2cca5e5147e42a7b95a83d3533f1511/96235/screen2.webp 427w,\n/static/e2cca5e5147e42a7b95a83d3533f1511/0db9d/screen2.webp 854w","sizes":"(min-width: 854px) 854px, 100vw"},"sources":[{"srcSet":"/static/e2cca5e5147e42a7b95a83d3533f1511/82b3c/screen2.avif 214w,\n/static/e2cca5e5147e42a7b95a83d3533f1511/d629e/screen2.avif 427w,\n/static/e2cca5e5147e42a7b95a83d3533f1511/f55f8/screen2.avif 854w","type":"image/avif","sizes":"(min-width: 854px) 854px, 100vw"}]},"width":854,"height":424}}},{"id":"926fed9f-7cc7-5aed-9124-56e3375a29dd","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/webp;base64,UklGRlAAAABXRUJQVlA4IEQAAACwAwCdASoUAAsAPtFUo0uoJKMhsAgBABoJaQAAUqH8ILKiBbU5vAD+6CctDeb4rdry6gehgQ38GiafgLsxpMCN057AAA=="},"images":{"fallback":{"src":"/static/59f179ba4d97390f6dc7a9f4393402fe/1b4ce/screen3.webp","srcSet":"/static/59f179ba4d97390f6dc7a9f4393402fe/82c1d/screen3.webp 197w,\n/static/59f179ba4d97390f6dc7a9f4393402fe/13fd0/screen3.webp 394w,\n/static/59f179ba4d97390f6dc7a9f4393402fe/1b4ce/screen3.webp 788w,\n/static/59f179ba4d97390f6dc7a9f4393402fe/26fc1/screen3.webp 1576w","sizes":"(min-width: 788px) 788px, 100vw"},"sources":[{"srcSet":"/static/59f179ba4d97390f6dc7a9f4393402fe/f5c27/screen3.avif 197w,\n/static/59f179ba4d97390f6dc7a9f4393402fe/a2e50/screen3.avif 394w,\n/static/59f179ba4d97390f6dc7a9f4393402fe/3b62e/screen3.avif 788w,\n/static/59f179ba4d97390f6dc7a9f4393402fe/ffecd/screen3.avif 1576w","type":"image/avif","sizes":"(min-width: 788px) 788px, 100vw"}]},"width":788,"height":424}}}]}}},"pageContext":{"id":"f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/page-data.json b/page-data/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/page-data.json index b93cbee9..e49a17ab 100644 --- a/page-data/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/page-data.json +++ b/page-data/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/","result":{"data":{"markdownRemark":{"id":"ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7","html":"

Plugin that maps parameters semi-automatically (using AI) or manually and convert your projects or family libraries to IFSE from virtually any standard or no standard at all (RFAs with just family parameters)

","frontmatter":{"stack":["React","JS","HTML","Node.js","NestJS","Swagger"],"title":"IFSE Parameters Tool for Revit","description":"The IFSE Parameters Tool for Revit is a valuable resource for ensuring consistency and compatibility in foodservice equipment design projects, facilitating the use of a standardized approach to parameter management within the Revit environment. The tool includes a feature called the Parameter Mapper, which allows companies to align their Revit family databases with these industry standards.","challenge":"Eliminate problems with Revit Parameters such as disorganization with Families parameter types, lack of unification and compliance with the Standards, specification issues","clientDescription":"FCSI is the only such consulting society in the world, with over 1,000 members in more than 35 countries worldwide. FCSI is a strong and active association dedicated to serving the needs of professional foodservice consultants. FCSI Europe, Africa, Middle East (EAME) serve professional design and management consultants in the foodservice and hospitality industry across the region. Founded in 1971, FCSI EAME is one of the fastest growing and dynamic divisions within the Society, setting the highest standards for foodservice consultants. FCSI EAME members offer the most professional independent advice to the catering and hospitality industry.","logo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACW0lEQVR42mP4DwT//v0nBP79/fcPpgzOYAAy/v75/fzRvZd3L314ePn7h1ffvv388e3775+/v3/9/uPbj49vPnx69xGoDKgfyP749uOf33++fvr6+9dvhj9//ry9d+HmlUsXTxy6sqrh/ML8qVlVmZbZWeYZpW7F3SmdUcrhMSqRc6pnLWiYF68dE60S0RLVVB9au33+NoYXz55+/fz5359fT05tuLKu/crCzHWVMSn68etmr81zzM6xylozfXVrZos3n0eeTfaMqmmLJi4sDyzNME1d1rGE4f7Na99//b17cMn52amnl7ccnVfeGZGZY52+qn9lqWdRR0Ib0G9v375dv3hdsXthpHxYS2zTjOppQOes6F7GcP7Izg9vXh7evGRTZ9LxSTHru7Li9OPD5IIzrNJybbMn5PQDNQO9d2Tr4Sm1k6bWTk6zSA4Q9c00T9s8axPD9Qunbp47AlRx/sThw/0Rt/cvSzZJzjJJffvxbXloqS+f55aZm+ZUzXRktCtzL9m+YNvamWt8hbziNWI3zdgIDLC/Xz59+Pf3941rV3Yu6n7z9H6OW1ZdeA3QuHOnz1WFl4cpBUdrRM5rmtNX3BMo4xetHtEYU1cVXLF57iYGYKB/ef/55ePnNy7fePzw2fvXbx/effD8ybPP7z9/+/Tt2dNnNy5dv3v97ucPn58/fXb13NUbF64/efjk0b2HX798ZXj77M39q/fuXb77+OajJzcfPb//7NGNhw+u3n9y5zFQ/OmdJ09vPwFKvXjw/Pm9Z09uP35w5d6j6w+B6j+++cjwnwIAANrP6CLgu/XOAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/bd54ac04e2ded3ed64e999a86faee236/66bcc/clientLogo.png","srcSet":"/static/bd54ac04e2ded3ed64e999a86faee236/1170e/clientLogo.png 45w,\n/static/bd54ac04e2ded3ed64e999a86faee236/b572f/clientLogo.png 90w,\n/static/bd54ac04e2ded3ed64e999a86faee236/66bcc/clientLogo.png 180w,\n/static/bd54ac04e2ded3ed64e999a86faee236/82fd7/clientLogo.png 360w","sizes":"(min-width: 180px) 180px, 100vw"},"sources":[{"srcSet":"/static/bd54ac04e2ded3ed64e999a86faee236/5dad5/clientLogo.avif 45w,\n/static/bd54ac04e2ded3ed64e999a86faee236/c43d0/clientLogo.avif 90w,\n/static/bd54ac04e2ded3ed64e999a86faee236/eb5e1/clientLogo.avif 180w,\n/static/bd54ac04e2ded3ed64e999a86faee236/5c09a/clientLogo.avif 360w","type":"image/avif","sizes":"(min-width: 180px) 180px, 100vw"},{"srcSet":"/static/bd54ac04e2ded3ed64e999a86faee236/1b4b4/clientLogo.webp 45w,\n/static/bd54ac04e2ded3ed64e999a86faee236/62960/clientLogo.webp 90w,\n/static/bd54ac04e2ded3ed64e999a86faee236/07011/clientLogo.webp 180w,\n/static/bd54ac04e2ded3ed64e999a86faee236/b4645/clientLogo.webp 360w","type":"image/webp","sizes":"(min-width: 180px) 180px, 100vw"}]},"width":180,"height":100}}},"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEqUlEQVR42m1UaVCVZRi9l8uOlQqyN1mxg2wBjgJhJSq7bMplk5TYBCZkm1gESgFJViORbcDBQdCBAYGByWvs0bCNbAMGAYkK9iMz+MGv0/O+LPGjH9+897v3Puc9zznneQRSAiGEAgF/dj5LCYWQFokgkpKCgN73PkpKSrC0sICSoiJ/363ZPgU7L6z4fwEUFGFmaorwsHBUVFZidGwML1+9wuEPDm8BUo1wDykOuBdAXk4Oerq6CA4Kwq2SW+jr68PzlRX89eZvvH79J/54voKFxd8R6B8A0yOmOLj/wC7YNpYAKsrK8PXxQU5ODtrb27G6tor19XVsbm5iY2MDg4ODiIyMQm1NLfr7+5GUlIwAcQCuXImHq4srJ7LTKQcMDAzExOQkhkeGkZaWhrzcG1heXsb8/DxWV1dRUVEJ22PHUVRYhF+GhhD3dRySEhLh5uoKq0+soCivsKsnBzxqY4P0tHS0trZCW0sL5qbmGB0d4+1OT0+j4X4DkhKTUHb7NsrLy9HU1IS2R+24U3YHYj/xLtguINNBLBajvr4eB97bD2u6dWRkFD09PZhfWMC9untIS01FArVoRrpFhEcg9NIlZGRkwMXJeQtQuAfQxNgEKd+kwNfbByL68qi1DSYmJgl0GL29vSgpLkHm1Qx4nfWEpbklrlI36SRNfFw81RpzQBF3e9sUR0dHVFdX49usLHi4uePk518QozQuQ35BPqIvR5NpvtDX1ePsiwoLIZFIMEAGJZNBDENGJP0fQ/ZH1kp4WBiiIiJR+sOPSExIQh21mn09m2tWW3sXYaFfwdvLG9evXeNPSXEx/M77QVpKBFlpGX4KGKqqyiGoHVJFakoqZ1pFAS4tLUUluXvM5iiioy7j+7w8BFEamGbMnPsNDfBw9+DsFOTksU9RiZ8CkVCKgqyHhIQEPHj4EM3NzcjNyUUzsXrQ2IjzvucgJhYWZubcMHtbO3RQVlmkJJInuPjlRd4dM5b9zifFw90dP/d04+bNfKSSm3NzczwuAwMDvLCivAI+3r5wdXaBp8dZFBcVo7OzE9VVVcjMyITT6TPQVNeAhpo6BIyqtqYWDPQNKKhuXPCOjg5MUtDHx8fJ6RE8fvwTurq6MEqfWaBjY2K4y9nZ2UhOTsYJBwfofKSDD9l8s5TLycpyLSyprc8cTlBBLLq7u9Ha0sqZtLW1obysnAOdI7eZOXV1daipqaFkfMeTwRjqfqyzpSGznJ2MMssgu9nL0xPmdMGF4GAU5Bdw3Zgx7lQcFBCIBjJldnYWMzMzGBr6lVrPgh3pu7W+hFtry8fbm48fC7W/2B9GhoYIp6m4S5FhAWcmtLQ8wrNnv9GMr+Ht23/whrbQ2toalpeW+YwL5GRkud3sZHMcEhKCHGJof9wWgcSkk7STPJFgmpgsLCzixYuXWFpcwtOnEwTewqcoNjoGPpTPT+3sIWBWsxyyhy3Tnf2oclCZR4mZMzU1RY4PopHavEGbKIYm50JQMI/UacdTsKPLmVTmpmZbgOqqatDS0OQuGRsa4QjN9vta2nh33zu0BEIRQdva+YwTzyArsrGy5uN56qQjB2MZNTEyhqG+Af4FpvlIvkbaKVIAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/fd962eb9870635d151007d855ece5f8a/d6138/cover.png","srcSet":"/static/fd962eb9870635d151007d855ece5f8a/15e42/cover.png 100w,\n/static/fd962eb9870635d151007d855ece5f8a/5aead/cover.png 200w,\n/static/fd962eb9870635d151007d855ece5f8a/d6138/cover.png 400w,\n/static/fd962eb9870635d151007d855ece5f8a/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/fd962eb9870635d151007d855ece5f8a/6d0de/cover.avif 100w,\n/static/fd962eb9870635d151007d855ece5f8a/f2685/cover.avif 200w,\n/static/fd962eb9870635d151007d855ece5f8a/4ff31/cover.avif 400w,\n/static/fd962eb9870635d151007d855ece5f8a/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/fd962eb9870635d151007d855ece5f8a/d8057/cover.webp 100w,\n/static/fd962eb9870635d151007d855ece5f8a/2e34e/cover.webp 200w,\n/static/fd962eb9870635d151007d855ece5f8a/416c3/cover.webp 400w,\n/static/fd962eb9870635d151007d855ece5f8a/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["3 senior fullstack developers","1 UI/UX designer","1 QA engineer","1 DevOps engineer"],"screenshots":[{"id":"3b2b5d19-4d34-5935-ad1e-da5290ebcefe","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABlUlEQVR42q1T207DMAzt//8aaLCxPU1ibbfe1ubSpPe1PdgZRbAHGIhIR3F8OY4dx8sKhfP5jCwrUAiJopCo6xpt2/4KHGOMgWdMgySpidAiDDP4foayrMBrnucfgWWn1fc9PGsbaN2haTrkeU5kJckNpmnC5TJiImcHOn/FjHEcnTwMg/Ntu45uaCvkhUBprCs5Sc+wVYOm7RHFKU5R7Gx121HA4FDVLfkqsiXQpYGQGn4Qut1jxWq1wma9xnb7gsPhgCxNYS21IAiw3myQxDGEEK5HVVUhik54fHjE6umZWpW5isIwJBzhKa3xSiRJktCDFC5QSOn2KIroFhHk+3mxs6/v+wgoIROyLqakKckel8OZGdw/TQkYLLOOb8ryZyz6xcb+LCtdMqGBVOqD6F6omxgmZh7XQ/UHwlswoZD/QMixSzxPiStZKTLoKzT35F5o7ie9AfeTXl9SvFfRl7myC2ccx+l+0FBbmmNdXok5gSdpGE9xTsOtYEpLc1Y7sGPX9fQDLt/ieDxiu9thv98jTVO8AfAq4PK0oLOUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/bf10ad7536ab9f2b774c1bdb12a8fe80/2d1ab/screen1.png","srcSet":"/static/bf10ad7536ab9f2b774c1bdb12a8fe80/9cacf/screen1.png 158w,\n/static/bf10ad7536ab9f2b774c1bdb12a8fe80/11f10/screen1.png 316w,\n/static/bf10ad7536ab9f2b774c1bdb12a8fe80/2d1ab/screen1.png 632w","sizes":"(min-width: 632px) 632px, 100vw"},"sources":[{"srcSet":"/static/bf10ad7536ab9f2b774c1bdb12a8fe80/0a0f9/screen1.avif 158w,\n/static/bf10ad7536ab9f2b774c1bdb12a8fe80/fd26b/screen1.avif 316w,\n/static/bf10ad7536ab9f2b774c1bdb12a8fe80/7625e/screen1.avif 632w","type":"image/avif","sizes":"(min-width: 632px) 632px, 100vw"},{"srcSet":"/static/bf10ad7536ab9f2b774c1bdb12a8fe80/e0fee/screen1.webp 158w,\n/static/bf10ad7536ab9f2b774c1bdb12a8fe80/79584/screen1.webp 316w,\n/static/bf10ad7536ab9f2b774c1bdb12a8fe80/59dcb/screen1.webp 632w","type":"image/webp","sizes":"(min-width: 632px) 632px, 100vw"}]},"width":632,"height":424.00000000000006}}},{"id":"48b9b24f-d85b-5ac0-b404-904d76aeab08","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACLElEQVR42pVT2ZKcMBDj/z8vedolMwyHsQGby9zHKHJvKpWnVEJN12C3rVarRVSaFko1KEvLcOi6AcdxYN93rOv6j7FgnmeM44hIKYuPjxJxbPD5qdE0HRMDhmHEfd/4n+c8T0Rt6whSwTY1WtfA2hpVxbW1cuBvz8V6530B987fThITomGcMPoZ87KjH8L7Aj8tmOYVnjH8ynW9l9yyHr/OzXCth2Mn0+hQK400rxCVukZeaDyeCt++x3hlGqbqUNU9dNBXtyi1k/1c1ZIrqLcKQe216Xi/kX1F0MhPM/q+Q5amSF8JjDFYlgXbtqJtA5hFoQx0WcI5x70OjW1lAHVtJZ9mGbz3JFEj6vpBQB7PB+IfMf+fkuj7nhVLPJMCySsji4JaN9S3RpoW0JotphnzigN9MGfJkoBt1wtgxiqBpVKK1ukEMOyLJLlCznwACQMzpiK7RgqGfLgb7miej0Y/yeJJZnH8yUuleCr4y7mW7dYoqHEoZK2TqGontqqqhvkGSZJyPaBmB7RNL5WTJKGGqbAMzIKuRaGoj5YWAwujjZx9yTrHi1JkOeV6JGKzUv/BMDDIMoJVBvM0yWA6DkXr8AVVqFgkFAo6WjIPkoShGGOl9WnyHJZFtG07Ljp0XTcB2fdD1iHO88K6HfwUL7zfbzHzfb+Zu77eecZPG305//ZnFLQYhqDZQYC3XN73k3FJTLTVQeAA9AV4c4/GHr1o7bqVvhzoVy9e/Alt2tmheTD1KQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/5d5f1cba8fd5c76a67889cb89099d7af/f376b/screen2.png","srcSet":"/static/5d5f1cba8fd5c76a67889cb89099d7af/9cacf/screen2.png 158w,\n/static/5d5f1cba8fd5c76a67889cb89099d7af/11f10/screen2.png 316w,\n/static/5d5f1cba8fd5c76a67889cb89099d7af/f376b/screen2.png 631w","sizes":"(min-width: 631px) 631px, 100vw"},"sources":[{"srcSet":"/static/5d5f1cba8fd5c76a67889cb89099d7af/0a0f9/screen2.avif 158w,\n/static/5d5f1cba8fd5c76a67889cb89099d7af/fd26b/screen2.avif 316w,\n/static/5d5f1cba8fd5c76a67889cb89099d7af/5d562/screen2.avif 631w","type":"image/avif","sizes":"(min-width: 631px) 631px, 100vw"},{"srcSet":"/static/5d5f1cba8fd5c76a67889cb89099d7af/e0fee/screen2.webp 158w,\n/static/5d5f1cba8fd5c76a67889cb89099d7af/79584/screen2.webp 316w,\n/static/5d5f1cba8fd5c76a67889cb89099d7af/b18e7/screen2.webp 631w","type":"image/webp","sizes":"(min-width: 631px) 631px, 100vw"}]},"width":631,"height":424}}},{"id":"12e301ae-11cf-5268-95ec-b995dbbe7756","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACPUlEQVR42o1Ta2/bMAz0//9ZbZdsHzZg67qldRInTizL8lN+O4l7OypNsWHAMAEERT1OxyPlaVPBGIsss0hTi7rucDqdME0njOP4XzYMPfq+R9u28JTKsVop+H6M5+eY4AVBLay1Dvh8Pv/T5nnGbUjslWVBZgkZGuR5Sp8iSRIopfjy8M5imqa/TB7s+g7zecDMuWTn1W2Huum4McHWMu/RtAPSrHgH67rO+d/H65tveL/MExilER4NU44NwoPCJojw9dFHsI+hdYF9qNASqCgKZHnOiw0ZNA7cAb5eIcuyxmarILVQcQKv7XouljiEIXa7AInWFLhj+rkTuqHQkvqF+lyLNf0BmOcl9V+j4zljUniVrclIY7PZYr32sd1unYZRpMimR9326EaCUXspwA3o5hOT4fvjD0fApBkBK+sAD4cDUw8JFDnG4uWSVK4l015YXmYX34okI01zvLz4qKoKOqGGTlQCBEFA6j7iOHY6SZWNMTy8xnK5xHKxwC7YYfVzheXHT3h6+kF5EurHtecXNE1DcDIsSksQRf122Ivt946x1jEWiyXu78UWeLh/YLwgsMQf3Pzu7gGfv3yDv96w3bI3hk3rKhlFR4QhwchQXhvHwa0rlSJS2j0i2orwGVtKspK5TnIcjxF/SUMdC3jyxUSbYRhZ1cFpI/FVrwvXT6zu5b0I8/zKvWssZ5p2RGWlj0+unz3prbruefH8BjI7gJu1rLJ4AboCzu7PShbSBUU1IIotlK5hshq/AGJb2vsqaawoAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b7372310ddbcd7cf5bf5f20517ce7eba/32a68/screen3.png","srcSet":"/static/b7372310ddbcd7cf5bf5f20517ce7eba/69f94/screen3.png 159w,\n/static/b7372310ddbcd7cf5bf5f20517ce7eba/ceb78/screen3.png 317w,\n/static/b7372310ddbcd7cf5bf5f20517ce7eba/32a68/screen3.png 634w","sizes":"(min-width: 634px) 634px, 100vw"},"sources":[{"srcSet":"/static/b7372310ddbcd7cf5bf5f20517ce7eba/28f52/screen3.avif 159w,\n/static/b7372310ddbcd7cf5bf5f20517ce7eba/46f84/screen3.avif 317w,\n/static/b7372310ddbcd7cf5bf5f20517ce7eba/ee2c8/screen3.avif 634w","type":"image/avif","sizes":"(min-width: 634px) 634px, 100vw"},{"srcSet":"/static/b7372310ddbcd7cf5bf5f20517ce7eba/c37af/screen3.webp 159w,\n/static/b7372310ddbcd7cf5bf5f20517ce7eba/5ca84/screen3.webp 317w,\n/static/b7372310ddbcd7cf5bf5f20517ce7eba/c2b4b/screen3.webp 634w","type":"image/webp","sizes":"(min-width: 634px) 634px, 100vw"}]},"width":634,"height":424}}}]}}},"pageContext":{"id":"ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-project-tsx","path":"/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/","result":{"data":{"markdownRemark":{"id":"ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7","html":"

Plugin that maps parameters semi-automatically (using AI) or manually and convert your projects or family libraries to IFSE from virtually any standard or no standard at all (RFAs with just family parameters)

","frontmatter":{"stack":["React","JS","HTML","Node.js","NestJS","Swagger"],"title":"IFSE Parameters Tool for Revit","description":"The IFSE Parameters Tool for Revit is a valuable resource for ensuring consistency and compatibility in foodservice equipment design projects, facilitating the use of a standardized approach to parameter management within the Revit environment. The tool includes a feature called the Parameter Mapper, which allows companies to align their Revit family databases with these industry standards.","challenge":"Eliminate problems with Revit Parameters such as disorganization with Families parameter types, lack of unification and compliance with the Standards, specification issues","clientDescription":"FCSI is the only such consulting society in the world, with over 1,000 members in more than 35 countries worldwide. FCSI is a strong and active association dedicated to serving the needs of professional foodservice consultants. FCSI Europe, Africa, Middle East (EAME) serve professional design and management consultants in the foodservice and hospitality industry across the region. Founded in 1971, FCSI EAME is one of the fastest growing and dynamic divisions within the Society, setting the highest standards for foodservice consultants. FCSI EAME members offer the most professional independent advice to the catering and hospitality industry.","logo":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACW0lEQVR42mP4DwT//v0nBP79/fcPpgzOYAAy/v75/fzRvZd3L314ePn7h1ffvv388e3775+/v3/9/uPbj49vPnx69xGoDKgfyP749uOf33++fvr6+9dvhj9//ry9d+HmlUsXTxy6sqrh/ML8qVlVmZbZWeYZpW7F3SmdUcrhMSqRc6pnLWiYF68dE60S0RLVVB9au33+NoYXz55+/fz5359fT05tuLKu/crCzHWVMSn68etmr81zzM6xylozfXVrZos3n0eeTfaMqmmLJi4sDyzNME1d1rGE4f7Na99//b17cMn52amnl7ccnVfeGZGZY52+qn9lqWdRR0Ib0G9v375dv3hdsXthpHxYS2zTjOppQOes6F7GcP7Izg9vXh7evGRTZ9LxSTHru7Li9OPD5IIzrNJybbMn5PQDNQO9d2Tr4Sm1k6bWTk6zSA4Q9c00T9s8axPD9Qunbp47AlRx/sThw/0Rt/cvSzZJzjJJffvxbXloqS+f55aZm+ZUzXRktCtzL9m+YNvamWt8hbziNWI3zdgIDLC/Xz59+Pf3941rV3Yu6n7z9H6OW1ZdeA3QuHOnz1WFl4cpBUdrRM5rmtNX3BMo4xetHtEYU1cVXLF57iYGYKB/ef/55ePnNy7fePzw2fvXbx/effD8ybPP7z9/+/Tt2dNnNy5dv3v97ucPn58/fXb13NUbF64/efjk0b2HX798ZXj77M39q/fuXb77+OajJzcfPb//7NGNhw+u3n9y5zFQ/OmdJ09vPwFKvXjw/Pm9Z09uP35w5d6j6w+B6j+++cjwnwIAANrP6CLgu/XOAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/bd54ac04e2ded3ed64e999a86faee236/66bcc/clientLogo.png","srcSet":"/static/bd54ac04e2ded3ed64e999a86faee236/1170e/clientLogo.png 45w,\n/static/bd54ac04e2ded3ed64e999a86faee236/b572f/clientLogo.png 90w,\n/static/bd54ac04e2ded3ed64e999a86faee236/66bcc/clientLogo.png 180w,\n/static/bd54ac04e2ded3ed64e999a86faee236/82fd7/clientLogo.png 360w","sizes":"(min-width: 180px) 180px, 100vw"},"sources":[{"srcSet":"/static/bd54ac04e2ded3ed64e999a86faee236/5dad5/clientLogo.avif 45w,\n/static/bd54ac04e2ded3ed64e999a86faee236/c43d0/clientLogo.avif 90w,\n/static/bd54ac04e2ded3ed64e999a86faee236/eb5e1/clientLogo.avif 180w,\n/static/bd54ac04e2ded3ed64e999a86faee236/5c09a/clientLogo.avif 360w","type":"image/avif","sizes":"(min-width: 180px) 180px, 100vw"},{"srcSet":"/static/bd54ac04e2ded3ed64e999a86faee236/1b4b4/clientLogo.webp 45w,\n/static/bd54ac04e2ded3ed64e999a86faee236/62960/clientLogo.webp 90w,\n/static/bd54ac04e2ded3ed64e999a86faee236/07011/clientLogo.webp 180w,\n/static/bd54ac04e2ded3ed64e999a86faee236/b4645/clientLogo.webp 360w","type":"image/webp","sizes":"(min-width: 180px) 180px, 100vw"}]},"width":180,"height":100}}},"cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEqUlEQVR42m1UaVCVZRi9l8uOlQqyN1mxg2wBjgJhJSq7bMplk5TYBCZkm1gESgFJViORbcDBQdCBAYGByWvs0bCNbAMGAYkK9iMz+MGv0/O+LPGjH9+897v3Puc9zznneQRSAiGEAgF/dj5LCYWQFokgkpKCgN73PkpKSrC0sICSoiJ/363ZPgU7L6z4fwEUFGFmaorwsHBUVFZidGwML1+9wuEPDm8BUo1wDykOuBdAXk4Oerq6CA4Kwq2SW+jr68PzlRX89eZvvH79J/54voKFxd8R6B8A0yOmOLj/wC7YNpYAKsrK8PXxQU5ODtrb27G6tor19XVsbm5iY2MDg4ODiIyMQm1NLfr7+5GUlIwAcQCuXImHq4srJ7LTKQcMDAzExOQkhkeGkZaWhrzcG1heXsb8/DxWV1dRUVEJ22PHUVRYhF+GhhD3dRySEhLh5uoKq0+soCivsKsnBzxqY4P0tHS0trZCW0sL5qbmGB0d4+1OT0+j4X4DkhKTUHb7NsrLy9HU1IS2R+24U3YHYj/xLtguINNBLBajvr4eB97bD2u6dWRkFD09PZhfWMC9untIS01FArVoRrpFhEcg9NIlZGRkwMXJeQtQuAfQxNgEKd+kwNfbByL68qi1DSYmJgl0GL29vSgpLkHm1Qx4nfWEpbklrlI36SRNfFw81RpzQBF3e9sUR0dHVFdX49usLHi4uePk518QozQuQ35BPqIvR5NpvtDX1ePsiwoLIZFIMEAGJZNBDENGJP0fQ/ZH1kp4WBiiIiJR+sOPSExIQh21mn09m2tWW3sXYaFfwdvLG9evXeNPSXEx/M77QVpKBFlpGX4KGKqqyiGoHVJFakoqZ1pFAS4tLUUluXvM5iiioy7j+7w8BFEamGbMnPsNDfBw9+DsFOTksU9RiZ8CkVCKgqyHhIQEPHj4EM3NzcjNyUUzsXrQ2IjzvucgJhYWZubcMHtbO3RQVlmkJJInuPjlRd4dM5b9zifFw90dP/d04+bNfKSSm3NzczwuAwMDvLCivAI+3r5wdXaBp8dZFBcVo7OzE9VVVcjMyITT6TPQVNeAhpo6BIyqtqYWDPQNKKhuXPCOjg5MUtDHx8fJ6RE8fvwTurq6MEqfWaBjY2K4y9nZ2UhOTsYJBwfofKSDD9l8s5TLycpyLSyprc8cTlBBLLq7u9Ha0sqZtLW1obysnAOdI7eZOXV1daipqaFkfMeTwRjqfqyzpSGznJ2MMssgu9nL0xPmdMGF4GAU5Bdw3Zgx7lQcFBCIBjJldnYWMzMzGBr6lVrPgh3pu7W+hFtry8fbm48fC7W/2B9GhoYIp6m4S5FhAWcmtLQ8wrNnv9GMr+Ht23/whrbQ2toalpeW+YwL5GRkud3sZHMcEhKCHGJof9wWgcSkk7STPJFgmpgsLCzixYuXWFpcwtOnEwTewqcoNjoGPpTPT+3sIWBWsxyyhy3Tnf2oclCZR4mZMzU1RY4PopHavEGbKIYm50JQMI/UacdTsKPLmVTmpmZbgOqqatDS0OQuGRsa4QjN9vta2nh33zu0BEIRQdva+YwTzyArsrGy5uN56qQjB2MZNTEyhqG+Af4FpvlIvkbaKVIAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/fd962eb9870635d151007d855ece5f8a/d6138/cover.png","srcSet":"/static/fd962eb9870635d151007d855ece5f8a/15e42/cover.png 100w,\n/static/fd962eb9870635d151007d855ece5f8a/5aead/cover.png 200w,\n/static/fd962eb9870635d151007d855ece5f8a/d6138/cover.png 400w,\n/static/fd962eb9870635d151007d855ece5f8a/b7804/cover.png 800w","sizes":"(min-width: 400px) 400px, 100vw"},"sources":[{"srcSet":"/static/fd962eb9870635d151007d855ece5f8a/6d0de/cover.avif 100w,\n/static/fd962eb9870635d151007d855ece5f8a/f2685/cover.avif 200w,\n/static/fd962eb9870635d151007d855ece5f8a/4ff31/cover.avif 400w,\n/static/fd962eb9870635d151007d855ece5f8a/8dd3a/cover.avif 800w","type":"image/avif","sizes":"(min-width: 400px) 400px, 100vw"},{"srcSet":"/static/fd962eb9870635d151007d855ece5f8a/d8057/cover.webp 100w,\n/static/fd962eb9870635d151007d855ece5f8a/2e34e/cover.webp 200w,\n/static/fd962eb9870635d151007d855ece5f8a/416c3/cover.webp 400w,\n/static/fd962eb9870635d151007d855ece5f8a/c1587/cover.webp 800w","type":"image/webp","sizes":"(min-width: 400px) 400px, 100vw"}]},"width":400,"height":400}}},"team":["3 senior fullstack developers","1 UI/UX designer","1 QA engineer","1 DevOps engineer"],"screenshots":[{"id":"3b2b5d19-4d34-5935-ad1e-da5290ebcefe","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABlUlEQVR42q1T207DMAzt//8aaLCxPU1ibbfe1ubSpPe1PdgZRbAHGIhIR3F8OY4dx8sKhfP5jCwrUAiJopCo6xpt2/4KHGOMgWdMgySpidAiDDP4foayrMBrnucfgWWn1fc9PGsbaN2haTrkeU5kJckNpmnC5TJiImcHOn/FjHEcnTwMg/Ntu45uaCvkhUBprCs5Sc+wVYOm7RHFKU5R7Gx121HA4FDVLfkqsiXQpYGQGn4Qut1jxWq1wma9xnb7gsPhgCxNYS21IAiw3myQxDGEEK5HVVUhik54fHjE6umZWpW5isIwJBzhKa3xSiRJktCDFC5QSOn2KIroFhHk+3mxs6/v+wgoIROyLqakKckel8OZGdw/TQkYLLOOb8ryZyz6xcb+LCtdMqGBVOqD6F6omxgmZh7XQ/UHwlswoZD/QMixSzxPiStZKTLoKzT35F5o7ie9AfeTXl9SvFfRl7myC2ccx+l+0FBbmmNdXok5gSdpGE9xTsOtYEpLc1Y7sGPX9fQDLt/ieDxiu9thv98jTVO8AfAq4PK0oLOUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/bf10ad7536ab9f2b774c1bdb12a8fe80/2d1ab/screen1.png","srcSet":"/static/bf10ad7536ab9f2b774c1bdb12a8fe80/9cacf/screen1.png 158w,\n/static/bf10ad7536ab9f2b774c1bdb12a8fe80/11f10/screen1.png 316w,\n/static/bf10ad7536ab9f2b774c1bdb12a8fe80/2d1ab/screen1.png 632w","sizes":"(min-width: 632px) 632px, 100vw"},"sources":[{"srcSet":"/static/bf10ad7536ab9f2b774c1bdb12a8fe80/0a0f9/screen1.avif 158w,\n/static/bf10ad7536ab9f2b774c1bdb12a8fe80/fd26b/screen1.avif 316w,\n/static/bf10ad7536ab9f2b774c1bdb12a8fe80/7625e/screen1.avif 632w","type":"image/avif","sizes":"(min-width: 632px) 632px, 100vw"},{"srcSet":"/static/bf10ad7536ab9f2b774c1bdb12a8fe80/e0fee/screen1.webp 158w,\n/static/bf10ad7536ab9f2b774c1bdb12a8fe80/79584/screen1.webp 316w,\n/static/bf10ad7536ab9f2b774c1bdb12a8fe80/59dcb/screen1.webp 632w","type":"image/webp","sizes":"(min-width: 632px) 632px, 100vw"}]},"width":632,"height":424.00000000000006}}},{"id":"48b9b24f-d85b-5ac0-b404-904d76aeab08","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACLElEQVR42pVT2ZKcMBDj/z8vedolMwyHsQGby9zHKHJvKpWnVEJN12C3rVarRVSaFko1KEvLcOi6AcdxYN93rOv6j7FgnmeM44hIKYuPjxJxbPD5qdE0HRMDhmHEfd/4n+c8T0Rt6whSwTY1WtfA2hpVxbW1cuBvz8V6530B987fThITomGcMPoZ87KjH8L7Aj8tmOYVnjH8ynW9l9yyHr/OzXCth2Mn0+hQK400rxCVukZeaDyeCt++x3hlGqbqUNU9dNBXtyi1k/1c1ZIrqLcKQe216Xi/kX1F0MhPM/q+Q5amSF8JjDFYlgXbtqJtA5hFoQx0WcI5x70OjW1lAHVtJZ9mGbz3JFEj6vpBQB7PB+IfMf+fkuj7nhVLPJMCySsji4JaN9S3RpoW0JotphnzigN9MGfJkoBt1wtgxiqBpVKK1ukEMOyLJLlCznwACQMzpiK7RgqGfLgb7miej0Y/yeJJZnH8yUuleCr4y7mW7dYoqHEoZK2TqGontqqqhvkGSZJyPaBmB7RNL5WTJKGGqbAMzIKuRaGoj5YWAwujjZx9yTrHi1JkOeV6JGKzUv/BMDDIMoJVBvM0yWA6DkXr8AVVqFgkFAo6WjIPkoShGGOl9WnyHJZFtG07Ljp0XTcB2fdD1iHO88K6HfwUL7zfbzHzfb+Zu77eecZPG305//ZnFLQYhqDZQYC3XN73k3FJTLTVQeAA9AV4c4/GHr1o7bqVvhzoVy9e/Alt2tmheTD1KQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/5d5f1cba8fd5c76a67889cb89099d7af/f376b/screen2.png","srcSet":"/static/5d5f1cba8fd5c76a67889cb89099d7af/9cacf/screen2.png 158w,\n/static/5d5f1cba8fd5c76a67889cb89099d7af/11f10/screen2.png 316w,\n/static/5d5f1cba8fd5c76a67889cb89099d7af/f376b/screen2.png 631w","sizes":"(min-width: 631px) 631px, 100vw"},"sources":[{"srcSet":"/static/5d5f1cba8fd5c76a67889cb89099d7af/0a0f9/screen2.avif 158w,\n/static/5d5f1cba8fd5c76a67889cb89099d7af/fd26b/screen2.avif 316w,\n/static/5d5f1cba8fd5c76a67889cb89099d7af/5d562/screen2.avif 631w","type":"image/avif","sizes":"(min-width: 631px) 631px, 100vw"},{"srcSet":"/static/5d5f1cba8fd5c76a67889cb89099d7af/e0fee/screen2.webp 158w,\n/static/5d5f1cba8fd5c76a67889cb89099d7af/79584/screen2.webp 316w,\n/static/5d5f1cba8fd5c76a67889cb89099d7af/b18e7/screen2.webp 631w","type":"image/webp","sizes":"(min-width: 631px) 631px, 100vw"}]},"width":631,"height":424}}},{"id":"12e301ae-11cf-5268-95ec-b995dbbe7756","childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACPUlEQVR42o1Ta2/bMAz0//9ZbZdsHzZg67qldRInTizL8lN+O4l7OypNsWHAMAEERT1OxyPlaVPBGIsss0hTi7rucDqdME0njOP4XzYMPfq+R9u28JTKsVop+H6M5+eY4AVBLay1Dvh8Pv/T5nnGbUjslWVBZgkZGuR5Sp8iSRIopfjy8M5imqa/TB7s+g7zecDMuWTn1W2Huum4McHWMu/RtAPSrHgH67rO+d/H65tveL/MExilER4NU44NwoPCJojw9dFHsI+hdYF9qNASqCgKZHnOiw0ZNA7cAb5eIcuyxmarILVQcQKv7XouljiEIXa7AInWFLhj+rkTuqHQkvqF+lyLNf0BmOcl9V+j4zljUniVrclIY7PZYr32sd1unYZRpMimR9326EaCUXspwA3o5hOT4fvjD0fApBkBK+sAD4cDUw8JFDnG4uWSVK4l015YXmYX34okI01zvLz4qKoKOqGGTlQCBEFA6j7iOHY6SZWNMTy8xnK5xHKxwC7YYfVzheXHT3h6+kF5EurHtecXNE1DcDIsSksQRf122Ivt946x1jEWiyXu78UWeLh/YLwgsMQf3Pzu7gGfv3yDv96w3bI3hk3rKhlFR4QhwchQXhvHwa0rlSJS2j0i2orwGVtKspK5TnIcjxF/SUMdC3jyxUSbYRhZ1cFpI/FVrwvXT6zu5b0I8/zKvWssZ5p2RGWlj0+unz3prbruefH8BjI7gJu1rLJ4AboCzu7PShbSBUU1IIotlK5hshq/AGJb2vsqaawoAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/b7372310ddbcd7cf5bf5f20517ce7eba/32a68/screen3.png","srcSet":"/static/b7372310ddbcd7cf5bf5f20517ce7eba/69f94/screen3.png 159w,\n/static/b7372310ddbcd7cf5bf5f20517ce7eba/ceb78/screen3.png 317w,\n/static/b7372310ddbcd7cf5bf5f20517ce7eba/32a68/screen3.png 634w","sizes":"(min-width: 634px) 634px, 100vw"},"sources":[{"srcSet":"/static/b7372310ddbcd7cf5bf5f20517ce7eba/28f52/screen3.avif 159w,\n/static/b7372310ddbcd7cf5bf5f20517ce7eba/46f84/screen3.avif 317w,\n/static/b7372310ddbcd7cf5bf5f20517ce7eba/ee2c8/screen3.avif 634w","type":"image/avif","sizes":"(min-width: 634px) 634px, 100vw"},{"srcSet":"/static/b7372310ddbcd7cf5bf5f20517ce7eba/c37af/screen3.webp 159w,\n/static/b7372310ddbcd7cf5bf5f20517ce7eba/5ca84/screen3.webp 317w,\n/static/b7372310ddbcd7cf5bf5f20517ce7eba/c2b4b/screen3.webp 634w","type":"image/webp","sizes":"(min-width: 634px) 634px, 100vw"}]},"width":634,"height":424}}}]}}},"pageContext":{"id":"ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7","lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/projects/page-data.json b/page-data/projects/page-data.json index 85ab13fe..39c6b328 100644 --- a/page-data/projects/page-data.json +++ b/page-data/projects/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-projects-tsx","path":"/projects/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb","frontmatter":{"title":"Bimcore Revit Add-In","teamSize":"4 specialists","duration":"3 months","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEiklEQVR42i1UR0xcVxT9ptmmmN6HYps+tAGMgaENzNAUTBsItjEQaoJpZug2diBCCg4YK3R5aF4gjBeAKAIEZhVLCBEJIpYs2CCxccwWCZ28e8lIXzPz/rvnnXfuOVdyc5XB6959hAaH4q6Hp/gOgauzC6+5OLnAycERYaEKWN2xFP+dYWRgyPvsbGxxx9yC31tbWsP01m0YGxpBopd+Pr6ICIuA930vhCvC4C5zQ/TDqP9BnREZ8UAUWSEwQA7T26YM6GBnD0uLO3B2dIKttQ3MTc1gYmQMiYpCgoKgjI5h4PjYeN7065s3yNdqmYkqUQULM3P0/9HP4NfMnZi1zMUV9gKc3jOgj5c3g/X93odYpRLDQ0MIlMsx0N+P0uISuIqC0dFRZq7XT0KlUjFruX8AH0wPsTcTzBmQWNH1ZqZnBLs4LC4uIj9Pi4WFBYyPjwsGMiwtLeN112vsbO+grrYOpSWl4sABZD3KQs0vNay7o4MD6yv5evsgPTUNa6trYsMjrKysQJuXh7d9b/FbTw/ilLFYFWtjo2PY2dlBa2srg01PTQngEvE9jZedLxEeFg5Jkq4ZpmhSBLMlNDW+wNHhEXq6u7nTQfJA7O7u4vLykpmQXvQQ8OjIGNpb2/Dlyy5mZmYYgwGpiGyRGJ+AHwsKcPTPEaYmJ2FvaweNWoPT01PQZ3VljQs0ajW+/fsNZ2dnTOLk5ARf//qK8rKya0ASlzQgS8RERQututCsa2bAxvoGXF1d4eLiAt+/X4jGhKOurg7ra+sYGR7B4OAgwhQKeLi5s3XYh/6+fiAdCfSe51309vbi3btBXlMnq3F+fs4M9/b2xKGBWPj0CUVPnnJjNjc30dnRCR+xl9jdMrl5DVhVUcldzPwhE91Cv6eigDQj+8Qr4/BCaBvg588+zcnOEeyGsbGxgaE/h7C9vY0PH/TsT+4ypSNFo+Gu6nQ6aIWZCaChvpFPJp+2t7WzyWNjlKgor0R19c8YGBjA54XP0DXpMKnXo76+HoY3DCBRzOhhg4sCbV4+KiuqBJM80e0evB98j7m5OSwvL7N+1E26TW3Nc7bPxMQEggOD+Mo3jU0gkdPJCrRIBs/KzIY2V4uI8Ag8KyoSRq5lP5Lx5+fn8biwEAWCLXlX19TMASCpDKQb1xpSVik61IQnhY/R9eqViNoY0lJTOWLFz4qRm5OLNmFoYktpahbSEOvj42OxvwtRkVE8LCh+Eo0gKiRgEra6qgqNDY2gsUZS5GZl86DY2tzC1tYW3GQylBQXM+DB3wdoaWlh9pQoGytrSHRvT3cP9lFIUDAPhLLSn3iU0awLFWvky4ODA8zOzIqhIEd2VhbW19dxeHjIJPSiKcmqJLadREUF+QVMma5NgyFJjCuF8CUxpENaW1qxv7/PUpADiCE17OPsR3S0d4iUlEOdlMyJY0CKHy2WCHYPH0RCERLKWSYZKEnkTWJTLyYNRbS6sgrPRZfbRJarxO+MtHS+Mj0SRYzEJHZ0AnWdrksPgVKsMtIzOKsERgcmxMUjWTAiVxAIrdOtVAmJ+A/qkhVxc4KB0AAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/08f0b4d049f4e024d92a458deddda5ce/c7240/cover.png","srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/de3a1/cover.png 150w,\n/static/08f0b4d049f4e024d92a458deddda5ce/30cdc/cover.png 300w,\n/static/08f0b4d049f4e024d92a458deddda5ce/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/81307/cover.avif 150w,\n/static/08f0b4d049f4e024d92a458deddda5ce/aa5b9/cover.avif 300w,\n/static/08f0b4d049f4e024d92a458deddda5ce/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/c65bc/cover.webp 150w,\n/static/08f0b4d049f4e024d92a458deddda5ce/078c3/cover.webp 300w,\n/static/08f0b4d049f4e024d92a458deddda5ce/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"4057e0b3-692b-5512-a1fc-cb93bd81fe0e","frontmatter":{"title":"DevOps monitoring system","teamSize":"3 specialists","duration":"ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABCcAAAQnAEmzTo0AAAFMUlEQVR42iVUWVBTVxi+z44gKAGRBBBRUFlkLyIapVRBZQBDkCWBQJSwRSWADgkgIBAVVMQEJEZZAlEgQFxAFmurganjTOGhTnVGO4I61hk7PvjgU/3639OHM+fem5zzf/+3/JyqSIVrndfQ0tyMspJSBG4JQNL+/ZAckaBEVYwChQKy7GykHk5BWmoqjhUqYbPZsPLuHYqOH0d6ahrS09Lg5ekJf79N4EKDQ+llA3Kzc1BdVY01Ts7sUkn6ETpciNLiEpwoL6e9GEelmTjX2ISUQ4dxMCkJpSXFUBYW4PDBQ+xiT4/14MLDwqGmA/sTf8LuXfHw9fZhzyfK1VCXlaGvtw9vl5fx96dPePrUgeioKLi6uCA6Mgq1Oh1ysrIQQ9/i43ZBRYi5nKxs2O12avMAgrcHQ5aTg2PKQvbjXfsEvn79io8fP+LDhw/49u0blhYXERIcDME6N+zdI8Y+WtsCt2J0ZAQvXvwBLoYq7RPvhaqoCAeTk5Evl6OqshKX2i9hft6BcdsoHty/z9bwHSt+efwYz58/x9DgIJIPJMHdTYATajWMBgMCNm8BJ9ogxG6Cm5jwIxR5ctTptHi3soJ/v3/HzZtmar2MKClDsaqIirTh3l07lpff4suXL3g49RDhO8IQFREBF+c11Ho0OOfVThB5CeHs5ISjmVIszM/j/fv3ePPmL9TX1iI1JYUh0WlrMDc3i6WlJaxQwYH+fty5bcXnz/8gM0OK40olrl3tAOe/yR+rV63CduLBOjiE169fY2ZmBo/m5qCpqMCe+Hgo8uU419SAW4R4bnYWi4u/E8plav9ndFy5gi6jAWfr6qA9cxqcNCMDGZIM5q87Viv6+/oYj2p1OQYHLIwrG/HYSdWNhk7icRjjY2OYmpyklqdwproSjfW1aNO34HzLOXCVhIJXtLmpCW0XLkAuk2HnD7Gop4pPfn3CRHA4HHj58k/oamqI6wQ01NfjvL4VFSdPwnD1Cgwdl2G63o2mhkZwZaWl0Ov10NKfdVotqiurmLd41UaGh2Hq6WF8PXv2GxYWFpCwdx8tMfJJQM2pCtTSmZ7uboyPj1P7xGGJSoUj6enooYNnqfKZ06chz5UhOiISh8hGJ8kS/K4sUDCzBxHXfJKCtwchJjIaeTI5bphMVHQAjY2EsK+3F91dXejuNqL94kWKVDK8hUK4ua5lUdro44sdIaHMvJ7u67HB3QN+9M1/ox82k6ASAjM6OgL7xDimpibB9VM70/RgHxshgquxNSAAQso2fxmfBt5fIqEIAoEAHgJ3CNaug6/IG9sCAhG3M44ckI/eWzeZ8Xkw3OS9u7ANW2Hu6SbptchIT0NYSAjc6CB/mZvrOkIsYgXWEzoPSgZ/YRRRkn00C6dIGJOpB5WaSkSGR4B7QBeODN9mVXgf5eXmIkEsRkhQEBtHvOm9aQm9vBhCPl7i3XuQTTNAV6MlIS4zG7169QrT09PgjAYjmXgWnR0duHr5EtovXARvJV6EpMRE4i6Qccoj9PPdiJ0xsZCSb/n5abUO4T4BamxoIOM3oUqjAecj8mFkH6CRZb5hoqxOYMjSTyZthiw3hwaHmLUSFxuLnOwsak1DA7mTzcU6iqbDMY/WllZK22qEhYb+78NNpJivjw8K8hWs/YkxGyXiNmtHU3GKhkYe2/nhYL5hxqDFwnyqVBQQNcHwoRnqusYF7W1t4PjhKpVImAD8JNZTtS6jkWV2Zmaaxc5sNkPf2oKe69dhGRigOFpgIXfUEOc8DTw6XsRMqRT/AbN9kxzlNuWvAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/c884efc5b3a893cd66340687b7f94bd3/c7240/cover.png","srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/de3a1/cover.png 150w,\n/static/c884efc5b3a893cd66340687b7f94bd3/30cdc/cover.png 300w,\n/static/c884efc5b3a893cd66340687b7f94bd3/c7240/cover.png 600w,\n/static/c884efc5b3a893cd66340687b7f94bd3/e8b76/cover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/81307/cover.avif 150w,\n/static/c884efc5b3a893cd66340687b7f94bd3/aa5b9/cover.avif 300w,\n/static/c884efc5b3a893cd66340687b7f94bd3/0c8d0/cover.avif 600w,\n/static/c884efc5b3a893cd66340687b7f94bd3/e65b9/cover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/c65bc/cover.webp 150w,\n/static/c884efc5b3a893cd66340687b7f94bd3/078c3/cover.webp 300w,\n/static/c884efc5b3a893cd66340687b7f94bd3/6d09e/cover.webp 600w,\n/static/c884efc5b3a893cd66340687b7f94bd3/83805/cover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"9f63d17d-6164-509e-b2c7-4c655ab9ad7a","frontmatter":{"title":"Web & Mobile apps for a logistics company","teamSize":"7 specialists","duration":"3 months","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEyUlEQVR42mVUaUxUVxR+MCyDAgNVZLGCFqggIAEURGBQ2WxALasOSGXXsCiLQRjZBgcFyyqLSZUUoVi1xIoVpCjEEjGpTE1wbApIjKggIcRCIgm/+HruRWiaTnIz7+W++91zvuUIGoIATQ0N6InFMDYyQkpyMiw3WcJgrT5M1q2HlaUlfLy9YahvAB1tbQj0/ZbNW7Db05M/a9BZhrGyBE1Bg2+sM/4MmzZ+Dnm+HLdv/4zYo7EQaWgiOTEJ4+PjUJQokJ6WBkcHB5iZmmKbnT20tbRgZGAILZHoX8DVh0+3sWqjIqMQ4OcPczMzJCUkYmlpCVNTU/j7wwcUFhbC1GQDXF1c4L7THc5OzpAYGv4fUEtTxEHNTc1QU12DqqoquLm4QiaTYXFxEW/fvsXCwgKU55QQ6+jCwtwcItHyGeE/LbOqNDV5dTnZ2Rh8/BiTk5O43t6Oo9ExKCooxMzMDF69eoW5uTmcKz3HAWysreG5axdiY2Ph5uoKsa7OMvgKsohAE4mv1tZWtBPY4YgoSL28UFxYhJGRv/Ds2R9482ZiFZC13tfXh65793A0JgZr16xZqVaA7IiM83Y8OQWNjY3Izc2FE5FvZ2ML2eEjeDI4iKdPf8fLl2MoUyrhQdzlnckjaqohlUo5EGufC8wqCw8LQ1BAIBISElBRUQGFQsH5s/3CGgeDQ/DTrVt49OgRhlRDqK2txemc02SvFCjLlNi3d98yIKONVci8t8PNDSeOn8CPP1znh0tKSuBgvw0bzS3wVdB+3Lx5E93d3RgYGMDFiosoKCjg/J6hTqTePhxQYrCstCDPy8flpssYGqLba2qQmXEKWSczsdnSChak+P7AIDQ1NqGz8w7U6ue8ZXZJVHgkD4GHuzu3kfN2Z+5HoYnAGBetLddI5RwkxifAe7cXttp+CQszc/h4eaPhUj0qv63kAiiKS6gqKTf8WQoB29fV1qEKJdDRoiQ9V6tRUV7BDbzXdw+ar15F551OfvBkegYyaFVXVvG21S/UqKqsRD4JIiWgHS5usKKYssTYb7UjUAMIFAIerQe9D7jnjsV+g9evX+PXnh4E+vvjxo0b1KqaGzrs61BevbPTdq5+/LE4hAQHw4+EYSKu1SPrvFD/iV/u3uUqMvXY4fn5eTwmg7e1tZFlnuDhg4doa22jCwJgJJHAgAZFRno6VV6Jhvp6RIZHIDsri+dbeP9+Gmflchwge5iuN8Gl2jqMjY2ht7cX1VXVRLoHT8Lw8DC6urqQkpSM4qIipKamUt79kHkqE8lJScRpIowlRhBYnO7f70FzczMiwsLxPf3L8/N5pteI9aAt0uItMVqmp6cx8NsAwkPDuFX2+PpyekZGR0mwLpQqSiE0NjSirq4O7KdSqZBH3mI3MU+ZbTDl08eGDM4ccOW7K5xjsa6YA5pQRwdDDnDfxhGf+jRDhWqyDKts4eNHGgyD3AZsuDIw5q89Ul9yQTm8SAxmqfPKMsTIohEZEcFNLRaLVycOX7Ozs+jo6ODEq4ZUCD10iPtK+FRhemoan+DsPSY6Gv39/ZTpl3y82VLWWX5Z7Fajx0bVxMQERomHd+/eYZw+vtbSQlOlFOUXLnCx2CE9anOn2w4kxMXDydFxtSK2t7IY4D+VxTwvM1HkzQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/fbf2d2e82f22409b4359437047ddb547/c7240/cover.png","srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/de3a1/cover.png 150w,\n/static/fbf2d2e82f22409b4359437047ddb547/30cdc/cover.png 300w,\n/static/fbf2d2e82f22409b4359437047ddb547/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/81307/cover.avif 150w,\n/static/fbf2d2e82f22409b4359437047ddb547/aa5b9/cover.avif 300w,\n/static/fbf2d2e82f22409b4359437047ddb547/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/c65bc/cover.webp 150w,\n/static/fbf2d2e82f22409b4359437047ddb547/078c3/cover.webp 300w,\n/static/fbf2d2e82f22409b4359437047ddb547/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"45987eea-191f-531c-b854-25e3d60decff","frontmatter":{"title":"Equipment selection service","teamSize":"6 specialists","duration":"ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAADoklEQVR42n2VyU8TURzHp50pbVHEBQIaEzVGEywiVsqmUEuhuBfaiqUiqMhWRBoVsBCQ1WhAPCgYZbkqFDQgy8liol44EfVGgoSrXNA/4OtvXplCm+rh5U3e8nnf3zqcjOMg52QhB9uTycDRzLFvOXhOHrAffJ/zX9wMoZmnyzKCiSM9LR02qw0qlYqB2V4IGAOG2lAIAlOmUCiQZzajpbkZ3o8fMTgwgMjISAZVhoXRYyEUSgvSrBAU7EJsTAx6urvhGR3FwKvXGBocxMLCAj5MTiJeo2FnpIc3MzYUiop4gR3U6XQYHxtDQ10d9BkZSDquRaouGafST6KZqfUy5eJZQeDBy+V+KAOKPuF5nh24bLNhZmYGSVotNHFHYDhtQGaGHvpMPc2ZiI/TwGLOw4/v3+CqrfUHS5DzPiDPJPv8Vmi3Y+nnErKNRmQRqLWlBffu3sO5s+eQmpKGlORk5GQZkZacgjvVNVhe/om21la/X9czgsO2iG3Iz8vDp7k5TExMQKc9gUedXWh72Ir+vj54PKMYHx9HkeMqEhOOIfPkKQYeGhjE1NQUxjweHD50SEovDi6XCy/7++H1evH2zRvYLFY0NzYxwDRdWF39hT9/frM90Q2iQpMxG10dHbhPFrx/9w59L55vAKsqqzA/P4+VlRV8/fwFF89fQEVZBQtCQ3095kj5zPQUbpSUIIPWRFhZaSma3G44q5x41tuLpMTjPqDoSNFHFeWVTP7a2hraydQzplyYsnNYhHNzTDDoT8NhL0T5rTLU1tSwM1cdDhJTiYP790Mh9wWGKbxSUAC3uxGXrQUYGRnB4uIimhobmVKjwYBUMjHXZIL5kpmli+tODX1fgvZYIqJ27IRAwYgID99IG4FSxmqxoL2tg6A2dHV2YnZ2lhK7B05yx7WiIvaoNd/CUiabHtm7ew/UijCoaISr1Cz1Nmp5vQFk0cHb1beRT5fEHBseHkZHezuqnU4UXytGMYEry8uReDSBwbZQbauVyoBq4aRGIJWcGH53wwPYC+y4fv0GJicnME0BefLkMXqf9iBBE0/+4hGhDoeSoMG9gNtc2GIJidDo6GiUFJegtLQMhYUO9FNKiYr3xMZS++KwlWBimYbsNsELolqpm1itVtTV1VNQUlkUlcxMdUDt/hMoSZcaheTXXEqfm2R6zK4oqMKU/l4YqsEGdJsAoPTiOvTAvn3YuX2Hr16DGnFwh+dCgQKhcv8v4H+/C8nkv+/GeTcU9GBXAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/4bba86a6c2c681ec6c2473039256f576/c7240/cover.png","srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/de3a1/cover.png 150w,\n/static/4bba86a6c2c681ec6c2473039256f576/30cdc/cover.png 300w,\n/static/4bba86a6c2c681ec6c2473039256f576/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/81307/cover.avif 150w,\n/static/4bba86a6c2c681ec6c2473039256f576/aa5b9/cover.avif 300w,\n/static/4bba86a6c2c681ec6c2473039256f576/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/c65bc/cover.webp 150w,\n/static/4bba86a6c2c681ec6c2473039256f576/078c3/cover.webp 300w,\n/static/4bba86a6c2c681ec6c2473039256f576/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7","frontmatter":{"title":"IFSE Parameters Tool for Revit","teamSize":"6 specialists","duration":"3 mth - ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEqUlEQVR42m1UaVCVZRi9l8uOlQqyN1mxg2wBjgJhJSq7bMplk5TYBCZkm1gESgFJViORbcDBQdCBAYGByWvs0bCNbAMGAYkK9iMz+MGv0/O+LPGjH9+897v3Puc9zznneQRSAiGEAgF/dj5LCYWQFokgkpKCgN73PkpKSrC0sICSoiJ/363ZPgU7L6z4fwEUFGFmaorwsHBUVFZidGwML1+9wuEPDm8BUo1wDykOuBdAXk4Oerq6CA4Kwq2SW+jr68PzlRX89eZvvH79J/54voKFxd8R6B8A0yOmOLj/wC7YNpYAKsrK8PXxQU5ODtrb27G6tor19XVsbm5iY2MDg4ODiIyMQm1NLfr7+5GUlIwAcQCuXImHq4srJ7LTKQcMDAzExOQkhkeGkZaWhrzcG1heXsb8/DxWV1dRUVEJ22PHUVRYhF+GhhD3dRySEhLh5uoKq0+soCivsKsnBzxqY4P0tHS0trZCW0sL5qbmGB0d4+1OT0+j4X4DkhKTUHb7NsrLy9HU1IS2R+24U3YHYj/xLtguINNBLBajvr4eB97bD2u6dWRkFD09PZhfWMC9untIS01FArVoRrpFhEcg9NIlZGRkwMXJeQtQuAfQxNgEKd+kwNfbByL68qi1DSYmJgl0GL29vSgpLkHm1Qx4nfWEpbklrlI36SRNfFw81RpzQBF3e9sUR0dHVFdX49usLHi4uePk518QozQuQ35BPqIvR5NpvtDX1ePsiwoLIZFIMEAGJZNBDENGJP0fQ/ZH1kp4WBiiIiJR+sOPSExIQh21mn09m2tWW3sXYaFfwdvLG9evXeNPSXEx/M77QVpKBFlpGX4KGKqqyiGoHVJFakoqZ1pFAS4tLUUluXvM5iiioy7j+7w8BFEamGbMnPsNDfBw9+DsFOTksU9RiZ8CkVCKgqyHhIQEPHj4EM3NzcjNyUUzsXrQ2IjzvucgJhYWZubcMHtbO3RQVlmkJJInuPjlRd4dM5b9zifFw90dP/d04+bNfKSSm3NzczwuAwMDvLCivAI+3r5wdXaBp8dZFBcVo7OzE9VVVcjMyITT6TPQVNeAhpo6BIyqtqYWDPQNKKhuXPCOjg5MUtDHx8fJ6RE8fvwTurq6MEqfWaBjY2K4y9nZ2UhOTsYJBwfofKSDD9l8s5TLycpyLSyprc8cTlBBLLq7u9Ha0sqZtLW1obysnAOdI7eZOXV1daipqaFkfMeTwRjqfqyzpSGznJ2MMssgu9nL0xPmdMGF4GAU5Bdw3Zgx7lQcFBCIBjJldnYWMzMzGBr6lVrPgh3pu7W+hFtry8fbm48fC7W/2B9GhoYIp6m4S5FhAWcmtLQ8wrNnv9GMr+Ht23/whrbQ2toalpeW+YwL5GRkud3sZHMcEhKCHGJof9wWgcSkk7STPJFgmpgsLCzixYuXWFpcwtOnEwTewqcoNjoGPpTPT+3sIWBWsxyyhy3Tnf2oclCZR4mZMzU1RY4PopHavEGbKIYm50JQMI/UacdTsKPLmVTmpmZbgOqqatDS0OQuGRsa4QjN9vta2nh33zu0BEIRQdva+YwTzyArsrGy5uN56qQjB2MZNTEyhqG+Af4FpvlIvkbaKVIAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/fd962eb9870635d151007d855ece5f8a/c7240/cover.png","srcSet":"/static/fd962eb9870635d151007d855ece5f8a/de3a1/cover.png 150w,\n/static/fd962eb9870635d151007d855ece5f8a/30cdc/cover.png 300w,\n/static/fd962eb9870635d151007d855ece5f8a/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/fd962eb9870635d151007d855ece5f8a/81307/cover.avif 150w,\n/static/fd962eb9870635d151007d855ece5f8a/aa5b9/cover.avif 300w,\n/static/fd962eb9870635d151007d855ece5f8a/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/fd962eb9870635d151007d855ece5f8a/c65bc/cover.webp 150w,\n/static/fd962eb9870635d151007d855ece5f8a/078c3/cover.webp 300w,\n/static/fd962eb9870635d151007d855ece5f8a/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"08716ab8-fc5f-5f90-9fc0-a8218ec51923","frontmatter":{"title":"Website for architectual agency","teamSize":"5 specialists","duration":"3 months","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEBklEQVR42o1UWUyUVxgdtS7MMCj7vg5awFbc0ApateyrCjPIlkJfigOD4/JElYGptlQjmJooM0gJtE3BBgiKjkAjwcgiMxOcFGYCCS8Q+8YuvgDheL+bDIFYmv7Jzb/de+655zvfETg7OmGj4eTgCPudu+Dq7AKxSASRjZA/uzg5b7hG8F+Avt4+UF5Uws5WjIjw4zh18hS2fbKVv28Eug6QJrm7unFmO7Zth8RfgrYnT1Bx5w7GxsawuLiIh9XVOHTgIBztHfg8WrMWfB0gTbIVirAncDcK5HK0NLfAYDBgcHAQMzMzsF6zs7NIl8rg4ebOJaB16wBpB/ro5+OL/G/z8eD+fRiNRvT09kKn06G7uxtzc3NYWVnB8vIyurq6oFQqcSB0P3ZLArk0VpYckHYhXRLiEtDb04POjg60tbWhvb0dHezZZDJhaWmJs6t5WIOoyCikpJxh90gkJyXhs5C98Pb0Wg+4U2yH+Jg46J7pMD4+junpaVgsFrS2tqKuthYLCwuor6tD1OlISNPSUKRQ4MrlK8g8nwEvD89VPVcBxSJbyNKkaG5uRk52Dl52v8Tw0DAusSpHnv4KmqoqyKRS1NfX4/at25DJ0lFaqsYl5WX4eHlzwFWGJC4d+UxyCq9qdmYWB7hW/B3UZWomRTyyMjKRevYcnuueo6KyEopCBcrLy6EqUXGGVmIc0FYohM32HSguLobRYMRdtqCpqQllpWW4eeMmYmNiGVgqPx4VqKGxEeU//AiNRoOSa9exNziEE6ImEBDVuNg4dtQWPGZ6kUWokqY3Jtz7+R63T0xUNJcj7Vwq+vr68IgBEvuS6yXISD+Pb3LzkBifgMAACQRBnwbxAtBl0OvR398PvUGPnlevMDU5yX1osZg567zcXL5hqUqFpMREhH9xDOFHjyEnKxsqBk7eFPj7+kHzoIoXgJjNz8+j68ULPHv6lFtlkoHeYlpp2fFIjr86O3GxqAjy/Au4yqp8Q/09CuUF2L8vFHZiMQTUalTFggtyVGurMTIywg08NTWJ0dFRbp2B16+hHxhAbc0v+LPxEfclHV3NND4adoSHxmbBJt5lAjcXV0gCAnDkcBhSkpKhKCiEVquFeXiYe2/h/XtMTEyg4Y8GpusbDA39zW0TxuYLbWx4WBCQtbd5lQmUSk+Oj42O4QUgxhQEZrMZ7xjw23/eorKygqVOBGdE4RESFAySzGGX/cfhQC4ng1J/nog4jmjWXuS/vK9z8fuvvzEdf8KWTZv5oGqGfr4Phw8eQoCf/8fhYB1kTAoI8hUB0yCxT574kkcWsaI5dJJg5g4Ctpp6w4Alpp7uHhyYdqckoUUki/U/vdOggtIG/yuxaeHauLf26tr//5bYHwAGByLOnddQVQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/541da7254eca101084504751a7e14ba1/c7240/cover.png","srcSet":"/static/541da7254eca101084504751a7e14ba1/de3a1/cover.png 150w,\n/static/541da7254eca101084504751a7e14ba1/30cdc/cover.png 300w,\n/static/541da7254eca101084504751a7e14ba1/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/541da7254eca101084504751a7e14ba1/81307/cover.avif 150w,\n/static/541da7254eca101084504751a7e14ba1/aa5b9/cover.avif 300w,\n/static/541da7254eca101084504751a7e14ba1/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/541da7254eca101084504751a7e14ba1/c65bc/cover.webp 150w,\n/static/541da7254eca101084504751a7e14ba1/078c3/cover.webp 300w,\n/static/541da7254eca101084504751a7e14ba1/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"4010b091-889b-5be1-ab5a-bde195aa7729","frontmatter":{"title":"3D configurator","teamSize":"7 specialists","duration":"ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEYElEQVR42qVUSVNUVxR+NCSLxCGKWUQ0ajaKYVDmGUwAkVHmboiC0jST0EyFdAMyNtjdC2l0oYAEGbuZGhASSwaraIYCqsCFxKIgUBV2UPyGL+demvTCZRan3r3vnfPd753zfVcQCVawohAE4X8FwxAd4QhwdHCARCJBQnwCkhITIU4WQyyWIDkpmdbJkIjFFBJI6D1/R3uWw3Lj4+L59+v29sfgAlxuusA4YoTBoMeAwYDBgQFMTExgZHgYo0Yj3o6/xfjYGF+zd2Ojo5QzCIPeAH2/HkODQ3BydLIABvj784S+3l6eNGYu1uv7qaCfCgb5IX19vXxvHBkh0DG+Pq7x9faxAHp7eaG4sAi3AoPg5uqKJ1VVSLt3H9euXoUznczCycERjj874Po1ezxMf4CqyirccHJGWOhtlJaUwtPDwwL4tc1XiL0bCw93D5w7a4tU6me2LAvy/AKom57iaWPTf5GbnYP8vDwkUr/PnP4OQQGBiKNaa5GIBkOAR1MWIJfLER0ZhZ8uX0FNdTWGh0fQ+qoVq6urWFlZwfLyMlaWV/Di+QuMj4/jcVkZrly6jAQaSm5OLmfHp8zArK1EaH7WDFmmDJHhkejo6MDOzi7aWtug1WrR1dXFQ6NW43X7a/7t1cuXiAiPILAcqBpUZumYGbKor6tDXU0tGurq+W9ub2+jva0dhflydHb8TkDtvAU93T3Y2Nig/HoCakCTqhGKcsURQyszQxYVFRVQ1TdA81SNqopKmObm8HH9I0qKS1BKUSQvRPnjcnz6tIGZ6WmUlZZBTblNjY0oLJB/CVhcVIRaM8M86kl/Xx/W19cwb5pHgJ8/bgUFYWlpCWtra3jT2Yksqezor2rrkJkhtQCa7YIsmQxKhQJKoi8mNwwNDcFkMmFzcxN3wsIQExODra0tzM/Po7enhw9DQYyVCiVSU1I4BpsFZ8g291J/41rMz3tEg4mATqfD5OQkpqamEOgfiJDgYMx++IB3f76DVq3B7ZBQnstqGPgXDJMSErnGpA8zuLZqq2u4A0bJZlPv32Oa+sbkMkCOqVQq4efjiwdp6bwmKiLSwvAYMDoqmoOl0CXgSQJvVKlIi8NYXFzEwcEB9vf3sbCwACNZsoYOc3d1463JoJrQ4BALQxuRNWysrckdKaTDTM7Uw80duuZmzMxMk+Z2cHh4yONvWs/OzkKj0eCm8w3ukJysbP7LjBjDEk588y23EDut5kk1t5yPlzcX7ue/PmN3dxd7/+xhb2+Pg2+QbFh/3VzckEVGYDXxcXE4ffIUGJbAFsxy7EJ43tLC/cpOLCARs6upm7mk8w2Pnu5ufrtkSqU8hxlARw6roEmHh93BqRMnIXxvew7enl40yQDeaD9fP34/Bv/yK9Lvp3HGj3LzuDZl0kyuBjY0V8rxp1xfqmE6ZX23PXP2iCGjeuG8HTf78ZO1oKVZhz8mJrn2TKY5fk9qNVrExtzFpYs/4qLdBZ5r98N5jsGw/gXxiloEl3XVyQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/6f44bc6e2f75db97570cc19ea632c28c/c7240/cover.png","srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/de3a1/cover.png 150w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/30cdc/cover.png 300w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/81307/cover.avif 150w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/aa5b9/cover.avif 300w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/c65bc/cover.webp 150w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/078c3/cover.webp 300w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}}]}},"pageContext":{"limit":10,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-projects-tsx","path":"/projects/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb","frontmatter":{"title":"Bimcore Revit Add-In","teamSize":"4 specialists","duration":"3 months","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEiklEQVR42i1UR0xcVxT9ptmmmN6HYps+tAGMgaENzNAUTBsItjEQaoJpZug2diBCCg4YK3R5aF4gjBeAKAIEZhVLCBEJIpYs2CCxccwWCZ28e8lIXzPz/rvnnXfuOVdyc5XB6959hAaH4q6Hp/gOgauzC6+5OLnAycERYaEKWN2xFP+dYWRgyPvsbGxxx9yC31tbWsP01m0YGxpBopd+Pr6ICIuA930vhCvC4C5zQ/TDqP9BnREZ8UAUWSEwQA7T26YM6GBnD0uLO3B2dIKttQ3MTc1gYmQMiYpCgoKgjI5h4PjYeN7065s3yNdqmYkqUQULM3P0/9HP4NfMnZi1zMUV9gKc3jOgj5c3g/X93odYpRLDQ0MIlMsx0N+P0uISuIqC0dFRZq7XT0KlUjFruX8AH0wPsTcTzBmQWNH1ZqZnBLs4LC4uIj9Pi4WFBYyPjwsGMiwtLeN112vsbO+grrYOpSWl4sABZD3KQs0vNay7o4MD6yv5evsgPTUNa6trYsMjrKysQJuXh7d9b/FbTw/ilLFYFWtjo2PY2dlBa2srg01PTQngEvE9jZedLxEeFg5Jkq4ZpmhSBLMlNDW+wNHhEXq6u7nTQfJA7O7u4vLykpmQXvQQ8OjIGNpb2/Dlyy5mZmYYgwGpiGyRGJ+AHwsKcPTPEaYmJ2FvaweNWoPT01PQZ3VljQs0ajW+/fsNZ2dnTOLk5ARf//qK8rKya0ASlzQgS8RERQututCsa2bAxvoGXF1d4eLiAt+/X4jGhKOurg7ra+sYGR7B4OAgwhQKeLi5s3XYh/6+fiAdCfSe51309vbi3btBXlMnq3F+fs4M9/b2xKGBWPj0CUVPnnJjNjc30dnRCR+xl9jdMrl5DVhVUcldzPwhE91Cv6eigDQj+8Qr4/BCaBvg588+zcnOEeyGsbGxgaE/h7C9vY0PH/TsT+4ypSNFo+Gu6nQ6aIWZCaChvpFPJp+2t7WzyWNjlKgor0R19c8YGBjA54XP0DXpMKnXo76+HoY3DCBRzOhhg4sCbV4+KiuqBJM80e0evB98j7m5OSwvL7N+1E26TW3Nc7bPxMQEggOD+Mo3jU0gkdPJCrRIBs/KzIY2V4uI8Ag8KyoSRq5lP5Lx5+fn8biwEAWCLXlX19TMASCpDKQb1xpSVik61IQnhY/R9eqViNoY0lJTOWLFz4qRm5OLNmFoYktpahbSEOvj42OxvwtRkVE8LCh+Eo0gKiRgEra6qgqNDY2gsUZS5GZl86DY2tzC1tYW3GQylBQXM+DB3wdoaWlh9pQoGytrSHRvT3cP9lFIUDAPhLLSn3iU0awLFWvky4ODA8zOzIqhIEd2VhbW19dxeHjIJPSiKcmqJLadREUF+QVMma5NgyFJjCuF8CUxpENaW1qxv7/PUpADiCE17OPsR3S0d4iUlEOdlMyJY0CKHy2WCHYPH0RCERLKWSYZKEnkTWJTLyYNRbS6sgrPRZfbRJarxO+MtHS+Mj0SRYzEJHZ0AnWdrksPgVKsMtIzOKsERgcmxMUjWTAiVxAIrdOtVAmJ+A/qkhVxc4KB0AAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/08f0b4d049f4e024d92a458deddda5ce/c7240/cover.png","srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/de3a1/cover.png 150w,\n/static/08f0b4d049f4e024d92a458deddda5ce/30cdc/cover.png 300w,\n/static/08f0b4d049f4e024d92a458deddda5ce/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/81307/cover.avif 150w,\n/static/08f0b4d049f4e024d92a458deddda5ce/aa5b9/cover.avif 300w,\n/static/08f0b4d049f4e024d92a458deddda5ce/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/c65bc/cover.webp 150w,\n/static/08f0b4d049f4e024d92a458deddda5ce/078c3/cover.webp 300w,\n/static/08f0b4d049f4e024d92a458deddda5ce/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"4057e0b3-692b-5512-a1fc-cb93bd81fe0e","frontmatter":{"title":"DevOps monitoring system","teamSize":"3 specialists","duration":"ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABCcAAAQnAEmzTo0AAAFMUlEQVR42iVUWVBTVxi+z44gKAGRBBBRUFlkLyIapVRBZQBDkCWBQJSwRSWADgkgIBAVVMQEJEZZAlEgQFxAFmurganjTOGhTnVGO4I61hk7PvjgU/3639OHM+fem5zzf/+3/JyqSIVrndfQ0tyMspJSBG4JQNL+/ZAckaBEVYwChQKy7GykHk5BWmoqjhUqYbPZsPLuHYqOH0d6ahrS09Lg5ekJf79N4EKDQ+llA3Kzc1BdVY01Ts7sUkn6ETpciNLiEpwoL6e9GEelmTjX2ISUQ4dxMCkJpSXFUBYW4PDBQ+xiT4/14MLDwqGmA/sTf8LuXfHw9fZhzyfK1VCXlaGvtw9vl5fx96dPePrUgeioKLi6uCA6Mgq1Oh1ysrIQQ9/i43ZBRYi5nKxs2O12avMAgrcHQ5aTg2PKQvbjXfsEvn79io8fP+LDhw/49u0blhYXERIcDME6N+zdI8Y+WtsCt2J0ZAQvXvwBLoYq7RPvhaqoCAeTk5Evl6OqshKX2i9hft6BcdsoHty/z9bwHSt+efwYz58/x9DgIJIPJMHdTYATajWMBgMCNm8BJ9ogxG6Cm5jwIxR5ctTptHi3soJ/v3/HzZtmar2MKClDsaqIirTh3l07lpff4suXL3g49RDhO8IQFREBF+c11Ho0OOfVThB5CeHs5ISjmVIszM/j/fv3ePPmL9TX1iI1JYUh0WlrMDc3i6WlJaxQwYH+fty5bcXnz/8gM0OK40olrl3tAOe/yR+rV63CduLBOjiE169fY2ZmBo/m5qCpqMCe+Hgo8uU419SAW4R4bnYWi4u/E8plav9ndFy5gi6jAWfr6qA9cxqcNCMDGZIM5q87Viv6+/oYj2p1OQYHLIwrG/HYSdWNhk7icRjjY2OYmpyklqdwproSjfW1aNO34HzLOXCVhIJXtLmpCW0XLkAuk2HnD7Gop4pPfn3CRHA4HHj58k/oamqI6wQ01NfjvL4VFSdPwnD1Cgwdl2G63o2mhkZwZaWl0Ov10NKfdVotqiurmLd41UaGh2Hq6WF8PXv2GxYWFpCwdx8tMfJJQM2pCtTSmZ7uboyPj1P7xGGJSoUj6enooYNnqfKZ06chz5UhOiISh8hGJ8kS/K4sUDCzBxHXfJKCtwchJjIaeTI5bphMVHQAjY2EsK+3F91dXejuNqL94kWKVDK8hUK4ua5lUdro44sdIaHMvJ7u67HB3QN+9M1/ox82k6ASAjM6OgL7xDimpibB9VM70/RgHxshgquxNSAAQso2fxmfBt5fIqEIAoEAHgJ3CNaug6/IG9sCAhG3M44ckI/eWzeZ8Xkw3OS9u7ANW2Hu6SbptchIT0NYSAjc6CB/mZvrOkIsYgXWEzoPSgZ/YRRRkn00C6dIGJOpB5WaSkSGR4B7QBeODN9mVXgf5eXmIkEsRkhQEBtHvOm9aQm9vBhCPl7i3XuQTTNAV6MlIS4zG7169QrT09PgjAYjmXgWnR0duHr5EtovXARvJV6EpMRE4i6Qccoj9PPdiJ0xsZCSb/n5abUO4T4BamxoIOM3oUqjAecj8mFkH6CRZb5hoqxOYMjSTyZthiw3hwaHmLUSFxuLnOwsak1DA7mTzcU6iqbDMY/WllZK22qEhYb+78NNpJivjw8K8hWs/YkxGyXiNmtHU3GKhkYe2/nhYL5hxqDFwnyqVBQQNcHwoRnqusYF7W1t4PjhKpVImAD8JNZTtS6jkWV2Zmaaxc5sNkPf2oKe69dhGRigOFpgIXfUEOc8DTw6XsRMqRT/AbN9kxzlNuWvAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/c884efc5b3a893cd66340687b7f94bd3/c7240/cover.png","srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/de3a1/cover.png 150w,\n/static/c884efc5b3a893cd66340687b7f94bd3/30cdc/cover.png 300w,\n/static/c884efc5b3a893cd66340687b7f94bd3/c7240/cover.png 600w,\n/static/c884efc5b3a893cd66340687b7f94bd3/e8b76/cover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/81307/cover.avif 150w,\n/static/c884efc5b3a893cd66340687b7f94bd3/aa5b9/cover.avif 300w,\n/static/c884efc5b3a893cd66340687b7f94bd3/0c8d0/cover.avif 600w,\n/static/c884efc5b3a893cd66340687b7f94bd3/e65b9/cover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/c65bc/cover.webp 150w,\n/static/c884efc5b3a893cd66340687b7f94bd3/078c3/cover.webp 300w,\n/static/c884efc5b3a893cd66340687b7f94bd3/6d09e/cover.webp 600w,\n/static/c884efc5b3a893cd66340687b7f94bd3/83805/cover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"9f63d17d-6164-509e-b2c7-4c655ab9ad7a","frontmatter":{"title":"Web & Mobile apps for a logistics company","teamSize":"7 specialists","duration":"3 months","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEyUlEQVR42mVUaUxUVxR+MCyDAgNVZLGCFqggIAEURGBQ2WxALasOSGXXsCiLQRjZBgcFyyqLSZUUoVi1xIoVpCjEEjGpTE1wbApIjKggIcRCIgm/+HruRWiaTnIz7+W++91zvuUIGoIATQ0N6InFMDYyQkpyMiw3WcJgrT5M1q2HlaUlfLy9YahvAB1tbQj0/ZbNW7Db05M/a9BZhrGyBE1Bg2+sM/4MmzZ+Dnm+HLdv/4zYo7EQaWgiOTEJ4+PjUJQokJ6WBkcHB5iZmmKbnT20tbRgZGAILZHoX8DVh0+3sWqjIqMQ4OcPczMzJCUkYmlpCVNTU/j7wwcUFhbC1GQDXF1c4L7THc5OzpAYGv4fUEtTxEHNTc1QU12DqqoquLm4QiaTYXFxEW/fvsXCwgKU55QQ6+jCwtwcItHyGeE/LbOqNDV5dTnZ2Rh8/BiTk5O43t6Oo9ExKCooxMzMDF69eoW5uTmcKz3HAWysreG5axdiY2Ph5uoKsa7OMvgKsohAE4mv1tZWtBPY4YgoSL28UFxYhJGRv/Ds2R9482ZiFZC13tfXh65793A0JgZr16xZqVaA7IiM83Y8OQWNjY3Izc2FE5FvZ2ML2eEjeDI4iKdPf8fLl2MoUyrhQdzlnckjaqohlUo5EGufC8wqCw8LQ1BAIBISElBRUQGFQsH5s/3CGgeDQ/DTrVt49OgRhlRDqK2txemc02SvFCjLlNi3d98yIKONVci8t8PNDSeOn8CPP1znh0tKSuBgvw0bzS3wVdB+3Lx5E93d3RgYGMDFiosoKCjg/J6hTqTePhxQYrCstCDPy8flpssYGqLba2qQmXEKWSczsdnSChak+P7AIDQ1NqGz8w7U6ue8ZXZJVHgkD4GHuzu3kfN2Z+5HoYnAGBetLddI5RwkxifAe7cXttp+CQszc/h4eaPhUj0qv63kAiiKS6gqKTf8WQoB29fV1qEKJdDRoiQ9V6tRUV7BDbzXdw+ar15F551OfvBkegYyaFVXVvG21S/UqKqsRD4JIiWgHS5usKKYssTYb7UjUAMIFAIerQe9D7jnjsV+g9evX+PXnh4E+vvjxo0b1KqaGzrs61BevbPTdq5+/LE4hAQHw4+EYSKu1SPrvFD/iV/u3uUqMvXY4fn5eTwmg7e1tZFlnuDhg4doa22jCwJgJJHAgAZFRno6VV6Jhvp6RIZHIDsri+dbeP9+Gmflchwge5iuN8Gl2jqMjY2ht7cX1VXVRLoHT8Lw8DC6urqQkpSM4qIipKamUt79kHkqE8lJScRpIowlRhBYnO7f70FzczMiwsLxPf3L8/N5pteI9aAt0uItMVqmp6cx8NsAwkPDuFX2+PpyekZGR0mwLpQqSiE0NjSirq4O7KdSqZBH3mI3MU+ZbTDl08eGDM4ccOW7K5xjsa6YA5pQRwdDDnDfxhGf+jRDhWqyDKts4eNHGgyD3AZsuDIw5q89Ul9yQTm8SAxmqfPKMsTIohEZEcFNLRaLVycOX7Ozs+jo6ODEq4ZUCD10iPtK+FRhemoan+DsPSY6Gv39/ZTpl3y82VLWWX5Z7Fajx0bVxMQERomHd+/eYZw+vtbSQlOlFOUXLnCx2CE9anOn2w4kxMXDydFxtSK2t7IY4D+VxTwvM1HkzQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/fbf2d2e82f22409b4359437047ddb547/c7240/cover.png","srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/de3a1/cover.png 150w,\n/static/fbf2d2e82f22409b4359437047ddb547/30cdc/cover.png 300w,\n/static/fbf2d2e82f22409b4359437047ddb547/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/81307/cover.avif 150w,\n/static/fbf2d2e82f22409b4359437047ddb547/aa5b9/cover.avif 300w,\n/static/fbf2d2e82f22409b4359437047ddb547/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/c65bc/cover.webp 150w,\n/static/fbf2d2e82f22409b4359437047ddb547/078c3/cover.webp 300w,\n/static/fbf2d2e82f22409b4359437047ddb547/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"45987eea-191f-531c-b854-25e3d60decff","frontmatter":{"title":"Equipment selection service","teamSize":"6 specialists","duration":"ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAADoklEQVR42n2VyU8TURzHp50pbVHEBQIaEzVGEywiVsqmUEuhuBfaiqUiqMhWRBoVsBCQ1WhAPCgYZbkqFDQgy8liol44EfVGgoSrXNA/4OtvXplCm+rh5U3e8nnf3zqcjOMg52QhB9uTycDRzLFvOXhOHrAffJ/zX9wMoZmnyzKCiSM9LR02qw0qlYqB2V4IGAOG2lAIAlOmUCiQZzajpbkZ3o8fMTgwgMjISAZVhoXRYyEUSgvSrBAU7EJsTAx6urvhGR3FwKvXGBocxMLCAj5MTiJeo2FnpIc3MzYUiop4gR3U6XQYHxtDQ10d9BkZSDquRaouGafST6KZqfUy5eJZQeDBy+V+KAOKPuF5nh24bLNhZmYGSVotNHFHYDhtQGaGHvpMPc2ZiI/TwGLOw4/v3+CqrfUHS5DzPiDPJPv8Vmi3Y+nnErKNRmQRqLWlBffu3sO5s+eQmpKGlORk5GQZkZacgjvVNVhe/om21la/X9czgsO2iG3Iz8vDp7k5TExMQKc9gUedXWh72Ir+vj54PKMYHx9HkeMqEhOOIfPkKQYeGhjE1NQUxjweHD50SEovDi6XCy/7++H1evH2zRvYLFY0NzYxwDRdWF39hT9/frM90Q2iQpMxG10dHbhPFrx/9w59L55vAKsqqzA/P4+VlRV8/fwFF89fQEVZBQtCQ3095kj5zPQUbpSUIIPWRFhZaSma3G44q5x41tuLpMTjPqDoSNFHFeWVTP7a2hraydQzplyYsnNYhHNzTDDoT8NhL0T5rTLU1tSwM1cdDhJTiYP790Mh9wWGKbxSUAC3uxGXrQUYGRnB4uIimhobmVKjwYBUMjHXZIL5kpmli+tODX1fgvZYIqJ27IRAwYgID99IG4FSxmqxoL2tg6A2dHV2YnZ2lhK7B05yx7WiIvaoNd/CUiabHtm7ew/UijCoaISr1Cz1Nmp5vQFk0cHb1beRT5fEHBseHkZHezuqnU4UXytGMYEry8uReDSBwbZQbauVyoBq4aRGIJWcGH53wwPYC+y4fv0GJicnME0BefLkMXqf9iBBE0/+4hGhDoeSoMG9gNtc2GIJidDo6GiUFJegtLQMhYUO9FNKiYr3xMZS++KwlWBimYbsNsELolqpm1itVtTV1VNQUlkUlcxMdUDt/hMoSZcaheTXXEqfm2R6zK4oqMKU/l4YqsEGdJsAoPTiOvTAvn3YuX2Hr16DGnFwh+dCgQKhcv8v4H+/C8nkv+/GeTcU9GBXAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/4bba86a6c2c681ec6c2473039256f576/c7240/cover.png","srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/de3a1/cover.png 150w,\n/static/4bba86a6c2c681ec6c2473039256f576/30cdc/cover.png 300w,\n/static/4bba86a6c2c681ec6c2473039256f576/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/81307/cover.avif 150w,\n/static/4bba86a6c2c681ec6c2473039256f576/aa5b9/cover.avif 300w,\n/static/4bba86a6c2c681ec6c2473039256f576/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/c65bc/cover.webp 150w,\n/static/4bba86a6c2c681ec6c2473039256f576/078c3/cover.webp 300w,\n/static/4bba86a6c2c681ec6c2473039256f576/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7","frontmatter":{"title":"IFSE Parameters Tool for Revit","teamSize":"6 specialists","duration":"3 mth - ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEqUlEQVR42m1UaVCVZRi9l8uOlQqyN1mxg2wBjgJhJSq7bMplk5TYBCZkm1gESgFJViORbcDBQdCBAYGByWvs0bCNbAMGAYkK9iMz+MGv0/O+LPGjH9+897v3Puc9zznneQRSAiGEAgF/dj5LCYWQFokgkpKCgN73PkpKSrC0sICSoiJ/363ZPgU7L6z4fwEUFGFmaorwsHBUVFZidGwML1+9wuEPDm8BUo1wDykOuBdAXk4Oerq6CA4Kwq2SW+jr68PzlRX89eZvvH79J/54voKFxd8R6B8A0yOmOLj/wC7YNpYAKsrK8PXxQU5ODtrb27G6tor19XVsbm5iY2MDg4ODiIyMQm1NLfr7+5GUlIwAcQCuXImHq4srJ7LTKQcMDAzExOQkhkeGkZaWhrzcG1heXsb8/DxWV1dRUVEJ22PHUVRYhF+GhhD3dRySEhLh5uoKq0+soCivsKsnBzxqY4P0tHS0trZCW0sL5qbmGB0d4+1OT0+j4X4DkhKTUHb7NsrLy9HU1IS2R+24U3YHYj/xLtguINNBLBajvr4eB97bD2u6dWRkFD09PZhfWMC9untIS01FArVoRrpFhEcg9NIlZGRkwMXJeQtQuAfQxNgEKd+kwNfbByL68qi1DSYmJgl0GL29vSgpLkHm1Qx4nfWEpbklrlI36SRNfFw81RpzQBF3e9sUR0dHVFdX49usLHi4uePk518QozQuQ35BPqIvR5NpvtDX1ePsiwoLIZFIMEAGJZNBDENGJP0fQ/ZH1kp4WBiiIiJR+sOPSExIQh21mn09m2tWW3sXYaFfwdvLG9evXeNPSXEx/M77QVpKBFlpGX4KGKqqyiGoHVJFakoqZ1pFAS4tLUUluXvM5iiioy7j+7w8BFEamGbMnPsNDfBw9+DsFOTksU9RiZ8CkVCKgqyHhIQEPHj4EM3NzcjNyUUzsXrQ2IjzvucgJhYWZubcMHtbO3RQVlmkJJInuPjlRd4dM5b9zifFw90dP/d04+bNfKSSm3NzczwuAwMDvLCivAI+3r5wdXaBp8dZFBcVo7OzE9VVVcjMyITT6TPQVNeAhpo6BIyqtqYWDPQNKKhuXPCOjg5MUtDHx8fJ6RE8fvwTurq6MEqfWaBjY2K4y9nZ2UhOTsYJBwfofKSDD9l8s5TLycpyLSyprc8cTlBBLLq7u9Ha0sqZtLW1obysnAOdI7eZOXV1daipqaFkfMeTwRjqfqyzpSGznJ2MMssgu9nL0xPmdMGF4GAU5Bdw3Zgx7lQcFBCIBjJldnYWMzMzGBr6lVrPgh3pu7W+hFtry8fbm48fC7W/2B9GhoYIp6m4S5FhAWcmtLQ8wrNnv9GMr+Ht23/whrbQ2toalpeW+YwL5GRkud3sZHMcEhKCHGJof9wWgcSkk7STPJFgmpgsLCzixYuXWFpcwtOnEwTewqcoNjoGPpTPT+3sIWBWsxyyhy3Tnf2oclCZR4mZMzU1RY4PopHavEGbKIYm50JQMI/UacdTsKPLmVTmpmZbgOqqatDS0OQuGRsa4QjN9vta2nh33zu0BEIRQdva+YwTzyArsrGy5uN56qQjB2MZNTEyhqG+Af4FpvlIvkbaKVIAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/fd962eb9870635d151007d855ece5f8a/c7240/cover.png","srcSet":"/static/fd962eb9870635d151007d855ece5f8a/de3a1/cover.png 150w,\n/static/fd962eb9870635d151007d855ece5f8a/30cdc/cover.png 300w,\n/static/fd962eb9870635d151007d855ece5f8a/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/fd962eb9870635d151007d855ece5f8a/81307/cover.avif 150w,\n/static/fd962eb9870635d151007d855ece5f8a/aa5b9/cover.avif 300w,\n/static/fd962eb9870635d151007d855ece5f8a/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/fd962eb9870635d151007d855ece5f8a/c65bc/cover.webp 150w,\n/static/fd962eb9870635d151007d855ece5f8a/078c3/cover.webp 300w,\n/static/fd962eb9870635d151007d855ece5f8a/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"08716ab8-fc5f-5f90-9fc0-a8218ec51923","frontmatter":{"title":"Website for architectual agency","teamSize":"5 specialists","duration":"3 months","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEBklEQVR42o1UWUyUVxgdtS7MMCj7vg5awFbc0ApateyrCjPIlkJfigOD4/JElYGptlQjmJooM0gJtE3BBgiKjkAjwcgiMxOcFGYCCS8Q+8YuvgDheL+bDIFYmv7Jzb/de+655zvfETg7OmGj4eTgCPudu+Dq7AKxSASRjZA/uzg5b7hG8F+Avt4+UF5Uws5WjIjw4zh18hS2fbKVv28Eug6QJrm7unFmO7Zth8RfgrYnT1Bx5w7GxsawuLiIh9XVOHTgIBztHfg8WrMWfB0gTbIVirAncDcK5HK0NLfAYDBgcHAQMzMzsF6zs7NIl8rg4ebOJaB16wBpB/ro5+OL/G/z8eD+fRiNRvT09kKn06G7uxtzc3NYWVnB8vIyurq6oFQqcSB0P3ZLArk0VpYckHYhXRLiEtDb04POjg60tbWhvb0dHezZZDJhaWmJs6t5WIOoyCikpJxh90gkJyXhs5C98Pb0Wg+4U2yH+Jg46J7pMD4+junpaVgsFrS2tqKuthYLCwuor6tD1OlISNPSUKRQ4MrlK8g8nwEvD89VPVcBxSJbyNKkaG5uRk52Dl52v8Tw0DAusSpHnv4KmqoqyKRS1NfX4/at25DJ0lFaqsYl5WX4eHlzwFWGJC4d+UxyCq9qdmYWB7hW/B3UZWomRTyyMjKRevYcnuueo6KyEopCBcrLy6EqUXGGVmIc0FYohM32HSguLobRYMRdtqCpqQllpWW4eeMmYmNiGVgqPx4VqKGxEeU//AiNRoOSa9exNziEE6ImEBDVuNg4dtQWPGZ6kUWokqY3Jtz7+R63T0xUNJcj7Vwq+vr68IgBEvuS6yXISD+Pb3LzkBifgMAACQRBnwbxAtBl0OvR398PvUGPnlevMDU5yX1osZg567zcXL5hqUqFpMREhH9xDOFHjyEnKxsqBk7eFPj7+kHzoIoXgJjNz8+j68ULPHv6lFtlkoHeYlpp2fFIjr86O3GxqAjy/Au4yqp8Q/09CuUF2L8vFHZiMQTUalTFggtyVGurMTIywg08NTWJ0dFRbp2B16+hHxhAbc0v+LPxEfclHV3NND4adoSHxmbBJt5lAjcXV0gCAnDkcBhSkpKhKCiEVquFeXiYe2/h/XtMTEyg4Y8GpusbDA39zW0TxuYLbWx4WBCQtbd5lQmUSk+Oj42O4QUgxhQEZrMZ7xjw23/eorKygqVOBGdE4RESFAySzGGX/cfhQC4ng1J/nog4jmjWXuS/vK9z8fuvvzEdf8KWTZv5oGqGfr4Phw8eQoCf/8fhYB1kTAoI8hUB0yCxT574kkcWsaI5dJJg5g4Ctpp6w4Alpp7uHhyYdqckoUUki/U/vdOggtIG/yuxaeHauLf26tr//5bYHwAGByLOnddQVQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/541da7254eca101084504751a7e14ba1/c7240/cover.png","srcSet":"/static/541da7254eca101084504751a7e14ba1/de3a1/cover.png 150w,\n/static/541da7254eca101084504751a7e14ba1/30cdc/cover.png 300w,\n/static/541da7254eca101084504751a7e14ba1/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/541da7254eca101084504751a7e14ba1/81307/cover.avif 150w,\n/static/541da7254eca101084504751a7e14ba1/aa5b9/cover.avif 300w,\n/static/541da7254eca101084504751a7e14ba1/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/541da7254eca101084504751a7e14ba1/c65bc/cover.webp 150w,\n/static/541da7254eca101084504751a7e14ba1/078c3/cover.webp 300w,\n/static/541da7254eca101084504751a7e14ba1/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"4010b091-889b-5be1-ab5a-bde195aa7729","frontmatter":{"title":"3D configurator","teamSize":"7 specialists","duration":"ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEYElEQVR42qVUSVNUVxR+NCSLxCGKWUQ0ajaKYVDmGUwAkVHmboiC0jST0EyFdAMyNtjdC2l0oYAEGbuZGhASSwaraIYCqsCFxKIgUBV2UPyGL+demvTCZRan3r3vnfPd753zfVcQCVawohAE4X8FwxAd4QhwdHCARCJBQnwCkhITIU4WQyyWIDkpmdbJkIjFFBJI6D1/R3uWw3Lj4+L59+v29sfgAlxuusA4YoTBoMeAwYDBgQFMTExgZHgYo0Yj3o6/xfjYGF+zd2Ojo5QzCIPeAH2/HkODQ3BydLIABvj784S+3l6eNGYu1uv7qaCfCgb5IX19vXxvHBkh0DG+Pq7x9faxAHp7eaG4sAi3AoPg5uqKJ1VVSLt3H9euXoUznczCycERjj874Po1ezxMf4CqyirccHJGWOhtlJaUwtPDwwL4tc1XiL0bCw93D5w7a4tU6me2LAvy/AKom57iaWPTf5GbnYP8vDwkUr/PnP4OQQGBiKNaa5GIBkOAR1MWIJfLER0ZhZ8uX0FNdTWGh0fQ+qoVq6urWFlZwfLyMlaWV/Di+QuMj4/jcVkZrly6jAQaSm5OLmfHp8zArK1EaH7WDFmmDJHhkejo6MDOzi7aWtug1WrR1dXFQ6NW43X7a/7t1cuXiAiPILAcqBpUZumYGbKor6tDXU0tGurq+W9ub2+jva0dhflydHb8TkDtvAU93T3Y2Nig/HoCakCTqhGKcsURQyszQxYVFRVQ1TdA81SNqopKmObm8HH9I0qKS1BKUSQvRPnjcnz6tIGZ6WmUlZZBTblNjY0oLJB/CVhcVIRaM8M86kl/Xx/W19cwb5pHgJ8/bgUFYWlpCWtra3jT2Yksqezor2rrkJkhtQCa7YIsmQxKhQJKoi8mNwwNDcFkMmFzcxN3wsIQExODra0tzM/Po7enhw9DQYyVCiVSU1I4BpsFZ8g291J/41rMz3tEg4mATqfD5OQkpqamEOgfiJDgYMx++IB3f76DVq3B7ZBQnstqGPgXDJMSErnGpA8zuLZqq2u4A0bJZlPv32Oa+sbkMkCOqVQq4efjiwdp6bwmKiLSwvAYMDoqmoOl0CXgSQJvVKlIi8NYXFzEwcEB9vf3sbCwACNZsoYOc3d1463JoJrQ4BALQxuRNWysrckdKaTDTM7Uw80duuZmzMxMk+Z2cHh4yONvWs/OzkKj0eCm8w3ukJysbP7LjBjDEk588y23EDut5kk1t5yPlzcX7ue/PmN3dxd7/+xhb2+Pg2+QbFh/3VzckEVGYDXxcXE4ffIUGJbAFsxy7EJ43tLC/cpOLCARs6upm7mk8w2Pnu5ufrtkSqU8hxlARw6roEmHh93BqRMnIXxvew7enl40yQDeaD9fP34/Bv/yK9Lvp3HGj3LzuDZl0kyuBjY0V8rxp1xfqmE6ZX23PXP2iCGjeuG8HTf78ZO1oKVZhz8mJrn2TKY5fk9qNVrExtzFpYs/4qLdBZ5r98N5jsGw/gXxiloEl3XVyQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/6f44bc6e2f75db97570cc19ea632c28c/c7240/cover.png","srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/de3a1/cover.png 150w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/30cdc/cover.png 300w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/81307/cover.avif 150w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/aa5b9/cover.avif 300w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/c65bc/cover.webp 150w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/078c3/cover.webp 300w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}}]}},"pageContext":{"limit":10,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/projects/page/1/page-data.json b/page-data/projects/page/1/page-data.json index cffa2c65..968cbc92 100644 --- a/page-data/projects/page/1/page-data.json +++ b/page-data/projects/page/1/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-projects-tsx","path":"/projects/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb","frontmatter":{"title":"Bimcore Revit Add-In","teamSize":"4 specialists","duration":"3 months","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEiklEQVR42i1UR0xcVxT9ptmmmN6HYps+tAGMgaENzNAUTBsItjEQaoJpZug2diBCCg4YK3R5aF4gjBeAKAIEZhVLCBEJIpYs2CCxccwWCZ28e8lIXzPz/rvnnXfuOVdyc5XB6959hAaH4q6Hp/gOgauzC6+5OLnAycERYaEKWN2xFP+dYWRgyPvsbGxxx9yC31tbWsP01m0YGxpBopd+Pr6ICIuA930vhCvC4C5zQ/TDqP9BnREZ8UAUWSEwQA7T26YM6GBnD0uLO3B2dIKttQ3MTc1gYmQMiYpCgoKgjI5h4PjYeN7065s3yNdqmYkqUQULM3P0/9HP4NfMnZi1zMUV9gKc3jOgj5c3g/X93odYpRLDQ0MIlMsx0N+P0uISuIqC0dFRZq7XT0KlUjFruX8AH0wPsTcTzBmQWNH1ZqZnBLs4LC4uIj9Pi4WFBYyPjwsGMiwtLeN112vsbO+grrYOpSWl4sABZD3KQs0vNay7o4MD6yv5evsgPTUNa6trYsMjrKysQJuXh7d9b/FbTw/ilLFYFWtjo2PY2dlBa2srg01PTQngEvE9jZedLxEeFg5Jkq4ZpmhSBLMlNDW+wNHhEXq6u7nTQfJA7O7u4vLykpmQXvQQ8OjIGNpb2/Dlyy5mZmYYgwGpiGyRGJ+AHwsKcPTPEaYmJ2FvaweNWoPT01PQZ3VljQs0ajW+/fsNZ2dnTOLk5ARf//qK8rKya0ASlzQgS8RERQututCsa2bAxvoGXF1d4eLiAt+/X4jGhKOurg7ra+sYGR7B4OAgwhQKeLi5s3XYh/6+fiAdCfSe51309vbi3btBXlMnq3F+fs4M9/b2xKGBWPj0CUVPnnJjNjc30dnRCR+xl9jdMrl5DVhVUcldzPwhE91Cv6eigDQj+8Qr4/BCaBvg588+zcnOEeyGsbGxgaE/h7C9vY0PH/TsT+4ypSNFo+Gu6nQ6aIWZCaChvpFPJp+2t7WzyWNjlKgor0R19c8YGBjA54XP0DXpMKnXo76+HoY3DCBRzOhhg4sCbV4+KiuqBJM80e0evB98j7m5OSwvL7N+1E26TW3Nc7bPxMQEggOD+Mo3jU0gkdPJCrRIBs/KzIY2V4uI8Ag8KyoSRq5lP5Lx5+fn8biwEAWCLXlX19TMASCpDKQb1xpSVik61IQnhY/R9eqViNoY0lJTOWLFz4qRm5OLNmFoYktpahbSEOvj42OxvwtRkVE8LCh+Eo0gKiRgEra6qgqNDY2gsUZS5GZl86DY2tzC1tYW3GQylBQXM+DB3wdoaWlh9pQoGytrSHRvT3cP9lFIUDAPhLLSn3iU0awLFWvky4ODA8zOzIqhIEd2VhbW19dxeHjIJPSiKcmqJLadREUF+QVMma5NgyFJjCuF8CUxpENaW1qxv7/PUpADiCE17OPsR3S0d4iUlEOdlMyJY0CKHy2WCHYPH0RCERLKWSYZKEnkTWJTLyYNRbS6sgrPRZfbRJarxO+MtHS+Mj0SRYzEJHZ0AnWdrksPgVKsMtIzOKsERgcmxMUjWTAiVxAIrdOtVAmJ+A/qkhVxc4KB0AAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/08f0b4d049f4e024d92a458deddda5ce/c7240/cover.png","srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/de3a1/cover.png 150w,\n/static/08f0b4d049f4e024d92a458deddda5ce/30cdc/cover.png 300w,\n/static/08f0b4d049f4e024d92a458deddda5ce/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/81307/cover.avif 150w,\n/static/08f0b4d049f4e024d92a458deddda5ce/aa5b9/cover.avif 300w,\n/static/08f0b4d049f4e024d92a458deddda5ce/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/c65bc/cover.webp 150w,\n/static/08f0b4d049f4e024d92a458deddda5ce/078c3/cover.webp 300w,\n/static/08f0b4d049f4e024d92a458deddda5ce/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"4057e0b3-692b-5512-a1fc-cb93bd81fe0e","frontmatter":{"title":"DevOps monitoring system","teamSize":"3 specialists","duration":"ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABCcAAAQnAEmzTo0AAAFMUlEQVR42iVUWVBTVxi+z44gKAGRBBBRUFlkLyIapVRBZQBDkCWBQJSwRSWADgkgIBAVVMQEJEZZAlEgQFxAFmurganjTOGhTnVGO4I61hk7PvjgU/3639OHM+fem5zzf/+3/JyqSIVrndfQ0tyMspJSBG4JQNL+/ZAckaBEVYwChQKy7GykHk5BWmoqjhUqYbPZsPLuHYqOH0d6ahrS09Lg5ekJf79N4EKDQ+llA3Kzc1BdVY01Ts7sUkn6ETpciNLiEpwoL6e9GEelmTjX2ISUQ4dxMCkJpSXFUBYW4PDBQ+xiT4/14MLDwqGmA/sTf8LuXfHw9fZhzyfK1VCXlaGvtw9vl5fx96dPePrUgeioKLi6uCA6Mgq1Oh1ysrIQQ9/i43ZBRYi5nKxs2O12avMAgrcHQ5aTg2PKQvbjXfsEvn79io8fP+LDhw/49u0blhYXERIcDME6N+zdI8Y+WtsCt2J0ZAQvXvwBLoYq7RPvhaqoCAeTk5Evl6OqshKX2i9hft6BcdsoHty/z9bwHSt+efwYz58/x9DgIJIPJMHdTYATajWMBgMCNm8BJ9ogxG6Cm5jwIxR5ctTptHi3soJ/v3/HzZtmar2MKClDsaqIirTh3l07lpff4suXL3g49RDhO8IQFREBF+c11Ho0OOfVThB5CeHs5ISjmVIszM/j/fv3ePPmL9TX1iI1JYUh0WlrMDc3i6WlJaxQwYH+fty5bcXnz/8gM0OK40olrl3tAOe/yR+rV63CduLBOjiE169fY2ZmBo/m5qCpqMCe+Hgo8uU419SAW4R4bnYWi4u/E8plav9ndFy5gi6jAWfr6qA9cxqcNCMDGZIM5q87Viv6+/oYj2p1OQYHLIwrG/HYSdWNhk7icRjjY2OYmpyklqdwproSjfW1aNO34HzLOXCVhIJXtLmpCW0XLkAuk2HnD7Gop4pPfn3CRHA4HHj58k/oamqI6wQ01NfjvL4VFSdPwnD1Cgwdl2G63o2mhkZwZaWl0Ov10NKfdVotqiurmLd41UaGh2Hq6WF8PXv2GxYWFpCwdx8tMfJJQM2pCtTSmZ7uboyPj1P7xGGJSoUj6enooYNnqfKZ06chz5UhOiISh8hGJ8kS/K4sUDCzBxHXfJKCtwchJjIaeTI5bphMVHQAjY2EsK+3F91dXejuNqL94kWKVDK8hUK4ua5lUdro44sdIaHMvJ7u67HB3QN+9M1/ox82k6ASAjM6OgL7xDimpibB9VM70/RgHxshgquxNSAAQso2fxmfBt5fIqEIAoEAHgJ3CNaug6/IG9sCAhG3M44ckI/eWzeZ8Xkw3OS9u7ANW2Hu6SbptchIT0NYSAjc6CB/mZvrOkIsYgXWEzoPSgZ/YRRRkn00C6dIGJOpB5WaSkSGR4B7QBeODN9mVXgf5eXmIkEsRkhQEBtHvOm9aQm9vBhCPl7i3XuQTTNAV6MlIS4zG7169QrT09PgjAYjmXgWnR0duHr5EtovXARvJV6EpMRE4i6Qccoj9PPdiJ0xsZCSb/n5abUO4T4BamxoIOM3oUqjAecj8mFkH6CRZb5hoqxOYMjSTyZthiw3hwaHmLUSFxuLnOwsak1DA7mTzcU6iqbDMY/WllZK22qEhYb+78NNpJivjw8K8hWs/YkxGyXiNmtHU3GKhkYe2/nhYL5hxqDFwnyqVBQQNcHwoRnqusYF7W1t4PjhKpVImAD8JNZTtS6jkWV2Zmaaxc5sNkPf2oKe69dhGRigOFpgIXfUEOc8DTw6XsRMqRT/AbN9kxzlNuWvAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/c884efc5b3a893cd66340687b7f94bd3/c7240/cover.png","srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/de3a1/cover.png 150w,\n/static/c884efc5b3a893cd66340687b7f94bd3/30cdc/cover.png 300w,\n/static/c884efc5b3a893cd66340687b7f94bd3/c7240/cover.png 600w,\n/static/c884efc5b3a893cd66340687b7f94bd3/e8b76/cover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/81307/cover.avif 150w,\n/static/c884efc5b3a893cd66340687b7f94bd3/aa5b9/cover.avif 300w,\n/static/c884efc5b3a893cd66340687b7f94bd3/0c8d0/cover.avif 600w,\n/static/c884efc5b3a893cd66340687b7f94bd3/e65b9/cover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/c65bc/cover.webp 150w,\n/static/c884efc5b3a893cd66340687b7f94bd3/078c3/cover.webp 300w,\n/static/c884efc5b3a893cd66340687b7f94bd3/6d09e/cover.webp 600w,\n/static/c884efc5b3a893cd66340687b7f94bd3/83805/cover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"9f63d17d-6164-509e-b2c7-4c655ab9ad7a","frontmatter":{"title":"Web & Mobile apps for a logistics company","teamSize":"7 specialists","duration":"3 months","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEyUlEQVR42mVUaUxUVxR+MCyDAgNVZLGCFqggIAEURGBQ2WxALasOSGXXsCiLQRjZBgcFyyqLSZUUoVi1xIoVpCjEEjGpTE1wbApIjKggIcRCIgm/+HruRWiaTnIz7+W++91zvuUIGoIATQ0N6InFMDYyQkpyMiw3WcJgrT5M1q2HlaUlfLy9YahvAB1tbQj0/ZbNW7Db05M/a9BZhrGyBE1Bg2+sM/4MmzZ+Dnm+HLdv/4zYo7EQaWgiOTEJ4+PjUJQokJ6WBkcHB5iZmmKbnT20tbRgZGAILZHoX8DVh0+3sWqjIqMQ4OcPczMzJCUkYmlpCVNTU/j7wwcUFhbC1GQDXF1c4L7THc5OzpAYGv4fUEtTxEHNTc1QU12DqqoquLm4QiaTYXFxEW/fvsXCwgKU55QQ6+jCwtwcItHyGeE/LbOqNDV5dTnZ2Rh8/BiTk5O43t6Oo9ExKCooxMzMDF69eoW5uTmcKz3HAWysreG5axdiY2Ph5uoKsa7OMvgKsohAE4mv1tZWtBPY4YgoSL28UFxYhJGRv/Ds2R9482ZiFZC13tfXh65793A0JgZr16xZqVaA7IiM83Y8OQWNjY3Izc2FE5FvZ2ML2eEjeDI4iKdPf8fLl2MoUyrhQdzlnckjaqohlUo5EGufC8wqCw8LQ1BAIBISElBRUQGFQsH5s/3CGgeDQ/DTrVt49OgRhlRDqK2txemc02SvFCjLlNi3d98yIKONVci8t8PNDSeOn8CPP1znh0tKSuBgvw0bzS3wVdB+3Lx5E93d3RgYGMDFiosoKCjg/J6hTqTePhxQYrCstCDPy8flpssYGqLba2qQmXEKWSczsdnSChak+P7AIDQ1NqGz8w7U6ue8ZXZJVHgkD4GHuzu3kfN2Z+5HoYnAGBetLddI5RwkxifAe7cXttp+CQszc/h4eaPhUj0qv63kAiiKS6gqKTf8WQoB29fV1qEKJdDRoiQ9V6tRUV7BDbzXdw+ar15F551OfvBkegYyaFVXVvG21S/UqKqsRD4JIiWgHS5usKKYssTYb7UjUAMIFAIerQe9D7jnjsV+g9evX+PXnh4E+vvjxo0b1KqaGzrs61BevbPTdq5+/LE4hAQHw4+EYSKu1SPrvFD/iV/u3uUqMvXY4fn5eTwmg7e1tZFlnuDhg4doa22jCwJgJJHAgAZFRno6VV6Jhvp6RIZHIDsri+dbeP9+Gmflchwge5iuN8Gl2jqMjY2ht7cX1VXVRLoHT8Lw8DC6urqQkpSM4qIipKamUt79kHkqE8lJScRpIowlRhBYnO7f70FzczMiwsLxPf3L8/N5pteI9aAt0uItMVqmp6cx8NsAwkPDuFX2+PpyekZGR0mwLpQqSiE0NjSirq4O7KdSqZBH3mI3MU+ZbTDl08eGDM4ccOW7K5xjsa6YA5pQRwdDDnDfxhGf+jRDhWqyDKts4eNHGgyD3AZsuDIw5q89Ul9yQTm8SAxmqfPKMsTIohEZEcFNLRaLVycOX7Ozs+jo6ODEq4ZUCD10iPtK+FRhemoan+DsPSY6Gv39/ZTpl3y82VLWWX5Z7Fajx0bVxMQERomHd+/eYZw+vtbSQlOlFOUXLnCx2CE9anOn2w4kxMXDydFxtSK2t7IY4D+VxTwvM1HkzQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/fbf2d2e82f22409b4359437047ddb547/c7240/cover.png","srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/de3a1/cover.png 150w,\n/static/fbf2d2e82f22409b4359437047ddb547/30cdc/cover.png 300w,\n/static/fbf2d2e82f22409b4359437047ddb547/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/81307/cover.avif 150w,\n/static/fbf2d2e82f22409b4359437047ddb547/aa5b9/cover.avif 300w,\n/static/fbf2d2e82f22409b4359437047ddb547/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/c65bc/cover.webp 150w,\n/static/fbf2d2e82f22409b4359437047ddb547/078c3/cover.webp 300w,\n/static/fbf2d2e82f22409b4359437047ddb547/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"45987eea-191f-531c-b854-25e3d60decff","frontmatter":{"title":"Equipment selection service","teamSize":"6 specialists","duration":"ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAADoklEQVR42n2VyU8TURzHp50pbVHEBQIaEzVGEywiVsqmUEuhuBfaiqUiqMhWRBoVsBCQ1WhAPCgYZbkqFDQgy8liol44EfVGgoSrXNA/4OtvXplCm+rh5U3e8nnf3zqcjOMg52QhB9uTycDRzLFvOXhOHrAffJ/zX9wMoZmnyzKCiSM9LR02qw0qlYqB2V4IGAOG2lAIAlOmUCiQZzajpbkZ3o8fMTgwgMjISAZVhoXRYyEUSgvSrBAU7EJsTAx6urvhGR3FwKvXGBocxMLCAj5MTiJeo2FnpIc3MzYUiop4gR3U6XQYHxtDQ10d9BkZSDquRaouGafST6KZqfUy5eJZQeDBy+V+KAOKPuF5nh24bLNhZmYGSVotNHFHYDhtQGaGHvpMPc2ZiI/TwGLOw4/v3+CqrfUHS5DzPiDPJPv8Vmi3Y+nnErKNRmQRqLWlBffu3sO5s+eQmpKGlORk5GQZkZacgjvVNVhe/om21la/X9czgsO2iG3Iz8vDp7k5TExMQKc9gUedXWh72Ir+vj54PKMYHx9HkeMqEhOOIfPkKQYeGhjE1NQUxjweHD50SEovDi6XCy/7++H1evH2zRvYLFY0NzYxwDRdWF39hT9/frM90Q2iQpMxG10dHbhPFrx/9w59L55vAKsqqzA/P4+VlRV8/fwFF89fQEVZBQtCQ3095kj5zPQUbpSUIIPWRFhZaSma3G44q5x41tuLpMTjPqDoSNFHFeWVTP7a2hraydQzplyYsnNYhHNzTDDoT8NhL0T5rTLU1tSwM1cdDhJTiYP790Mh9wWGKbxSUAC3uxGXrQUYGRnB4uIimhobmVKjwYBUMjHXZIL5kpmli+tODX1fgvZYIqJ27IRAwYgID99IG4FSxmqxoL2tg6A2dHV2YnZ2lhK7B05yx7WiIvaoNd/CUiabHtm7ew/UijCoaISr1Cz1Nmp5vQFk0cHb1beRT5fEHBseHkZHezuqnU4UXytGMYEry8uReDSBwbZQbauVyoBq4aRGIJWcGH53wwPYC+y4fv0GJicnME0BefLkMXqf9iBBE0/+4hGhDoeSoMG9gNtc2GIJidDo6GiUFJegtLQMhYUO9FNKiYr3xMZS++KwlWBimYbsNsELolqpm1itVtTV1VNQUlkUlcxMdUDt/hMoSZcaheTXXEqfm2R6zK4oqMKU/l4YqsEGdJsAoPTiOvTAvn3YuX2Hr16DGnFwh+dCgQKhcv8v4H+/C8nkv+/GeTcU9GBXAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/4bba86a6c2c681ec6c2473039256f576/c7240/cover.png","srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/de3a1/cover.png 150w,\n/static/4bba86a6c2c681ec6c2473039256f576/30cdc/cover.png 300w,\n/static/4bba86a6c2c681ec6c2473039256f576/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/81307/cover.avif 150w,\n/static/4bba86a6c2c681ec6c2473039256f576/aa5b9/cover.avif 300w,\n/static/4bba86a6c2c681ec6c2473039256f576/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/c65bc/cover.webp 150w,\n/static/4bba86a6c2c681ec6c2473039256f576/078c3/cover.webp 300w,\n/static/4bba86a6c2c681ec6c2473039256f576/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7","frontmatter":{"title":"IFSE Parameters Tool for Revit","teamSize":"6 specialists","duration":"3 mth - ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEqUlEQVR42m1UaVCVZRi9l8uOlQqyN1mxg2wBjgJhJSq7bMplk5TYBCZkm1gESgFJViORbcDBQdCBAYGByWvs0bCNbAMGAYkK9iMz+MGv0/O+LPGjH9+897v3Puc9zznneQRSAiGEAgF/dj5LCYWQFokgkpKCgN73PkpKSrC0sICSoiJ/363ZPgU7L6z4fwEUFGFmaorwsHBUVFZidGwML1+9wuEPDm8BUo1wDykOuBdAXk4Oerq6CA4Kwq2SW+jr68PzlRX89eZvvH79J/54voKFxd8R6B8A0yOmOLj/wC7YNpYAKsrK8PXxQU5ODtrb27G6tor19XVsbm5iY2MDg4ODiIyMQm1NLfr7+5GUlIwAcQCuXImHq4srJ7LTKQcMDAzExOQkhkeGkZaWhrzcG1heXsb8/DxWV1dRUVEJ22PHUVRYhF+GhhD3dRySEhLh5uoKq0+soCivsKsnBzxqY4P0tHS0trZCW0sL5qbmGB0d4+1OT0+j4X4DkhKTUHb7NsrLy9HU1IS2R+24U3YHYj/xLtguINNBLBajvr4eB97bD2u6dWRkFD09PZhfWMC9untIS01FArVoRrpFhEcg9NIlZGRkwMXJeQtQuAfQxNgEKd+kwNfbByL68qi1DSYmJgl0GL29vSgpLkHm1Qx4nfWEpbklrlI36SRNfFw81RpzQBF3e9sUR0dHVFdX49usLHi4uePk518QozQuQ35BPqIvR5NpvtDX1ePsiwoLIZFIMEAGJZNBDENGJP0fQ/ZH1kp4WBiiIiJR+sOPSExIQh21mn09m2tWW3sXYaFfwdvLG9evXeNPSXEx/M77QVpKBFlpGX4KGKqqyiGoHVJFakoqZ1pFAS4tLUUluXvM5iiioy7j+7w8BFEamGbMnPsNDfBw9+DsFOTksU9RiZ8CkVCKgqyHhIQEPHj4EM3NzcjNyUUzsXrQ2IjzvucgJhYWZubcMHtbO3RQVlmkJJInuPjlRd4dM5b9zifFw90dP/d04+bNfKSSm3NzczwuAwMDvLCivAI+3r5wdXaBp8dZFBcVo7OzE9VVVcjMyITT6TPQVNeAhpo6BIyqtqYWDPQNKKhuXPCOjg5MUtDHx8fJ6RE8fvwTurq6MEqfWaBjY2K4y9nZ2UhOTsYJBwfofKSDD9l8s5TLycpyLSyprc8cTlBBLLq7u9Ha0sqZtLW1obysnAOdI7eZOXV1daipqaFkfMeTwRjqfqyzpSGznJ2MMssgu9nL0xPmdMGF4GAU5Bdw3Zgx7lQcFBCIBjJldnYWMzMzGBr6lVrPgh3pu7W+hFtry8fbm48fC7W/2B9GhoYIp6m4S5FhAWcmtLQ8wrNnv9GMr+Ht23/whrbQ2toalpeW+YwL5GRkud3sZHMcEhKCHGJof9wWgcSkk7STPJFgmpgsLCzixYuXWFpcwtOnEwTewqcoNjoGPpTPT+3sIWBWsxyyhy3Tnf2oclCZR4mZMzU1RY4PopHavEGbKIYm50JQMI/UacdTsKPLmVTmpmZbgOqqatDS0OQuGRsa4QjN9vta2nh33zu0BEIRQdva+YwTzyArsrGy5uN56qQjB2MZNTEyhqG+Af4FpvlIvkbaKVIAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/fd962eb9870635d151007d855ece5f8a/c7240/cover.png","srcSet":"/static/fd962eb9870635d151007d855ece5f8a/de3a1/cover.png 150w,\n/static/fd962eb9870635d151007d855ece5f8a/30cdc/cover.png 300w,\n/static/fd962eb9870635d151007d855ece5f8a/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/fd962eb9870635d151007d855ece5f8a/81307/cover.avif 150w,\n/static/fd962eb9870635d151007d855ece5f8a/aa5b9/cover.avif 300w,\n/static/fd962eb9870635d151007d855ece5f8a/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/fd962eb9870635d151007d855ece5f8a/c65bc/cover.webp 150w,\n/static/fd962eb9870635d151007d855ece5f8a/078c3/cover.webp 300w,\n/static/fd962eb9870635d151007d855ece5f8a/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"08716ab8-fc5f-5f90-9fc0-a8218ec51923","frontmatter":{"title":"Website for architectual agency","teamSize":"5 specialists","duration":"3 months","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEBklEQVR42o1UWUyUVxgdtS7MMCj7vg5awFbc0ApateyrCjPIlkJfigOD4/JElYGptlQjmJooM0gJtE3BBgiKjkAjwcgiMxOcFGYCCS8Q+8YuvgDheL+bDIFYmv7Jzb/de+655zvfETg7OmGj4eTgCPudu+Dq7AKxSASRjZA/uzg5b7hG8F+Avt4+UF5Uws5WjIjw4zh18hS2fbKVv28Eug6QJrm7unFmO7Zth8RfgrYnT1Bx5w7GxsawuLiIh9XVOHTgIBztHfg8WrMWfB0gTbIVirAncDcK5HK0NLfAYDBgcHAQMzMzsF6zs7NIl8rg4ebOJaB16wBpB/ro5+OL/G/z8eD+fRiNRvT09kKn06G7uxtzc3NYWVnB8vIyurq6oFQqcSB0P3ZLArk0VpYckHYhXRLiEtDb04POjg60tbWhvb0dHezZZDJhaWmJs6t5WIOoyCikpJxh90gkJyXhs5C98Pb0Wg+4U2yH+Jg46J7pMD4+junpaVgsFrS2tqKuthYLCwuor6tD1OlISNPSUKRQ4MrlK8g8nwEvD89VPVcBxSJbyNKkaG5uRk52Dl52v8Tw0DAusSpHnv4KmqoqyKRS1NfX4/at25DJ0lFaqsYl5WX4eHlzwFWGJC4d+UxyCq9qdmYWB7hW/B3UZWomRTyyMjKRevYcnuueo6KyEopCBcrLy6EqUXGGVmIc0FYohM32HSguLobRYMRdtqCpqQllpWW4eeMmYmNiGVgqPx4VqKGxEeU//AiNRoOSa9exNziEE6ImEBDVuNg4dtQWPGZ6kUWokqY3Jtz7+R63T0xUNJcj7Vwq+vr68IgBEvuS6yXISD+Pb3LzkBifgMAACQRBnwbxAtBl0OvR398PvUGPnlevMDU5yX1osZg567zcXL5hqUqFpMREhH9xDOFHjyEnKxsqBk7eFPj7+kHzoIoXgJjNz8+j68ULPHv6lFtlkoHeYlpp2fFIjr86O3GxqAjy/Au4yqp8Q/09CuUF2L8vFHZiMQTUalTFggtyVGurMTIywg08NTWJ0dFRbp2B16+hHxhAbc0v+LPxEfclHV3NND4adoSHxmbBJt5lAjcXV0gCAnDkcBhSkpKhKCiEVquFeXiYe2/h/XtMTEyg4Y8GpusbDA39zW0TxuYLbWx4WBCQtbd5lQmUSk+Oj42O4QUgxhQEZrMZ7xjw23/eorKygqVOBGdE4RESFAySzGGX/cfhQC4ng1J/nog4jmjWXuS/vK9z8fuvvzEdf8KWTZv5oGqGfr4Phw8eQoCf/8fhYB1kTAoI8hUB0yCxT574kkcWsaI5dJJg5g4Ctpp6w4Alpp7uHhyYdqckoUUki/U/vdOggtIG/yuxaeHauLf26tr//5bYHwAGByLOnddQVQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/541da7254eca101084504751a7e14ba1/c7240/cover.png","srcSet":"/static/541da7254eca101084504751a7e14ba1/de3a1/cover.png 150w,\n/static/541da7254eca101084504751a7e14ba1/30cdc/cover.png 300w,\n/static/541da7254eca101084504751a7e14ba1/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/541da7254eca101084504751a7e14ba1/81307/cover.avif 150w,\n/static/541da7254eca101084504751a7e14ba1/aa5b9/cover.avif 300w,\n/static/541da7254eca101084504751a7e14ba1/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/541da7254eca101084504751a7e14ba1/c65bc/cover.webp 150w,\n/static/541da7254eca101084504751a7e14ba1/078c3/cover.webp 300w,\n/static/541da7254eca101084504751a7e14ba1/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"4010b091-889b-5be1-ab5a-bde195aa7729","frontmatter":{"title":"3D configurator","teamSize":"7 specialists","duration":"ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEYElEQVR42qVUSVNUVxR+NCSLxCGKWUQ0ajaKYVDmGUwAkVHmboiC0jST0EyFdAMyNtjdC2l0oYAEGbuZGhASSwaraIYCqsCFxKIgUBV2UPyGL+demvTCZRan3r3vnfPd753zfVcQCVawohAE4X8FwxAd4QhwdHCARCJBQnwCkhITIU4WQyyWIDkpmdbJkIjFFBJI6D1/R3uWw3Lj4+L59+v29sfgAlxuusA4YoTBoMeAwYDBgQFMTExgZHgYo0Yj3o6/xfjYGF+zd2Ojo5QzCIPeAH2/HkODQ3BydLIABvj784S+3l6eNGYu1uv7qaCfCgb5IX19vXxvHBkh0DG+Pq7x9faxAHp7eaG4sAi3AoPg5uqKJ1VVSLt3H9euXoUznczCycERjj874Po1ezxMf4CqyirccHJGWOhtlJaUwtPDwwL4tc1XiL0bCw93D5w7a4tU6me2LAvy/AKom57iaWPTf5GbnYP8vDwkUr/PnP4OQQGBiKNaa5GIBkOAR1MWIJfLER0ZhZ8uX0FNdTWGh0fQ+qoVq6urWFlZwfLyMlaWV/Di+QuMj4/jcVkZrly6jAQaSm5OLmfHp8zArK1EaH7WDFmmDJHhkejo6MDOzi7aWtug1WrR1dXFQ6NW43X7a/7t1cuXiAiPILAcqBpUZumYGbKor6tDXU0tGurq+W9ub2+jva0dhflydHb8TkDtvAU93T3Y2Nig/HoCakCTqhGKcsURQyszQxYVFRVQ1TdA81SNqopKmObm8HH9I0qKS1BKUSQvRPnjcnz6tIGZ6WmUlZZBTblNjY0oLJB/CVhcVIRaM8M86kl/Xx/W19cwb5pHgJ8/bgUFYWlpCWtra3jT2Yksqezor2rrkJkhtQCa7YIsmQxKhQJKoi8mNwwNDcFkMmFzcxN3wsIQExODra0tzM/Po7enhw9DQYyVCiVSU1I4BpsFZ8g291J/41rMz3tEg4mATqfD5OQkpqamEOgfiJDgYMx++IB3f76DVq3B7ZBQnstqGPgXDJMSErnGpA8zuLZqq2u4A0bJZlPv32Oa+sbkMkCOqVQq4efjiwdp6bwmKiLSwvAYMDoqmoOl0CXgSQJvVKlIi8NYXFzEwcEB9vf3sbCwACNZsoYOc3d1463JoJrQ4BALQxuRNWysrckdKaTDTM7Uw80duuZmzMxMk+Z2cHh4yONvWs/OzkKj0eCm8w3ukJysbP7LjBjDEk588y23EDut5kk1t5yPlzcX7ue/PmN3dxd7/+xhb2+Pg2+QbFh/3VzckEVGYDXxcXE4ffIUGJbAFsxy7EJ43tLC/cpOLCARs6upm7mk8w2Pnu5ufrtkSqU8hxlARw6roEmHh93BqRMnIXxvew7enl40yQDeaD9fP34/Bv/yK9Lvp3HGj3LzuDZl0kyuBjY0V8rxp1xfqmE6ZX23PXP2iCGjeuG8HTf78ZO1oKVZhz8mJrn2TKY5fk9qNVrExtzFpYs/4qLdBZ5r98N5jsGw/gXxiloEl3XVyQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/6f44bc6e2f75db97570cc19ea632c28c/c7240/cover.png","srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/de3a1/cover.png 150w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/30cdc/cover.png 300w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/81307/cover.avif 150w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/aa5b9/cover.avif 300w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/c65bc/cover.webp 150w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/078c3/cover.webp 300w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}}]}},"pageContext":{"limit":10,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-projects-tsx","path":"/projects/page/1/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb","frontmatter":{"title":"Bimcore Revit Add-In","teamSize":"4 specialists","duration":"3 months","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEiklEQVR42i1UR0xcVxT9ptmmmN6HYps+tAGMgaENzNAUTBsItjEQaoJpZug2diBCCg4YK3R5aF4gjBeAKAIEZhVLCBEJIpYs2CCxccwWCZ28e8lIXzPz/rvnnXfuOVdyc5XB6959hAaH4q6Hp/gOgauzC6+5OLnAycERYaEKWN2xFP+dYWRgyPvsbGxxx9yC31tbWsP01m0YGxpBopd+Pr6ICIuA930vhCvC4C5zQ/TDqP9BnREZ8UAUWSEwQA7T26YM6GBnD0uLO3B2dIKttQ3MTc1gYmQMiYpCgoKgjI5h4PjYeN7065s3yNdqmYkqUQULM3P0/9HP4NfMnZi1zMUV9gKc3jOgj5c3g/X93odYpRLDQ0MIlMsx0N+P0uISuIqC0dFRZq7XT0KlUjFruX8AH0wPsTcTzBmQWNH1ZqZnBLs4LC4uIj9Pi4WFBYyPjwsGMiwtLeN112vsbO+grrYOpSWl4sABZD3KQs0vNay7o4MD6yv5evsgPTUNa6trYsMjrKysQJuXh7d9b/FbTw/ilLFYFWtjo2PY2dlBa2srg01PTQngEvE9jZedLxEeFg5Jkq4ZpmhSBLMlNDW+wNHhEXq6u7nTQfJA7O7u4vLykpmQXvQQ8OjIGNpb2/Dlyy5mZmYYgwGpiGyRGJ+AHwsKcPTPEaYmJ2FvaweNWoPT01PQZ3VljQs0ajW+/fsNZ2dnTOLk5ARf//qK8rKya0ASlzQgS8RERQututCsa2bAxvoGXF1d4eLiAt+/X4jGhKOurg7ra+sYGR7B4OAgwhQKeLi5s3XYh/6+fiAdCfSe51309vbi3btBXlMnq3F+fs4M9/b2xKGBWPj0CUVPnnJjNjc30dnRCR+xl9jdMrl5DVhVUcldzPwhE91Cv6eigDQj+8Qr4/BCaBvg588+zcnOEeyGsbGxgaE/h7C9vY0PH/TsT+4ypSNFo+Gu6nQ6aIWZCaChvpFPJp+2t7WzyWNjlKgor0R19c8YGBjA54XP0DXpMKnXo76+HoY3DCBRzOhhg4sCbV4+KiuqBJM80e0evB98j7m5OSwvL7N+1E26TW3Nc7bPxMQEggOD+Mo3jU0gkdPJCrRIBs/KzIY2V4uI8Ag8KyoSRq5lP5Lx5+fn8biwEAWCLXlX19TMASCpDKQb1xpSVik61IQnhY/R9eqViNoY0lJTOWLFz4qRm5OLNmFoYktpahbSEOvj42OxvwtRkVE8LCh+Eo0gKiRgEra6qgqNDY2gsUZS5GZl86DY2tzC1tYW3GQylBQXM+DB3wdoaWlh9pQoGytrSHRvT3cP9lFIUDAPhLLSn3iU0awLFWvky4ODA8zOzIqhIEd2VhbW19dxeHjIJPSiKcmqJLadREUF+QVMma5NgyFJjCuF8CUxpENaW1qxv7/PUpADiCE17OPsR3S0d4iUlEOdlMyJY0CKHy2WCHYPH0RCERLKWSYZKEnkTWJTLyYNRbS6sgrPRZfbRJarxO+MtHS+Mj0SRYzEJHZ0AnWdrksPgVKsMtIzOKsERgcmxMUjWTAiVxAIrdOtVAmJ+A/qkhVxc4KB0AAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/08f0b4d049f4e024d92a458deddda5ce/c7240/cover.png","srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/de3a1/cover.png 150w,\n/static/08f0b4d049f4e024d92a458deddda5ce/30cdc/cover.png 300w,\n/static/08f0b4d049f4e024d92a458deddda5ce/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/81307/cover.avif 150w,\n/static/08f0b4d049f4e024d92a458deddda5ce/aa5b9/cover.avif 300w,\n/static/08f0b4d049f4e024d92a458deddda5ce/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/08f0b4d049f4e024d92a458deddda5ce/c65bc/cover.webp 150w,\n/static/08f0b4d049f4e024d92a458deddda5ce/078c3/cover.webp 300w,\n/static/08f0b4d049f4e024d92a458deddda5ce/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"4057e0b3-692b-5512-a1fc-cb93bd81fe0e","frontmatter":{"title":"DevOps monitoring system","teamSize":"3 specialists","duration":"ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABCcAAAQnAEmzTo0AAAFMUlEQVR42iVUWVBTVxi+z44gKAGRBBBRUFlkLyIapVRBZQBDkCWBQJSwRSWADgkgIBAVVMQEJEZZAlEgQFxAFmurganjTOGhTnVGO4I61hk7PvjgU/3639OHM+fem5zzf/+3/JyqSIVrndfQ0tyMspJSBG4JQNL+/ZAckaBEVYwChQKy7GykHk5BWmoqjhUqYbPZsPLuHYqOH0d6ahrS09Lg5ekJf79N4EKDQ+llA3Kzc1BdVY01Ts7sUkn6ETpciNLiEpwoL6e9GEelmTjX2ISUQ4dxMCkJpSXFUBYW4PDBQ+xiT4/14MLDwqGmA/sTf8LuXfHw9fZhzyfK1VCXlaGvtw9vl5fx96dPePrUgeioKLi6uCA6Mgq1Oh1ysrIQQ9/i43ZBRYi5nKxs2O12avMAgrcHQ5aTg2PKQvbjXfsEvn79io8fP+LDhw/49u0blhYXERIcDME6N+zdI8Y+WtsCt2J0ZAQvXvwBLoYq7RPvhaqoCAeTk5Evl6OqshKX2i9hft6BcdsoHty/z9bwHSt+efwYz58/x9DgIJIPJMHdTYATajWMBgMCNm8BJ9ogxG6Cm5jwIxR5ctTptHi3soJ/v3/HzZtmar2MKClDsaqIirTh3l07lpff4suXL3g49RDhO8IQFREBF+c11Ho0OOfVThB5CeHs5ISjmVIszM/j/fv3ePPmL9TX1iI1JYUh0WlrMDc3i6WlJaxQwYH+fty5bcXnz/8gM0OK40olrl3tAOe/yR+rV63CduLBOjiE169fY2ZmBo/m5qCpqMCe+Hgo8uU419SAW4R4bnYWi4u/E8plav9ndFy5gi6jAWfr6qA9cxqcNCMDGZIM5q87Viv6+/oYj2p1OQYHLIwrG/HYSdWNhk7icRjjY2OYmpyklqdwproSjfW1aNO34HzLOXCVhIJXtLmpCW0XLkAuk2HnD7Gop4pPfn3CRHA4HHj58k/oamqI6wQ01NfjvL4VFSdPwnD1Cgwdl2G63o2mhkZwZaWl0Ov10NKfdVotqiurmLd41UaGh2Hq6WF8PXv2GxYWFpCwdx8tMfJJQM2pCtTSmZ7uboyPj1P7xGGJSoUj6enooYNnqfKZ06chz5UhOiISh8hGJ8kS/K4sUDCzBxHXfJKCtwchJjIaeTI5bphMVHQAjY2EsK+3F91dXejuNqL94kWKVDK8hUK4ua5lUdro44sdIaHMvJ7u67HB3QN+9M1/ox82k6ASAjM6OgL7xDimpibB9VM70/RgHxshgquxNSAAQso2fxmfBt5fIqEIAoEAHgJ3CNaug6/IG9sCAhG3M44ckI/eWzeZ8Xkw3OS9u7ANW2Hu6SbptchIT0NYSAjc6CB/mZvrOkIsYgXWEzoPSgZ/YRRRkn00C6dIGJOpB5WaSkSGR4B7QBeODN9mVXgf5eXmIkEsRkhQEBtHvOm9aQm9vBhCPl7i3XuQTTNAV6MlIS4zG7169QrT09PgjAYjmXgWnR0duHr5EtovXARvJV6EpMRE4i6Qccoj9PPdiJ0xsZCSb/n5abUO4T4BamxoIOM3oUqjAecj8mFkH6CRZb5hoqxOYMjSTyZthiw3hwaHmLUSFxuLnOwsak1DA7mTzcU6iqbDMY/WllZK22qEhYb+78NNpJivjw8K8hWs/YkxGyXiNmtHU3GKhkYe2/nhYL5hxqDFwnyqVBQQNcHwoRnqusYF7W1t4PjhKpVImAD8JNZTtS6jkWV2Zmaaxc5sNkPf2oKe69dhGRigOFpgIXfUEOc8DTw6XsRMqRT/AbN9kxzlNuWvAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/c884efc5b3a893cd66340687b7f94bd3/c7240/cover.png","srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/de3a1/cover.png 150w,\n/static/c884efc5b3a893cd66340687b7f94bd3/30cdc/cover.png 300w,\n/static/c884efc5b3a893cd66340687b7f94bd3/c7240/cover.png 600w,\n/static/c884efc5b3a893cd66340687b7f94bd3/e8b76/cover.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/81307/cover.avif 150w,\n/static/c884efc5b3a893cd66340687b7f94bd3/aa5b9/cover.avif 300w,\n/static/c884efc5b3a893cd66340687b7f94bd3/0c8d0/cover.avif 600w,\n/static/c884efc5b3a893cd66340687b7f94bd3/e65b9/cover.avif 1200w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/c884efc5b3a893cd66340687b7f94bd3/c65bc/cover.webp 150w,\n/static/c884efc5b3a893cd66340687b7f94bd3/078c3/cover.webp 300w,\n/static/c884efc5b3a893cd66340687b7f94bd3/6d09e/cover.webp 600w,\n/static/c884efc5b3a893cd66340687b7f94bd3/83805/cover.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"9f63d17d-6164-509e-b2c7-4c655ab9ad7a","frontmatter":{"title":"Web & Mobile apps for a logistics company","teamSize":"7 specialists","duration":"3 months","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEyUlEQVR42mVUaUxUVxR+MCyDAgNVZLGCFqggIAEURGBQ2WxALasOSGXXsCiLQRjZBgcFyyqLSZUUoVi1xIoVpCjEEjGpTE1wbApIjKggIcRCIgm/+HruRWiaTnIz7+W++91zvuUIGoIATQ0N6InFMDYyQkpyMiw3WcJgrT5M1q2HlaUlfLy9YahvAB1tbQj0/ZbNW7Db05M/a9BZhrGyBE1Bg2+sM/4MmzZ+Dnm+HLdv/4zYo7EQaWgiOTEJ4+PjUJQokJ6WBkcHB5iZmmKbnT20tbRgZGAILZHoX8DVh0+3sWqjIqMQ4OcPczMzJCUkYmlpCVNTU/j7wwcUFhbC1GQDXF1c4L7THc5OzpAYGv4fUEtTxEHNTc1QU12DqqoquLm4QiaTYXFxEW/fvsXCwgKU55QQ6+jCwtwcItHyGeE/LbOqNDV5dTnZ2Rh8/BiTk5O43t6Oo9ExKCooxMzMDF69eoW5uTmcKz3HAWysreG5axdiY2Ph5uoKsa7OMvgKsohAE4mv1tZWtBPY4YgoSL28UFxYhJGRv/Ds2R9482ZiFZC13tfXh65793A0JgZr16xZqVaA7IiM83Y8OQWNjY3Izc2FE5FvZ2ML2eEjeDI4iKdPf8fLl2MoUyrhQdzlnckjaqohlUo5EGufC8wqCw8LQ1BAIBISElBRUQGFQsH5s/3CGgeDQ/DTrVt49OgRhlRDqK2txemc02SvFCjLlNi3d98yIKONVci8t8PNDSeOn8CPP1znh0tKSuBgvw0bzS3wVdB+3Lx5E93d3RgYGMDFiosoKCjg/J6hTqTePhxQYrCstCDPy8flpssYGqLba2qQmXEKWSczsdnSChak+P7AIDQ1NqGz8w7U6ue8ZXZJVHgkD4GHuzu3kfN2Z+5HoYnAGBetLddI5RwkxifAe7cXttp+CQszc/h4eaPhUj0qv63kAiiKS6gqKTf8WQoB29fV1qEKJdDRoiQ9V6tRUV7BDbzXdw+ar15F551OfvBkegYyaFVXVvG21S/UqKqsRD4JIiWgHS5usKKYssTYb7UjUAMIFAIerQe9D7jnjsV+g9evX+PXnh4E+vvjxo0b1KqaGzrs61BevbPTdq5+/LE4hAQHw4+EYSKu1SPrvFD/iV/u3uUqMvXY4fn5eTwmg7e1tZFlnuDhg4doa22jCwJgJJHAgAZFRno6VV6Jhvp6RIZHIDsri+dbeP9+Gmflchwge5iuN8Gl2jqMjY2ht7cX1VXVRLoHT8Lw8DC6urqQkpSM4qIipKamUt79kHkqE8lJScRpIowlRhBYnO7f70FzczMiwsLxPf3L8/N5pteI9aAt0uItMVqmp6cx8NsAwkPDuFX2+PpyekZGR0mwLpQqSiE0NjSirq4O7KdSqZBH3mI3MU+ZbTDl08eGDM4ccOW7K5xjsa6YA5pQRwdDDnDfxhGf+jRDhWqyDKts4eNHGgyD3AZsuDIw5q89Ul9yQTm8SAxmqfPKMsTIohEZEcFNLRaLVycOX7Ozs+jo6ODEq4ZUCD10iPtK+FRhemoan+DsPSY6Gv39/ZTpl3y82VLWWX5Z7Fajx0bVxMQERomHd+/eYZw+vtbSQlOlFOUXLnCx2CE9anOn2w4kxMXDydFxtSK2t7IY4D+VxTwvM1HkzQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/fbf2d2e82f22409b4359437047ddb547/c7240/cover.png","srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/de3a1/cover.png 150w,\n/static/fbf2d2e82f22409b4359437047ddb547/30cdc/cover.png 300w,\n/static/fbf2d2e82f22409b4359437047ddb547/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/81307/cover.avif 150w,\n/static/fbf2d2e82f22409b4359437047ddb547/aa5b9/cover.avif 300w,\n/static/fbf2d2e82f22409b4359437047ddb547/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/fbf2d2e82f22409b4359437047ddb547/c65bc/cover.webp 150w,\n/static/fbf2d2e82f22409b4359437047ddb547/078c3/cover.webp 300w,\n/static/fbf2d2e82f22409b4359437047ddb547/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"45987eea-191f-531c-b854-25e3d60decff","frontmatter":{"title":"Equipment selection service","teamSize":"6 specialists","duration":"ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAADoklEQVR42n2VyU8TURzHp50pbVHEBQIaEzVGEywiVsqmUEuhuBfaiqUiqMhWRBoVsBCQ1WhAPCgYZbkqFDQgy8liol44EfVGgoSrXNA/4OtvXplCm+rh5U3e8nnf3zqcjOMg52QhB9uTycDRzLFvOXhOHrAffJ/zX9wMoZmnyzKCiSM9LR02qw0qlYqB2V4IGAOG2lAIAlOmUCiQZzajpbkZ3o8fMTgwgMjISAZVhoXRYyEUSgvSrBAU7EJsTAx6urvhGR3FwKvXGBocxMLCAj5MTiJeo2FnpIc3MzYUiop4gR3U6XQYHxtDQ10d9BkZSDquRaouGafST6KZqfUy5eJZQeDBy+V+KAOKPuF5nh24bLNhZmYGSVotNHFHYDhtQGaGHvpMPc2ZiI/TwGLOw4/v3+CqrfUHS5DzPiDPJPv8Vmi3Y+nnErKNRmQRqLWlBffu3sO5s+eQmpKGlORk5GQZkZacgjvVNVhe/om21la/X9czgsO2iG3Iz8vDp7k5TExMQKc9gUedXWh72Ir+vj54PKMYHx9HkeMqEhOOIfPkKQYeGhjE1NQUxjweHD50SEovDi6XCy/7++H1evH2zRvYLFY0NzYxwDRdWF39hT9/frM90Q2iQpMxG10dHbhPFrx/9w59L55vAKsqqzA/P4+VlRV8/fwFF89fQEVZBQtCQ3095kj5zPQUbpSUIIPWRFhZaSma3G44q5x41tuLpMTjPqDoSNFHFeWVTP7a2hraydQzplyYsnNYhHNzTDDoT8NhL0T5rTLU1tSwM1cdDhJTiYP790Mh9wWGKbxSUAC3uxGXrQUYGRnB4uIimhobmVKjwYBUMjHXZIL5kpmli+tODX1fgvZYIqJ27IRAwYgID99IG4FSxmqxoL2tg6A2dHV2YnZ2lhK7B05yx7WiIvaoNd/CUiabHtm7ew/UijCoaISr1Cz1Nmp5vQFk0cHb1beRT5fEHBseHkZHezuqnU4UXytGMYEry8uReDSBwbZQbauVyoBq4aRGIJWcGH53wwPYC+y4fv0GJicnME0BefLkMXqf9iBBE0/+4hGhDoeSoMG9gNtc2GIJidDo6GiUFJegtLQMhYUO9FNKiYr3xMZS++KwlWBimYbsNsELolqpm1itVtTV1VNQUlkUlcxMdUDt/hMoSZcaheTXXEqfm2R6zK4oqMKU/l4YqsEGdJsAoPTiOvTAvn3YuX2Hr16DGnFwh+dCgQKhcv8v4H+/C8nkv+/GeTcU9GBXAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/4bba86a6c2c681ec6c2473039256f576/c7240/cover.png","srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/de3a1/cover.png 150w,\n/static/4bba86a6c2c681ec6c2473039256f576/30cdc/cover.png 300w,\n/static/4bba86a6c2c681ec6c2473039256f576/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/81307/cover.avif 150w,\n/static/4bba86a6c2c681ec6c2473039256f576/aa5b9/cover.avif 300w,\n/static/4bba86a6c2c681ec6c2473039256f576/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/4bba86a6c2c681ec6c2473039256f576/c65bc/cover.webp 150w,\n/static/4bba86a6c2c681ec6c2473039256f576/078c3/cover.webp 300w,\n/static/4bba86a6c2c681ec6c2473039256f576/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7","frontmatter":{"title":"IFSE Parameters Tool for Revit","teamSize":"6 specialists","duration":"3 mth - ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEqUlEQVR42m1UaVCVZRi9l8uOlQqyN1mxg2wBjgJhJSq7bMplk5TYBCZkm1gESgFJViORbcDBQdCBAYGByWvs0bCNbAMGAYkK9iMz+MGv0/O+LPGjH9+897v3Puc9zznneQRSAiGEAgF/dj5LCYWQFokgkpKCgN73PkpKSrC0sICSoiJ/363ZPgU7L6z4fwEUFGFmaorwsHBUVFZidGwML1+9wuEPDm8BUo1wDykOuBdAXk4Oerq6CA4Kwq2SW+jr68PzlRX89eZvvH79J/54voKFxd8R6B8A0yOmOLj/wC7YNpYAKsrK8PXxQU5ODtrb27G6tor19XVsbm5iY2MDg4ODiIyMQm1NLfr7+5GUlIwAcQCuXImHq4srJ7LTKQcMDAzExOQkhkeGkZaWhrzcG1heXsb8/DxWV1dRUVEJ22PHUVRYhF+GhhD3dRySEhLh5uoKq0+soCivsKsnBzxqY4P0tHS0trZCW0sL5qbmGB0d4+1OT0+j4X4DkhKTUHb7NsrLy9HU1IS2R+24U3YHYj/xLtguINNBLBajvr4eB97bD2u6dWRkFD09PZhfWMC9untIS01FArVoRrpFhEcg9NIlZGRkwMXJeQtQuAfQxNgEKd+kwNfbByL68qi1DSYmJgl0GL29vSgpLkHm1Qx4nfWEpbklrlI36SRNfFw81RpzQBF3e9sUR0dHVFdX49usLHi4uePk518QozQuQ35BPqIvR5NpvtDX1ePsiwoLIZFIMEAGJZNBDENGJP0fQ/ZH1kp4WBiiIiJR+sOPSExIQh21mn09m2tWW3sXYaFfwdvLG9evXeNPSXEx/M77QVpKBFlpGX4KGKqqyiGoHVJFakoqZ1pFAS4tLUUluXvM5iiioy7j+7w8BFEamGbMnPsNDfBw9+DsFOTksU9RiZ8CkVCKgqyHhIQEPHj4EM3NzcjNyUUzsXrQ2IjzvucgJhYWZubcMHtbO3RQVlmkJJInuPjlRd4dM5b9zifFw90dP/d04+bNfKSSm3NzczwuAwMDvLCivAI+3r5wdXaBp8dZFBcVo7OzE9VVVcjMyITT6TPQVNeAhpo6BIyqtqYWDPQNKKhuXPCOjg5MUtDHx8fJ6RE8fvwTurq6MEqfWaBjY2K4y9nZ2UhOTsYJBwfofKSDD9l8s5TLycpyLSyprc8cTlBBLLq7u9Ha0sqZtLW1obysnAOdI7eZOXV1daipqaFkfMeTwRjqfqyzpSGznJ2MMssgu9nL0xPmdMGF4GAU5Bdw3Zgx7lQcFBCIBjJldnYWMzMzGBr6lVrPgh3pu7W+hFtry8fbm48fC7W/2B9GhoYIp6m4S5FhAWcmtLQ8wrNnv9GMr+Ht23/whrbQ2toalpeW+YwL5GRkud3sZHMcEhKCHGJof9wWgcSkk7STPJFgmpgsLCzixYuXWFpcwtOnEwTewqcoNjoGPpTPT+3sIWBWsxyyhy3Tnf2oclCZR4mZMzU1RY4PopHavEGbKIYm50JQMI/UacdTsKPLmVTmpmZbgOqqatDS0OQuGRsa4QjN9vta2nh33zu0BEIRQdva+YwTzyArsrGy5uN56qQjB2MZNTEyhqG+Af4FpvlIvkbaKVIAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/fd962eb9870635d151007d855ece5f8a/c7240/cover.png","srcSet":"/static/fd962eb9870635d151007d855ece5f8a/de3a1/cover.png 150w,\n/static/fd962eb9870635d151007d855ece5f8a/30cdc/cover.png 300w,\n/static/fd962eb9870635d151007d855ece5f8a/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/fd962eb9870635d151007d855ece5f8a/81307/cover.avif 150w,\n/static/fd962eb9870635d151007d855ece5f8a/aa5b9/cover.avif 300w,\n/static/fd962eb9870635d151007d855ece5f8a/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/fd962eb9870635d151007d855ece5f8a/c65bc/cover.webp 150w,\n/static/fd962eb9870635d151007d855ece5f8a/078c3/cover.webp 300w,\n/static/fd962eb9870635d151007d855ece5f8a/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"08716ab8-fc5f-5f90-9fc0-a8218ec51923","frontmatter":{"title":"Website for architectual agency","teamSize":"5 specialists","duration":"3 months","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEBklEQVR42o1UWUyUVxgdtS7MMCj7vg5awFbc0ApateyrCjPIlkJfigOD4/JElYGptlQjmJooM0gJtE3BBgiKjkAjwcgiMxOcFGYCCS8Q+8YuvgDheL+bDIFYmv7Jzb/de+655zvfETg7OmGj4eTgCPudu+Dq7AKxSASRjZA/uzg5b7hG8F+Avt4+UF5Uws5WjIjw4zh18hS2fbKVv28Eug6QJrm7unFmO7Zth8RfgrYnT1Bx5w7GxsawuLiIh9XVOHTgIBztHfg8WrMWfB0gTbIVirAncDcK5HK0NLfAYDBgcHAQMzMzsF6zs7NIl8rg4ebOJaB16wBpB/ro5+OL/G/z8eD+fRiNRvT09kKn06G7uxtzc3NYWVnB8vIyurq6oFQqcSB0P3ZLArk0VpYckHYhXRLiEtDb04POjg60tbWhvb0dHezZZDJhaWmJs6t5WIOoyCikpJxh90gkJyXhs5C98Pb0Wg+4U2yH+Jg46J7pMD4+junpaVgsFrS2tqKuthYLCwuor6tD1OlISNPSUKRQ4MrlK8g8nwEvD89VPVcBxSJbyNKkaG5uRk52Dl52v8Tw0DAusSpHnv4KmqoqyKRS1NfX4/at25DJ0lFaqsYl5WX4eHlzwFWGJC4d+UxyCq9qdmYWB7hW/B3UZWomRTyyMjKRevYcnuueo6KyEopCBcrLy6EqUXGGVmIc0FYohM32HSguLobRYMRdtqCpqQllpWW4eeMmYmNiGVgqPx4VqKGxEeU//AiNRoOSa9exNziEE6ImEBDVuNg4dtQWPGZ6kUWokqY3Jtz7+R63T0xUNJcj7Vwq+vr68IgBEvuS6yXISD+Pb3LzkBifgMAACQRBnwbxAtBl0OvR398PvUGPnlevMDU5yX1osZg567zcXL5hqUqFpMREhH9xDOFHjyEnKxsqBk7eFPj7+kHzoIoXgJjNz8+j68ULPHv6lFtlkoHeYlpp2fFIjr86O3GxqAjy/Au4yqp8Q/09CuUF2L8vFHZiMQTUalTFggtyVGurMTIywg08NTWJ0dFRbp2B16+hHxhAbc0v+LPxEfclHV3NND4adoSHxmbBJt5lAjcXV0gCAnDkcBhSkpKhKCiEVquFeXiYe2/h/XtMTEyg4Y8GpusbDA39zW0TxuYLbWx4WBCQtbd5lQmUSk+Oj42O4QUgxhQEZrMZ7xjw23/eorKygqVOBGdE4RESFAySzGGX/cfhQC4ng1J/nog4jmjWXuS/vK9z8fuvvzEdf8KWTZv5oGqGfr4Phw8eQoCf/8fhYB1kTAoI8hUB0yCxT574kkcWsaI5dJJg5g4Ctpp6w4Alpp7uHhyYdqckoUUki/U/vdOggtIG/yuxaeHauLf26tr//5bYHwAGByLOnddQVQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/541da7254eca101084504751a7e14ba1/c7240/cover.png","srcSet":"/static/541da7254eca101084504751a7e14ba1/de3a1/cover.png 150w,\n/static/541da7254eca101084504751a7e14ba1/30cdc/cover.png 300w,\n/static/541da7254eca101084504751a7e14ba1/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/541da7254eca101084504751a7e14ba1/81307/cover.avif 150w,\n/static/541da7254eca101084504751a7e14ba1/aa5b9/cover.avif 300w,\n/static/541da7254eca101084504751a7e14ba1/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/541da7254eca101084504751a7e14ba1/c65bc/cover.webp 150w,\n/static/541da7254eca101084504751a7e14ba1/078c3/cover.webp 300w,\n/static/541da7254eca101084504751a7e14ba1/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}},{"id":"4010b091-889b-5be1-ab5a-bde195aa7729","frontmatter":{"title":"3D configurator","teamSize":"7 specialists","duration":"ongoing","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEYElEQVR42qVUSVNUVxR+NCSLxCGKWUQ0ajaKYVDmGUwAkVHmboiC0jST0EyFdAMyNtjdC2l0oYAEGbuZGhASSwaraIYCqsCFxKIgUBV2UPyGL+demvTCZRan3r3vnfPd753zfVcQCVawohAE4X8FwxAd4QhwdHCARCJBQnwCkhITIU4WQyyWIDkpmdbJkIjFFBJI6D1/R3uWw3Lj4+L59+v29sfgAlxuusA4YoTBoMeAwYDBgQFMTExgZHgYo0Yj3o6/xfjYGF+zd2Ojo5QzCIPeAH2/HkODQ3BydLIABvj784S+3l6eNGYu1uv7qaCfCgb5IX19vXxvHBkh0DG+Pq7x9faxAHp7eaG4sAi3AoPg5uqKJ1VVSLt3H9euXoUznczCycERjj874Po1ezxMf4CqyirccHJGWOhtlJaUwtPDwwL4tc1XiL0bCw93D5w7a4tU6me2LAvy/AKom57iaWPTf5GbnYP8vDwkUr/PnP4OQQGBiKNaa5GIBkOAR1MWIJfLER0ZhZ8uX0FNdTWGh0fQ+qoVq6urWFlZwfLyMlaWV/Di+QuMj4/jcVkZrly6jAQaSm5OLmfHp8zArK1EaH7WDFmmDJHhkejo6MDOzi7aWtug1WrR1dXFQ6NW43X7a/7t1cuXiAiPILAcqBpUZumYGbKor6tDXU0tGurq+W9ub2+jva0dhflydHb8TkDtvAU93T3Y2Nig/HoCakCTqhGKcsURQyszQxYVFRVQ1TdA81SNqopKmObm8HH9I0qKS1BKUSQvRPnjcnz6tIGZ6WmUlZZBTblNjY0oLJB/CVhcVIRaM8M86kl/Xx/W19cwb5pHgJ8/bgUFYWlpCWtra3jT2Yksqezor2rrkJkhtQCa7YIsmQxKhQJKoi8mNwwNDcFkMmFzcxN3wsIQExODra0tzM/Po7enhw9DQYyVCiVSU1I4BpsFZ8g291J/41rMz3tEg4mATqfD5OQkpqamEOgfiJDgYMx++IB3f76DVq3B7ZBQnstqGPgXDJMSErnGpA8zuLZqq2u4A0bJZlPv32Oa+sbkMkCOqVQq4efjiwdp6bwmKiLSwvAYMDoqmoOl0CXgSQJvVKlIi8NYXFzEwcEB9vf3sbCwACNZsoYOc3d1463JoJrQ4BALQxuRNWysrckdKaTDTM7Uw80duuZmzMxMk+Z2cHh4yONvWs/OzkKj0eCm8w3ukJysbP7LjBjDEk588y23EDut5kk1t5yPlzcX7ue/PmN3dxd7/+xhb2+Pg2+QbFh/3VzckEVGYDXxcXE4ffIUGJbAFsxy7EJ43tLC/cpOLCARs6upm7mk8w2Pnu5ufrtkSqU8hxlARw6roEmHh93BqRMnIXxvew7enl40yQDeaD9fP34/Bv/yK9Lvp3HGj3LzuDZl0kyuBjY0V8rxp1xfqmE6ZX23PXP2iCGjeuG8HTf78ZO1oKVZhz8mJrn2TKY5fk9qNVrExtzFpYs/4qLdBZ5r98N5jsGw/gXxiloEl3XVyQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/6f44bc6e2f75db97570cc19ea632c28c/c7240/cover.png","srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/de3a1/cover.png 150w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/30cdc/cover.png 300w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/c7240/cover.png 600w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/81307/cover.avif 150w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/aa5b9/cover.avif 300w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/0c8d0/cover.avif 600w","type":"image/avif","sizes":"(min-width: 600px) 600px, 100vw"},{"srcSet":"/static/6f44bc6e2f75db97570cc19ea632c28c/c65bc/cover.webp 150w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/078c3/cover.webp 300w,\n/static/6f44bc6e2f75db97570cc19ea632c28c/6d09e/cover.webp 600w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}}}}]}},"pageContext":{"limit":10,"skip":0,"pagesQuantity":1,"currentPage":1,"lang":"en","markupData":{"bannerTitle":"CODECAVE AWESOME PROJECTS","head":"CodeCave Projects","clientSectionTitle":"Client","challengeSectionTitle":"Challenge","solutionSectionTitle":"Solution","teamSectionTitle":"Engaged team","techSectionTitle":"Applied technologies","resultSectionTitle":"Product","moreProjectsSectionTitle":"some of Our projects","moreProjectsSectionLinkTitle":"Discover MORE"},"pagination":{"next":"Next page"},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/services/page-data.json b/page-data/services/page-data.json index baa4335d..06834e2e 100644 --- a/page-data/services/page-data.json +++ b/page-data/services/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-services-tsx","path":"/services/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"70c10d8c-ece2-5c59-8bc2-c859f9e2f2f8","html":"

We develop add-ins for Revit, BIM, and CAD systems, enhancing user experience by automating repetitive tasks or extending the core functionality.

","frontmatter":{"title":"Add-ins","keywords":["WPF","Revit API"],"image":{"publicURL":"/static/b87f5abb5355d7755e4410c9d69098fa/lightning.svg"}}},{"id":"e0497e7a-6cf7-547b-9958-cf733520a579","html":"

We have mastered Agile methodologies, we offer mobile and web development with an excelling time-to-market speed and always welcomed scalability.

","frontmatter":{"title":"Mobile and Web Applications","keywords":["C#",".NET","Blazor","JS","React","Vue","NodeJS","NestJS","Gatsby","Svelte"],"image":{"publicURL":"/static/a0eb73d030f7f7fcb6a95b47594a0722/life-preserver.svg"}}},{"id":"71deeca7-158d-5224-a922-2791ccb02187","html":"

We will help you to make the right decision to lead your project to success with our specialists’ fresh look on your project no matter whether you’re just about to start a project or already in the middle of something big.

","frontmatter":{"title":"Consulting","keywords":["WPF","Revit API"],"image":{"publicURL":"/static/4f65d92e13f1e5aca78abb7b7a0adf73/people.svg"}}},{"id":"aeeae703-4cf7-5050-936c-c970a94d0f12","html":"

We provide end-to-end DevOps services, including configuration & orchestration, cloud infrastructure management and administration of hybrid systems.

","frontmatter":{"title":"Cloud & DevOps","keywords":["Azure","Proxmox","VM"],"image":{"publicURL":"/static/6f03c11e7d02e856b8a84c44157806d8/cloud-check.svg"}}},{"id":"047c249a-8754-5e8b-bc6b-fbc2a275f9f2","html":"

We help with the process of managing how a product moves from an idea to a fully mature product.

\n

It involves all aspects of a product, such as design, manufacturing, production, updates, service, and disposal.

","frontmatter":{"title":"Product lifecycle management (PLM)","keywords":["Support","Full cycle of development","Design","Atlassian Jira"],"image":{"publicURL":"/static/894841272188dffcdb08aced8362e9ed/map.svg"}}},{"id":"11c7df04-ed17-54a2-88b4-babe395a3e7b","html":"

We consider manual or automated testing to be an integral part of software development. It’s a necessary step for delivering high-quality products or services that meet business goals and customer needs.

","frontmatter":{"title":"Quality assurance (QA)","keywords":["Testing","Jest","Mocha","MSTest","NUnit","xUnit"],"image":{"publicURL":"/static/5c4b54d18d87798cd36cf3c9e886e9a8/joystick.svg"}}},{"id":"d47fe12e-0c16-5912-ac69-b81914904327","html":"

We're always on the look-out to find most practical and beneficial solutions for the task at hand.

\n

Research and in-depth analysis definitely help to identify pitfalls and bottlenecks. By introducing necessary changes, a business can improve conversion, customer retention, referrals and cement its position on the market.

","frontmatter":{"title":"UX/UI Research, Business analysis","keywords":["User flows","Competitors research","User interviews","Story mapping","Prototyping","HI-FI mockups"],"image":{"publicURL":"/static/6fe9df5769c1bce4903d6a75d27e76d8/search.svg"}}},{"id":"c3999bcb-35e0-59b8-9c45-6b0f27dd1777","html":"

We use VR and AR in software development nowadays. It is one of the best ways to greatly spice up user experience, making it memorable and satisfying.

","frontmatter":{"title":"VR / AR","keywords":["Babylon","ThreeJS","GLTF"],"image":{"publicURL":"/static/a9e8003d76444f09b481318c61542937/box.svg"}}}]}},"pageContext":{"lang":"en","markupData":{"bannerTitle":"THIS IS WHAT WE DO","head":"CodeCave Services","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEg0lEQVR42m1VSVeTVxj+TqWQlJnkMIQKyCghhIQhVOBAIQOEIZiQAGGMVigQJAwKlBCxCyko7QGqDAHsOUqV03ZRGU6rYNFV3dkd+AfabljZDaun771telC7yPmSm3uf+z7D+35CeHg4Tn6kUinCwsLg5+eHlJQUSCQSBAcHIzk5BREREXwP+x0YGMj/e/u84PvCNjMwf39//nS73djd3UN6ejrm5max+/gJCgsKERoaitTUVL4uEoneARV8YGyjWCxGdXU1Nre28OrwFVa9y9BoNFhcvIP2llZkZSqRmJgI+dl09PW5YDab3wEVGFhISAiioqIwMzODw4MDPH/2DN+s3cW18XG0NDXDWF6B3p4ebDzcwOajTTi7u1FbY8L83DxKS0sREBDwHyivMDIyEnK5nICe45e9p7i7uoZBqqC6wohMRSacPU543B5sb23j9eu/cHx8jIODQ1wZGsLg4CAvhunOARlVVVYW1+eH777H5o+P8PnEdZQUFkFBOp069R7EIjFM1Sa4Lrsw/cUUjo6O8Ocfv6PX6YS1zgqVSsWpM7YCc4sJXFRUhAfr33Kqzu4eJCacQXR0NIIDgyAOEMHf7320kY7KDAUGXP0EPImmRjvi4uLQ1tqKosJC7ryQnJSEkuJi5OXlYnVlBUsLC3C0tSGJxE9OSsYHVB0DlYZL0FjfALUyC80ENPvVlxgdGUZ2djbO19ZCp9VyL4QsomuxmKGlhTu3b2P46lUyognaj0txNi0NIv8AhAaHQBohgc1qQwJVxIx6uvcEXZ92Ijc3F5d7e6Et0yImJgYCy1StyYRKoxH1NhtiiOYQCc1+y6JjEH86DmEhoRzQQjGRSqRUaT1u3ZyGo72d66ctLcN1zzUoFAoIMkLVlpUhNzuHhK/ByPAw1Co1Cs4VcG2TziRy3U7LYtFMlbM1BmoxW+Dq60M3RShHnY1mexPk6XIILLhra6tE2wKlUolx6hC9Xo/5+a9x/9492O12pBGL/JwcWM6bUVxcgqmpKQwMDMBYUYE20ttGzHRaHb9M+Cg/H3Ozs7A3NhL1WpgosEOUr17SZePBQ7z49QW8Xi9KSdMPY2OhIfN2treIwTl4xt14/PNPHIh5oMnTQIiPi+forI1K6PaqqircX1/H0tICj8PN6WlyfpGL7hn3cNrl5QbodXqo1WoMk0T7+/vwLi/zYSIwmk5qKyOZwMBsVit37oLDQSZZkU+S9LtcGBv7DL+9fIk6ksZgMHBg1hBlZIh3xYvJG5P/aMjSnU7NzjbW1dFmvYEfYKCMNrvVRsB2eyN33kD6supY5QP9/TwhLNQp/443wTffWD/rdDp8cvEiampquKbdXV089DMzt7BOMnR0dGBiYoKmzyLcY2Po7OzkVckoAQyD9bNwcpaxRVZRQ0M9Oi5dgjIzE1aSgB1kY83huECGXUFlZSVaWlq4u0FBQRzIN3zfAPTNRfbMy81Dg62BH2Yx2tnZwejoCBQZGcihCLH9voHwvxP7JCh7spsT4uNJeBWPRYY8gychViZ743Xx9ivgb4u02lziZQecAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/6fb0217e6c95ce73195ed0f15b223ef6/30cdc/services.png","srcSet":"/static/6fb0217e6c95ce73195ed0f15b223ef6/7458e/services.png 75w,\n/static/6fb0217e6c95ce73195ed0f15b223ef6/de3a1/services.png 150w,\n/static/6fb0217e6c95ce73195ed0f15b223ef6/30cdc/services.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/6fb0217e6c95ce73195ed0f15b223ef6/eb54c/services.avif 75w,\n/static/6fb0217e6c95ce73195ed0f15b223ef6/81307/services.avif 150w,\n/static/6fb0217e6c95ce73195ed0f15b223ef6/aa5b9/services.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/6fb0217e6c95ce73195ed0f15b223ef6/18188/services.webp 75w,\n/static/6fb0217e6c95ce73195ed0f15b223ef6/c65bc/services.webp 150w,\n/static/6fb0217e6c95ce73195ed0f15b223ef6/078c3/services.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409","772577693"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-services-tsx","path":"/services/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"70c10d8c-ece2-5c59-8bc2-c859f9e2f2f8","html":"

We develop add-ins for Revit, BIM, and CAD systems, enhancing user experience by automating repetitive tasks or extending the core functionality.

","frontmatter":{"title":"Add-ins","keywords":["WPF","Revit API"],"image":{"publicURL":"/static/b87f5abb5355d7755e4410c9d69098fa/lightning.svg"}}},{"id":"e0497e7a-6cf7-547b-9958-cf733520a579","html":"

We have mastered Agile methodologies, we offer mobile and web development with an excelling time-to-market speed and always welcomed scalability.

","frontmatter":{"title":"Mobile and Web Applications","keywords":["C#",".NET","Blazor","JS","React","Vue","NodeJS","NestJS","Gatsby","Svelte"],"image":{"publicURL":"/static/a0eb73d030f7f7fcb6a95b47594a0722/life-preserver.svg"}}},{"id":"71deeca7-158d-5224-a922-2791ccb02187","html":"

We will help you to make the right decision to lead your project to success with our specialists’ fresh look on your project no matter whether you’re just about to start a project or already in the middle of something big.

","frontmatter":{"title":"Consulting","keywords":["WPF","Revit API"],"image":{"publicURL":"/static/4f65d92e13f1e5aca78abb7b7a0adf73/people.svg"}}},{"id":"aeeae703-4cf7-5050-936c-c970a94d0f12","html":"

We provide end-to-end DevOps services, including configuration & orchestration, cloud infrastructure management and administration of hybrid systems.

","frontmatter":{"title":"Cloud & DevOps","keywords":["Azure","Proxmox","VM"],"image":{"publicURL":"/static/6f03c11e7d02e856b8a84c44157806d8/cloud-check.svg"}}},{"id":"047c249a-8754-5e8b-bc6b-fbc2a275f9f2","html":"

We help with the process of managing how a product moves from an idea to a fully mature product.

\n

It involves all aspects of a product, such as design, manufacturing, production, updates, service, and disposal.

","frontmatter":{"title":"Product lifecycle management (PLM)","keywords":["Support","Full cycle of development","Design","Atlassian Jira"],"image":{"publicURL":"/static/894841272188dffcdb08aced8362e9ed/map.svg"}}},{"id":"11c7df04-ed17-54a2-88b4-babe395a3e7b","html":"

We consider manual or automated testing to be an integral part of software development. It’s a necessary step for delivering high-quality products or services that meet business goals and customer needs.

","frontmatter":{"title":"Quality assurance (QA)","keywords":["Testing","Jest","Mocha","MSTest","NUnit","xUnit"],"image":{"publicURL":"/static/5c4b54d18d87798cd36cf3c9e886e9a8/joystick.svg"}}},{"id":"d47fe12e-0c16-5912-ac69-b81914904327","html":"

We're always on the look-out to find most practical and beneficial solutions for the task at hand.

\n

Research and in-depth analysis definitely help to identify pitfalls and bottlenecks. By introducing necessary changes, a business can improve conversion, customer retention, referrals and cement its position on the market.

","frontmatter":{"title":"UX/UI Research, Business analysis","keywords":["User flows","Competitors research","User interviews","Story mapping","Prototyping","HI-FI mockups"],"image":{"publicURL":"/static/6fe9df5769c1bce4903d6a75d27e76d8/search.svg"}}},{"id":"c3999bcb-35e0-59b8-9c45-6b0f27dd1777","html":"

We use VR and AR in software development nowadays. It is one of the best ways to greatly spice up user experience, making it memorable and satisfying.

","frontmatter":{"title":"VR / AR","keywords":["Babylon","ThreeJS","GLTF"],"image":{"publicURL":"/static/a9e8003d76444f09b481318c61542937/box.svg"}}}]}},"pageContext":{"lang":"en","markupData":{"bannerTitle":"THIS IS WHAT WE DO","head":"CodeCave Services","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEg0lEQVR42m1VSVeTVxj+TqWQlJnkMIQKyCghhIQhVOBAIQOEIZiQAGGMVigQJAwKlBCxCyko7QGqDAHsOUqV03ZRGU6rYNFV3dkd+AfabljZDaun771telC7yPmSm3uf+z7D+35CeHg4Tn6kUinCwsLg5+eHlJQUSCQSBAcHIzk5BREREXwP+x0YGMj/e/u84PvCNjMwf39//nS73djd3UN6ejrm5max+/gJCgsKERoaitTUVL4uEoneARV8YGyjWCxGdXU1Nre28OrwFVa9y9BoNFhcvIP2llZkZSqRmJgI+dl09PW5YDab3wEVGFhISAiioqIwMzODw4MDPH/2DN+s3cW18XG0NDXDWF6B3p4ebDzcwOajTTi7u1FbY8L83DxKS0sREBDwHyivMDIyEnK5nICe45e9p7i7uoZBqqC6wohMRSacPU543B5sb23j9eu/cHx8jIODQ1wZGsLg4CAvhunOARlVVVYW1+eH777H5o+P8PnEdZQUFkFBOp069R7EIjFM1Sa4Lrsw/cUUjo6O8Ocfv6PX6YS1zgqVSsWpM7YCc4sJXFRUhAfr33Kqzu4eJCacQXR0NIIDgyAOEMHf7320kY7KDAUGXP0EPImmRjvi4uLQ1tqKosJC7ryQnJSEkuJi5OXlYnVlBUsLC3C0tSGJxE9OSsYHVB0DlYZL0FjfALUyC80ENPvVlxgdGUZ2djbO19ZCp9VyL4QsomuxmKGlhTu3b2P46lUyognaj0txNi0NIv8AhAaHQBohgc1qQwJVxIx6uvcEXZ92Ijc3F5d7e6Et0yImJgYCy1StyYRKoxH1NhtiiOYQCc1+y6JjEH86DmEhoRzQQjGRSqRUaT1u3ZyGo72d66ctLcN1zzUoFAoIMkLVlpUhNzuHhK/ByPAw1Co1Cs4VcG2TziRy3U7LYtFMlbM1BmoxW+Dq60M3RShHnY1mexPk6XIILLhra6tE2wKlUolx6hC9Xo/5+a9x/9492O12pBGL/JwcWM6bUVxcgqmpKQwMDMBYUYE20ttGzHRaHb9M+Cg/H3Ozs7A3NhL1WpgosEOUr17SZePBQ7z49QW8Xi9KSdMPY2OhIfN2treIwTl4xt14/PNPHIh5oMnTQIiPi+forI1K6PaqqircX1/H0tICj8PN6WlyfpGL7hn3cNrl5QbodXqo1WoMk0T7+/vwLi/zYSIwmk5qKyOZwMBsVit37oLDQSZZkU+S9LtcGBv7DL+9fIk6ksZgMHBg1hBlZIh3xYvJG5P/aMjSnU7NzjbW1dFmvYEfYKCMNrvVRsB2eyN33kD6supY5QP9/TwhLNQp/443wTffWD/rdDp8cvEiampquKbdXV089DMzt7BOMnR0dGBiYoKmzyLcY2Po7OzkVckoAQyD9bNwcpaxRVZRQ0M9Oi5dgjIzE1aSgB1kY83huECGXUFlZSVaWlq4u0FBQRzIN3zfAPTNRfbMy81Dg62BH2Yx2tnZwejoCBQZGcihCLH9voHwvxP7JCh7spsT4uNJeBWPRYY8gychViZ743Xx9ivgb4u02lziZQecAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/6fb0217e6c95ce73195ed0f15b223ef6/30cdc/services.png","srcSet":"/static/6fb0217e6c95ce73195ed0f15b223ef6/7458e/services.png 75w,\n/static/6fb0217e6c95ce73195ed0f15b223ef6/de3a1/services.png 150w,\n/static/6fb0217e6c95ce73195ed0f15b223ef6/30cdc/services.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/6fb0217e6c95ce73195ed0f15b223ef6/eb54c/services.avif 75w,\n/static/6fb0217e6c95ce73195ed0f15b223ef6/81307/services.avif 150w,\n/static/6fb0217e6c95ce73195ed0f15b223ef6/aa5b9/services.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/6fb0217e6c95ce73195ed0f15b223ef6/18188/services.webp 75w,\n/static/6fb0217e6c95ce73195ed0f15b223ef6/c65bc/services.webp 150w,\n/static/6fb0217e6c95ce73195ed0f15b223ef6/078c3/services.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409","772577693"],"slicesMap":{}} \ No newline at end of file diff --git a/page-data/workflow/page-data.json b/page-data/workflow/page-data.json index fbdc9c72..785ca008 100644 --- a/page-data/workflow/page-data.json +++ b/page-data/workflow/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-templates-workflow-tsx","path":"/workflow/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"61b4d675-b797-5532-bc82-0dea16451167","html":"

Tell us more about your business on a discovery call. We’ll discuss your project requirements, success criteria, timescale, budget and required skill sets to see if we can help.

","frontmatter":{"title":"Discovering","image":{"publicURL":"/static/05e07cea9f3c8cd67fcd982da2946957/binoculars.svg"}}},{"id":"3e4bbddd-be6a-5580-8aef-3a042c95ae4d","html":"

Using first-step information we'll take a deep dive into your target audience, needs and challenges of your business, customers, and desired technology.

","frontmatter":{"title":"Brainstorming","image":{"publicURL":"/static/f158d48996c15ce8ac41a45d698c552f/cpu.svg"}}},{"id":"9d195e86-5dab-5cc6-a1af-dca77a081f94","html":"

We’ll quickly define your project roadmap, select the right tools and technologies. We’ll assemble your team and assign you a PM.

","frontmatter":{"title":"Defining","image":{"publicURL":"/static/ef3b40caa2dd84668da2e808613682d2/puzzle.svg"}}},{"id":"70f6a693-5d7b-590b-a3d1-70324e124443","html":"

Complete solution for your project will be proposed as soon as possible. Every effort will be made to reach an agreement on all issues.

","frontmatter":{"title":"Proposition","image":{"publicURL":"/static/987d2f3a3273bb8af01cb9357fa75b4f/briefcase.svg"}}},{"id":"ba2947b9-3575-5857-bb8f-c75c81c60015","html":"

Once we have a contract, development process starts immediately. Our high skilled team definitelly will meet all the project's goals and wrap it in a reliable easily maintained solution.

","frontmatter":{"title":"Development","image":{"publicURL":"/static/1d86d2753a2e40365d1147287d61b287/terminal.svg"}}},{"id":"dbd4c7a4-2ed8-597e-ad75-ed2a8f9ccc6c","html":"

Congratulations! Successfully released product and non-broken deadlines are irrefutable evidence of your right desicion to choose CodeCave as your partner.

","frontmatter":{"title":"Launch","image":{"publicURL":"/static/d0295e671f612ed8d6d6283929be4ef5/flag.svg"}}},{"id":"39360467-731c-520d-a94c-c4667be7b574","html":"

The product won't be abandoned, we'll provide you long term maintenance support. And that's the main reason why we're highly intrested in clear code, agile and scalable solution.

","frontmatter":{"title":"Maintenance","image":{"publicURL":"/static/2e75bdce8a42097c6a1866f6a621e7b2/tools.svg"}}}]}},"pageContext":{"lang":"en","markupData":{"bannerTitle":"THIS IS HOW WE DO IT","head":"CodeCave Workflow","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEnUlEQVR42m1V6VPTVxTNMGzDsO+EJYRAWAqIEtawBGhJWBKwLLIFRgi07KVQQHEsJDgCtilhqTLIXmgZDSCM0KLA6AxabVW+8ifUb8zUz6f3PQbHtn54M7/JvHveueeceyNwcXHBh8fV1ZUfe3t7ODk5ITw8Aor0DMhkcZCGhsLd3Q3Ozs7v7/63XvAhkJubGxwcHPgJCw+HQpGBFHkqQqWhEAcGQhosRVRkFHyEQn7/DPhfgGdAjA1jJQmSQKlUQp4sR0RYOL7p7MLFws+RnCRHsCQEba3tKC+vgDQkBN7e3hyEAZ+xFTg6OsLOzg5+/v4EpEJNdQ1yVTlgv5ddKkNvTy8iIyKhrapC7eVaTE/PYGV5lb7roKL7QUFieHh4ckIMWBAQEICCggJ6uQ1pqWko0Gg4M7EokAPHx8UjMyMTPd09yMvJhWl0DPfurcNoNGF19T6qKrVIiE+ARCIhfd1PARu/bIQ6Lx8ifwJXa1BaXIKw0DC6XIXoqCh+OToqGkIfIfqu9mFubhFjpglsb/+GHyenMDe/RGTSedsCpptYLMY5KpBdkKFGWw2DwQBdLbWUreLMcoipp7snMsjtzq878RV1M2gYxPbOr5iauov9/afIzcnnHghY38zFpMREElpKupWjpKgYN6hgZHgYJpMJV3qvICY6hsB7UVlRCX2/HuvmNczOzmJsbBzPX/wBjbrwFNDW1pZnbOjmTRJZicAAEfJyc/HdrREsLixicnwcZvN9AuuGJl9NgBVoaW7GoN6Arc1NDNOja2vrpHcuj5vAz88PWVlZ1J4S7a2tyFGqePHh4SFevfoTCwvzKCwoRJxMRnpNokFXjwiW0bR0FFMn316/jke7u8ikzDKnBb6+Qujq6lBRVs5B09PSCLgd9TodPqWHzp+LIW1jkSqX0+9tiKNvLZm1sbFBdTo0NDSgpamZ33NjprhSqJlzFzUFvLCIQtzS3AKRSITmxkaKUyvX0vi9EWOjo5iZnkZk+Ce4VFKKO7dv46elJSQlJMKB9BPSBPFJKS0pwUB/Pxbm52EYMBC7eg52l4q3Hz4krbYIzISXL1/g9ZvXqCdmsvMXOCsWtbhYGWfu6ekJgZeXF41WIXa2d7CyskzC56O7qwvzBH6t7xp8aLyYGZsPNrC4uIitrU38vLJCRqyhpqqaurvKyVymCeMastgwZIVCQY5OoLWllUdil4S+NTIC/YCeRm0Z7979zeea6cwkGB4awprZjLdv/+KGfJaZRSPocTrLsbGx5FgRfn/+jFxdgJpYNjc14ejoCAcHB9yA1V9W0UWhTktJgZ+vL818Nd5Q+88oDZMTk8jOzuZLhq8vBupLl5gZVZWVBKjG1J0pPCCgJhpLE5mxv7eH4+NjtLe14QejEScnJ3j8+BG0Wi2CQ4L5gnm/D5kxrH8rKytaU8no7Ozkzo8MD1HQA5CYkMDdZto9ffKES9BGwEx/a2trHmjG7n8LlmnAXrKxsYGIJqaJnD7Y3yMDzPiivgF6vR4dHR1gw2Bpaclr2Ib56MY+O+wldpgMjo5OUKmUmJ2Z4XtSJAqAhYUF74Y9/rG/gH8A240J2Rz4UiUAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/50c085dabbb6ac2d730f3f9a486a3014/30cdc/workflow.png","srcSet":"/static/50c085dabbb6ac2d730f3f9a486a3014/7458e/workflow.png 75w,\n/static/50c085dabbb6ac2d730f3f9a486a3014/de3a1/workflow.png 150w,\n/static/50c085dabbb6ac2d730f3f9a486a3014/30cdc/workflow.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/50c085dabbb6ac2d730f3f9a486a3014/eb54c/workflow.avif 75w,\n/static/50c085dabbb6ac2d730f3f9a486a3014/81307/workflow.avif 150w,\n/static/50c085dabbb6ac2d730f3f9a486a3014/aa5b9/workflow.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/50c085dabbb6ac2d730f3f9a486a3014/18188/workflow.webp 75w,\n/static/50c085dabbb6ac2d730f3f9a486a3014/c65bc/workflow.webp 150w,\n/static/50c085dabbb6ac2d730f3f9a486a3014/078c3/workflow.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsRepo":"CodeCavePro/www.codecave.pro-new"}}},"staticQueryHashes":["2595676272","637289409","772577693","941943045"],"slicesMap":{}} \ No newline at end of file +{"componentChunkName":"component---src-pages-templates-workflow-tsx","path":"/workflow/","result":{"data":{"allMarkdownRemark":{"nodes":[{"id":"61b4d675-b797-5532-bc82-0dea16451167","html":"

Tell us more about your business on a discovery call. We’ll discuss your project requirements, success criteria, timescale, budget and required skill sets to see if we can help.

","frontmatter":{"title":"Discovering","image":{"publicURL":"/static/05e07cea9f3c8cd67fcd982da2946957/binoculars.svg"}}},{"id":"3e4bbddd-be6a-5580-8aef-3a042c95ae4d","html":"

Using first-step information we'll take a deep dive into your target audience, needs and challenges of your business, customers, and desired technology.

","frontmatter":{"title":"Brainstorming","image":{"publicURL":"/static/f158d48996c15ce8ac41a45d698c552f/cpu.svg"}}},{"id":"9d195e86-5dab-5cc6-a1af-dca77a081f94","html":"

We’ll quickly define your project roadmap, select the right tools and technologies. We’ll assemble your team and assign you a PM.

","frontmatter":{"title":"Defining","image":{"publicURL":"/static/ef3b40caa2dd84668da2e808613682d2/puzzle.svg"}}},{"id":"70f6a693-5d7b-590b-a3d1-70324e124443","html":"

Complete solution for your project will be proposed as soon as possible. Every effort will be made to reach an agreement on all issues.

","frontmatter":{"title":"Proposition","image":{"publicURL":"/static/987d2f3a3273bb8af01cb9357fa75b4f/briefcase.svg"}}},{"id":"ba2947b9-3575-5857-bb8f-c75c81c60015","html":"

Once we have a contract, development process starts immediately. Our high skilled team definitelly will meet all the project's goals and wrap it in a reliable easily maintained solution.

","frontmatter":{"title":"Development","image":{"publicURL":"/static/1d86d2753a2e40365d1147287d61b287/terminal.svg"}}},{"id":"dbd4c7a4-2ed8-597e-ad75-ed2a8f9ccc6c","html":"

Congratulations! Successfully released product and non-broken deadlines are irrefutable evidence of your right desicion to choose CodeCave as your partner.

","frontmatter":{"title":"Launch","image":{"publicURL":"/static/d0295e671f612ed8d6d6283929be4ef5/flag.svg"}}},{"id":"39360467-731c-520d-a94c-c4667be7b574","html":"

The product won't be abandoned, we'll provide you long term maintenance support. And that's the main reason why we're highly intrested in clear code, agile and scalable solution.

","frontmatter":{"title":"Maintenance","image":{"publicURL":"/static/2e75bdce8a42097c6a1866f6a621e7b2/tools.svg"}}}]}},"pageContext":{"lang":"en","markupData":{"bannerTitle":"THIS IS HOW WE DO IT","head":"CodeCave Workflow","image":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEnUlEQVR42m1V6VPTVxTNMGzDsO+EJYRAWAqIEtawBGhJWBKwLLIFRgi07KVQQHEsJDgCtilhqTLIXmgZDSCM0KLA6AxabVW+8ifUb8zUz6f3PQbHtn54M7/JvHveueeceyNwcXHBh8fV1ZUfe3t7ODk5ITw8Aor0DMhkcZCGhsLd3Q3Ozs7v7/63XvAhkJubGxwcHPgJCw+HQpGBFHkqQqWhEAcGQhosRVRkFHyEQn7/DPhfgGdAjA1jJQmSQKlUQp4sR0RYOL7p7MLFws+RnCRHsCQEba3tKC+vgDQkBN7e3hyEAZ+xFTg6OsLOzg5+/v4EpEJNdQ1yVTlgv5ddKkNvTy8iIyKhrapC7eVaTE/PYGV5lb7roKL7QUFieHh4ckIMWBAQEICCggJ6uQ1pqWko0Gg4M7EokAPHx8UjMyMTPd09yMvJhWl0DPfurcNoNGF19T6qKrVIiE+ARCIhfd1PARu/bIQ6Lx8ifwJXa1BaXIKw0DC6XIXoqCh+OToqGkIfIfqu9mFubhFjpglsb/+GHyenMDe/RGTSedsCpptYLMY5KpBdkKFGWw2DwQBdLbWUreLMcoipp7snMsjtzq878RV1M2gYxPbOr5iauov9/afIzcnnHghY38zFpMREElpKupWjpKgYN6hgZHgYJpMJV3qvICY6hsB7UVlRCX2/HuvmNczOzmJsbBzPX/wBjbrwFNDW1pZnbOjmTRJZicAAEfJyc/HdrREsLixicnwcZvN9AuuGJl9NgBVoaW7GoN6Arc1NDNOja2vrpHcuj5vAz88PWVlZ1J4S7a2tyFGqePHh4SFevfoTCwvzKCwoRJxMRnpNokFXjwiW0bR0FFMn316/jke7u8ikzDKnBb6+Qujq6lBRVs5B09PSCLgd9TodPqWHzp+LIW1jkSqX0+9tiKNvLZm1sbFBdTo0NDSgpamZ33NjprhSqJlzFzUFvLCIQtzS3AKRSITmxkaKUyvX0vi9EWOjo5iZnkZk+Ce4VFKKO7dv46elJSQlJMKB9BPSBPFJKS0pwUB/Pxbm52EYMBC7eg52l4q3Hz4krbYIzISXL1/g9ZvXqCdmsvMXOCsWtbhYGWfu6ekJgZeXF41WIXa2d7CyskzC56O7qwvzBH6t7xp8aLyYGZsPNrC4uIitrU38vLJCRqyhpqqaurvKyVymCeMastgwZIVCQY5OoLWllUdil4S+NTIC/YCeRm0Z7979zeea6cwkGB4awprZjLdv/+KGfJaZRSPocTrLsbGx5FgRfn/+jFxdgJpYNjc14ejoCAcHB9yA1V9W0UWhTktJgZ+vL818Nd5Q+88oDZMTk8jOzuZLhq8vBupLl5gZVZWVBKjG1J0pPCCgJhpLE5mxv7eH4+NjtLe14QejEScnJ3j8+BG0Wi2CQ4L5gnm/D5kxrH8rKytaU8no7Ozkzo8MD1HQA5CYkMDdZto9ffKES9BGwEx/a2trHmjG7n8LlmnAXrKxsYGIJqaJnD7Y3yMDzPiivgF6vR4dHR1gw2Bpaclr2Ib56MY+O+wldpgMjo5OUKmUmJ2Z4XtSJAqAhYUF74Y9/rG/gH8A240J2Rz4UiUAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/50c085dabbb6ac2d730f3f9a486a3014/30cdc/workflow.png","srcSet":"/static/50c085dabbb6ac2d730f3f9a486a3014/7458e/workflow.png 75w,\n/static/50c085dabbb6ac2d730f3f9a486a3014/de3a1/workflow.png 150w,\n/static/50c085dabbb6ac2d730f3f9a486a3014/30cdc/workflow.png 300w","sizes":"(min-width: 300px) 300px, 100vw"},"sources":[{"srcSet":"/static/50c085dabbb6ac2d730f3f9a486a3014/eb54c/workflow.avif 75w,\n/static/50c085dabbb6ac2d730f3f9a486a3014/81307/workflow.avif 150w,\n/static/50c085dabbb6ac2d730f3f9a486a3014/aa5b9/workflow.avif 300w","type":"image/avif","sizes":"(min-width: 300px) 300px, 100vw"},{"srcSet":"/static/50c085dabbb6ac2d730f3f9a486a3014/18188/workflow.webp 75w,\n/static/50c085dabbb6ac2d730f3f9a486a3014/c65bc/workflow.webp 150w,\n/static/50c085dabbb6ac2d730f3f9a486a3014/078c3/workflow.webp 300w","type":"image/webp","sizes":"(min-width: 300px) 300px, 100vw"}]},"width":300,"height":300}}}},"site":{"siteUrl":"https://www.codecave.it","analyticsId":"G-HPEX5BHBSJ","commentsSetup":{"repo":"CodeCavePro/www.codecave.pro-new","repoId":"R_kgDOJv3s3g","categoryId":"DIC_kwDOJv3s3s4CgqzO"}}}},"staticQueryHashes":["2595676272","637289409","772577693","941943045"],"slicesMap":{}} \ No newline at end of file diff --git a/privacy-policy/index.html b/privacy-policy/index.html index de16d115..11888c9c 100644 --- a/privacy-policy/index.html +++ b/privacy-policy/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/index.html b/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/index.html index 1dac5bfd..a5758b95 100644 --- a/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/index.html +++ b/projects/08716ab8-fc5f-5f90-9fc0-a8218ec51923/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/4010b091-889b-5be1-ab5a-bde195aa7729/index.html b/projects/4010b091-889b-5be1-ab5a-bde195aa7729/index.html index 22d55ee6..bf36e9ce 100644 --- a/projects/4010b091-889b-5be1-ab5a-bde195aa7729/index.html +++ b/projects/4010b091-889b-5be1-ab5a-bde195aa7729/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/index.html b/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/index.html index 5176504d..8f4349ef 100644 --- a/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/index.html +++ b/projects/4057e0b3-692b-5512-a1fc-cb93bd81fe0e/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/45987eea-191f-531c-b854-25e3d60decff/index.html b/projects/45987eea-191f-531c-b854-25e3d60decff/index.html index 602b7ba2..15059e8a 100644 --- a/projects/45987eea-191f-531c-b854-25e3d60decff/index.html +++ b/projects/45987eea-191f-531c-b854-25e3d60decff/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/index.html b/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/index.html index 08f472aa..aeb5be8d 100644 --- a/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/index.html +++ b/projects/9f63d17d-6164-509e-b2c7-4c655ab9ad7a/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/index.html b/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/index.html index 89624e66..de47b88e 100644 --- a/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/index.html +++ b/projects/f17de1e3-0a73-5f92-bf66-1e12d5fdc0fb/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/index.html b/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/index.html index d208f6c6..eb5dea98 100644 --- a/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/index.html +++ b/projects/ff9598a3-3fad-5a4e-a8a8-a8858b3a27e7/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/index.html b/projects/index.html index a7764fbc..9e262633 100644 --- a/projects/index.html +++ b/projects/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/page/1/index.html b/projects/page/1/index.html index 7d01df92..07b19194 100644 --- a/projects/page/1/index.html +++ b/projects/page/1/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/services/index.html b/services/index.html index 7065c57a..44791b8d 100644 --- a/services/index.html +++ b/services/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/styles.2a7450c31650c7d09006.css b/styles.2a7450c31650c7d09006.css deleted file mode 100644 index 43f6b27c..00000000 --- a/styles.2a7450c31650c7d09006.css +++ /dev/null @@ -1,3 +0,0 @@ -/* -! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com -*/*,:after,:before{border:0 solid}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1440px){.container{max-width:1440px}}@media (min-width:1900px){.container{max-width:1900px}}@media (min-width:2200px){.container{max-width:2200px}}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-bottom-1{bottom:-.25rem}.-bottom-2{bottom:-.5rem}.-left-2{left:-.5rem}.-left-5{left:-1.25rem}.-right-2{right:-.5rem}.-top-16{top:-4rem}.-top-2{top:-.5rem}.bottom-0{bottom:0}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.bottom-\[5\%\]{bottom:5%}.left-0{left:0}.left-2{left:.5rem}.left-\[2\%\]{left:2%}.right-0{right:0}.top-0{top:0}.top-1\/2{top:50%}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.-order-1{order:-1}.float-right{float:right}.mx-0{margin-left:0;margin-right:0}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-12{margin-left:3rem;margin-right:3rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-bottom:0;margin-top:0}.-ml-2{margin-left:-.5rem}.mb-0{margin-bottom:0}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-3{margin-left:.75rem}.mr-10{margin-right:2.5rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-3\.5{margin-right:.875rem}.mt-0{margin-top:0}.mt-3{margin-top:.75rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-0{height:0}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2\/3{height:66.666667%}.h-28{height:7rem}.h-32{height:8rem}.h-40{height:10rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-91{height:22.75rem}.h-\[1000px\]{height:1000px}.h-\[72px\]{height:72px}.h-full{height:100%}.h-max{height:-moz-max-content;height:max-content}.max-h-\[424px\]{max-height:424px}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-91{min-height:22.75rem}.min-h-\[400px\]{min-height:400px}.min-h-full{min-height:100%}.min-h-max{min-height:-moz-max-content;min-height:max-content}.min-h-screen{min-height:100vh}.w-0{width:0}.w-1{width:.25rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-28{width:7rem}.w-32{width:8rem}.w-40{width:10rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[100\%\]{width:100%}.w-\[192px\]{width:192px}.w-\[220px\]{width:220px}.w-\[72px\]{width:72px}.w-\[85\%\]{width:85%}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.min-w-10{min-width:2.5rem}.max-w-2xl{max-width:680px}.max-w-4\.5xl{max-width:1038px}.max-w-7xl{max-width:80rem}.max-w-\[1280px\]{max-width:1280px}.max-w-\[320px\]{max-width:320px}.max-w-\[400px\]{max-width:400px}.max-w-\[500px\]{max-width:500px}.max-w-\[544px\]{max-width:544px}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-1\/3{flex-basis:33.333333%}.basis-full{flex-basis:100%}.origin-\[5\%_50\%\]{transform-origin:5% 50%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-full{--tw-translate-y:100%}.-rotate-90,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate:-90deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.touch-pan-x{--tw-pan-x:pan-x;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-manipulation{touch-action:manipulation}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.content-center{align-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.gap-0{gap:0}.gap-10{gap:2.5rem}.gap-14{gap:3.5rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-3\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-14{-moz-column-gap:3.5rem;column-gap:3.5rem}.gap-x-16{-moz-column-gap:4rem;column-gap:4rem}.gap-x-24{-moz-column-gap:6rem;column-gap:6rem}.gap-x-28{-moz-column-gap:7rem;column-gap:7rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-2{row-gap:.5rem}.gap-y-2\.5{row-gap:.625rem}.gap-y-5{row-gap:1.25rem}.gap-y-8{row-gap:2rem}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2.5rem*var(--tw-space-x-reverse))}.overflow-hidden{overflow:hidden}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.rounded{border-radius:.25rem}.rounded-2\.5xl{border-radius:20px}.rounded-2xl{border-radius:1rem}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-2xl{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-b-\[4px\]{border-bottom-width:4px}.border-t-2{border-top-width:2px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-main-10{--tw-border-opacity:1;border-color:rgb(143 143 143/var(--tw-border-opacity))}.border-main-100{--tw-border-opacity:1;border-color:rgb(17 17 17/var(--tw-border-opacity))}.border-secondary-10{--tw-border-opacity:1;border-color:rgb(209 209 209/var(--tw-border-opacity))}.border-secondary-100{--tw-border-opacity:1;border-color:rgb(249 249 249/var(--tw-border-opacity))}.border-secondary-70{--tw-border-opacity:1;border-color:rgb(189 189 189/var(--tw-border-opacity))}.bg-main-100{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity))}.bg-main-70{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.bg-secondary-10{--tw-bg-opacity:1;background-color:rgb(209 209 209/var(--tw-bg-opacity))}.bg-secondary-100{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))}.fill-main-100{fill:#111}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-10{padding-bottom:2.5rem;padding-top:2.5rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.pb-10{padding-bottom:2.5rem}.pb-8{padding-bottom:2rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-5{padding-top:1.25rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-start{text-align:start}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10\.5px\]{font-size:10.5px}.text-\[24px\]{font-size:24px}.text-\[72px\]{font-size:72px}.text-\[88px\]{font-size:88px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-5{line-height:1.25rem}.leading-normal{line-height:1.5}.tracking-wide{letter-spacing:.025em}.text-\[\#D32F2F\]{--tw-text-opacity:1;color:rgb(211 47 47/var(--tw-text-opacity))}.text-main-10{--tw-text-opacity:1;color:rgb(143 143 143/var(--tw-text-opacity))}.text-main-100{--tw-text-opacity:1;color:rgb(17 17 17/var(--tw-text-opacity))}.text-main-70{--tw-text-opacity:1;color:rgb(45 45 45/var(--tw-text-opacity))}.text-secondary-10{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}.text-secondary-100{--tw-text-opacity:1;color:rgb(249 249 249/var(--tw-text-opacity))}.text-secondary-30{--tw-text-opacity:1;color:rgb(228 228 228/var(--tw-text-opacity))}.text-secondary-70{--tw-text-opacity:1;color:rgb(189 189 189/var(--tw-text-opacity))}.opacity-0{opacity:0}.opacity-50{opacity:.5}.shadow-\[0px_2px_8px_rgba\(68\2c 68\2c 68\2c 0\.1\)\]{--tw-shadow:0px 2px 8px rgba(68,68,68,.1);--tw-shadow-colored:0px 2px 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.brightness-\[0\.4\]{--tw-brightness:brightness(0.4)}.brightness-\[0\.4\],.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.invert{--tw-invert:invert(100%)}.filter,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.backdrop-blur-sm,.backdrop-brightness-75{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-brightness-75{--tw-backdrop-brightness:brightness(.75)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-1000{transition-duration:1s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-linear{transition-timing-function:linear}.after\:h-1:after{content:var(--tw-content);height:.25rem}.after\:h-1\.5:after{content:var(--tw-content);height:.375rem}.after\:w-full:after{content:var(--tw-content);width:100%}.after\:rounded-sm:after{border-radius:.125rem;content:var(--tw-content)}.after\:bg-main-10:after{--tw-bg-opacity:1;background-color:rgb(143 143 143/var(--tw-bg-opacity));content:var(--tw-content)}.after\:bg-secondary-100:after{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity));content:var(--tw-content)}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.even\:flex-row-reverse:nth-child(2n){flex-direction:row-reverse}.hover\:border-secondary-100:hover{--tw-border-opacity:1;border-color:rgb(249 249 249/var(--tw-border-opacity))}.hover\:bg-main-100:hover{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity))}.hover\:bg-main-70:hover{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.hover\:bg-secondary-100:hover{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))}.hover\:bg-secondary-30:hover{--tw-bg-opacity:1;background-color:rgb(228 228 228/var(--tw-bg-opacity))}.hover\:text-main-10:hover{--tw-text-opacity:1;color:rgb(143 143 143/var(--tw-text-opacity))}.hover\:text-secondary-10:hover{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}.hover\:text-secondary-100:hover{--tw-text-opacity:1;color:rgb(249 249 249/var(--tw-text-opacity))}.hover\:text-secondary-70:hover{--tw-text-opacity:1;color:rgb(189 189 189/var(--tw-text-opacity))}.hover\:shadow-\[0px_2px_14px_rgba\(68\2c 68\2c 68\2c 0\.25\)\]:hover{--tw-shadow:0px 2px 14px rgba(68,68,68,.25);--tw-shadow-colored:0px 2px 14px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:brightness-100:hover{--tw-brightness:brightness(1)}.hover\:brightness-100:hover,.hover\:brightness-75:hover{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hover\:brightness-75:hover{--tw-brightness:brightness(.75)}.disabled\:bg-main-70:disabled{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.disabled\:opacity-30:disabled{opacity:.3}.group:hover .group-hover\:h-full{height:100%}.group:hover .group-hover\:scale-\[1\.007\]{--tw-scale-x:1.007;--tw-scale-y:1.007;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:border-main-10{--tw-border-opacity:1;border-color:rgb(143 143 143/var(--tw-border-opacity))}@media (prefers-color-scheme:dark){.dark\:text-secondary-10{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}}@media (min-width:640px){.sm\:mb-12{margin-bottom:3rem}.sm\:mb-5{margin-bottom:1.25rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:h-\[900px\]{height:900px}.sm\:w-64{width:16rem}.sm\:w-auto{width:auto}.sm\:w-max{width:-moz-max-content;width:max-content}.sm\:shrink-0{flex-shrink:0}.sm\:basis-5\/6{flex-basis:83.333333%}.sm\:basis-52{flex-basis:13rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-5{gap:1.25rem}.sm\:gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:py-10{padding-bottom:2.5rem;padding-top:2.5rem}.sm\:pb-14{padding-bottom:3.5rem}.sm\:pt-16{padding-top:4rem}.sm\:text-end{text-align:end}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-\[148px\]{font-size:148px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:last\:hidden:last-child{display:none}}@media (min-width:768px){.md\:mx-3{margin-left:.75rem;margin-right:.75rem}.md\:mb-12{margin-bottom:3rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-48{height:12rem}.md\:h-\[750px\]{height:750px}.md\:w-16{width:4rem}.md\:w-48{width:12rem}.md\:w-\[256px\]{width:256px}.md\:max-w-\[528px\]{max-width:528px}.md\:basis-4\/6{flex-basis:66.666667%}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:justify-start{justify-content:flex-start}.md\:justify-between{justify-content:space-between}.md\:gap-14{gap:3.5rem}.md\:gap-28{gap:7rem}.md\:gap-5{gap:1.25rem}.md\:gap-8{gap:2rem}.md\:gap-y-14{row-gap:3.5rem}.md\:gap-y-5{row-gap:1.25rem}.md\:p-12{padding:3rem}.md\:\!px-0{padding-left:0!important;padding-right:0!important}.md\:px-20{padding-left:5rem;padding-right:5rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-16{padding-bottom:4rem;padding-top:4rem}.md\:py-8{padding-bottom:2rem;padding-top:2rem}.md\:pt-0{padding-top:0}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-\[100px\]{font-size:100px}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:order-none{order:0}.lg\:mr-28{margin-right:7rem}.lg\:block{display:block}.lg\:h-99{height:396px}.lg\:h-full{height:100%}.lg\:w-1\/2{width:50%}.lg\:w-72{width:18rem}.lg\:w-80{width:20rem}.lg\:w-max{width:-moz-max-content;width:max-content}.lg\:basis-1\/2{flex-basis:50%}.lg\:basis-\[410px\]{flex-basis:410px}.lg\:flex-row{flex-direction:row}.lg\:justify-start{justify-content:flex-start}.lg\:justify-end{justify-content:flex-end}.lg\:gap-10{gap:2.5rem}.lg\:gap-16{gap:4rem}.lg\:gap-28{gap:7rem}.lg\:gap-\[48px\]{gap:48px}.lg\:gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.lg\:\!px-0{padding-left:0!important;padding-right:0!important}.lg\:\!px-20{padding-left:5rem!important;padding-right:5rem!important}.lg\:px-10{padding-left:2.5rem;padding-right:2.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-0{padding-bottom:0;padding-top:0}.lg\:py-5{padding-bottom:1.25rem;padding-top:1.25rem}.lg\:text-start{text-align:start}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:text-4xl{font-size:2.25rem;line-height:2.5rem}.lg\:last\:flex:last-child{display:flex}}@media (min-width:1280px){.xl\:w-\[256px\]{width:256px}.xl\:basis-2\/5{flex-basis:40%}}@media (min-width:1900px){.\33xl\:w-\[400px\]{width:400px}.\33xl\:basis-1\/3{flex-basis:33.333333%}}@media (min-width:2200px){.\34xl\:basis-1\/4{flex-basis:25%}}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-cyrillic-ext-400-normal-caa98a3bc11105fffcfef482abfb2c37.woff2) format("woff2"),url(/static/rubik-glitch-cyrillic-ext-400-normal-54f97c66997053ace86c1d9f1bdef3fd.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c88,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-cyrillic-400-normal-b32f20a71003e8bb78b28eec73c0385b.woff2) format("woff2"),url(/static/rubik-glitch-cyrillic-400-normal-3fd27e06a8bdf8edbd455443d0854c3f.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-hebrew-400-normal-776cad11325d90d9061faad0b7107953.woff2) format("woff2"),url(/static/rubik-glitch-hebrew-400-normal-c8cefe9973692c5d21bdd5bb11616cc4.woff) format("woff");unicode-range:u+0590-05ff,u+200c-2010,u+20aa,u+25cc,u+fb1d-fb4f}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-latin-ext-400-normal-8ae808a02973fec508af9c0959fbbade.woff2) format("woff2"),url(/static/rubik-glitch-latin-ext-400-normal-16c59f7d884842f113e8ff185c8656c9.woff) format("woff");unicode-range:u+0100-02af,u+0304,u+0308,u+0329,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-latin-400-normal-7a5b5bac6b066d71b0cae06ed087b905.woff2) format("woff2"),url(/static/rubik-glitch-latin-400-normal-3fb89918ce49908f5350076807cf1bef.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-cyrillic-ext-wght-normal-e84e812b71d18e04e6928fb272665c53.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c88,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-cyrillic-wght-normal-eb1783eb42487132539645641f761eb2.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-latin-ext-wght-normal-82d636d9375dd92118fd22c818a99c24.woff2) format("woff2-variations");unicode-range:u+0100-02af,u+0304,u+0308,u+0329,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-latin-wght-normal-5028c63f6a70ab0cf7cba9015ae04154.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;color:#ccc;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}*{border:0;margin:0;padding:0}*,:after,:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}:active,:focus,a:active,a:focus{outline:none}aside,footer,header,nav{display:block}body,html{-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:100%;font-size:14px;line-height:1;min-height:100vh}button,input,textarea{font-family:inherit}input::-ms-clear{display:none}button{cursor:pointer}button::-moz-focus-inner{border:0;padding:0}a,a:hover,a:visited{text-decoration:none}ul li{list-style:none}img{vertical-align:top}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:400}*{font-family:Montserrat Variable,Helvetica,Arial,sans-serif}input:-webkit-autofill,input:-webkit-autofill:active,input:-webkit-autofill:focus,input:-webkit-autofill:hover{-webkit-text-fill-color:#f9f9f9;-webkit-background-clip:text;box-shadow:inset 0 0 20px 20px #fa070700;-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s}#contact-form input:-webkit-autofill,#contact-form input:-webkit-autofill:active,#contact-form input:-webkit-autofill:focus,#contact-form input:-webkit-autofill:hover{-webkit-text-fill-color:#111}.utterances{filter:grayscale(100%)!important}.banner-title{font-family:Montserrat Variable,Helvetica,Arial,sans-serif}.rubik-font{font-family:Rubik Glitch,Helvetica,Arial,sans-serif}@media screen and (max-width:640px){div#hubspot-messages-iframe-container{display:none!important}}#hubspot-messages-iframe-container{z-index:200!important}#hs-banner-parent{--hs-banner-font-family:"Montserrat Variable",Helvetica,Arial,sans-serif!important;--hs-banner-inset:auto 0px 10px 10px!important;--hs-banner-translate-x:0!important}#hs-eu-cookie-settings-button{font-weight:400!important;text-decoration:none!important}#hs-eu-cookie-confirmation{max-width:calc(100% - 20px)!important}div.privacy-policy h1{font-size:1.875rem;font-weight:600;line-height:2.25rem;text-align:center;width:100%}div.privacy-policy h2{font-size:1.5rem;font-weight:600;line-height:2rem;padding-top:1rem}div.privacy-policy h3{font-size:1.25rem;font-weight:600;line-height:1.75rem;padding-top:1rem}div.privacy-policy h4{font-weight:600;padding-top:.5rem}div.privacy-policy ul li{list-style-position:inside;list-style-type:disc;padding-top:1rem}div.privacy-policy ul li>h3{display:inline;font-weight:500;padding-top:0}div.privacy-policy a{text-decoration-line:underline}article.single-post{font-size:1rem;line-height:1.5rem}@media (min-width:640px){article.single-post{font-size:1.125rem;line-height:1.75rem}}article.single-post :is(h2,h3,h4){--tw-text-opacity:1;color:rgb(249 249 249/var(--tw-text-opacity));font-size:1.125rem;font-weight:700;line-height:1.75rem;margin-bottom:.625rem;margin-top:2rem}@media (min-width:640px){article.single-post :is(h2,h3,h4){font-size:1.25rem;line-height:1.75rem}}article.single-post h4{margin-top:1rem}article.single-post p{margin-bottom:1rem}@media (min-width:640px){article.single-post p{margin-bottom:2rem}}article.single-post span.gatsby-resp-image-wrapper{border-radius:20px!important;margin-bottom:1rem!important;margin-left:auto!important;margin-right:auto!important;max-width:444px!important;width:100%!important}@media (min-width:640px){article.single-post span.gatsby-resp-image-wrapper{margin-bottom:1.25rem!important}}article.single-post img{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important;border-radius:20px!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}article.single-post span.gatsby-resp-image-wrapper+em{display:block;font-size:.875rem;font-style:normal;line-height:1.25rem;text-align:center;width:100%}article.single-post :is(ul,ol){margin-bottom:1rem;margin-top:1rem}@media (min-width:640px){article.single-post :is(ul,ol){margin-bottom:2rem;margin-top:2rem}}article.single-post ul li{list-style-position:inside;list-style-type:disc}article.single-post ol li{list-style-position:inside;list-style-type:decimal}article.single-post pre{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity));border-radius:20px;font-size:.875rem;line-height:1.25rem;margin-bottom:1rem;margin-top:1rem;padding:1rem;white-space:pre-wrap}@media (min-width:640px){article.single-post pre{font-size:1rem;line-height:1.5rem;margin-bottom:2rem;margin-top:2rem;padding:2rem}}article.single-post pre code{white-space:pre-wrap}.gradient-border{-o-border-image:linear-gradient(90deg,#bdbdbd,#111) 30;border-image:linear-gradient(90deg,#bdbdbd,#111) 30}div.team-member:hover div.line{width:100%}div.applied-tech:hover div.line{height:100%}div.review-body p{padding-top:.5rem}div.review-body p:first-child{padding-top:0}div.workflow-step:nth-child(odd) div.cover{right:-.5rem}div.workflow-step:nth-child(2n) div.cover{left:-.5rem}div.why-us-card p{text-align:justify}p.contact-form-description span{display:block;padding-bottom:.5rem;padding-top:.5rem}p.contact-form-description strong{font-weight:600}ul.MuiMenu-list{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))} \ No newline at end of file diff --git a/styles.a5d06edd5f5a703fcb21.css b/styles.a5d06edd5f5a703fcb21.css new file mode 100644 index 00000000..b6791573 --- /dev/null +++ b/styles.a5d06edd5f5a703fcb21.css @@ -0,0 +1,3 @@ +/* +! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com +*/*,:after,:before{border:0 solid}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1440px){.container{max-width:1440px}}@media (min-width:1900px){.container{max-width:1900px}}@media (min-width:2200px){.container{max-width:2200px}}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-bottom-1{bottom:-.25rem}.-bottom-2{bottom:-.5rem}.-left-2{left:-.5rem}.-left-5{left:-1.25rem}.-right-2{right:-.5rem}.-top-16{top:-4rem}.-top-2{top:-.5rem}.bottom-0{bottom:0}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.bottom-\[5\%\]{bottom:5%}.left-0{left:0}.left-2{left:.5rem}.left-\[2\%\]{left:2%}.right-0{right:0}.top-0{top:0}.top-1\/2{top:50%}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.-order-1{order:-1}.float-right{float:right}.mx-0{margin-left:0;margin-right:0}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-1\.5{margin-left:.375rem;margin-right:.375rem}.mx-12{margin-left:3rem;margin-right:3rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.mx-auto{margin-left:auto;margin-right:auto}.-ml-2{margin-left:-.5rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-3{margin-left:.75rem}.mr-10{margin-right:2.5rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-3\.5{margin-right:.875rem}.mt-3{margin-top:.75rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.h-0{height:0}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2\/3{height:66.666667%}.h-28{height:7rem}.h-32{height:8rem}.h-40{height:10rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-91{height:22.75rem}.h-\[1000px\]{height:1000px}.h-\[72px\]{height:72px}.h-full{height:100%}.h-max{height:-moz-max-content;height:max-content}.max-h-\[424px\]{max-height:424px}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-91{min-height:22.75rem}.min-h-\[400px\]{min-height:400px}.min-h-full{min-height:100%}.min-h-max{min-height:-moz-max-content;min-height:max-content}.min-h-screen{min-height:100vh}.w-0{width:0}.w-1{width:.25rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-28{width:7rem}.w-32{width:8rem}.w-40{width:10rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[100\%\]{width:100%}.w-\[192px\]{width:192px}.w-\[220px\]{width:220px}.w-\[72px\]{width:72px}.w-\[85\%\]{width:85%}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.min-w-10{min-width:2.5rem}.max-w-2xl{max-width:680px}.max-w-4\.5xl{max-width:1038px}.max-w-7xl{max-width:80rem}.max-w-\[1280px\]{max-width:1280px}.max-w-\[320px\]{max-width:320px}.max-w-\[400px\]{max-width:400px}.max-w-\[500px\]{max-width:500px}.max-w-\[544px\]{max-width:544px}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-1\/3{flex-basis:33.333333%}.basis-full{flex-basis:100%}.origin-\[5\%_50\%\]{transform-origin:5% 50%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px}.translate-y-full{--tw-translate-y:100%}.-rotate-90,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate:-90deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.touch-pan-x{--tw-pan-x:pan-x;touch-action:var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)}.touch-manipulation{touch-action:manipulation}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.content-center{align-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.justify-evenly{justify-content:space-evenly}.gap-0{gap:0}.gap-10{gap:2.5rem}.gap-14{gap:3.5rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-3\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-14{-moz-column-gap:3.5rem;column-gap:3.5rem}.gap-x-16{-moz-column-gap:4rem;column-gap:4rem}.gap-x-24{-moz-column-gap:6rem;column-gap:6rem}.gap-x-28{-moz-column-gap:7rem;column-gap:7rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-2{row-gap:.5rem}.gap-y-2\.5{row-gap:.625rem}.gap-y-5{row-gap:1.25rem}.gap-y-8{row-gap:2rem}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2.5rem*var(--tw-space-x-reverse))}.overflow-hidden{overflow:hidden}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.rounded{border-radius:.25rem}.rounded-2\.5xl{border-radius:20px}.rounded-2xl{border-radius:1rem}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-2xl{border-bottom-left-radius:1rem;border-bottom-right-radius:1rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-b-\[4px\]{border-bottom-width:4px}.border-t-2{border-top-width:2px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-main-10{--tw-border-opacity:1;border-color:rgb(143 143 143/var(--tw-border-opacity))}.border-main-100{--tw-border-opacity:1;border-color:rgb(17 17 17/var(--tw-border-opacity))}.border-secondary-10{--tw-border-opacity:1;border-color:rgb(209 209 209/var(--tw-border-opacity))}.border-secondary-100{--tw-border-opacity:1;border-color:rgb(249 249 249/var(--tw-border-opacity))}.border-secondary-70{--tw-border-opacity:1;border-color:rgb(189 189 189/var(--tw-border-opacity))}.bg-main-100{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity))}.bg-main-70{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.bg-secondary-10{--tw-bg-opacity:1;background-color:rgb(209 209 209/var(--tw-bg-opacity))}.bg-secondary-100{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))}.fill-main-100{fill:#111}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-10{padding-bottom:2.5rem;padding-top:2.5rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.pb-10{padding-bottom:2.5rem}.pb-8{padding-bottom:2rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-5{padding-top:1.25rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-start{text-align:start}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10\.5px\]{font-size:10.5px}.text-\[24px\]{font-size:24px}.text-\[72px\]{font-size:72px}.text-\[88px\]{font-size:88px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-5{line-height:1.25rem}.tracking-wide{letter-spacing:.025em}.text-\[\#D32F2F\]{--tw-text-opacity:1;color:rgb(211 47 47/var(--tw-text-opacity))}.text-main-10{--tw-text-opacity:1;color:rgb(143 143 143/var(--tw-text-opacity))}.text-main-100{--tw-text-opacity:1;color:rgb(17 17 17/var(--tw-text-opacity))}.text-main-70{--tw-text-opacity:1;color:rgb(45 45 45/var(--tw-text-opacity))}.text-secondary-10{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}.text-secondary-100{--tw-text-opacity:1;color:rgb(249 249 249/var(--tw-text-opacity))}.text-secondary-30{--tw-text-opacity:1;color:rgb(228 228 228/var(--tw-text-opacity))}.text-secondary-70{--tw-text-opacity:1;color:rgb(189 189 189/var(--tw-text-opacity))}.opacity-0{opacity:0}.opacity-50{opacity:.5}.shadow-\[0px_2px_8px_rgba\(68\2c 68\2c 68\2c 0\.1\)\]{--tw-shadow:0px 2px 8px rgba(68,68,68,.1);--tw-shadow-colored:0px 2px 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.brightness-\[0\.4\]{--tw-brightness:brightness(0.4)}.brightness-\[0\.4\],.brightness-\[1\.4\]{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.brightness-\[1\.4\]{--tw-brightness:brightness(1.4)}.grayscale{--tw-grayscale:grayscale(100%)}.grayscale,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.backdrop-blur-sm,.backdrop-brightness-75{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-brightness-75{--tw-backdrop-brightness:brightness(.75)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-1000{transition-duration:1s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-linear{transition-timing-function:linear}.after\:h-1:after{content:var(--tw-content);height:.25rem}.after\:h-1\.5:after{content:var(--tw-content);height:.375rem}.after\:w-full:after{content:var(--tw-content);width:100%}.after\:rounded-sm:after{border-radius:.125rem;content:var(--tw-content)}.after\:bg-main-10:after{--tw-bg-opacity:1;background-color:rgb(143 143 143/var(--tw-bg-opacity));content:var(--tw-content)}.after\:bg-secondary-100:after{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity));content:var(--tw-content)}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.even\:flex-row-reverse:nth-child(2n){flex-direction:row-reverse}.hover\:border-secondary-100:hover{--tw-border-opacity:1;border-color:rgb(249 249 249/var(--tw-border-opacity))}.hover\:bg-main-100:hover{--tw-bg-opacity:1;background-color:rgb(17 17 17/var(--tw-bg-opacity))}.hover\:bg-main-70:hover{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.hover\:bg-secondary-100:hover{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))}.hover\:bg-secondary-30:hover{--tw-bg-opacity:1;background-color:rgb(228 228 228/var(--tw-bg-opacity))}.hover\:text-main-10:hover{--tw-text-opacity:1;color:rgb(143 143 143/var(--tw-text-opacity))}.hover\:text-secondary-10:hover{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}.hover\:text-secondary-100:hover{--tw-text-opacity:1;color:rgb(249 249 249/var(--tw-text-opacity))}.hover\:text-secondary-70:hover{--tw-text-opacity:1;color:rgb(189 189 189/var(--tw-text-opacity))}.hover\:shadow-\[0px_2px_14px_rgba\(68\2c 68\2c 68\2c 0\.25\)\]:hover{--tw-shadow:0px 2px 14px rgba(68,68,68,.25);--tw-shadow-colored:0px 2px 14px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:brightness-100:hover{--tw-brightness:brightness(1)}.hover\:brightness-100:hover,.hover\:brightness-75:hover{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hover\:brightness-75:hover{--tw-brightness:brightness(.75)}.disabled\:bg-main-70:disabled{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.disabled\:opacity-30:disabled{opacity:.3}.group:hover .group-hover\:h-full{height:100%}.group:hover .group-hover\:scale-\[1\.007\]{--tw-scale-x:1.007;--tw-scale-y:1.007;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:border-main-10{--tw-border-opacity:1;border-color:rgb(143 143 143/var(--tw-border-opacity))}@media (prefers-color-scheme:dark){.dark\:text-secondary-10{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}}@media (min-width:640px){.sm\:mb-12{margin-bottom:3rem}.sm\:mb-5{margin-bottom:1.25rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:h-\[900px\]{height:900px}.sm\:w-64{width:16rem}.sm\:w-auto{width:auto}.sm\:w-max{width:-moz-max-content;width:max-content}.sm\:shrink-0{flex-shrink:0}.sm\:basis-5\/6{flex-basis:83.333333%}.sm\:basis-52{flex-basis:13rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-5{gap:1.25rem}.sm\:gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:py-10{padding-bottom:2.5rem;padding-top:2.5rem}.sm\:pb-14{padding-bottom:3.5rem}.sm\:pt-16{padding-top:4rem}.sm\:text-end{text-align:end}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-\[148px\]{font-size:148px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:last\:hidden:last-child{display:none}}@media (min-width:768px){.md\:mx-3{margin-left:.75rem;margin-right:.75rem}.md\:mb-12{margin-bottom:3rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-48{height:12rem}.md\:h-\[750px\]{height:750px}.md\:w-16{width:4rem}.md\:w-48{width:12rem}.md\:w-\[256px\]{width:256px}.md\:max-w-\[528px\]{max-width:528px}.md\:basis-4\/6{flex-basis:66.666667%}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:justify-start{justify-content:flex-start}.md\:justify-between{justify-content:space-between}.md\:gap-14{gap:3.5rem}.md\:gap-28{gap:7rem}.md\:gap-5{gap:1.25rem}.md\:gap-8{gap:2rem}.md\:gap-y-14{row-gap:3.5rem}.md\:gap-y-5{row-gap:1.25rem}.md\:p-12{padding:3rem}.md\:\!px-0{padding-left:0!important;padding-right:0!important}.md\:px-20{padding-left:5rem;padding-right:5rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-16{padding-bottom:4rem;padding-top:4rem}.md\:py-8{padding-bottom:2rem;padding-top:2rem}.md\:pt-0{padding-top:0}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-\[100px\]{font-size:100px}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:order-none{order:0}.lg\:mr-28{margin-right:7rem}.lg\:block{display:block}.lg\:h-99{height:396px}.lg\:h-full{height:100%}.lg\:w-1\/2{width:50%}.lg\:w-72{width:18rem}.lg\:w-80{width:20rem}.lg\:w-max{width:-moz-max-content;width:max-content}.lg\:basis-1\/2{flex-basis:50%}.lg\:basis-\[410px\]{flex-basis:410px}.lg\:flex-row{flex-direction:row}.lg\:justify-start{justify-content:flex-start}.lg\:justify-end{justify-content:flex-end}.lg\:gap-10{gap:2.5rem}.lg\:gap-16{gap:4rem}.lg\:gap-28{gap:7rem}.lg\:gap-\[48px\]{gap:48px}.lg\:gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.lg\:\!px-0{padding-left:0!important;padding-right:0!important}.lg\:\!px-20{padding-left:5rem!important;padding-right:5rem!important}.lg\:px-10{padding-left:2.5rem;padding-right:2.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-0{padding-bottom:0;padding-top:0}.lg\:py-5{padding-bottom:1.25rem;padding-top:1.25rem}.lg\:text-start{text-align:start}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:text-4xl{font-size:2.25rem;line-height:2.5rem}.lg\:last\:flex:last-child{display:flex}}@media (min-width:1280px){.xl\:w-\[256px\]{width:256px}.xl\:basis-2\/5{flex-basis:40%}}@media (min-width:1900px){.\33xl\:w-\[400px\]{width:400px}.\33xl\:basis-1\/3{flex-basis:33.333333%}}@media (min-width:2200px){.\34xl\:basis-1\/4{flex-basis:25%}}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-cyrillic-ext-400-normal-caa98a3bc11105fffcfef482abfb2c37.woff2) format("woff2"),url(/static/rubik-glitch-cyrillic-ext-400-normal-54f97c66997053ace86c1d9f1bdef3fd.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c88,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-cyrillic-400-normal-b32f20a71003e8bb78b28eec73c0385b.woff2) format("woff2"),url(/static/rubik-glitch-cyrillic-400-normal-3fd27e06a8bdf8edbd455443d0854c3f.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-hebrew-400-normal-776cad11325d90d9061faad0b7107953.woff2) format("woff2"),url(/static/rubik-glitch-hebrew-400-normal-c8cefe9973692c5d21bdd5bb11616cc4.woff) format("woff");unicode-range:u+0590-05ff,u+200c-2010,u+20aa,u+25cc,u+fb1d-fb4f}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-latin-ext-400-normal-8ae808a02973fec508af9c0959fbbade.woff2) format("woff2"),url(/static/rubik-glitch-latin-ext-400-normal-16c59f7d884842f113e8ff185c8656c9.woff) format("woff");unicode-range:u+0100-02af,u+0304,u+0308,u+0329,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Rubik Glitch;font-style:normal;font-weight:400;src:url(/static/rubik-glitch-latin-400-normal-7a5b5bac6b066d71b0cae06ed087b905.woff2) format("woff2"),url(/static/rubik-glitch-latin-400-normal-3fb89918ce49908f5350076807cf1bef.woff) format("woff");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-cyrillic-ext-wght-normal-e84e812b71d18e04e6928fb272665c53.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c88,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-cyrillic-wght-normal-eb1783eb42487132539645641f761eb2.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-latin-ext-wght-normal-82d636d9375dd92118fd22c818a99c24.woff2) format("woff2-variations");unicode-range:u+0100-02af,u+0304,u+0308,u+0329,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-display:swap;font-family:Montserrat Variable;font-style:normal;font-weight:100 900;src:url(/static/montserrat-latin-wght-normal-5028c63f6a70ab0cf7cba9015ae04154.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;color:#ccc;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}*{border:0;margin:0;padding:0}*,:after,:before{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}:active,:focus,a:active,a:focus{outline:none}aside,footer,header,nav{display:block}body,html{-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-size:100%;font-size:14px;line-height:1;min-height:100vh}button,input,textarea{font-family:inherit}input::-ms-clear{display:none}button{cursor:pointer}button::-moz-focus-inner{border:0;padding:0}a,a:hover,a:visited{text-decoration:none}ul li{list-style:none}img{vertical-align:top}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:400}*{font-family:Montserrat Variable,Helvetica,Arial,sans-serif}input:-webkit-autofill,input:-webkit-autofill:active,input:-webkit-autofill:focus,input:-webkit-autofill:hover{-webkit-text-fill-color:#f9f9f9;-webkit-background-clip:text;box-shadow:inset 0 0 20px 20px #fa070700;-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s}#contact-form input:-webkit-autofill,#contact-form input:-webkit-autofill:active,#contact-form input:-webkit-autofill:focus,#contact-form input:-webkit-autofill:hover{-webkit-text-fill-color:#111}.banner-title{font-family:Montserrat Variable,Helvetica,Arial,sans-serif}.rubik-font{font-family:Rubik Glitch,Helvetica,Arial,sans-serif}@media screen and (max-width:640px){div#hubspot-messages-iframe-container{display:none!important}}#hubspot-messages-iframe-container{z-index:200!important}#hs-banner-parent{--hs-banner-font-family:"Montserrat Variable",Helvetica,Arial,sans-serif!important;--hs-banner-inset:auto 0px 10px 10px!important;--hs-banner-translate-x:0!important}#hs-eu-cookie-settings-button{font-weight:400!important;text-decoration:none!important}#hs-eu-cookie-confirmation{max-width:calc(100% - 20px)!important}div.privacy-policy h1{font-size:1.875rem;font-weight:600;line-height:2.25rem;text-align:center;width:100%}div.privacy-policy h2{font-size:1.5rem;font-weight:600;line-height:2rem;padding-top:1rem}div.privacy-policy h3{font-size:1.25rem;font-weight:600;line-height:1.75rem;padding-top:1rem}div.privacy-policy h4{font-weight:600;padding-top:.5rem}div.privacy-policy ul li{list-style-position:inside;list-style-type:disc;padding-top:1rem}div.privacy-policy ul li>h3{display:inline;font-weight:500;padding-top:0}div.privacy-policy a{text-decoration-line:underline}article.single-post{font-size:1rem;line-height:1.5rem}@media (min-width:640px){article.single-post{font-size:1.125rem;line-height:1.75rem}}article.single-post :is(h2,h3,h4){--tw-text-opacity:1;color:rgb(249 249 249/var(--tw-text-opacity));font-size:1.125rem;font-weight:700;line-height:1.75rem;margin-bottom:.625rem;margin-top:2rem}@media (min-width:640px){article.single-post :is(h2,h3,h4){font-size:1.25rem;line-height:1.75rem}}article.single-post h4{margin-top:1rem}article.single-post p{margin-bottom:1rem}@media (min-width:640px){article.single-post p{margin-bottom:2rem}}article.single-post span.gatsby-resp-image-wrapper{border-radius:20px!important;margin-bottom:1rem!important;margin-left:auto!important;margin-right:auto!important;max-width:444px!important;width:100%!important}@media (min-width:640px){article.single-post span.gatsby-resp-image-wrapper{margin-bottom:1.25rem!important}}article.single-post img{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important;border-radius:20px!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}article.single-post span.gatsby-resp-image-wrapper+em{display:block;font-size:.875rem;font-style:normal;line-height:1.25rem;text-align:center;width:100%}article.single-post :is(ul,ol){margin-bottom:1rem;margin-top:1rem}@media (min-width:640px){article.single-post :is(ul,ol){margin-bottom:2rem;margin-top:2rem}}article.single-post ul li{list-style-position:inside;list-style-type:disc}article.single-post ol li{list-style-position:inside;list-style-type:decimal}article.single-post pre{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity));border-radius:20px;font-size:.875rem;line-height:1.25rem;margin-bottom:1rem;margin-top:1rem;padding:1rem;white-space:pre-wrap}@media (min-width:640px){article.single-post pre{font-size:1rem;line-height:1.5rem;margin-bottom:2rem;margin-top:2rem;padding:2rem}}article.single-post pre code{white-space:pre-wrap}.gradient-border{-o-border-image:linear-gradient(90deg,#bdbdbd,#111) 30;border-image:linear-gradient(90deg,#bdbdbd,#111) 30}div.team-member:hover div.line{width:100%}div.applied-tech:hover div.line{height:100%}div.review-body p{padding-top:.5rem}div.review-body p:first-child{padding-top:0}div.workflow-step:nth-child(odd) div.cover{right:-.5rem}div.workflow-step:nth-child(2n) div.cover{left:-.5rem}div.why-us-card p{text-align:justify}p.contact-form-description span{display:block;padding-bottom:.5rem;padding-top:.5rem}p.contact-form-description strong{font-weight:600}ul.MuiMenu-list{--tw-bg-opacity:1;background-color:rgb(249 249 249/var(--tw-bg-opacity))} \ No newline at end of file diff --git a/webpack-runtime-90c320f61741db61aa26.js b/webpack-runtime-90c320f61741db61aa26.js new file mode 100644 index 00000000..63f19abb --- /dev/null +++ b/webpack-runtime-90c320f61741db61aa26.js @@ -0,0 +1,2 @@ +!function(){"use strict";var e,t,n,r,o,c={},a={};function f(e){var t=a[e];if(void 0!==t)return t.exports;var n=a[e]={id:e,loaded:!1,exports:{}};return c[e](n,n.exports,f),n.loaded=!0,n.exports}f.m=c,e=[],f.O=function(t,n,r,o){if(!n){var c=1/0;for(s=0;s=o)&&Object.keys(f.O).every((function(e){return f.O[e](n[i])}))?n.splice(i--,1):(a=!1,o0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,r,o]},f.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},f.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);f.r(o);var c={};t=t||[null,n({}),n([]),n(n)];for(var a=2&r&&e;"object"==typeof a&&!~t.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},f.d(o,c),o},f.d=function(e,t){for(var n in t)f.o(t,n)&&!f.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},f.f={},f.e=function(e){return Promise.all(Object.keys(f.f).reduce((function(t,n){return f.f[n](e,t),t}),[]))},f.u=function(e){return({147:"component---src-pages-templates-project-tsx",149:"component---src-pages-templates-policies-tsx",354:"component---src-pages-templates-post-tsx",403:"c294adedbbc0a5c4b071b27a5ffb97a116928d98",417:"component---src-pages-templates-services-tsx",514:"component---src-pages-templates-404-tsx",548:"component---src-pages-templates-workflow-tsx",577:"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb",602:"dbbdfb320c5007a40fa91453221d77dae72f3b83",650:"component---src-pages-templates-projects-tsx",748:"component---src-pages-templates-blog-by-author-tsx",832:"component---src-pages-templates-index-tsx",899:"component---src-pages-templates-blog-by-hashtag-tsx",926:"component---src-pages-templates-blog-tsx"}[e]||e)+"-"+{147:"3f6f4a02fe1a9b45b9be",149:"359925d45492160d5e8b",354:"7870f7000d415f9876f9",355:"8ec9d1cf4562de9fd523",403:"83f152d3f32c8162f39f",417:"52382137cf50c3b54f73",475:"048fa666fc3431f933b0",514:"1ec7dcfded6e73efef91",548:"3b5bfd63b270d61e9cb0",577:"a1ebad9294408a8dbc6b",602:"00be99e431fb904367c1",650:"efcf98f36bb35506a959",731:"fc2222e8bcbd3a323b37",748:"c73b629026a3b6d9b6b2",832:"2df0ce267e9edf8b197a",843:"82fd7f798c0dd9a6f67b",899:"3a8ada98c121bd3d62f7",926:"91ade5beabd1db3174a4"}[e]+".js"},f.miniCssF=function(e){return"styles.a5d06edd5f5a703fcb21.css"},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="code-cave:",f.l=function(e,t,n,c){if(r[e])r[e].push(t);else{var a,i;if(void 0!==n)for(var u=document.getElementsByTagName("script"),s=0;s 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"code-cave:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\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\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"147\":\"component---src-pages-templates-project-tsx\",\"149\":\"component---src-pages-templates-policies-tsx\",\"354\":\"component---src-pages-templates-post-tsx\",\"403\":\"c294adedbbc0a5c4b071b27a5ffb97a116928d98\",\"417\":\"component---src-pages-templates-services-tsx\",\"514\":\"component---src-pages-templates-404-tsx\",\"548\":\"component---src-pages-templates-workflow-tsx\",\"577\":\"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb\",\"602\":\"dbbdfb320c5007a40fa91453221d77dae72f3b83\",\"650\":\"component---src-pages-templates-projects-tsx\",\"748\":\"component---src-pages-templates-blog-by-author-tsx\",\"832\":\"component---src-pages-templates-index-tsx\",\"899\":\"component---src-pages-templates-blog-by-hashtag-tsx\",\"926\":\"component---src-pages-templates-blog-tsx\"}[chunkId] || chunkId) + \"-\" + {\"147\":\"3f6f4a02fe1a9b45b9be\",\"149\":\"359925d45492160d5e8b\",\"354\":\"7870f7000d415f9876f9\",\"355\":\"8ec9d1cf4562de9fd523\",\"403\":\"83f152d3f32c8162f39f\",\"417\":\"52382137cf50c3b54f73\",\"475\":\"048fa666fc3431f933b0\",\"514\":\"1ec7dcfded6e73efef91\",\"548\":\"3b5bfd63b270d61e9cb0\",\"577\":\"a1ebad9294408a8dbc6b\",\"602\":\"00be99e431fb904367c1\",\"650\":\"efcf98f36bb35506a959\",\"731\":\"fc2222e8bcbd3a323b37\",\"748\":\"c73b629026a3b6d9b6b2\",\"832\":\"2df0ce267e9edf8b197a\",\"843\":\"82fd7f798c0dd9a6f67b\",\"899\":\"3a8ada98c121bd3d62f7\",\"926\":\"91ade5beabd1db3174a4\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"a5d06edd5f5a703fcb21\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0,\n\t532: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkcode_cave\"] = self[\"webpackChunkcode_cave\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","call","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","p","b","baseURI","self","location","href","installedChunks","installedChunkData","test","promise","resolve","reject","error","Error","errorType","realSrc","message","name","request","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack-runtime-fbaf96408a38e72808f3.js b/webpack-runtime-fbaf96408a38e72808f3.js deleted file mode 100644 index 8d5287a3..00000000 --- a/webpack-runtime-fbaf96408a38e72808f3.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(){"use strict";var e,t,n,r,o,c={},a={};function f(e){var t=a[e];if(void 0!==t)return t.exports;var n=a[e]={id:e,loaded:!1,exports:{}};return c[e](n,n.exports,f),n.loaded=!0,n.exports}f.m=c,e=[],f.O=function(t,n,r,o){if(!n){var c=1/0;for(s=0;s=o)&&Object.keys(f.O).every((function(e){return f.O[e](n[i])}))?n.splice(i--,1):(a=!1,o0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,r,o]},f.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},f.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);f.r(o);var c={};t=t||[null,n({}),n([]),n(n)];for(var a=2&r&&e;"object"==typeof a&&!~t.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},f.d(o,c),o},f.d=function(e,t){for(var n in t)f.o(t,n)&&!f.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},f.f={},f.e=function(e){return Promise.all(Object.keys(f.f).reduce((function(t,n){return f.f[n](e,t),t}),[]))},f.u=function(e){return({147:"component---src-pages-templates-project-tsx",149:"component---src-pages-templates-policies-tsx",354:"component---src-pages-templates-post-tsx",403:"c294adedbbc0a5c4b071b27a5ffb97a116928d98",417:"component---src-pages-templates-services-tsx",514:"component---src-pages-templates-404-tsx",548:"component---src-pages-templates-workflow-tsx",577:"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb",602:"dbbdfb320c5007a40fa91453221d77dae72f3b83",650:"component---src-pages-templates-projects-tsx",748:"component---src-pages-templates-blog-by-author-tsx",832:"component---src-pages-templates-index-tsx",899:"component---src-pages-templates-blog-by-hashtag-tsx",926:"component---src-pages-templates-blog-tsx"}[e]||e)+"-"+{147:"3f6f4a02fe1a9b45b9be",149:"359925d45492160d5e8b",354:"679a8c56938c9272bb7a",403:"83f152d3f32c8162f39f",417:"52382137cf50c3b54f73",475:"048fa666fc3431f933b0",514:"1ec7dcfded6e73efef91",548:"3b5bfd63b270d61e9cb0",577:"a1ebad9294408a8dbc6b",602:"00be99e431fb904367c1",650:"efcf98f36bb35506a959",731:"fc2222e8bcbd3a323b37",748:"c73b629026a3b6d9b6b2",832:"2df0ce267e9edf8b197a",843:"82fd7f798c0dd9a6f67b",899:"3a8ada98c121bd3d62f7",926:"91ade5beabd1db3174a4"}[e]+".js"},f.miniCssF=function(e){return"styles.2a7450c31650c7d09006.css"},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="code-cave:",f.l=function(e,t,n,c){if(r[e])r[e].push(t);else{var a,i;if(void 0!==n)for(var u=document.getElementsByTagName("script"),s=0;s 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"code-cave:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\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\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"147\":\"component---src-pages-templates-project-tsx\",\"149\":\"component---src-pages-templates-policies-tsx\",\"354\":\"component---src-pages-templates-post-tsx\",\"403\":\"c294adedbbc0a5c4b071b27a5ffb97a116928d98\",\"417\":\"component---src-pages-templates-services-tsx\",\"514\":\"component---src-pages-templates-404-tsx\",\"548\":\"component---src-pages-templates-workflow-tsx\",\"577\":\"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb\",\"602\":\"dbbdfb320c5007a40fa91453221d77dae72f3b83\",\"650\":\"component---src-pages-templates-projects-tsx\",\"748\":\"component---src-pages-templates-blog-by-author-tsx\",\"832\":\"component---src-pages-templates-index-tsx\",\"899\":\"component---src-pages-templates-blog-by-hashtag-tsx\",\"926\":\"component---src-pages-templates-blog-tsx\"}[chunkId] || chunkId) + \"-\" + {\"147\":\"3f6f4a02fe1a9b45b9be\",\"149\":\"359925d45492160d5e8b\",\"354\":\"679a8c56938c9272bb7a\",\"403\":\"83f152d3f32c8162f39f\",\"417\":\"52382137cf50c3b54f73\",\"475\":\"048fa666fc3431f933b0\",\"514\":\"1ec7dcfded6e73efef91\",\"548\":\"3b5bfd63b270d61e9cb0\",\"577\":\"a1ebad9294408a8dbc6b\",\"602\":\"00be99e431fb904367c1\",\"650\":\"efcf98f36bb35506a959\",\"731\":\"fc2222e8bcbd3a323b37\",\"748\":\"c73b629026a3b6d9b6b2\",\"832\":\"2df0ce267e9edf8b197a\",\"843\":\"82fd7f798c0dd9a6f67b\",\"899\":\"3a8ada98c121bd3d62f7\",\"926\":\"91ade5beabd1db3174a4\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"2a7450c31650c7d09006\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0,\n\t532: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkcode_cave\"] = self[\"webpackChunkcode_cave\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","id","loaded","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","call","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","p","b","baseURI","self","location","href","installedChunks","installedChunkData","test","promise","resolve","reject","error","Error","errorType","realSrc","message","name","request","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack.stats.json b/webpack.stats.json index dfd242b2..374c3b37 100644 --- a/webpack.stats.json +++ b/webpack.stats.json @@ -1 +1 @@ -{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-fbaf96408a38e72808f3.js","size":4925},{"name":"styles.2a7450c31650c7d09006.css","size":45779},{"name":"framework-2f7a9a83fd6996cb764f.js","size":141400},{"name":"app-f487b6864a0d816cc020.js","size":351476}],"filteredAssets":0,"assetsSize":543580,"filteredAuxiliaryAssets":17,"auxiliaryAssetsSize":2502829},"component---src-pages-templates-404-tsx":{"name":"component---src-pages-templates-404-tsx","assets":[{"name":"component---src-pages-templates-404-tsx-1ec7dcfded6e73efef91.js","size":5869}],"filteredAssets":0,"assetsSize":5869,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":32821},"component---src-pages-templates-blog-by-author-tsx":{"name":"component---src-pages-templates-blog-by-author-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-blog-by-author-tsx-c73b629026a3b6d9b6b2.js","size":10495}],"filteredAssets":0,"assetsSize":21151,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":100261},"component---src-pages-templates-blog-by-hashtag-tsx":{"name":"component---src-pages-templates-blog-by-hashtag-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-blog-by-hashtag-tsx-3a8ada98c121bd3d62f7.js","size":9652}],"filteredAssets":0,"assetsSize":20308,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":97282},"component---src-pages-templates-blog-tsx":{"name":"component---src-pages-templates-blog-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-blog-tsx-91ade5beabd1db3174a4.js","size":9436}],"filteredAssets":0,"assetsSize":20092,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":96931},"component---src-pages-templates-index-tsx":{"name":"component---src-pages-templates-index-tsx","assets":[{"name":"styles.2a7450c31650c7d09006.css","size":45779},{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-a1ebad9294408a8dbc6b.js","size":30664},{"name":"dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","size":18834},{"name":"component---src-pages-templates-index-tsx-2df0ce267e9edf8b197a.js","size":13700}],"filteredAssets":0,"assetsSize":119633,"filteredAuxiliaryAssets":18,"auxiliaryAssetsSize":849357},"component---src-pages-templates-policies-tsx":{"name":"component---src-pages-templates-policies-tsx","assets":[{"name":"component---src-pages-templates-policies-tsx-359925d45492160d5e8b.js","size":816}],"filteredAssets":0,"assetsSize":816,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":2133},"component---src-pages-templates-post-tsx":{"name":"component---src-pages-templates-post-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js","size":7759}],"filteredAssets":0,"assetsSize":18415,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":89208},"component---src-pages-templates-project-tsx":{"name":"component---src-pages-templates-project-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","size":18834},{"name":"component---src-pages-templates-project-tsx-3f6f4a02fe1a9b45b9be.js","size":8276}],"filteredAssets":0,"assetsSize":37766,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":182323},"component---src-pages-templates-projects-tsx":{"name":"component---src-pages-templates-projects-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-projects-tsx-efcf98f36bb35506a959.js","size":4262}],"filteredAssets":0,"assetsSize":14918,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":81739},"component---src-pages-templates-services-tsx":{"name":"component---src-pages-templates-services-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-a1ebad9294408a8dbc6b.js","size":30664},{"name":"dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","size":18834},{"name":"component---src-pages-templates-services-tsx-52382137cf50c3b54f73.js","size":11489}],"filteredAssets":0,"assetsSize":71643,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":342911},"component---src-pages-templates-workflow-tsx":{"name":"component---src-pages-templates-workflow-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-a1ebad9294408a8dbc6b.js","size":30664},{"name":"component---src-pages-templates-workflow-tsx-3b5bfd63b270d61e9cb0.js","size":5137}],"filteredAssets":0,"assetsSize":46457,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":222739}},"assetsByChunkName":{"app":["webpack-runtime-fbaf96408a38e72808f3.js","styles.2a7450c31650c7d09006.css","framework-2f7a9a83fd6996cb764f.js","app-f487b6864a0d816cc020.js"],"component---src-pages-templates-404-tsx":["component---src-pages-templates-404-tsx-1ec7dcfded6e73efef91.js"],"component---src-pages-templates-blog-by-author-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-blog-by-author-tsx-c73b629026a3b6d9b6b2.js"],"component---src-pages-templates-blog-by-hashtag-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-blog-by-hashtag-tsx-3a8ada98c121bd3d62f7.js"],"component---src-pages-templates-blog-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-blog-tsx-91ade5beabd1db3174a4.js"],"component---src-pages-templates-index-tsx":["styles.2a7450c31650c7d09006.css","c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-a1ebad9294408a8dbc6b.js","dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","component---src-pages-templates-index-tsx-2df0ce267e9edf8b197a.js"],"component---src-pages-templates-policies-tsx":["component---src-pages-templates-policies-tsx-359925d45492160d5e8b.js"],"component---src-pages-templates-post-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-post-tsx-679a8c56938c9272bb7a.js"],"component---src-pages-templates-project-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","component---src-pages-templates-project-tsx-3f6f4a02fe1a9b45b9be.js"],"component---src-pages-templates-projects-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-projects-tsx-efcf98f36bb35506a959.js"],"component---src-pages-templates-services-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-a1ebad9294408a8dbc6b.js","dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","component---src-pages-templates-services-tsx-52382137cf50c3b54f73.js"],"component---src-pages-templates-workflow-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-a1ebad9294408a8dbc6b.js","component---src-pages-templates-workflow-tsx-3b5bfd63b270d61e9cb0.js"]},"childAssetsByChunkName":{}} \ No newline at end of file +{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-90c320f61741db61aa26.js","size":4952},{"name":"styles.a5d06edd5f5a703fcb21.css","size":45877},{"name":"framework-2f7a9a83fd6996cb764f.js","size":141400},{"name":"app-7990c3f1d980ee5d9dc0.js","size":351476}],"filteredAssets":0,"assetsSize":543705,"filteredAuxiliaryAssets":17,"auxiliaryAssetsSize":2502874},"component---src-pages-templates-404-tsx":{"name":"component---src-pages-templates-404-tsx","assets":[{"name":"component---src-pages-templates-404-tsx-1ec7dcfded6e73efef91.js","size":5869}],"filteredAssets":0,"assetsSize":5869,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":32943},"component---src-pages-templates-blog-by-author-tsx":{"name":"component---src-pages-templates-blog-by-author-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-blog-by-author-tsx-c73b629026a3b6d9b6b2.js","size":10495}],"filteredAssets":0,"assetsSize":21151,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":100384},"component---src-pages-templates-blog-by-hashtag-tsx":{"name":"component---src-pages-templates-blog-by-hashtag-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-blog-by-hashtag-tsx-3a8ada98c121bd3d62f7.js","size":9652}],"filteredAssets":0,"assetsSize":20308,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":97405},"component---src-pages-templates-blog-tsx":{"name":"component---src-pages-templates-blog-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-blog-tsx-91ade5beabd1db3174a4.js","size":9436}],"filteredAssets":0,"assetsSize":20092,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":97054},"component---src-pages-templates-index-tsx":{"name":"component---src-pages-templates-index-tsx","assets":[{"name":"styles.a5d06edd5f5a703fcb21.css","size":45877},{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-a1ebad9294408a8dbc6b.js","size":30664},{"name":"dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","size":18834},{"name":"component---src-pages-templates-index-tsx-2df0ce267e9edf8b197a.js","size":13700}],"filteredAssets":0,"assetsSize":119731,"filteredAuxiliaryAssets":18,"auxiliaryAssetsSize":849479},"component---src-pages-templates-policies-tsx":{"name":"component---src-pages-templates-policies-tsx","assets":[{"name":"component---src-pages-templates-policies-tsx-359925d45492160d5e8b.js","size":816}],"filteredAssets":0,"assetsSize":816,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":2133},"component---src-pages-templates-post-tsx":{"name":"component---src-pages-templates-post-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js","size":7871}],"filteredAssets":0,"assetsSize":18527,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":90041},"component---src-pages-templates-project-tsx":{"name":"component---src-pages-templates-project-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","size":18834},{"name":"component---src-pages-templates-project-tsx-3f6f4a02fe1a9b45b9be.js","size":8276}],"filteredAssets":0,"assetsSize":37766,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":182323},"component---src-pages-templates-projects-tsx":{"name":"component---src-pages-templates-projects-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"component---src-pages-templates-projects-tsx-efcf98f36bb35506a959.js","size":4262}],"filteredAssets":0,"assetsSize":14918,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":81862},"component---src-pages-templates-services-tsx":{"name":"component---src-pages-templates-services-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-a1ebad9294408a8dbc6b.js","size":30664},{"name":"dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","size":18834},{"name":"component---src-pages-templates-services-tsx-52382137cf50c3b54f73.js","size":11489}],"filteredAssets":0,"assetsSize":71643,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":342911},"component---src-pages-templates-workflow-tsx":{"name":"component---src-pages-templates-workflow-tsx","assets":[{"name":"c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","size":10656},{"name":"71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-a1ebad9294408a8dbc6b.js","size":30664},{"name":"component---src-pages-templates-workflow-tsx-3b5bfd63b270d61e9cb0.js","size":5137}],"filteredAssets":0,"assetsSize":46457,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":222862}},"assetsByChunkName":{"app":["webpack-runtime-90c320f61741db61aa26.js","styles.a5d06edd5f5a703fcb21.css","framework-2f7a9a83fd6996cb764f.js","app-7990c3f1d980ee5d9dc0.js"],"component---src-pages-templates-404-tsx":["component---src-pages-templates-404-tsx-1ec7dcfded6e73efef91.js"],"component---src-pages-templates-blog-by-author-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-blog-by-author-tsx-c73b629026a3b6d9b6b2.js"],"component---src-pages-templates-blog-by-hashtag-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-blog-by-hashtag-tsx-3a8ada98c121bd3d62f7.js"],"component---src-pages-templates-blog-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-blog-tsx-91ade5beabd1db3174a4.js"],"component---src-pages-templates-index-tsx":["styles.a5d06edd5f5a703fcb21.css","c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-a1ebad9294408a8dbc6b.js","dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","component---src-pages-templates-index-tsx-2df0ce267e9edf8b197a.js"],"component---src-pages-templates-policies-tsx":["component---src-pages-templates-policies-tsx-359925d45492160d5e8b.js"],"component---src-pages-templates-post-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-post-tsx-7870f7000d415f9876f9.js"],"component---src-pages-templates-project-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","component---src-pages-templates-project-tsx-3f6f4a02fe1a9b45b9be.js"],"component---src-pages-templates-projects-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","component---src-pages-templates-projects-tsx-efcf98f36bb35506a959.js"],"component---src-pages-templates-services-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-a1ebad9294408a8dbc6b.js","dbbdfb320c5007a40fa91453221d77dae72f3b83-00be99e431fb904367c1.js","component---src-pages-templates-services-tsx-52382137cf50c3b54f73.js"],"component---src-pages-templates-workflow-tsx":["c294adedbbc0a5c4b071b27a5ffb97a116928d98-83f152d3f32c8162f39f.js","71598b7b9331211c5dc2cdd9e7a07dc39cf581bb-a1ebad9294408a8dbc6b.js","component---src-pages-templates-workflow-tsx-3b5bfd63b270d61e9cb0.js"]},"childAssetsByChunkName":{}} \ No newline at end of file diff --git a/workflow/index.html b/workflow/index.html index c64ca002..5bbf3f9a 100644 --- a/workflow/index.html +++ b/workflow/index.html @@ -1,8 +1,8 @@ - \ No newline at end of file + \ No newline at end of file