From e2fb9bb13547393c0d15aa19c7894c8ec388e997 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 13:08:08 +0000 Subject: [PATCH] Deploy to GitHub pages --- 404.html | 33 ++ assets/404.html-58267e49.js | 1 + assets/404.html-60b35caa.js | 1 + ...droidmakers2023Kotlinshortlink-943614c6.js | 1 + ...roidmakers2023Kotlinshortlink-f547f85e.svg | 309 ++++++++++++++++++ assets/Kotlin-Beyond-Android-0a0e3f7d.png | Bin 0 -> 149335 bytes assets/app-a89e3102.js | 10 + assets/back-to-top-8efcbe56.svg | 1 + assets/compose-multiplaform-6e96455d.gif | Bin 0 -> 249383 bytes assets/compose-multiplaform-e9e5bce8.js | 1 + assets/compose-multiplaform-web-87ee5d43.gif | Bin 0 -> 26612 bytes assets/compose-web-demo-d50aa5c6.png | Bin 0 -> 7407 bytes .../fs-kmp-architecture.drawio-fa432d3a.svg | 153 +++++++++ ...-webcanvas-architecture.drawio-2659deec.js | 1 + ...webcanvas-architecture.drawio-c195dc62.svg | 178 ++++++++++ assets/index-e32a7948.js | 1 + assets/index.html-057a2bb3.js | 1 + assets/index.html-0871564e.js | 7 + assets/index.html-133fa6a3.js | 1 + assets/index.html-1b2bb433.js | 35 ++ assets/index.html-2616f981.js | 1 + assets/index.html-272066df.js | 7 + assets/index.html-2bf95174.js | 13 + assets/index.html-32146963.js | 1 + assets/index.html-5789aaa7.js | 1 + assets/index.html-5828365f.js | 1 + assets/index.html-679cf9c6.js | 1 + assets/index.html-79bb2826.js | 1 + assets/index.html-7c67d373.js | 1 + assets/index.html-7f8c050f.js | 1 + assets/index.html-84257041.js | 1 + assets/index.html-93be45bf.js | 1 + assets/index.html-99c4b89d.js | 195 +++++++++++ assets/index.html-a449e056.js | 1 + assets/index.html-aa00c7ec.js | 1 + assets/index.html-adc29353.js | 1 + assets/index.html-b303a607.js | 1 + assets/index.html-b3bd56ea.js | 35 ++ assets/index.html-b4a36fa2.js | 1 + assets/index.html-ba31557a.js | 1 + assets/index.html-c4e1d1bc.js | 1 + assets/index.html-cd45fdc2.js | 1 + assets/index.html-cf1cb754.js | 1 + assets/index.html-d08806ac.js | 1 + assets/index.html-d6c6bffa.js | 193 +++++++++++ assets/index.html-e4fee572.js | 1 + assets/index.html-f290d974.js | 13 + assets/index.html-f7b20576.js | 1 + assets/index.html-f888b6f2.js | 1 + assets/index.html-fb17b9eb.js | 1 + assets/kmm-fs-react-demo-11c681d6.png | Bin 0 -> 12921 bytes assets/kmp-fs-desktop-local-ktor-d6440da8.png | Bin 0 -> 10211 bytes assets/kmp_codelab-dcc38916.png | Bin 0 -> 118115 bytes assets/kotlin-used-for-492dbcd9.js | 1 + assets/kotlin-used-for-f0b674b5.png | Bin 0 -> 38402 bytes assets/kotlin-wasm-flag-ee5f483f.png | Bin 0 -> 35048 bytes assets/kotlin-wasm-webapp-5e0cad78.png | Bin 0 -> 5331 bytes assets/logo_worldline-09e30c15.png | Bin 0 -> 14866 bytes assets/logo_worldline-35dfdc75.js | 1 + assets/search-0782d0d1.svg | 1 + assets/style-6c5d5cd9.css | 1 + assets/wasm-build-conf-edit-2972b458.png | Bin 0 -> 8276 bytes assets/wasm-run-configuration-d79819b8.png | Bin 0 -> 13619 bytes en/backend-development/index.html | 225 +++++++++++++ en/front-development/index.html | 67 ++++ en/index.html | 33 ++ en/kotlin-features-advanced/index.html | 45 +++ en/kotlin-features/index.html | 39 +++ en/other-technologies/index.html | 33 ++ en/presentation/index.html | 33 ++ en/workshops/index.html | 33 ++ favicon.ico | Bin 0 -> 89808 bytes fr/backend-development/index.html | 227 +++++++++++++ fr/front-development/index.html | 67 ++++ fr/index.html | 33 ++ fr/kotlin-features-advanced/index.html | 45 +++ fr/kotlin-features/index.html | 39 +++ fr/other-technologies/index.html | 33 ++ fr/presentation/index.html | 33 ++ fr/workshops/index.html | 33 ++ icon-192x192.png | Bin 0 -> 28392 bytes icon-256x256.png | Bin 0 -> 44303 bytes icon-384x384.png | Bin 0 -> 102218 bytes icon-512x512.png | Bin 0 -> 93315 bytes index.html | 33 ++ kotlin_logo.png | Bin 0 -> 88422 bytes logo_worldline.png | Bin 0 -> 14866 bytes manifest.webmanifest | 31 ++ service-worker.js | 1 + workbox-2b403519.js | 1 + 90 files changed, 2302 insertions(+) create mode 100644 404.html create mode 100644 assets/404.html-58267e49.js create mode 100644 assets/404.html-60b35caa.js create mode 100644 assets/Androidmakers2023Kotlinshortlink-943614c6.js create mode 100644 assets/Androidmakers2023Kotlinshortlink-f547f85e.svg create mode 100644 assets/Kotlin-Beyond-Android-0a0e3f7d.png create mode 100644 assets/app-a89e3102.js create mode 100644 assets/back-to-top-8efcbe56.svg create mode 100644 assets/compose-multiplaform-6e96455d.gif create mode 100644 assets/compose-multiplaform-e9e5bce8.js create mode 100644 assets/compose-multiplaform-web-87ee5d43.gif create mode 100644 assets/compose-web-demo-d50aa5c6.png create mode 100644 assets/fs-kmp-architecture.drawio-fa432d3a.svg create mode 100644 assets/fs-kmp-webcanvas-architecture.drawio-2659deec.js create mode 100644 assets/fs-kmp-webcanvas-architecture.drawio-c195dc62.svg create mode 100644 assets/index-e32a7948.js create mode 100644 assets/index.html-057a2bb3.js create mode 100644 assets/index.html-0871564e.js create mode 100644 assets/index.html-133fa6a3.js create mode 100644 assets/index.html-1b2bb433.js create mode 100644 assets/index.html-2616f981.js create mode 100644 assets/index.html-272066df.js create mode 100644 assets/index.html-2bf95174.js create mode 100644 assets/index.html-32146963.js create mode 100644 assets/index.html-5789aaa7.js create mode 100644 assets/index.html-5828365f.js create mode 100644 assets/index.html-679cf9c6.js create mode 100644 assets/index.html-79bb2826.js create mode 100644 assets/index.html-7c67d373.js create mode 100644 assets/index.html-7f8c050f.js create mode 100644 assets/index.html-84257041.js create mode 100644 assets/index.html-93be45bf.js create mode 100644 assets/index.html-99c4b89d.js create mode 100644 assets/index.html-a449e056.js create mode 100644 assets/index.html-aa00c7ec.js create mode 100644 assets/index.html-adc29353.js create mode 100644 assets/index.html-b303a607.js create mode 100644 assets/index.html-b3bd56ea.js create mode 100644 assets/index.html-b4a36fa2.js create mode 100644 assets/index.html-ba31557a.js create mode 100644 assets/index.html-c4e1d1bc.js create mode 100644 assets/index.html-cd45fdc2.js create mode 100644 assets/index.html-cf1cb754.js create mode 100644 assets/index.html-d08806ac.js create mode 100644 assets/index.html-d6c6bffa.js create mode 100644 assets/index.html-e4fee572.js create mode 100644 assets/index.html-f290d974.js create mode 100644 assets/index.html-f7b20576.js create mode 100644 assets/index.html-f888b6f2.js create mode 100644 assets/index.html-fb17b9eb.js create mode 100644 assets/kmm-fs-react-demo-11c681d6.png create mode 100644 assets/kmp-fs-desktop-local-ktor-d6440da8.png create mode 100644 assets/kmp_codelab-dcc38916.png create mode 100644 assets/kotlin-used-for-492dbcd9.js create mode 100644 assets/kotlin-used-for-f0b674b5.png create mode 100644 assets/kotlin-wasm-flag-ee5f483f.png create mode 100644 assets/kotlin-wasm-webapp-5e0cad78.png create mode 100644 assets/logo_worldline-09e30c15.png create mode 100644 assets/logo_worldline-35dfdc75.js create mode 100644 assets/search-0782d0d1.svg create mode 100644 assets/style-6c5d5cd9.css create mode 100644 assets/wasm-build-conf-edit-2972b458.png create mode 100644 assets/wasm-run-configuration-d79819b8.png create mode 100644 en/backend-development/index.html create mode 100644 en/front-development/index.html create mode 100644 en/index.html create mode 100644 en/kotlin-features-advanced/index.html create mode 100644 en/kotlin-features/index.html create mode 100644 en/other-technologies/index.html create mode 100644 en/presentation/index.html create mode 100644 en/workshops/index.html create mode 100644 favicon.ico create mode 100644 fr/backend-development/index.html create mode 100644 fr/front-development/index.html create mode 100644 fr/index.html create mode 100644 fr/kotlin-features-advanced/index.html create mode 100644 fr/kotlin-features/index.html create mode 100644 fr/other-technologies/index.html create mode 100644 fr/presentation/index.html create mode 100644 fr/workshops/index.html create mode 100644 icon-192x192.png create mode 100644 icon-256x256.png create mode 100644 icon-384x384.png create mode 100644 icon-512x512.png create mode 100644 index.html create mode 100644 kotlin_logo.png create mode 100644 logo_worldline.png create mode 100644 manifest.webmanifest create mode 100644 service-worker.js create mode 100644 workbox-2b403519.js diff --git a/404.html b/404.html new file mode 100644 index 00000000..c640fde6 --- /dev/null +++ b/404.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + +

404

That's a Four-Oh-Four.
Take me home
+ + + diff --git a/assets/404.html-58267e49.js b/assets/404.html-58267e49.js new file mode 100644 index 00000000..42e935a6 --- /dev/null +++ b/assets/404.html-58267e49.js @@ -0,0 +1 @@ +import{_ as e,o as c,c as t}from"./app-a89e3102.js";const _={};function o(r,n){return c(),t("div")}const a=e(_,[["render",o],["__file","404.html.vue"]]);export{a as default}; diff --git a/assets/404.html-60b35caa.js b/assets/404.html-60b35caa.js new file mode 100644 index 00000000..7a25b17a --- /dev/null +++ b/assets/404.html-60b35caa.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-3706649a","path":"/404.html","title":"","lang":"en-US","frontmatter":{"layout":"NotFound"},"headers":[],"git":{},"filePathRelative":null}');export{t as data}; diff --git a/assets/Androidmakers2023Kotlinshortlink-943614c6.js b/assets/Androidmakers2023Kotlinshortlink-943614c6.js new file mode 100644 index 00000000..759187e1 --- /dev/null +++ b/assets/Androidmakers2023Kotlinshortlink-943614c6.js @@ -0,0 +1 @@ +const n="/learning-kotlin/assets/Kotlin-Beyond-Android-0a0e3f7d.png",s="/learning-kotlin/assets/Androidmakers2023Kotlinshortlink-f547f85e.svg";export{n as _,s as a}; diff --git a/assets/Androidmakers2023Kotlinshortlink-f547f85e.svg b/assets/Androidmakers2023Kotlinshortlink-f547f85e.svg new file mode 100644 index 00000000..53959f78 --- /dev/null +++ b/assets/Androidmakers2023Kotlinshortlink-f547f85e.svg @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/Kotlin-Beyond-Android-0a0e3f7d.png b/assets/Kotlin-Beyond-Android-0a0e3f7d.png new file mode 100644 index 0000000000000000000000000000000000000000..cb22227b25298cafa8c536f1a5e0879671cd7963 GIT binary patch literal 149335 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¬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

Tf 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 Vm#fmSqc^~xytIl`wS;NV{{ewcZ!Z7< literal 0 HcmV?d00001 diff --git a/assets/app-a89e3102.js b/assets/app-a89e3102.js new file mode 100644 index 00000000..e8e7d0e4 --- /dev/null +++ b/assets/app-a89e3102.js @@ -0,0 +1,10 @@ +const Kl="modulepreload",Wl=function(e){return"/learning-kotlin/"+e},Yo={},ie=function(t,n,r){if(!n||n.length===0)return t();const o=document.getElementsByTagName("link");return Promise.all(n.map(s=>{if(s=Wl(s),s in Yo)return;Yo[s]=!0;const i=s.endsWith(".css"),l=i?'[rel="stylesheet"]':"";if(!!r)for(let u=o.length-1;u>=0;u--){const f=o[u];if(f.href===s&&(!i||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${l}`))return;const c=document.createElement("link");if(c.rel=i?"stylesheet":Kl,i||(c.as="script",c.crossOrigin=""),c.href=s,document.head.appendChild(c),i)return new Promise((u,f)=>{c.addEventListener("load",u),c.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${s}`)))})})).then(()=>t()).catch(s=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=s,window.dispatchEvent(i),!i.defaultPrevented)throw s})};function ho(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}const ke={},nn=[],ot=()=>{},Ul=()=>!1,ql=/^on[^a-z]/,Dn=e=>ql.test(e),mo=e=>e.startsWith("onUpdate:"),Te=Object.assign,go=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Vl=Object.prototype.hasOwnProperty,de=(e,t)=>Vl.call(e,t),G=Array.isArray,rn=e=>wr(e)==="[object Map]",ci=e=>wr(e)==="[object Set]",oe=e=>typeof e=="function",me=e=>typeof e=="string",vo=e=>typeof e=="symbol",Ee=e=>e!==null&&typeof e=="object",ui=e=>Ee(e)&&oe(e.then)&&oe(e.catch),fi=Object.prototype.toString,wr=e=>fi.call(e),Jl=e=>wr(e).slice(8,-1),di=e=>wr(e)==="[object Object]",_o=e=>me(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,xn=ho(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),kr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Yl=/-(\w)/g,ft=kr(e=>e.replace(Yl,(t,n)=>n?n.toUpperCase():"")),Gl=/\B([A-Z])/g,Jt=kr(e=>e.replace(Gl,"-$1").toLowerCase()),Er=kr(e=>e.charAt(0).toUpperCase()+e.slice(1)),Nr=kr(e=>e?`on${Er(e)}`:""),Pn=(e,t)=>!Object.is(e,t),Dr=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Ql=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Zl=e=>{const t=me(e)?Number(e):NaN;return isNaN(t)?e:t};let Go;const Qr=()=>Go||(Go=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Fn(e){if(G(e)){const t={};for(let n=0;n{if(n){const r=n.split(ea);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Ue(e){let t="";if(me(e))t=e;else if(G(e))for(let n=0;nme(e)?e:e==null?"":G(e)||Ee(e)&&(e.toString===fi||!oe(e.toString))?JSON.stringify(e,hi,2):String(e),hi=(e,t)=>t&&t.__v_isRef?hi(e,t.value):rn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o])=>(n[`${r} =>`]=o,n),{})}:ci(t)?{[`Set(${t.size})`]:[...t.values()]}:Ee(t)&&!G(t)&&!di(t)?String(t):t;let Ye;class sa{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Ye,!t&&Ye&&(this.index=(Ye.scopes||(Ye.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Ye;try{return Ye=this,t()}finally{Ye=n}}}on(){Ye=this}off(){Ye=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},gi=e=>(e.w&It)>0,vi=e=>(e.n&It)>0,aa=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(u==="length"||u>=a)&&l.push(c)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":G(e)?_o(n)&&l.push(i.get("length")):(l.push(i.get(Ut)),rn(e)&&l.push(i.get(Xr)));break;case"delete":G(e)||(l.push(i.get(Ut)),rn(e)&&l.push(i.get(Xr)));break;case"set":rn(e)&&l.push(i.get(Ut));break}if(l.length===1)l[0]&&eo(l[0]);else{const a=[];for(const c of l)c&&a.push(...c);eo(bo(a))}}function eo(e,t){const n=G(e)?e:[...e];for(const r of n)r.computed&&Zo(r);for(const r of n)r.computed||Zo(r)}function Zo(e,t){(e!==nt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function ua(e,t){var n;return(n=cr.get(e))==null?void 0:n.get(t)}const fa=ho("__proto__,__v_isRef,__isVue"),yi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(vo)),da=wo(),pa=wo(!1,!0),ha=wo(!0),Xo=ma();function ma(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=he(this);for(let s=0,i=this.length;s{e[t]=function(...n){mn();const r=he(this)[t].apply(this,n);return gn(),r}}),e}function ga(e){const t=he(this);return qe(t,"has",e),t.hasOwnProperty(e)}function wo(e=!1,t=!1){return function(r,o,s){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&s===(e?t?Oa:Ci:t?xi:Ei).get(r))return r;const i=G(r);if(!e){if(i&&de(Xo,o))return Reflect.get(Xo,o,s);if(o==="hasOwnProperty")return ga}const l=Reflect.get(r,o,s);return(vo(o)?yi.has(o):fa(o))||(e||qe(r,"get",o),t)?l:$e(l)?i&&_o(o)?l:l.value:Ee(l)?e?jn(l):Hn(l):l}}const va=wi(),_a=wi(!0);function wi(e=!1){return function(n,r,o,s){let i=n[r];if(an(i)&&$e(i)&&!$e(o))return!1;if(!e&&(!ur(o)&&!an(o)&&(i=he(i),o=he(o)),!G(n)&&$e(i)&&!$e(o)))return i.value=o,!0;const l=G(n)&&_o(r)?Number(r)e,xr=e=>Reflect.getPrototypeOf(e);function Vn(e,t,n=!1,r=!1){e=e.__v_raw;const o=he(e),s=he(t);n||(t!==s&&qe(o,"get",t),qe(o,"get",s));const{has:i}=xr(o),l=r?ko:n?Co:Rn;if(i.call(o,t))return l(e.get(t));if(i.call(o,s))return l(e.get(s));e!==o&&e.get(t)}function Jn(e,t=!1){const n=this.__v_raw,r=he(n),o=he(e);return t||(e!==o&&qe(r,"has",e),qe(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function Yn(e,t=!1){return e=e.__v_raw,!t&&qe(he(e),"iterate",Ut),Reflect.get(e,"size",e)}function es(e){e=he(e);const t=he(this);return xr(t).has.call(t,e)||(t.add(e),bt(t,"add",e,e)),this}function ts(e,t){t=he(t);const n=he(this),{has:r,get:o}=xr(n);let s=r.call(n,e);s||(e=he(e),s=r.call(n,e));const i=o.call(n,e);return n.set(e,t),s?Pn(t,i)&&bt(n,"set",e,t):bt(n,"add",e,t),this}function ns(e){const t=he(this),{has:n,get:r}=xr(t);let o=n.call(t,e);o||(e=he(e),o=n.call(t,e)),r&&r.call(t,e);const s=t.delete(e);return o&&bt(t,"delete",e,void 0),s}function rs(){const e=he(this),t=e.size!==0,n=e.clear();return t&&bt(e,"clear",void 0,void 0),n}function Gn(e,t){return function(r,o){const s=this,i=s.__v_raw,l=he(i),a=t?ko:e?Co:Rn;return!e&&qe(l,"iterate",Ut),i.forEach((c,u)=>r.call(o,a(c),a(u),s))}}function Qn(e,t,n){return function(...r){const o=this.__v_raw,s=he(o),i=rn(s),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,c=o[e](...r),u=n?ko:t?Co:Rn;return!t&&qe(s,"iterate",a?Xr:Ut),{next(){const{value:f,done:d}=c.next();return d?{value:f,done:d}:{value:l?[u(f[0]),u(f[1])]:u(f),done:d}},[Symbol.iterator](){return this}}}}function xt(e){return function(...t){return e==="delete"?!1:this}}function xa(){const e={get(s){return Vn(this,s)},get size(){return Yn(this)},has:Jn,add:es,set:ts,delete:ns,clear:rs,forEach:Gn(!1,!1)},t={get(s){return Vn(this,s,!1,!0)},get size(){return Yn(this)},has:Jn,add:es,set:ts,delete:ns,clear:rs,forEach:Gn(!1,!0)},n={get(s){return Vn(this,s,!0)},get size(){return Yn(this,!0)},has(s){return Jn.call(this,s,!0)},add:xt("add"),set:xt("set"),delete:xt("delete"),clear:xt("clear"),forEach:Gn(!0,!1)},r={get(s){return Vn(this,s,!0,!0)},get size(){return Yn(this,!0)},has(s){return Jn.call(this,s,!0)},add:xt("add"),set:xt("set"),delete:xt("delete"),clear:xt("clear"),forEach:Gn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(s=>{e[s]=Qn(s,!1,!1),n[s]=Qn(s,!0,!1),t[s]=Qn(s,!1,!0),r[s]=Qn(s,!0,!0)}),[e,n,t,r]}const[Ca,La,Sa,Aa]=xa();function Eo(e,t){const n=t?e?Aa:Sa:e?La:Ca;return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(de(n,o)&&o in r?n:r,o,s)}const Ta={get:Eo(!1,!1)},Pa={get:Eo(!1,!0)},Ra={get:Eo(!0,!1)},Ei=new WeakMap,xi=new WeakMap,Ci=new WeakMap,Oa=new WeakMap;function Ia(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function $a(e){return e.__v_skip||!Object.isExtensible(e)?0:Ia(Jl(e))}function Hn(e){return an(e)?e:xo(e,!1,ki,Ta,Ei)}function Li(e){return xo(e,!1,Ea,Pa,xi)}function jn(e){return xo(e,!0,ka,Ra,Ci)}function xo(e,t,n,r,o){if(!Ee(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const i=$a(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return o.set(e,l),l}function on(e){return an(e)?on(e.__v_raw):!!(e&&e.__v_isReactive)}function an(e){return!!(e&&e.__v_isReadonly)}function ur(e){return!!(e&&e.__v_isShallow)}function Si(e){return on(e)||an(e)}function he(e){const t=e&&e.__v_raw;return t?he(t):e}function Ai(e){return ar(e,"__v_skip",!0),e}const Rn=e=>Ee(e)?Hn(e):e,Co=e=>Ee(e)?jn(e):e;function Lo(e){Pt&&nt&&(e=he(e),bi(e.dep||(e.dep=bo())))}function So(e,t){e=he(e);const n=e.dep;n&&eo(n)}function $e(e){return!!(e&&e.__v_isRef===!0)}function ve(e){return Ti(e,!1)}function Ao(e){return Ti(e,!0)}function Ti(e,t){return $e(e)?e:new Ma(e,t)}class Ma{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:he(t),this._value=n?t:Rn(t)}get value(){return Lo(this),this._value}set value(t){const n=this.__v_isShallow||ur(t)||an(t);t=n?t:he(t),Pn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Rn(t),So(this))}}function X(e){return $e(e)?e.value:e}const Na={get:(e,t,n)=>X(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return $e(o)&&!$e(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Pi(e){return on(e)?e:new Proxy(e,Na)}class Da{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Lo(this),()=>So(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function Fa(e){return new Da(e)}function Cr(e){const t=G(e)?new Array(e.length):{};for(const n in e)t[n]=ja(e,n);return t}class Ha{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return ua(he(this._object),this._key)}}function ja(e,t,n){const r=e[t];return $e(r)?r:new Ha(e,t,n)}class Ba{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new yo(t,()=>{this._dirty||(this._dirty=!0,So(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=he(this);return Lo(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function za(e,t,n=!1){let r,o;const s=oe(e);return s?(r=e,o=ot):(r=e.get,o=e.set),new Ba(r,o,s||!o,n)}function Rt(e,t,n,r){let o;try{o=r?e(...r):e()}catch(s){Bn(s,t,n)}return o}function Xe(e,t,n,r){if(oe(e)){const s=Rt(e,t,n,r);return s&&ui(s)&&s.catch(i=>{Bn(i,t,n)}),s}const o=[];for(let s=0;s>>1;In(je[r])ut&&je.splice(t,1)}function qa(e){G(e)?sn.push(...e):(!gt||!gt.includes(e,e.allowRecurse?Bt+1:Bt))&&sn.push(e),Oi()}function os(e,t=On?ut+1:0){for(;tIn(n)-In(r)),Bt=0;Bte.id==null?1/0:e.id,Va=(e,t)=>{const n=In(e)-In(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ii(e){to=!1,On=!0,je.sort(Va);const t=ot;try{for(ut=0;utme(g)?g.trim():g)),f&&(o=n.map(Ql))}let l,a=r[l=Nr(t)]||r[l=Nr(ft(t))];!a&&s&&(a=r[l=Nr(Jt(t))]),a&&Xe(a,e,6,o);const c=r[l+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Xe(c,e,6,o)}}function $i(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let i={},l=!1;if(!oe(e)){const a=c=>{const u=$i(c,t,!0);u&&(l=!0,Te(i,u))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!s&&!l?(Ee(e)&&r.set(e,null),null):(G(s)?s.forEach(a=>i[a]=null):Te(i,s),Ee(e)&&r.set(e,i),i)}function Ar(e,t){return!e||!Dn(t)?!1:(t=t.slice(2).replace(/Once$/,""),de(e,t[0].toLowerCase()+t.slice(1))||de(e,Jt(t))||de(e,t))}let De=null,Mi=null;function dr(e){const t=De;return De=e,Mi=e&&e.type.__scopeId||null,t}function Ne(e,t=De,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&gs(-1);const s=dr(t);let i;try{i=e(...o)}finally{dr(s),r._d&&gs(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Fr(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:s,propsOptions:[i],slots:l,attrs:a,emit:c,render:u,renderCache:f,data:d,setupState:g,ctx:y,inheritAttrs:k}=e;let L,v;const b=dr(e);try{if(n.shapeFlag&4){const A=o||r;L=tt(u.call(A,A,f,s,g,d,y)),v=a}else{const A=t;L=tt(A.length>1?A(s,{attrs:a,slots:l,emit:c}):A(s,null)),v=t.props?a:Ya(a)}}catch(A){Sn.length=0,Bn(A,e,1),L=ee(Ge)}let T=L;if(v&&k!==!1){const A=Object.keys(v),{shapeFlag:W}=T;A.length&&W&7&&(i&&A.some(mo)&&(v=Ga(v,i)),T=Mt(T,v))}return n.dirs&&(T=Mt(T),T.dirs=T.dirs?T.dirs.concat(n.dirs):n.dirs),n.transition&&(T.transition=n.transition),L=T,dr(b),L}const Ya=e=>{let t;for(const n in e)(n==="class"||n==="style"||Dn(n))&&((t||(t={}))[n]=e[n]);return t},Ga=(e,t)=>{const n={};for(const r in e)(!mo(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Qa(e,t,n){const{props:r,children:o,component:s}=e,{props:i,children:l,patchFlag:a}=t,c=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return r?ss(r,i,c):!!i;if(a&8){const u=t.dynamicProps;for(let f=0;fe.__isSuspense;function Ni(e,t){t&&t.pendingBranch?G(e)?t.effects.push(...e):t.effects.push(e):qa(e)}function Di(e,t){return Po(e,null,t)}const Zn={};function st(e,t,n){return Po(e,t,n)}function Po(e,t,{immediate:n,deep:r,flush:o,onTrack:s,onTrigger:i}=ke){var l;const a=mi()===((l=Pe)==null?void 0:l.scope)?Pe:null;let c,u=!1,f=!1;if($e(e)?(c=()=>e.value,u=ur(e)):on(e)?(c=()=>e,r=!0):G(e)?(f=!0,u=e.some(A=>on(A)||ur(A)),c=()=>e.map(A=>{if($e(A))return A.value;if(on(A))return Wt(A);if(oe(A))return Rt(A,a,2)})):oe(e)?t?c=()=>Rt(e,a,2):c=()=>{if(!(a&&a.isUnmounted))return d&&d(),Xe(e,a,3,[g])}:c=ot,t&&r){const A=c;c=()=>Wt(A())}let d,g=A=>{d=b.onStop=()=>{Rt(A,a,4)}},y;if(fn)if(g=ot,t?n&&Xe(t,a,3,[c(),f?[]:void 0,g]):c(),o==="sync"){const A=Jc();y=A.__watcherHandles||(A.__watcherHandles=[])}else return ot;let k=f?new Array(e.length).fill(Zn):Zn;const L=()=>{if(b.active)if(t){const A=b.run();(r||u||(f?A.some((W,Q)=>Pn(W,k[Q])):Pn(A,k)))&&(d&&d(),Xe(t,a,3,[A,k===Zn?void 0:f&&k[0]===Zn?[]:k,g]),k=A)}else b.run()};L.allowRecurse=!!t;let v;o==="sync"?v=L:o==="post"?v=()=>We(L,a&&a.suspense):(L.pre=!0,a&&(L.id=a.uid),v=()=>Sr(L));const b=new yo(c,v);t?n?L():k=b.run():o==="post"?We(b.run.bind(b),a&&a.suspense):b.run();const T=()=>{b.stop(),a&&a.scope&&go(a.scope.effects,b)};return y&&y.push(T),T}function ec(e,t,n){const r=this.proxy,o=me(e)?e.includes(".")?Fi(r,e):()=>r[e]:e.bind(r,r);let s;oe(t)?s=t:(s=t.handler,n=t);const i=Pe;un(this);const l=Po(o,s.bind(r),n);return i?un(i):qt(),l}function Fi(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{Wt(n,t)});else if(di(e))for(const n in e)Wt(e[n],t);return e}function pr(e,t){const n=De;if(n===null)return e;const r=Or(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),Kn(()=>{e.isUnmounting=!0}),e}const Qe=[Function,Array],Hi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Qe,onEnter:Qe,onAfterEnter:Qe,onEnterCancelled:Qe,onBeforeLeave:Qe,onLeave:Qe,onAfterLeave:Qe,onLeaveCancelled:Qe,onBeforeAppear:Qe,onAppear:Qe,onAfterAppear:Qe,onAppearCancelled:Qe},nc={name:"BaseTransition",props:Hi,setup(e,{slots:t}){const n=tl(),r=tc();let o;return()=>{const s=t.default&&Bi(t.default(),!0);if(!s||!s.length)return;let i=s[0];if(s.length>1){for(const k of s)if(k.type!==Ge){i=k;break}}const l=he(e),{mode:a}=l;if(r.isLeaving)return Hr(i);const c=is(i);if(!c)return Hr(i);const u=no(c,l,r,n);ro(c,u);const f=n.subTree,d=f&&is(f);let g=!1;const{getTransitionKey:y}=c.type;if(y){const k=y();o===void 0?o=k:k!==o&&(o=k,g=!0)}if(d&&d.type!==Ge&&(!zt(c,d)||g)){const k=no(d,l,r,n);if(ro(d,k),a==="out-in")return r.isLeaving=!0,k.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},Hr(i);a==="in-out"&&c.type!==Ge&&(k.delayLeave=(L,v,b)=>{const T=ji(r,d);T[String(d.key)]=d,L._leaveCb=()=>{v(),L._leaveCb=void 0,delete u.delayedLeave},u.delayedLeave=b})}return i}}},rc=nc;function ji(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function no(e,t,n,r){const{appear:o,mode:s,persisted:i=!1,onBeforeEnter:l,onEnter:a,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:f,onLeave:d,onAfterLeave:g,onLeaveCancelled:y,onBeforeAppear:k,onAppear:L,onAfterAppear:v,onAppearCancelled:b}=t,T=String(e.key),A=ji(n,e),W=(m,z)=>{m&&Xe(m,r,9,z)},Q=(m,z)=>{const D=z[1];W(m,z),G(m)?m.every(V=>V.length<=1)&&D():m.length<=1&&D()},$={mode:s,persisted:i,beforeEnter(m){let z=l;if(!n.isMounted)if(o)z=k||l;else return;m._leaveCb&&m._leaveCb(!0);const D=A[T];D&&zt(e,D)&&D.el._leaveCb&&D.el._leaveCb(),W(z,[m])},enter(m){let z=a,D=c,V=u;if(!n.isMounted)if(o)z=L||a,D=v||c,V=b||u;else return;let C=!1;const O=m._enterCb=I=>{C||(C=!0,I?W(V,[m]):W(D,[m]),$.delayedLeave&&$.delayedLeave(),m._enterCb=void 0)};z?Q(z,[m,O]):O()},leave(m,z){const D=String(e.key);if(m._enterCb&&m._enterCb(!0),n.isUnmounting)return z();W(f,[m]);let V=!1;const C=m._leaveCb=O=>{V||(V=!0,z(),O?W(y,[m]):W(g,[m]),m._leaveCb=void 0,A[D]===e&&delete A[D])};A[D]=e,d?Q(d,[m,C]):C()},clone(m){return no(m,t,n,r)}};return $}function Hr(e){if(zn(e))return e=Mt(e),e.children=null,e}function is(e){return zn(e)?e.children?e.children[0]:void 0:e}function ro(e,t){e.shapeFlag&6&&e.component?ro(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Bi(e,t=!1,n){let r=[],o=0;for(let s=0;s1)for(let s=0;sTe({name:e.name},t,{setup:e}))():e}const ln=e=>!!e.type.__asyncLoader;function Ie(e){oe(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:s,suspensible:i=!0,onError:l}=e;let a=null,c,u=0;const f=()=>(u++,a=null,d()),d=()=>{let g;return a||(g=a=t().catch(y=>{if(y=y instanceof Error?y:new Error(String(y)),l)return new Promise((k,L)=>{l(y,()=>k(f()),()=>L(y),u+1)});throw y}).then(y=>g!==a&&a?a:(y&&(y.__esModule||y[Symbol.toStringTag]==="Module")&&(y=y.default),c=y,y)))};return ue({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return c},setup(){const g=Pe;if(c)return()=>jr(c,g);const y=b=>{a=null,Bn(b,g,13,!r)};if(i&&g.suspense||fn)return d().then(b=>()=>jr(b,g)).catch(b=>(y(b),()=>r?ee(r,{error:b}):null));const k=ve(!1),L=ve(),v=ve(!!o);return o&&setTimeout(()=>{v.value=!1},o),s!=null&&setTimeout(()=>{if(!k.value&&!L.value){const b=new Error(`Async component timed out after ${s}ms.`);y(b),L.value=b}},s),d().then(()=>{k.value=!0,g.parent&&zn(g.parent.vnode)&&Sr(g.parent.update)}).catch(b=>{y(b),L.value=b}),()=>{if(k.value&&c)return jr(c,g);if(L.value&&r)return ee(r,{error:L.value});if(n&&!v.value)return ee(n)}}})}function jr(e,t){const{ref:n,props:r,children:o,ce:s}=t.vnode,i=ee(e,r,o);return i.ref=n,i.ce=s,delete t.vnode.ce,i}const zn=e=>e.type.__isKeepAlive;function oc(e,t){zi(e,"a",t)}function sc(e,t){zi(e,"da",t)}function zi(e,t,n=Pe){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Tr(t,r,n),n){let o=n.parent;for(;o&&o.parent;)zn(o.parent.vnode)&&ic(r,t,n,o),o=o.parent}}function ic(e,t,n,r){const o=Tr(t,e,r,!0);Pr(()=>{go(r[t],o)},n)}function Tr(e,t,n=Pe,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;mn(),un(n);const l=Xe(t,n,e,i);return qt(),gn(),l});return r?o.unshift(s):o.push(s),s}}const wt=e=>(t,n=Pe)=>(!fn||e==="sp")&&Tr(e,(...r)=>t(...r),n),lc=wt("bm"),Ve=wt("m"),ac=wt("bu"),cc=wt("u"),Kn=wt("bum"),Pr=wt("um"),uc=wt("sp"),fc=wt("rtg"),dc=wt("rtc");function pc(e,t=Pe){Tr("ec",e,t)}const Ki="components";function yt(e,t){return mc(Ki,e,!0,t)||e}const hc=Symbol.for("v-ndc");function mc(e,t,n=!0,r=!1){const o=De||Pe;if(o){const s=o.type;if(e===Ki){const l=Uc(s,!1);if(l&&(l===t||l===ft(t)||l===Er(ft(t))))return s}const i=ls(o[e]||s[e],t)||ls(o.appContext[e],t);return!i&&r?s:i}}function ls(e,t){return e&&(e[t]||e[ft(t)]||e[Er(ft(t))])}function $t(e,t,n,r){let o;const s=n&&n[r];if(G(e)||me(e)){o=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,s&&s[l]));else{const i=Object.keys(e);o=new Array(i.length);for(let l=0,a=i.length;lvr(t)?!(t.type===Ge||t.type===we&&!Wi(t.children)):!0)?e:null}const oo=e=>e?nl(e)?Or(e)||e.proxy:oo(e.parent):null,Cn=Te(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>oo(e.parent),$root:e=>oo(e.root),$emit:e=>e.emit,$options:e=>Ro(e),$forceUpdate:e=>e.f||(e.f=()=>Sr(e.update)),$nextTick:e=>e.n||(e.n=Lr.bind(e.proxy)),$watch:e=>ec.bind(e)}),Br=(e,t)=>e!==ke&&!e.__isScriptSetup&&de(e,t),gc={get({_:e},t){const{ctx:n,setupState:r,data:o,props:s,accessCache:i,type:l,appContext:a}=e;let c;if(t[0]!=="$"){const g=i[t];if(g!==void 0)switch(g){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(Br(r,t))return i[t]=1,r[t];if(o!==ke&&de(o,t))return i[t]=2,o[t];if((c=e.propsOptions[0])&&de(c,t))return i[t]=3,s[t];if(n!==ke&&de(n,t))return i[t]=4,n[t];so&&(i[t]=0)}}const u=Cn[t];let f,d;if(u)return t==="$attrs"&&qe(e,"get",t),u(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==ke&&de(n,t))return i[t]=4,n[t];if(d=a.config.globalProperties,de(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return Br(o,t)?(o[t]=n,!0):r!==ke&&de(r,t)?(r[t]=n,!0):de(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},i){let l;return!!n[i]||e!==ke&&de(e,i)||Br(t,i)||(l=s[0])&&de(l,i)||de(r,i)||de(Cn,i)||de(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:de(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function as(e){return G(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let so=!0;function vc(e){const t=Ro(e),n=e.proxy,r=e.ctx;so=!1,t.beforeCreate&&cs(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:i,watch:l,provide:a,inject:c,created:u,beforeMount:f,mounted:d,beforeUpdate:g,updated:y,activated:k,deactivated:L,beforeDestroy:v,beforeUnmount:b,destroyed:T,unmounted:A,render:W,renderTracked:Q,renderTriggered:$,errorCaptured:m,serverPrefetch:z,expose:D,inheritAttrs:V,components:C,directives:O,filters:I}=t;if(c&&_c(c,r,null),i)for(const ne in i){const re=i[ne];oe(re)&&(r[ne]=re.bind(n))}if(o){const ne=o.call(n,n);Ee(ne)&&(e.data=Hn(ne))}if(so=!0,s)for(const ne in s){const re=s[ne],Fe=oe(re)?re.bind(n,n):oe(re.get)?re.get.bind(n,n):ot,Me=!oe(re)&&oe(re.set)?re.set.bind(n):ot,Ke=j({get:Fe,set:Me});Object.defineProperty(r,ne,{enumerable:!0,configurable:!0,get:()=>Ke.value,set:He=>Ke.value=He})}if(l)for(const ne in l)Ui(l[ne],r,n,ne);if(a){const ne=oe(a)?a.call(n):a;Reflect.ownKeys(ne).forEach(re=>{Ot(re,ne[re])})}u&&cs(u,e,"c");function K(ne,re){G(re)?re.forEach(Fe=>ne(Fe.bind(n))):re&&ne(re.bind(n))}if(K(lc,f),K(Ve,d),K(ac,g),K(cc,y),K(oc,k),K(sc,L),K(pc,m),K(dc,Q),K(fc,$),K(Kn,b),K(Pr,A),K(uc,z),G(D))if(D.length){const ne=e.exposed||(e.exposed={});D.forEach(re=>{Object.defineProperty(ne,re,{get:()=>n[re],set:Fe=>n[re]=Fe})})}else e.exposed||(e.exposed={});W&&e.render===ot&&(e.render=W),V!=null&&(e.inheritAttrs=V),C&&(e.components=C),O&&(e.directives=O)}function _c(e,t,n=ot){G(e)&&(e=io(e));for(const r in e){const o=e[r];let s;Ee(o)?"default"in o?s=Le(o.from||r,o.default,!0):s=Le(o.from||r):s=Le(o),$e(s)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>s.value,set:i=>s.value=i}):t[r]=s}}function cs(e,t,n){Xe(G(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ui(e,t,n,r){const o=r.includes(".")?Fi(n,r):()=>n[r];if(me(e)){const s=t[e];oe(s)&&st(o,s)}else if(oe(e))st(o,e.bind(n));else if(Ee(e))if(G(e))e.forEach(s=>Ui(s,t,n,r));else{const s=oe(e.handler)?e.handler.bind(n):t[e.handler];oe(s)&&st(o,s,e)}}function Ro(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,l=s.get(t);let a;return l?a=l:!o.length&&!n&&!r?a=t:(a={},o.length&&o.forEach(c=>hr(a,c,i,!0)),hr(a,t,i)),Ee(t)&&s.set(t,a),a}function hr(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&hr(e,s,n,!0),o&&o.forEach(i=>hr(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=bc[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const bc={data:us,props:fs,emits:fs,methods:En,computed:En,beforeCreate:Be,created:Be,beforeMount:Be,mounted:Be,beforeUpdate:Be,updated:Be,beforeDestroy:Be,beforeUnmount:Be,destroyed:Be,unmounted:Be,activated:Be,deactivated:Be,errorCaptured:Be,serverPrefetch:Be,components:En,directives:En,watch:wc,provide:us,inject:yc};function us(e,t){return t?e?function(){return Te(oe(e)?e.call(this,this):e,oe(t)?t.call(this,this):t)}:t:e}function yc(e,t){return En(io(e),io(t))}function io(e){if(G(e)){const t={};for(let n=0;n1)return n&&oe(t)?t.call(r&&r.proxy):t}}function xc(e,t,n,r=!1){const o={},s={};ar(s,Rr,1),e.propsDefaults=Object.create(null),Vi(e,t,o,s);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=r?o:Li(o):e.type.props?e.props=o:e.props=s,e.attrs=s}function Cc(e,t,n,r){const{props:o,attrs:s,vnode:{patchFlag:i}}=e,l=he(o),[a]=e.propsOptions;let c=!1;if((r||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let f=0;f{a=!0;const[d,g]=Ji(f,t,!0);Te(i,d),g&&l.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!s&&!a)return Ee(e)&&r.set(e,nn),nn;if(G(s))for(let u=0;u-1,g[1]=k<0||y-1||de(g,"default"))&&l.push(f)}}}const c=[i,l];return Ee(e)&&r.set(e,c),c}function ds(e){return e[0]!=="$"}function ps(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function hs(e,t){return ps(e)===ps(t)}function ms(e,t){return G(t)?t.findIndex(n=>hs(n,e)):oe(t)&&hs(t,e)?0:-1}const Yi=e=>e[0]==="_"||e==="$stable",Oo=e=>G(e)?e.map(tt):[tt(e)],Lc=(e,t,n)=>{if(t._n)return t;const r=Ne((...o)=>Oo(t(...o)),n);return r._c=!1,r},Gi=(e,t,n)=>{const r=e._ctx;for(const o in e){if(Yi(o))continue;const s=e[o];if(oe(s))t[o]=Lc(o,s,r);else if(s!=null){const i=Oo(s);t[o]=()=>i}}},Qi=(e,t)=>{const n=Oo(t);e.slots.default=()=>n},Sc=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=he(t),ar(t,"_",n)):Gi(t,e.slots={})}else e.slots={},t&&Qi(e,t);ar(e.slots,Rr,1)},Ac=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,i=ke;if(r.shapeFlag&32){const l=t._;l?n&&l===1?s=!1:(Te(o,t),!n&&l===1&&delete o._):(s=!t.$stable,Gi(t,o)),i=t}else t&&(Qi(e,t),i={default:1});if(s)for(const l in o)!Yi(l)&&!(l in i)&&delete o[l]};function gr(e,t,n,r,o=!1){if(G(e)){e.forEach((d,g)=>gr(d,t&&(G(t)?t[g]:t),n,r,o));return}if(ln(r)&&!o)return;const s=r.shapeFlag&4?Or(r.component)||r.component.proxy:r.el,i=o?null:s,{i:l,r:a}=e,c=t&&t.r,u=l.refs===ke?l.refs={}:l.refs,f=l.setupState;if(c!=null&&c!==a&&(me(c)?(u[c]=null,de(f,c)&&(f[c]=null)):$e(c)&&(c.value=null)),oe(a))Rt(a,l,12,[i,u]);else{const d=me(a),g=$e(a);if(d||g){const y=()=>{if(e.f){const k=d?de(f,a)?f[a]:u[a]:a.value;o?G(k)&&go(k,s):G(k)?k.includes(s)||k.push(s):d?(u[a]=[s],de(f,a)&&(f[a]=u[a])):(a.value=[s],e.k&&(u[e.k]=a.value))}else d?(u[a]=i,de(f,a)&&(f[a]=i)):g&&(a.value=i,e.k&&(u[e.k]=i))};i?(y.id=-1,We(y,n)):y()}}}let Ct=!1;const Xn=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",er=e=>e.nodeType===8;function Tc(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:s,parentNode:i,remove:l,insert:a,createComment:c}}=e,u=(v,b)=>{if(!b.hasChildNodes()){n(null,v,b),fr(),b._vnode=v;return}Ct=!1,f(b.firstChild,v,null,null,null),fr(),b._vnode=v,Ct&&console.error("Hydration completed but contains mismatches.")},f=(v,b,T,A,W,Q=!1)=>{const $=er(v)&&v.data==="[",m=()=>k(v,b,T,A,W,$),{type:z,ref:D,shapeFlag:V,patchFlag:C}=b;let O=v.nodeType;b.el=v,C===-2&&(Q=!1,b.dynamicChildren=null);let I=null;switch(z){case cn:O!==3?b.children===""?(a(b.el=o(""),i(v),v),I=v):I=m():(v.data!==b.children&&(Ct=!0,v.data=b.children),I=s(v));break;case Ge:O!==8||$?I=m():I=s(v);break;case Ln:if($&&(v=s(v),O=v.nodeType),O===1||O===3){I=v;const se=!b.children.length;for(let K=0;K{Q=Q||!!b.dynamicChildren;const{type:$,props:m,patchFlag:z,shapeFlag:D,dirs:V}=b,C=$==="input"&&V||$==="option";if(C||z!==-1){if(V&&ct(b,null,T,"created"),m)if(C||!Q||z&48)for(const I in m)(C&&I.endsWith("value")||Dn(I)&&!xn(I))&&r(v,I,null,m[I],!1,void 0,T);else m.onClick&&r(v,"onClick",null,m.onClick,!1,void 0,T);let O;if((O=m&&m.onVnodeBeforeMount)&&Ze(O,T,b),V&&ct(b,null,T,"beforeMount"),((O=m&&m.onVnodeMounted)||V)&&Ni(()=>{O&&Ze(O,T,b),V&&ct(b,null,T,"mounted")},A),D&16&&!(m&&(m.innerHTML||m.textContent))){let I=g(v.firstChild,b,v,T,A,W,Q);for(;I;){Ct=!0;const se=I;I=I.nextSibling,l(se)}}else D&8&&v.textContent!==b.children&&(Ct=!0,v.textContent=b.children)}return v.nextSibling},g=(v,b,T,A,W,Q,$)=>{$=$||!!b.dynamicChildren;const m=b.children,z=m.length;for(let D=0;D{const{slotScopeIds:$}=b;$&&(W=W?W.concat($):$);const m=i(v),z=g(s(v),b,m,T,A,W,Q);return z&&er(z)&&z.data==="]"?s(b.anchor=z):(Ct=!0,a(b.anchor=c("]"),m,z),z)},k=(v,b,T,A,W,Q)=>{if(Ct=!0,b.el=null,Q){const z=L(v);for(;;){const D=s(v);if(D&&D!==z)l(D);else break}}const $=s(v),m=i(v);return l(v),n(null,b,m,$,T,A,Xn(m),W),$},L=v=>{let b=0;for(;v;)if(v=s(v),v&&er(v)&&(v.data==="["&&b++,v.data==="]")){if(b===0)return s(v);b--}return v};return[u,f]}const We=Ni;function Pc(e){return Rc(e,Tc)}function Rc(e,t){const n=Qr();n.__VUE__=!0;const{insert:r,remove:o,patchProp:s,createElement:i,createText:l,createComment:a,setText:c,setElementText:u,parentNode:f,nextSibling:d,setScopeId:g=ot,insertStaticContent:y}=e,k=(p,h,_,w=null,x=null,S=null,F=!1,R=null,N=!!h.dynamicChildren)=>{if(p===h)return;p&&!zt(p,h)&&(w=E(p),He(p,x,S,!0),p=null),h.patchFlag===-2&&(N=!1,h.dynamicChildren=null);const{type:P,ref:J,shapeFlag:U}=h;switch(P){case cn:L(p,h,_,w);break;case Ge:v(p,h,_,w);break;case Ln:p==null&&b(h,_,w,F);break;case we:C(p,h,_,w,x,S,F,R,N);break;default:U&1?W(p,h,_,w,x,S,F,R,N):U&6?O(p,h,_,w,x,S,F,R,N):(U&64||U&128)&&P.process(p,h,_,w,x,S,F,R,N,M)}J!=null&&x&&gr(J,p&&p.ref,S,h||p,!h)},L=(p,h,_,w)=>{if(p==null)r(h.el=l(h.children),_,w);else{const x=h.el=p.el;h.children!==p.children&&c(x,h.children)}},v=(p,h,_,w)=>{p==null?r(h.el=a(h.children||""),_,w):h.el=p.el},b=(p,h,_,w)=>{[p.el,p.anchor]=y(p.children,h,_,w,p.el,p.anchor)},T=({el:p,anchor:h},_,w)=>{let x;for(;p&&p!==h;)x=d(p),r(p,_,w),p=x;r(h,_,w)},A=({el:p,anchor:h})=>{let _;for(;p&&p!==h;)_=d(p),o(p),p=_;o(h)},W=(p,h,_,w,x,S,F,R,N)=>{F=F||h.type==="svg",p==null?Q(h,_,w,x,S,F,R,N):z(p,h,x,S,F,R,N)},Q=(p,h,_,w,x,S,F,R)=>{let N,P;const{type:J,props:U,shapeFlag:Y,transition:te,dirs:le}=p;if(N=p.el=i(p.type,S,U&&U.is,U),Y&8?u(N,p.children):Y&16&&m(p.children,N,null,w,x,S&&J!=="foreignObject",F,R),le&&ct(p,null,w,"created"),$(N,p,p.scopeId,F,w),U){for(const _e in U)_e!=="value"&&!xn(_e)&&s(N,_e,null,U[_e],S,p.children,w,x,Oe);"value"in U&&s(N,"value",null,U.value),(P=U.onVnodeBeforeMount)&&Ze(P,w,p)}le&&ct(p,null,w,"beforeMount");const be=(!x||x&&!x.pendingBranch)&&te&&!te.persisted;be&&te.beforeEnter(N),r(N,h,_),((P=U&&U.onVnodeMounted)||be||le)&&We(()=>{P&&Ze(P,w,p),be&&te.enter(N),le&&ct(p,null,w,"mounted")},x)},$=(p,h,_,w,x)=>{if(_&&g(p,_),w)for(let S=0;S{for(let P=N;P{const R=h.el=p.el;let{patchFlag:N,dynamicChildren:P,dirs:J}=h;N|=p.patchFlag&16;const U=p.props||ke,Y=h.props||ke;let te;_&&Dt(_,!1),(te=Y.onVnodeBeforeUpdate)&&Ze(te,_,h,p),J&&ct(h,p,_,"beforeUpdate"),_&&Dt(_,!0);const le=x&&h.type!=="foreignObject";if(P?D(p.dynamicChildren,P,R,_,w,le,S):F||re(p,h,R,null,_,w,le,S,!1),N>0){if(N&16)V(R,h,U,Y,_,w,x);else if(N&2&&U.class!==Y.class&&s(R,"class",null,Y.class,x),N&4&&s(R,"style",U.style,Y.style,x),N&8){const be=h.dynamicProps;for(let _e=0;_e{te&&Ze(te,_,h,p),J&&ct(h,p,_,"updated")},w)},D=(p,h,_,w,x,S,F)=>{for(let R=0;R{if(_!==w){if(_!==ke)for(const R in _)!xn(R)&&!(R in w)&&s(p,R,_[R],null,F,h.children,x,S,Oe);for(const R in w){if(xn(R))continue;const N=w[R],P=_[R];N!==P&&R!=="value"&&s(p,R,P,N,F,h.children,x,S,Oe)}"value"in w&&s(p,"value",_.value,w.value)}},C=(p,h,_,w,x,S,F,R,N)=>{const P=h.el=p?p.el:l(""),J=h.anchor=p?p.anchor:l("");let{patchFlag:U,dynamicChildren:Y,slotScopeIds:te}=h;te&&(R=R?R.concat(te):te),p==null?(r(P,_,w),r(J,_,w),m(h.children,_,J,x,S,F,R,N)):U>0&&U&64&&Y&&p.dynamicChildren?(D(p.dynamicChildren,Y,_,x,S,F,R),(h.key!=null||x&&h===x.subTree)&&Zi(p,h,!0)):re(p,h,_,J,x,S,F,R,N)},O=(p,h,_,w,x,S,F,R,N)=>{h.slotScopeIds=R,p==null?h.shapeFlag&512?x.ctx.activate(h,_,w,F,N):I(h,_,w,x,S,F,N):se(p,h,N)},I=(p,h,_,w,x,S,F)=>{const R=p.component=jc(p,w,x);if(zn(p)&&(R.ctx.renderer=M),Bc(R),R.asyncDep){if(x&&x.registerDep(R,K),!p.el){const N=R.subTree=ee(Ge);v(null,N,h,_)}return}K(R,p,h,_,x,S,F)},se=(p,h,_)=>{const w=h.component=p.component;if(Qa(p,h,_))if(w.asyncDep&&!w.asyncResolved){ne(w,h,_);return}else w.next=h,Ua(w.update),w.update();else h.el=p.el,w.vnode=h},K=(p,h,_,w,x,S,F)=>{const R=()=>{if(p.isMounted){let{next:J,bu:U,u:Y,parent:te,vnode:le}=p,be=J,_e;Dt(p,!1),J?(J.el=le.el,ne(p,J,F)):J=le,U&&Dr(U),(_e=J.props&&J.props.onVnodeBeforeUpdate)&&Ze(_e,te,J,le),Dt(p,!0);const Se=Fr(p),et=p.subTree;p.subTree=Se,k(et,Se,f(et.el),E(et),p,x,S),J.el=Se.el,be===null&&Za(p,Se.el),Y&&We(Y,x),(_e=J.props&&J.props.onVnodeUpdated)&&We(()=>Ze(_e,te,J,le),x)}else{let J;const{el:U,props:Y}=h,{bm:te,m:le,parent:be}=p,_e=ln(h);if(Dt(p,!1),te&&Dr(te),!_e&&(J=Y&&Y.onVnodeBeforeMount)&&Ze(J,be,h),Dt(p,!0),U&&ce){const Se=()=>{p.subTree=Fr(p),ce(U,p.subTree,p,x,null)};_e?h.type.__asyncLoader().then(()=>!p.isUnmounted&&Se()):Se()}else{const Se=p.subTree=Fr(p);k(null,Se,_,w,p,x,S),h.el=Se.el}if(le&&We(le,x),!_e&&(J=Y&&Y.onVnodeMounted)){const Se=h;We(()=>Ze(J,be,Se),x)}(h.shapeFlag&256||be&&ln(be.vnode)&&be.vnode.shapeFlag&256)&&p.a&&We(p.a,x),p.isMounted=!0,h=_=w=null}},N=p.effect=new yo(R,()=>Sr(P),p.scope),P=p.update=()=>N.run();P.id=p.uid,Dt(p,!0),P()},ne=(p,h,_)=>{h.component=p;const w=p.vnode.props;p.vnode=h,p.next=null,Cc(p,h.props,w,_),Ac(p,h.children,_),mn(),os(),gn()},re=(p,h,_,w,x,S,F,R,N=!1)=>{const P=p&&p.children,J=p?p.shapeFlag:0,U=h.children,{patchFlag:Y,shapeFlag:te}=h;if(Y>0){if(Y&128){Me(P,U,_,w,x,S,F,R,N);return}else if(Y&256){Fe(P,U,_,w,x,S,F,R,N);return}}te&8?(J&16&&Oe(P,x,S),U!==P&&u(_,U)):J&16?te&16?Me(P,U,_,w,x,S,F,R,N):Oe(P,x,S,!0):(J&8&&u(_,""),te&16&&m(U,_,w,x,S,F,R,N))},Fe=(p,h,_,w,x,S,F,R,N)=>{p=p||nn,h=h||nn;const P=p.length,J=h.length,U=Math.min(P,J);let Y;for(Y=0;YJ?Oe(p,x,S,!0,!1,U):m(h,_,w,x,S,F,R,N,U)},Me=(p,h,_,w,x,S,F,R,N)=>{let P=0;const J=h.length;let U=p.length-1,Y=J-1;for(;P<=U&&P<=Y;){const te=p[P],le=h[P]=N?At(h[P]):tt(h[P]);if(zt(te,le))k(te,le,_,null,x,S,F,R,N);else break;P++}for(;P<=U&&P<=Y;){const te=p[U],le=h[Y]=N?At(h[Y]):tt(h[Y]);if(zt(te,le))k(te,le,_,null,x,S,F,R,N);else break;U--,Y--}if(P>U){if(P<=Y){const te=Y+1,le=teY)for(;P<=U;)He(p[P],x,S,!0),P++;else{const te=P,le=P,be=new Map;for(P=le;P<=Y;P++){const Je=h[P]=N?At(h[P]):tt(h[P]);Je.key!=null&&be.set(Je.key,P)}let _e,Se=0;const et=Y-le+1;let Qt=!1,qo=0;const vn=new Array(et);for(P=0;P=et){He(Je,x,S,!0);continue}let at;if(Je.key!=null)at=be.get(Je.key);else for(_e=le;_e<=Y;_e++)if(vn[_e-le]===0&&zt(Je,h[_e])){at=_e;break}at===void 0?He(Je,x,S,!0):(vn[at-le]=P+1,at>=qo?qo=at:Qt=!0,k(Je,h[at],_,null,x,S,F,R,N),Se++)}const Vo=Qt?Oc(vn):nn;for(_e=Vo.length-1,P=et-1;P>=0;P--){const Je=le+P,at=h[Je],Jo=Je+1{const{el:S,type:F,transition:R,children:N,shapeFlag:P}=p;if(P&6){Ke(p.component.subTree,h,_,w);return}if(P&128){p.suspense.move(h,_,w);return}if(P&64){F.move(p,h,_,M);return}if(F===we){r(S,h,_);for(let U=0;UR.enter(S),x);else{const{leave:U,delayLeave:Y,afterLeave:te}=R,le=()=>r(S,h,_),be=()=>{U(S,()=>{le(),te&&te()})};Y?Y(S,le,be):be()}else r(S,h,_)},He=(p,h,_,w=!1,x=!1)=>{const{type:S,props:F,ref:R,children:N,dynamicChildren:P,shapeFlag:J,patchFlag:U,dirs:Y}=p;if(R!=null&&gr(R,null,_,p,!0),J&256){h.ctx.deactivate(p);return}const te=J&1&&Y,le=!ln(p);let be;if(le&&(be=F&&F.onVnodeBeforeUnmount)&&Ze(be,h,p),J&6)lt(p.component,_,w);else{if(J&128){p.suspense.unmount(_,w);return}te&&ct(p,null,h,"beforeUnmount"),J&64?p.type.remove(p,h,_,x,M,w):P&&(S!==we||U>0&&U&64)?Oe(P,h,_,!1,!0):(S===we&&U&384||!x&&J&16)&&Oe(N,h,_),w&&kt(p)}(le&&(be=F&&F.onVnodeUnmounted)||te)&&We(()=>{be&&Ze(be,h,p),te&&ct(p,null,h,"unmounted")},_)},kt=p=>{const{type:h,el:_,anchor:w,transition:x}=p;if(h===we){Et(_,w);return}if(h===Ln){A(p);return}const S=()=>{o(_),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(p.shapeFlag&1&&x&&!x.persisted){const{leave:F,delayLeave:R}=x,N=()=>F(_,S);R?R(p.el,S,N):N()}else S()},Et=(p,h)=>{let _;for(;p!==h;)_=d(p),o(p),p=_;o(h)},lt=(p,h,_)=>{const{bum:w,scope:x,update:S,subTree:F,um:R}=p;w&&Dr(w),x.stop(),S&&(S.active=!1,He(F,p,h,_)),R&&We(R,h),We(()=>{p.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&p.asyncDep&&!p.asyncResolved&&p.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},Oe=(p,h,_,w=!1,x=!1,S=0)=>{for(let F=S;Fp.shapeFlag&6?E(p.component.subTree):p.shapeFlag&128?p.suspense.next():d(p.anchor||p.el),B=(p,h,_)=>{p==null?h._vnode&&He(h._vnode,null,null,!0):k(h._vnode||null,p,h,null,null,null,_),os(),fr(),h._vnode=p},M={p:k,um:He,m:Ke,r:kt,mt:I,mc:m,pc:re,pbc:D,n:E,o:e};let q,ce;return t&&([q,ce]=t(M)),{render:B,hydrate:q,createApp:Ec(B,q)}}function Dt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Zi(e,t,n=!1){const r=e.children,o=t.children;if(G(r)&&G(o))for(let s=0;s>1,e[n[l]]0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,i=n[s-1];s-- >0;)n[s]=i,i=t[i];return n}const Ic=e=>e.__isTeleport,we=Symbol.for("v-fgt"),cn=Symbol.for("v-txt"),Ge=Symbol.for("v-cmt"),Ln=Symbol.for("v-stc"),Sn=[];let rt=null;function H(e=!1){Sn.push(rt=e?null:[])}function $c(){Sn.pop(),rt=Sn[Sn.length-1]||null}let $n=1;function gs(e){$n+=e}function Xi(e){return e.dynamicChildren=$n>0?rt||nn:null,$c(),$n>0&&rt&&rt.push(e),e}function Z(e,t,n,r,o,s){return Xi(pe(e,t,n,r,o,s,!0))}function Ae(e,t,n,r,o){return Xi(ee(e,t,n,r,o,!0))}function vr(e){return e?e.__v_isVNode===!0:!1}function zt(e,t){return e.type===t.type&&e.key===t.key}const Rr="__vInternal",el=({key:e})=>e??null,ir=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?me(e)||$e(e)||oe(e)?{i:De,r:e,k:t,f:!!n}:e:null);function pe(e,t=null,n=null,r=0,o=null,s=e===we?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&el(t),ref:t&&ir(t),scopeId:Mi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:De};return l?(Io(a,n),s&128&&e.normalize(a)):n&&(a.shapeFlag|=me(n)?8:16),$n>0&&!i&&rt&&(a.patchFlag>0||s&6)&&a.patchFlag!==32&&rt.push(a),a}const ee=Mc;function Mc(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===hc)&&(e=Ge),vr(e)){const l=Mt(e,t,!0);return n&&Io(l,n),$n>0&&!s&&rt&&(l.shapeFlag&6?rt[rt.indexOf(e)]=l:rt.push(l)),l.patchFlag|=-2,l}if(qc(e)&&(e=e.__vccOpts),t){t=Nc(t);let{class:l,style:a}=t;l&&!me(l)&&(t.class=Ue(l)),Ee(a)&&(Si(a)&&!G(a)&&(a=Te({},a)),t.style=Fn(a))}const i=me(e)?1:Xa(e)?128:Ic(e)?64:Ee(e)?4:oe(e)?2:0;return pe(e,t,n,r,o,i,s,!0)}function Nc(e){return e?Si(e)||Rr in e?Te({},e):e:null}function Mt(e,t,n=!1){const{props:r,ref:o,patchFlag:s,children:i}=e,l=t?ao(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&el(l),ref:t&&t.ref?n&&o?G(o)?o.concat(ir(t)):[o,ir(t)]:ir(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==we?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Mt(e.ssContent),ssFallback:e.ssFallback&&Mt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Nt(e=" ",t=0){return ee(cn,null,e,t)}function Dc(e,t){const n=ee(Ln,null,e);return n.staticCount=t,n}function Ce(e="",t=!1){return t?(H(),Ae(Ge,null,e)):ee(Ge,null,e)}function tt(e){return e==null||typeof e=="boolean"?ee(Ge):G(e)?ee(we,null,e.slice()):typeof e=="object"?At(e):ee(cn,null,String(e))}function At(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Mt(e)}function Io(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(G(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),Io(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(Rr in t)?t._ctx=De:o===3&&De&&(De.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else oe(t)?(t={default:t,_ctx:De},n=32):(t=String(t),r&64?(n=16,t=[Nt(t)]):n=8);e.children=t,e.shapeFlag|=n}function ao(...e){const t={};for(let n=0;nPe||De;let $o,Zt,vs="__VUE_INSTANCE_SETTERS__";(Zt=Qr()[vs])||(Zt=Qr()[vs]=[]),Zt.push(e=>Pe=e),$o=e=>{Zt.length>1?Zt.forEach(t=>t(e)):Zt[0](e)};const un=e=>{$o(e),e.scope.on()},qt=()=>{Pe&&Pe.scope.off(),$o(null)};function nl(e){return e.vnode.shapeFlag&4}let fn=!1;function Bc(e,t=!1){fn=t;const{props:n,children:r}=e.vnode,o=nl(e);xc(e,n,o,t),Sc(e,r);const s=o?zc(e,t):void 0;return fn=!1,s}function zc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Ai(new Proxy(e.ctx,gc));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?Wc(e):null;un(e),mn();const s=Rt(r,e,0,[e.props,o]);if(gn(),qt(),ui(s)){if(s.then(qt,qt),t)return s.then(i=>{_s(e,i,t)}).catch(i=>{Bn(i,e,0)});e.asyncDep=s}else _s(e,s,t)}else rl(e,t)}function _s(e,t,n){oe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Ee(t)&&(e.setupState=Pi(t)),rl(e,n)}let bs;function rl(e,t,n){const r=e.type;if(!e.render){if(!t&&bs&&!r.render){const o=r.template||Ro(e).template;if(o){const{isCustomElement:s,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:a}=r,c=Te(Te({isCustomElement:s,delimiters:l},i),a);r.render=bs(o,c)}}e.render=r.render||ot}un(e),mn(),vc(e),gn(),qt()}function Kc(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return qe(e,"get","$attrs"),t[n]}}))}function Wc(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Kc(e)},slots:e.slots,emit:e.emit,expose:t}}function Or(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Pi(Ai(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Cn)return Cn[n](e)},has(t,n){return n in t||n in Cn}}))}function Uc(e,t=!0){return oe(e)?e.displayName||e.name:e.name||t&&e.__name}function qc(e){return oe(e)&&"__vccOpts"in e}const j=(e,t)=>za(e,t,fn);function ae(e,t,n){const r=arguments.length;return r===2?Ee(t)&&!G(t)?vr(t)?ee(e,null,[t]):ee(e,t):ee(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&vr(n)&&(n=[n]),ee(e,t,n))}const Vc=Symbol.for("v-scx"),Jc=()=>Le(Vc),Yc="3.3.4",Gc="http://www.w3.org/2000/svg",Kt=typeof document<"u"?document:null,ys=Kt&&Kt.createElement("template"),Qc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Kt.createElementNS(Gc,e):Kt.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Kt.createTextNode(e),createComment:e=>Kt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Kt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,s){const i=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{ys.innerHTML=r?`${e}`:e;const l=ys.content;if(r){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Zc(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Xc(e,t,n){const r=e.style,o=me(n);if(n&&!o){if(t&&!me(t))for(const s in t)n[s]==null&&co(r,s,"");for(const s in n)co(r,s,n[s])}else{const s=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=s)}}const ws=/\s*!important$/;function co(e,t,n){if(G(n))n.forEach(r=>co(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=eu(e,t);ws.test(n)?e.setProperty(Jt(r),n.replace(ws,""),"important"):e[r]=n}}const ks=["Webkit","Moz","ms"],zr={};function eu(e,t){const n=zr[t];if(n)return n;let r=ft(t);if(r!=="filter"&&r in e)return zr[t]=r;r=Er(r);for(let o=0;oKr||(lu.then(()=>Kr=0),Kr=Date.now());function cu(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Xe(uu(r,n.value),t,5,[r])};return n.value=e,n.attached=au(),n}function uu(e,t){if(G(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const Cs=/^on[a-z]/,fu=(e,t,n,r,o=!1,s,i,l,a)=>{t==="class"?Zc(e,r,o):t==="style"?Xc(e,n,r):Dn(t)?mo(t)||su(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):du(e,t,r,o))?nu(e,t,r,s,i,l,a):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),tu(e,t,r,o))};function du(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&Cs.test(t)&&oe(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Cs.test(t)&&me(n)?!1:t in e}const Lt="transition",_n="animation",Wn=(e,{slots:t})=>ae(rc,pu(e),t);Wn.displayName="Transition";const ol={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Wn.props=Te({},Hi,ol);const Ft=(e,t=[])=>{G(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ls=e=>e?G(e)?e.some(t=>t.length>1):e.length>1:!1;function pu(e){const t={};for(const C in e)C in ol||(t[C]=e[C]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=s,appearActiveClass:c=i,appearToClass:u=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,y=hu(o),k=y&&y[0],L=y&&y[1],{onBeforeEnter:v,onEnter:b,onEnterCancelled:T,onLeave:A,onLeaveCancelled:W,onBeforeAppear:Q=v,onAppear:$=b,onAppearCancelled:m=T}=t,z=(C,O,I)=>{Ht(C,O?u:l),Ht(C,O?c:i),I&&I()},D=(C,O)=>{C._isLeaving=!1,Ht(C,f),Ht(C,g),Ht(C,d),O&&O()},V=C=>(O,I)=>{const se=C?$:b,K=()=>z(O,C,I);Ft(se,[O,K]),Ss(()=>{Ht(O,C?a:s),St(O,C?u:l),Ls(se)||As(O,r,k,K)})};return Te(t,{onBeforeEnter(C){Ft(v,[C]),St(C,s),St(C,i)},onBeforeAppear(C){Ft(Q,[C]),St(C,a),St(C,c)},onEnter:V(!1),onAppear:V(!0),onLeave(C,O){C._isLeaving=!0;const I=()=>D(C,O);St(C,f),vu(),St(C,d),Ss(()=>{C._isLeaving&&(Ht(C,f),St(C,g),Ls(A)||As(C,r,L,I))}),Ft(A,[C,I])},onEnterCancelled(C){z(C,!1),Ft(T,[C])},onAppearCancelled(C){z(C,!0),Ft(m,[C])},onLeaveCancelled(C){D(C),Ft(W,[C])}})}function hu(e){if(e==null)return null;if(Ee(e))return[Wr(e.enter),Wr(e.leave)];{const t=Wr(e);return[t,t]}}function Wr(e){return Zl(e)}function St(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Ht(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function Ss(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let mu=0;function As(e,t,n,r){const o=e._endId=++mu,s=()=>{o===e._endId&&r()};if(n)return setTimeout(s,n);const{type:i,timeout:l,propCount:a}=gu(e,t);if(!i)return r();const c=i+"end";let u=0;const f=()=>{e.removeEventListener(c,d),s()},d=g=>{g.target===e&&++u>=a&&f()};setTimeout(()=>{u(n[y]||"").split(", "),o=r(`${Lt}Delay`),s=r(`${Lt}Duration`),i=Ts(o,s),l=r(`${_n}Delay`),a=r(`${_n}Duration`),c=Ts(l,a);let u=null,f=0,d=0;t===Lt?i>0&&(u=Lt,f=i,d=s.length):t===_n?c>0&&(u=_n,f=c,d=a.length):(f=Math.max(i,c),u=f>0?i>c?Lt:_n:null,d=u?u===Lt?s.length:a.length:0);const g=u===Lt&&/\b(transform|all)(,|$)/.test(r(`${Lt}Property`).toString());return{type:u,timeout:f,propCount:d,hasTransform:g}}function Ts(e,t){for(;e.lengthPs(n)+Ps(e[r])))}function Ps(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function vu(){return document.body.offsetHeight}const _u={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},bu=(e,t)=>n=>{if(!("key"in n))return;const r=Jt(n.key);if(t.some(o=>o===r||_u[o]===r))return e(n)},_r={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):bn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),bn(e,!0),r.enter(e)):r.leave(e,()=>{bn(e,!1)}):bn(e,t))},beforeUnmount(e,{value:t}){bn(e,t)}};function bn(e,t){e.style.display=t?e._vod:"none"}const yu=Te({patchProp:fu},Qc);let Ur,Rs=!1;function wu(){return Ur=Rs?Ur:Pc(yu),Rs=!0,Ur}const ku=(...e)=>{const t=wu().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Eu(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function Eu(e){return me(e)?document.querySelector(e):e}const xu={"v-8daa1a0e":()=>ie(()=>import("./index.html-7f8c050f.js"),[]).then(({data:e})=>e),"v-2d0a870d":()=>ie(()=>import("./index.html-e4fee572.js"),[]).then(({data:e})=>e),"v-2d0a8b4a":()=>ie(()=>import("./index.html-2616f981.js"),[]).then(({data:e})=>e),"v-094bf77a":()=>ie(()=>import("./index.html-aa00c7ec.js"),[]).then(({data:e})=>e),"v-582b1945":()=>ie(()=>import("./index.html-ba31557a.js"),[]).then(({data:e})=>e),"v-94d0425a":()=>ie(()=>import("./index.html-84257041.js"),[]).then(({data:e})=>e),"v-d7c64ec8":()=>ie(()=>import("./index.html-133fa6a3.js"),[]).then(({data:e})=>e),"v-a9393aca":()=>ie(()=>import("./index.html-057a2bb3.js"),[]).then(({data:e})=>e),"v-48a0fa68":()=>ie(()=>import("./index.html-f7b20576.js"),[]).then(({data:e})=>e),"v-12e654b0":()=>ie(()=>import("./index.html-5828365f.js"),[]).then(({data:e})=>e),"v-6d947b37":()=>ie(()=>import("./index.html-f888b6f2.js"),[]).then(({data:e})=>e),"v-034b6842":()=>ie(()=>import("./index.html-79bb2826.js"),[]).then(({data:e})=>e),"v-d4ec6de0":()=>ie(()=>import("./index.html-fb17b9eb.js"),[]).then(({data:e})=>e),"v-6a3222ff":()=>ie(()=>import("./index.html-cf1cb754.js"),[]).then(({data:e})=>e),"v-644cf33e":()=>ie(()=>import("./index.html-c4e1d1bc.js"),[]).then(({data:e})=>e),"v-dcbefd6a":()=>ie(()=>import("./index.html-32146963.js"),[]).then(({data:e})=>e),"v-202ff0ad":()=>ie(()=>import("./index.html-7c67d373.js"),[]).then(({data:e})=>e),"v-3706649a":()=>ie(()=>import("./404.html-60b35caa.js"),[]).then(({data:e})=>e)},Cu=JSON.parse(`{"base":"/learning-kotlin/","lang":"en-US","title":"","description":"","head":[["link",{"rel":"icon","href":"/learning-kotlin/favicon.ico"}],["link",{"rel":"manifest","href":"/learning-kotlin/manifest.webmanifest"}],["meta",{"name":"theme-color","content":"#2176d6"}]],"locales":{"/en/":{"lang":"en-US","title":"Learning Kotlin","description":"Learning Kotlin"},"/fr/":{"lang":"fr-FR","title":"Apprendre Kotlin","description":"Une formation d'introduction à Kotlin"}}}`);var Lu=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),Su=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=Lu(r);t.has(o)||(t.add(o),n.push(r))}),n},Un=e=>/^(https?:)?\/\//.test(e),Au=e=>/^mailto:/.test(e),Tu=e=>/^tel:/.test(e),Mo=e=>Object.prototype.toString.call(e)==="[object Object]",sl=e=>e[e.length-1]==="/"?e.slice(0,-1):e,il=e=>e[0]==="/"?e.slice(1):e,ll=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const s=o.split("/").length-r.split("/").length;return s!==0?s:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const al={"v-8daa1a0e":Ie(()=>ie(()=>import("./index.html-cd45fdc2.js"),["assets/index.html-cd45fdc2.js","assets/logo_worldline-35dfdc75.js"])),"v-2d0a870d":Ie(()=>ie(()=>import("./index.html-93be45bf.js"),["assets/index.html-93be45bf.js","assets/logo_worldline-35dfdc75.js"])),"v-2d0a8b4a":Ie(()=>ie(()=>import("./index.html-b303a607.js"),[])),"v-094bf77a":Ie(()=>ie(()=>import("./index.html-d6c6bffa.js"),[])),"v-582b1945":Ie(()=>ie(()=>import("./index.html-b3bd56ea.js"),["assets/index.html-b3bd56ea.js","assets/compose-multiplaform-e9e5bce8.js"])),"v-94d0425a":Ie(()=>ie(()=>import("./index.html-0871564e.js"),[])),"v-d7c64ec8":Ie(()=>ie(()=>import("./index.html-2bf95174.js"),[])),"v-a9393aca":Ie(()=>ie(()=>import("./index.html-d08806ac.js"),["assets/index.html-d08806ac.js","assets/fs-kmp-webcanvas-architecture.drawio-2659deec.js"])),"v-48a0fa68":Ie(()=>ie(()=>import("./index.html-adc29353.js"),["assets/index.html-adc29353.js","assets/kotlin-used-for-492dbcd9.js"])),"v-12e654b0":Ie(()=>ie(()=>import("./index.html-5789aaa7.js"),["assets/index.html-5789aaa7.js","assets/Androidmakers2023Kotlinshortlink-943614c6.js"])),"v-6d947b37":Ie(()=>ie(()=>import("./index.html-99c4b89d.js"),[])),"v-034b6842":Ie(()=>ie(()=>import("./index.html-1b2bb433.js"),["assets/index.html-1b2bb433.js","assets/compose-multiplaform-e9e5bce8.js"])),"v-d4ec6de0":Ie(()=>ie(()=>import("./index.html-272066df.js"),[])),"v-6a3222ff":Ie(()=>ie(()=>import("./index.html-f290d974.js"),[])),"v-644cf33e":Ie(()=>ie(()=>import("./index.html-a449e056.js"),["assets/index.html-a449e056.js","assets/fs-kmp-webcanvas-architecture.drawio-2659deec.js"])),"v-dcbefd6a":Ie(()=>ie(()=>import("./index.html-679cf9c6.js"),["assets/index.html-679cf9c6.js","assets/kotlin-used-for-492dbcd9.js"])),"v-202ff0ad":Ie(()=>ie(()=>import("./index.html-b4a36fa2.js"),["assets/index.html-b4a36fa2.js","assets/Androidmakers2023Kotlinshortlink-943614c6.js"])),"v-3706649a":Ie(()=>ie(()=>import("./404.html-58267e49.js"),[]))};var Pu=Symbol(""),cl=Symbol(""),Ru=jn({key:"",path:"",title:"",lang:"",frontmatter:{},headers:[]}),Vt=()=>{const e=Le(cl);if(!e)throw new Error("pageData() is called without provider.");return e},ul=Symbol(""),vt=()=>{const e=Le(ul);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},fl=Symbol(""),Ou=()=>{const e=Le(fl);if(!e)throw new Error("usePageHead() is called without provider.");return e},Iu=Symbol(""),dl=Symbol(""),$u=()=>{const e=Le(dl);if(!e)throw new Error("usePageLang() is called without provider.");return e},pl=Symbol(""),Mu=()=>{const e=Le(pl);if(!e)throw new Error("usePageLayout() is called without provider.");return e},Nu=ve(xu),No=Symbol(""),qn=()=>{const e=Le(No);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},tn=ve(Cu),hl=()=>tn,ml=Symbol(""),Do=()=>{const e=Le(ml);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},Du=Symbol(""),Fu="Layout",Hu="NotFound",ht=Hn({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageData:async e=>{const t=Nu.value[e];return await(t==null?void 0:t())??Ru},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,t,n)=>{const r=me(t.description)?t.description:n.description,o=[...G(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return Su(o)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||"en-US",resolvePageLayout:(e,t)=>{let n;if(e.path){const r=e.frontmatter.layout;me(r)?n=r:n=Fu}else n=Hu;return t[n]},resolveRouteLocale:(e,t)=>ll(e,t),resolveSiteLocaleData:(e,t)=>({...e,...e.locales[t]})}),Fo=ue({name:"ClientOnly",setup(e,t){const n=ve(!1);return Ve(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),ju=ue({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const t=Vt(),n=j(()=>al[e.pageKey||t.value.key]);return()=>n.value?ae(n.value):ae("div","404 Not Found")}}),dt=(e={})=>e,Ir=e=>Un(e)?e:`/learning-kotlin/${il(e)}`;function gl(e,t,n){var r,o,s;t===void 0&&(t=50),n===void 0&&(n={});var i=(r=n.isImmediate)!=null&&r,l=(o=n.callback)!=null&&o,a=n.maxWait,c=Date.now(),u=[];function f(){if(a!==void 0){var g=Date.now()-c;if(g+t>=a)return a-g}return t}var d=function(){var g=[].slice.call(arguments),y=this;return new Promise(function(k,L){var v=i&&s===void 0;if(s!==void 0&&clearTimeout(s),s=setTimeout(function(){if(s=void 0,c=Date.now(),!i){var T=e.apply(y,g);l&&l(T),u.forEach(function(A){return(0,A.resolve)(T)}),u=[]}},f()),v){var b=e.apply(y,g);return l&&l(b),k(b)}u.push({resolve:k,reject:L})})};return d.cancel=function(g){s!==void 0&&clearTimeout(s),u.forEach(function(y){return(0,y.reject)(g)}),u=[]},d}/*! + * vue-router v4.2.4 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */const en=typeof window<"u";function Bu(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ge=Object.assign;function qr(e,t){const n={};for(const r in t){const o=t[r];n[r]=it(o)?o.map(e):e(o)}return n}const An=()=>{},it=Array.isArray,zu=/\/$/,Ku=e=>e.replace(zu,"");function Vr(e,t,n="/"){let r,o={},s="",i="";const l=t.indexOf("#");let a=t.indexOf("?");return l=0&&(a=-1),a>-1&&(r=t.slice(0,a),s=t.slice(a+1,l>-1?l:t.length),o=e(s)),l>-1&&(r=r||t.slice(0,l),i=t.slice(l,t.length)),r=Vu(r??t,n),{fullPath:r+(s&&"?")+s+i,path:r,query:o,hash:i}}function Wu(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Os(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Uu(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&dn(t.matched[r],n.matched[o])&&vl(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function dn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function vl(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!qu(e[n],t[n]))return!1;return!0}function qu(e,t){return it(e)?Is(e,t):it(t)?Is(t,e):e===t}function Is(e,t){return it(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Vu(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];(o===".."||o===".")&&r.push("");let s=n.length-1,i,l;for(i=0;i1&&s--;else break;return n.slice(0,s).join("/")+"/"+r.slice(i-(i===r.length?1:0)).join("/")}var Mn;(function(e){e.pop="pop",e.push="push"})(Mn||(Mn={}));var Tn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Tn||(Tn={}));function Ju(e){if(!e)if(en){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Ku(e)}const Yu=/^[^#]+#/;function Gu(e,t){return e.replace(Yu,"#")+t}function Qu(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const $r=()=>({left:window.pageXOffset,top:window.pageYOffset});function Zu(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=Qu(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function $s(e,t){return(history.state?history.state.position-t:-1)+e}const uo=new Map;function Xu(e,t){uo.set(e,t)}function ef(e){const t=uo.get(e);return uo.delete(e),t}let tf=()=>location.protocol+"//"+location.host;function _l(e,t){const{pathname:n,search:r,hash:o}=t,s=e.indexOf("#");if(s>-1){let l=o.includes(e.slice(s))?e.slice(s).length:1,a=o.slice(l);return a[0]!=="/"&&(a="/"+a),Os(a,"")}return Os(n,e)+r+o}function nf(e,t,n,r){let o=[],s=[],i=null;const l=({state:d})=>{const g=_l(e,location),y=n.value,k=t.value;let L=0;if(d){if(n.value=g,t.value=d,i&&i===y){i=null;return}L=k?d.position-k.position:0}else r(g);o.forEach(v=>{v(n.value,y,{delta:L,type:Mn.pop,direction:L?L>0?Tn.forward:Tn.back:Tn.unknown})})};function a(){i=n.value}function c(d){o.push(d);const g=()=>{const y=o.indexOf(d);y>-1&&o.splice(y,1)};return s.push(g),g}function u(){const{history:d}=window;d.state&&d.replaceState(ge({},d.state,{scroll:$r()}),"")}function f(){for(const d of s)d();s=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:a,listen:c,destroy:f}}function Ms(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?$r():null}}function rf(e){const{history:t,location:n}=window,r={value:_l(e,n)},o={value:t.state};o.value||s(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function s(a,c,u){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+a:tf()+e+a;try{t[u?"replaceState":"pushState"](c,"",d),o.value=c}catch(g){console.error(g),n[u?"replace":"assign"](d)}}function i(a,c){const u=ge({},t.state,Ms(o.value.back,a,o.value.forward,!0),c,{position:o.value.position});s(a,u,!0),r.value=a}function l(a,c){const u=ge({},o.value,t.state,{forward:a,scroll:$r()});s(u.current,u,!0);const f=ge({},Ms(r.value,a,null),{position:u.position+1},c);s(a,f,!1),r.value=a}return{location:r,state:o,push:l,replace:i}}function of(e){e=Ju(e);const t=rf(e),n=nf(e,t.state,t.location,t.replace);function r(s,i=!0){i||n.pauseListeners(),history.go(s)}const o=ge({location:"",base:e,go:r,createHref:Gu.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function sf(e){return typeof e=="string"||e&&typeof e=="object"}function bl(e){return typeof e=="string"||typeof e=="symbol"}const mt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},yl=Symbol("");var Ns;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Ns||(Ns={}));function pn(e,t){return ge(new Error,{type:e,[yl]:!0},t)}function pt(e,t){return e instanceof Error&&yl in e&&(t==null||!!(e.type&t))}const Ds="[^/]+?",lf={sensitive:!1,strict:!1,start:!0,end:!0},af=/[.+*?^${}()[\]/\\]/g;function cf(e,t){const n=ge({},lf,t),r=[];let o=n.start?"^":"";const s=[];for(const c of e){const u=c.length?[]:[90];n.strict&&!c.length&&(o+="/");for(let f=0;ft.length?t.length===1&&t[0]===40+40?1:-1:0}function ff(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const df={type:0,value:""},pf=/[a-zA-Z0-9_]/;function hf(e){if(!e)return[[]];if(e==="/")return[[df]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${c}": ${g}`)}let n=0,r=n;const o=[];let s;function i(){s&&o.push(s),s=[]}let l=0,a,c="",u="";function f(){c&&(n===0?s.push({type:0,value:c}):n===1||n===2||n===3?(s.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),s.push({type:1,value:c,regexp:u,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),c="")}function d(){c+=a}for(;l{i(b)}:An}function i(u){if(bl(u)){const f=r.get(u);f&&(r.delete(u),n.splice(n.indexOf(f),1),f.children.forEach(i),f.alias.forEach(i))}else{const f=n.indexOf(u);f>-1&&(n.splice(f,1),u.record.name&&r.delete(u.record.name),u.children.forEach(i),u.alias.forEach(i))}}function l(){return n}function a(u){let f=0;for(;f=0&&(u.record.path!==n[f].record.path||!wl(u,n[f]));)f++;n.splice(f,0,u),u.record.name&&!js(u)&&r.set(u.record.name,u)}function c(u,f){let d,g={},y,k;if("name"in u&&u.name){if(d=r.get(u.name),!d)throw pn(1,{location:u});k=d.record.name,g=ge(Hs(f.params,d.keys.filter(b=>!b.optional).map(b=>b.name)),u.params&&Hs(u.params,d.keys.map(b=>b.name))),y=d.stringify(g)}else if("path"in u)y=u.path,d=n.find(b=>b.re.test(y)),d&&(g=d.parse(y),k=d.record.name);else{if(d=f.name?r.get(f.name):n.find(b=>b.re.test(f.path)),!d)throw pn(1,{location:u,currentLocation:f});k=d.record.name,g=ge({},f.params,u.params),y=d.stringify(g)}const L=[];let v=d;for(;v;)L.unshift(v.record),v=v.parent;return{name:k,path:y,params:g,matched:L,meta:bf(L)}}return e.forEach(u=>s(u)),{addRoute:s,resolve:c,removeRoute:i,getRoutes:l,getRecordMatcher:o}}function Hs(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function vf(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:_f(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function _f(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function js(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function bf(e){return e.reduce((t,n)=>ge(t,n.meta),{})}function Bs(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function wl(e,t){return t.children.some(n=>n===e||wl(e,n))}const kl=/#/g,yf=/&/g,wf=/\//g,kf=/=/g,Ef=/\?/g,El=/\+/g,xf=/%5B/g,Cf=/%5D/g,xl=/%5E/g,Lf=/%60/g,Cl=/%7B/g,Sf=/%7C/g,Ll=/%7D/g,Af=/%20/g;function Ho(e){return encodeURI(""+e).replace(Sf,"|").replace(xf,"[").replace(Cf,"]")}function Tf(e){return Ho(e).replace(Cl,"{").replace(Ll,"}").replace(xl,"^")}function fo(e){return Ho(e).replace(El,"%2B").replace(Af,"+").replace(kl,"%23").replace(yf,"%26").replace(Lf,"`").replace(Cl,"{").replace(Ll,"}").replace(xl,"^")}function Pf(e){return fo(e).replace(kf,"%3D")}function Rf(e){return Ho(e).replace(kl,"%23").replace(Ef,"%3F")}function Of(e){return e==null?"":Rf(e).replace(wf,"%2F")}function br(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function If(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;os&&fo(s)):[r&&fo(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function $f(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=it(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const Mf=Symbol(""),Ks=Symbol(""),Mr=Symbol(""),jo=Symbol(""),po=Symbol("");function yn(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Tt(e,t,n,r,o){const s=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((i,l)=>{const a=f=>{f===!1?l(pn(4,{from:n,to:t})):f instanceof Error?l(f):sf(f)?l(pn(2,{from:t,to:f})):(s&&r.enterCallbacks[o]===s&&typeof f=="function"&&s.push(f),i())},c=e.call(r&&r.instances[o],t,n,a);let u=Promise.resolve(c);e.length<3&&(u=u.then(a)),u.catch(f=>l(f))})}function Jr(e,t,n,r){const o=[];for(const s of e)for(const i in s.components){let l=s.components[i];if(!(t!=="beforeRouteEnter"&&!s.instances[i]))if(Nf(l)){const c=(l.__vccOpts||l)[t];c&&o.push(Tt(c,n,r,s,i))}else{let a=l();o.push(()=>a.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${i}" at "${s.path}"`));const u=Bu(c)?c.default:c;s.components[i]=u;const d=(u.__vccOpts||u)[t];return d&&Tt(d,n,r,s,i)()}))}}return o}function Nf(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Ws(e){const t=Le(Mr),n=Le(jo),r=j(()=>t.resolve(X(e.to))),o=j(()=>{const{matched:a}=r.value,{length:c}=a,u=a[c-1],f=n.matched;if(!u||!f.length)return-1;const d=f.findIndex(dn.bind(null,u));if(d>-1)return d;const g=Us(a[c-2]);return c>1&&Us(u)===g&&f[f.length-1].path!==g?f.findIndex(dn.bind(null,a[c-2])):d}),s=j(()=>o.value>-1&&jf(n.params,r.value.params)),i=j(()=>o.value>-1&&o.value===n.matched.length-1&&vl(n.params,r.value.params));function l(a={}){return Hf(a)?t[X(e.replace)?"replace":"push"](X(e.to)).catch(An):Promise.resolve()}return{route:r,href:j(()=>r.value.href),isActive:s,isExactActive:i,navigate:l}}const Df=ue({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Ws,setup(e,{slots:t}){const n=Hn(Ws(e)),{options:r}=Le(Mr),o=j(()=>({[qs(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[qs(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const s=t.default&&t.default(n);return e.custom?s:ae("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},s)}}}),Ff=Df;function Hf(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function jf(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!it(o)||o.length!==r.length||r.some((s,i)=>s!==o[i]))return!1}return!0}function Us(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const qs=(e,t,n)=>e??t??n,Bf=ue({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Le(po),o=j(()=>e.route||r.value),s=Le(Ks,0),i=j(()=>{let c=X(s);const{matched:u}=o.value;let f;for(;(f=u[c])&&!f.components;)c++;return c}),l=j(()=>o.value.matched[i.value]);Ot(Ks,j(()=>i.value+1)),Ot(Mf,l),Ot(po,o);const a=ve();return st(()=>[a.value,l.value,e.name],([c,u,f],[d,g,y])=>{u&&(u.instances[f]=c,g&&g!==u&&c&&c===d&&(u.leaveGuards.size||(u.leaveGuards=g.leaveGuards),u.updateGuards.size||(u.updateGuards=g.updateGuards))),c&&u&&(!g||!dn(u,g)||!d)&&(u.enterCallbacks[f]||[]).forEach(k=>k(c))},{flush:"post"}),()=>{const c=o.value,u=e.name,f=l.value,d=f&&f.components[u];if(!d)return Vs(n.default,{Component:d,route:c});const g=f.props[u],y=g?g===!0?c.params:typeof g=="function"?g(c):g:null,L=ae(d,ge({},y,t,{onVnodeUnmounted:v=>{v.component.isUnmounted&&(f.instances[u]=null)},ref:a}));return Vs(n.default,{Component:L,route:c})||L}}});function Vs(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Sl=Bf;function zf(e){const t=gf(e.routes,e),n=e.parseQuery||If,r=e.stringifyQuery||zs,o=e.history,s=yn(),i=yn(),l=yn(),a=Ao(mt);let c=mt;en&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=qr.bind(null,E=>""+E),f=qr.bind(null,Of),d=qr.bind(null,br);function g(E,B){let M,q;return bl(E)?(M=t.getRecordMatcher(E),q=B):q=E,t.addRoute(q,M)}function y(E){const B=t.getRecordMatcher(E);B&&t.removeRoute(B)}function k(){return t.getRoutes().map(E=>E.record)}function L(E){return!!t.getRecordMatcher(E)}function v(E,B){if(B=ge({},B||a.value),typeof E=="string"){const _=Vr(n,E,B.path),w=t.resolve({path:_.path},B),x=o.createHref(_.fullPath);return ge(_,w,{params:d(w.params),hash:br(_.hash),redirectedFrom:void 0,href:x})}let M;if("path"in E)M=ge({},E,{path:Vr(n,E.path,B.path).path});else{const _=ge({},E.params);for(const w in _)_[w]==null&&delete _[w];M=ge({},E,{params:f(_)}),B.params=f(B.params)}const q=t.resolve(M,B),ce=E.hash||"";q.params=u(d(q.params));const p=Wu(r,ge({},E,{hash:Tf(ce),path:q.path})),h=o.createHref(p);return ge({fullPath:p,hash:ce,query:r===zs?$f(E.query):E.query||{}},q,{redirectedFrom:void 0,href:h})}function b(E){return typeof E=="string"?Vr(n,E,a.value.path):ge({},E)}function T(E,B){if(c!==E)return pn(8,{from:B,to:E})}function A(E){return $(E)}function W(E){return A(ge(b(E),{replace:!0}))}function Q(E){const B=E.matched[E.matched.length-1];if(B&&B.redirect){const{redirect:M}=B;let q=typeof M=="function"?M(E):M;return typeof q=="string"&&(q=q.includes("?")||q.includes("#")?q=b(q):{path:q},q.params={}),ge({query:E.query,hash:E.hash,params:"path"in q?{}:E.params},q)}}function $(E,B){const M=c=v(E),q=a.value,ce=E.state,p=E.force,h=E.replace===!0,_=Q(M);if(_)return $(ge(b(_),{state:typeof _=="object"?ge({},ce,_.state):ce,force:p,replace:h}),B||M);const w=M;w.redirectedFrom=B;let x;return!p&&Uu(r,q,M)&&(x=pn(16,{to:w,from:q}),Ke(q,q,!0,!1)),(x?Promise.resolve(x):D(w,q)).catch(S=>pt(S)?pt(S,2)?S:Me(S):re(S,w,q)).then(S=>{if(S){if(pt(S,2))return $(ge({replace:h},b(S.to),{state:typeof S.to=="object"?ge({},ce,S.to.state):ce,force:p}),B||w)}else S=C(w,q,!0,h,ce);return V(w,q,S),S})}function m(E,B){const M=T(E,B);return M?Promise.reject(M):Promise.resolve()}function z(E){const B=Et.values().next().value;return B&&typeof B.runWithContext=="function"?B.runWithContext(E):E()}function D(E,B){let M;const[q,ce,p]=Kf(E,B);M=Jr(q.reverse(),"beforeRouteLeave",E,B);for(const _ of q)_.leaveGuards.forEach(w=>{M.push(Tt(w,E,B))});const h=m.bind(null,E,B);return M.push(h),Oe(M).then(()=>{M=[];for(const _ of s.list())M.push(Tt(_,E,B));return M.push(h),Oe(M)}).then(()=>{M=Jr(ce,"beforeRouteUpdate",E,B);for(const _ of ce)_.updateGuards.forEach(w=>{M.push(Tt(w,E,B))});return M.push(h),Oe(M)}).then(()=>{M=[];for(const _ of p)if(_.beforeEnter)if(it(_.beforeEnter))for(const w of _.beforeEnter)M.push(Tt(w,E,B));else M.push(Tt(_.beforeEnter,E,B));return M.push(h),Oe(M)}).then(()=>(E.matched.forEach(_=>_.enterCallbacks={}),M=Jr(p,"beforeRouteEnter",E,B),M.push(h),Oe(M))).then(()=>{M=[];for(const _ of i.list())M.push(Tt(_,E,B));return M.push(h),Oe(M)}).catch(_=>pt(_,8)?_:Promise.reject(_))}function V(E,B,M){l.list().forEach(q=>z(()=>q(E,B,M)))}function C(E,B,M,q,ce){const p=T(E,B);if(p)return p;const h=B===mt,_=en?history.state:{};M&&(q||h?o.replace(E.fullPath,ge({scroll:h&&_&&_.scroll},ce)):o.push(E.fullPath,ce)),a.value=E,Ke(E,B,M,h),Me()}let O;function I(){O||(O=o.listen((E,B,M)=>{if(!lt.listening)return;const q=v(E),ce=Q(q);if(ce){$(ge(ce,{replace:!0}),q).catch(An);return}c=q;const p=a.value;en&&Xu($s(p.fullPath,M.delta),$r()),D(q,p).catch(h=>pt(h,12)?h:pt(h,2)?($(h.to,q).then(_=>{pt(_,20)&&!M.delta&&M.type===Mn.pop&&o.go(-1,!1)}).catch(An),Promise.reject()):(M.delta&&o.go(-M.delta,!1),re(h,q,p))).then(h=>{h=h||C(q,p,!1),h&&(M.delta&&!pt(h,8)?o.go(-M.delta,!1):M.type===Mn.pop&&pt(h,20)&&o.go(-1,!1)),V(q,p,h)}).catch(An)}))}let se=yn(),K=yn(),ne;function re(E,B,M){Me(E);const q=K.list();return q.length?q.forEach(ce=>ce(E,B,M)):console.error(E),Promise.reject(E)}function Fe(){return ne&&a.value!==mt?Promise.resolve():new Promise((E,B)=>{se.add([E,B])})}function Me(E){return ne||(ne=!E,I(),se.list().forEach(([B,M])=>E?M(E):B()),se.reset()),E}function Ke(E,B,M,q){const{scrollBehavior:ce}=e;if(!en||!ce)return Promise.resolve();const p=!M&&ef($s(E.fullPath,0))||(q||!M)&&history.state&&history.state.scroll||null;return Lr().then(()=>ce(E,B,p)).then(h=>h&&Zu(h)).catch(h=>re(h,E,B))}const He=E=>o.go(E);let kt;const Et=new Set,lt={currentRoute:a,listening:!0,addRoute:g,removeRoute:y,hasRoute:L,getRoutes:k,resolve:v,options:e,push:A,replace:W,go:He,back:()=>He(-1),forward:()=>He(1),beforeEach:s.add,beforeResolve:i.add,afterEach:l.add,onError:K.add,isReady:Fe,install(E){const B=this;E.component("RouterLink",Ff),E.component("RouterView",Sl),E.config.globalProperties.$router=B,Object.defineProperty(E.config.globalProperties,"$route",{enumerable:!0,get:()=>X(a)}),en&&!kt&&a.value===mt&&(kt=!0,A(o.location).catch(ce=>{}));const M={};for(const ce in mt)Object.defineProperty(M,ce,{get:()=>a.value[ce],enumerable:!0});E.provide(Mr,B),E.provide(jo,Li(M)),E.provide(po,a);const q=E.unmount;Et.add(E),E.unmount=function(){Et.delete(E),Et.size<1&&(c=mt,O&&O(),O=null,a.value=mt,kt=!1,ne=!1),q()}}};function Oe(E){return E.reduce((B,M)=>B.then(()=>z(M)),Promise.resolve())}return lt}function Kf(e,t){const n=[],r=[],o=[],s=Math.max(t.matched.length,e.matched.length);for(let i=0;idn(c,l))?r.push(l):n.push(l));const a=e.matched[i];a&&(t.matched.find(c=>dn(c,a))||o.push(a))}return[n,r,o]}function Yt(){return Le(Mr)}function Gt(){return Le(jo)}const Wf=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const o=Yt(),i=gl(()=>{var k,L;const l=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(l-0)d.some(b=>b.hash===v.hash));for(let v=0;v=(((k=b.parentElement)==null?void 0:k.offsetTop)??0)-r,W=!T||l<(((L=T.parentElement)==null?void 0:L.offsetTop)??0)-r;if(!(A&&W))continue;const $=decodeURIComponent(o.currentRoute.value.hash),m=decodeURIComponent(b.hash);if($===m)return;if(f){for(let z=v+1;z{window.addEventListener("scroll",i)}),Kn(()=>{window.removeEventListener("scroll",i)})},Js=async(e,t)=>{const{scrollBehavior:n}=e.options;e.options.scrollBehavior=void 0,await e.replace({query:e.currentRoute.value.query,hash:t}).finally(()=>e.options.scrollBehavior=n)},Uf="a.sidebar-item",qf=".header-anchor",Vf=300,Jf=5,Yf=dt({setup(){Wf({headerLinkSelector:Uf,headerAnchorSelector:qf,delay:Vf,offset:Jf})}}),Ys=()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,Gf=()=>window.scrollTo({top:0,behavior:"smooth"});const Qf=ue({name:"BackToTop",setup(){const e=ve(0),t=j(()=>e.value>300),n=gl(()=>{e.value=Ys()},100);Ve(()=>{e.value=Ys(),window.addEventListener("scroll",()=>n())});const r=ae("div",{class:"back-to-top",onClick:Gf});return()=>ae(Wn,{name:"back-to-top"},()=>t.value?r:null)}}),Zf=dt({rootComponents:[Qf]});const Xf=ae("svg",{class:"external-link-icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},[ae("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}),ae("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"})]),ed=ue({name:"ExternalLinkIcon",props:{locales:{type:Object,required:!1,default:()=>({})}},setup(e){const t=qn(),n=j(()=>e.locales[t.value]??{openInNewWindow:"open in new window"});return()=>ae("span",[Xf,ae("span",{class:"external-link-icon-sr-only"},n.value.openInNewWindow)])}}),td={"/en/":{openInNewWindow:"open in new window"},"/fr/":{openInNewWindow:"open in new window"},"/":{openInNewWindow:"open in new window"}},nd=dt({enhance({app:e}){e.component("ExternalLinkIcon",ae(ed,{locales:td}))}});/** + * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT + */const fe={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'

'},status:null,set:e=>{const t=fe.isStarted();e=Yr(e,fe.settings.minimum,1),fe.status=e===1?null:e;const n=fe.render(!t),r=n.querySelector(fe.settings.barSelector),o=fe.settings.speed,s=fe.settings.easing;return n.offsetWidth,rd(i=>{tr(r,{transform:"translate3d("+Gs(e)+"%,0,0)",transition:"all "+o+"ms "+s}),e===1?(tr(n,{transition:"none",opacity:"1"}),n.offsetWidth,setTimeout(function(){tr(n,{transition:"all "+o+"ms linear",opacity:"0"}),setTimeout(function(){fe.remove(),i()},o)},o)):setTimeout(()=>i(),o)}),fe},isStarted:()=>typeof fe.status=="number",start:()=>{fe.status||fe.set(0);const e=()=>{setTimeout(()=>{fe.status&&(fe.trickle(),e())},fe.settings.trickleSpeed)};return fe.settings.trickle&&e(),fe},done:e=>!e&&!fe.status?fe:fe.inc(.3+.5*Math.random()).set(1),inc:e=>{let t=fe.status;return t?(typeof e!="number"&&(e=(1-t)*Yr(Math.random()*t,.1,.95)),t=Yr(t+e,0,.994),fe.set(t)):fe.start()},trickle:()=>fe.inc(Math.random()*fe.settings.trickleRate),render:e=>{if(fe.isRendered())return document.getElementById("nprogress");Qs(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=fe.settings.template;const n=t.querySelector(fe.settings.barSelector),r=e?"-100":Gs(fe.status||0),o=document.querySelector(fe.settings.parent);return tr(n,{transition:"all 0 linear",transform:"translate3d("+r+"%,0,0)"}),o!==document.body&&Qs(o,"nprogress-custom-parent"),o==null||o.appendChild(t),t},remove:()=>{Zs(document.documentElement,"nprogress-busy"),Zs(document.querySelector(fe.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&od(e)},isRendered:()=>!!document.getElementById("nprogress")},Yr=(e,t,n)=>en?n:e,Gs=e=>(-1+e)*100,rd=function(){const e=[];function t(){const n=e.shift();n&&n(t)}return function(n){e.push(n),e.length===1&&t()}}(),tr=function(){const e=["Webkit","O","Moz","ms"],t={};function n(i){return i.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(l,a){return a.toUpperCase()})}function r(i){const l=document.body.style;if(i in l)return i;let a=e.length;const c=i.charAt(0).toUpperCase()+i.slice(1);let u;for(;a--;)if(u=e[a]+c,u in l)return u;return i}function o(i){return i=n(i),t[i]??(t[i]=r(i))}function s(i,l,a){l=o(l),i.style[l]=a}return function(i,l){for(const a in l){const c=l[a];c!==void 0&&Object.prototype.hasOwnProperty.call(l,a)&&s(i,a,c)}}}(),Al=(e,t)=>(typeof e=="string"?e:Bo(e)).indexOf(" "+t+" ")>=0,Qs=(e,t)=>{const n=Bo(e),r=n+t;Al(n,t)||(e.className=r.substring(1))},Zs=(e,t)=>{const n=Bo(e);if(!Al(e,t))return;const r=n.replace(" "+t+" "," ");e.className=r.substring(1,r.length-1)},Bo=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),od=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)};const sd=()=>{Ve(()=>{const e=Yt(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||fe.start()}),e.afterEach(n=>{t.add(n.path),fe.done()})})},id=dt({setup(){sd()}}),ld=JSON.parse(`{"logo":"logo_worldline.png","locales":{"/en/":{"selectLanguageName":"English","sidebar":["/en/presentation/","/en/kotlin-features/","/en/backend-development/","/en/front-development/","/en/other-technologies/","/en/kotlin-features-advanced/","/en/workshops/"]},"/fr/":{"selectLanguageName":"Français","sidebar":["/fr/presentation/","/fr/kotlin-features/","/fr/backend-development/","/fr/front-development/","/fr/other-technologies/","/fr/kotlin-features-advanced/","/fr/workshops/"]},"/":{"selectLanguageName":"English"}},"colorMode":"auto","colorModeSwitch":true,"navbar":[],"repo":null,"selectLanguageText":"Languages","selectLanguageAriaLabel":"Select language","sidebar":"auto","sidebarDepth":2,"editLink":true,"editLinkText":"Edit this page","lastUpdated":true,"lastUpdatedText":"Last Updated","contributors":true,"contributorsText":"Contributors","notFound":["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],"backToHome":"Take me home","openInNewWindow":"open in new window","toggleColorMode":"toggle color mode","toggleSidebar":"toggle sidebar"}`),ad=ve(ld),Tl=()=>ad,Pl=Symbol(""),cd=()=>{const e=Le(Pl);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},ud=(e,t)=>{const{locales:n,...r}=e;return{...r,...n==null?void 0:n[t]}},fd=dt({enhance({app:e}){const t=Tl(),n=e._context.provides[No],r=j(()=>ud(t.value,n.value));e.provide(Pl,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}}),dd=ue({__name:"Badge",props:{type:{type:String,required:!1,default:"tip"},text:{type:String,required:!1,default:""},vertical:{type:String,required:!1,default:void 0}},setup(e){return(t,n)=>(H(),Z("span",{class:Ue(["badge",e.type]),style:Fn({verticalAlign:e.vertical})},[ye(t.$slots,"default",{},()=>[Nt(Re(e.text),1)])],6))}}),xe=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n},pd=xe(dd,[["__file","Badge.vue"]]),hd=ue({name:"CodeGroup",slots:Object,setup(e,{slots:t}){const n=ve(-1),r=ve([]),o=(l=n.value)=>{l{l>0?n.value=l-1:n.value=r.value.length-1,r.value[n.value].focus()},i=(l,a)=>{l.key===" "||l.key==="Enter"?(l.preventDefault(),n.value=a):l.key==="ArrowRight"?(l.preventDefault(),o(a)):l.key==="ArrowLeft"&&(l.preventDefault(),s(a))};return()=>{var a;const l=(((a=t.default)==null?void 0:a.call(t))||[]).filter(c=>c.type.name==="CodeGroupItem").map(c=>(c.props===null&&(c.props={}),c));return l.length===0?null:(n.value<0||n.value>l.length-1?(n.value=l.findIndex(c=>c.props.active===""||c.props.active===!0),n.value===-1&&(n.value=0)):l.forEach((c,u)=>{c.props.active=u===n.value}),ae("div",{class:"code-group"},[ae("div",{class:"code-group__nav"},ae("ul",{class:"code-group__ul"},l.map((c,u)=>{const f=u===n.value;return ae("li",{class:"code-group__li"},ae("button",{ref:d=>{d&&(r.value[u]=d)},class:{"code-group__nav-tab":!0,"code-group__nav-tab-active":f},ariaPressed:f,ariaExpanded:f,onClick:()=>n.value=u,onKeydown:d=>i(d,u)},c.props.title))}))),l]))}}}),md=["aria-selected"],gd=ue({name:"CodeGroupItem"}),vd=ue({...gd,props:{title:{type:String,required:!0},active:{type:Boolean,required:!1,default:!1}},setup(e){return(t,n)=>(H(),Z("div",{class:Ue(["code-group-item",{"code-group-item__active":e.active}]),"aria-selected":e.active},[ye(t.$slots,"default")],10,md))}}),_d=xe(vd,[["__file","CodeGroupItem.vue"]]);function Xs(e,t){var n;const r=Ao();return Di(()=>{r.value=e()},{...t,flush:(n=t==null?void 0:t.flush)!=null?n:"sync"}),jn(r)}function bd(e,t){let n,r,o;const s=ve(!0),i=()=>{s.value=!0,o()};st(e,i,{flush:"sync"});const l=typeof t=="function"?t:t.get,a=typeof t=="function"?void 0:t.set,c=Fa((u,f)=>(r=u,o=f,{get(){return s.value&&(n=l(),s.value=!1),r(),n},set(d){a==null||a(d)}}));return Object.isExtensible(c)&&(c.trigger=i),c}function Rl(e){return mi()?(la(e),!0):!1}function hn(e){return typeof e=="function"?e():X(e)}const yd=typeof window<"u"&&typeof document<"u",wd=Object.prototype.toString,kd=e=>wd.call(e)==="[object Object]",Ed=()=>{};function xd(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const Ol=e=>e();function Cd(e=Ol){const t=ve(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...s)=>{t.value&&e(...s)};return{isActive:jn(t),pause:n,resume:r,eventFilter:o}}function Ld(e,t,n={}){const{eventFilter:r=Ol,...o}=n;return st(e,xd(r,t),o)}function Sd(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:s,pause:i,resume:l,isActive:a}=Cd(r);return{stop:Ld(e,t,{...o,eventFilter:s}),pause:i,resume:l,isActive:a}}function Ad(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,o=$e(e),s=ve(e);function i(l){if(arguments.length)return s.value=l,s.value;{const a=hn(n);return s.value=s.value===a?hn(r):a,s.value}}return o?i:[s,i]}function Td(e){var t;const n=hn(e);return(t=n==null?void 0:n.$el)!=null?t:n}const yr=yd?window:void 0;function ei(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=yr):[t,n,r,o]=e,!t)return Ed;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const s=[],i=()=>{s.forEach(u=>u()),s.length=0},l=(u,f,d,g)=>(u.addEventListener(f,d,g),()=>u.removeEventListener(f,d,g)),a=st(()=>[Td(t),hn(o)],([u,f])=>{if(i(),!u)return;const d=kd(f)?{...f}:f;s.push(...n.flatMap(g=>r.map(y=>l(u,g,y,d))))},{immediate:!0,flush:"post"}),c=()=>{a(),i()};return Rl(c),c}function Pd(){const e=ve(!1);return tl()&&Ve(()=>{e.value=!0}),e}function Rd(e){const t=Pd();return j(()=>(t.value,!!e()))}function Od(e,t={}){const{window:n=yr}=t,r=Rd(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const s=ve(!1),i=c=>{s.value=c.matches},l=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",i):o.removeListener(i))},a=Di(()=>{r.value&&(l(),o=n.matchMedia(hn(e)),"addEventListener"in o?o.addEventListener("change",i):o.addListener(i),s.value=o.matches)});return Rl(()=>{a(),l(),o=void 0}),s}const nr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},rr="__vueuse_ssr_handlers__",Id=$d();function $d(){return rr in nr||(nr[rr]=nr[rr]||{}),nr[rr]}function Md(e,t){return Id[e]||t}function Nd(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Dd={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},ti="vueuse-storage";function Fd(e,t,n,r={}){var o;const{flush:s="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:a=!0,mergeDefaults:c=!1,shallow:u,window:f=yr,eventFilter:d,onError:g=m=>{console.error(m)}}=r,y=(u?Ao:ve)(t);if(!n)try{n=Md("getDefaultStorage",()=>{var m;return(m=yr)==null?void 0:m.localStorage})()}catch(m){g(m)}if(!n)return y;const k=hn(t),L=Nd(k),v=(o=r.serializer)!=null?o:Dd[L],{pause:b,resume:T}=Sd(y,()=>A(y.value),{flush:s,deep:i,eventFilter:d});return f&&l&&(ei(f,"storage",$),ei(f,ti,Q)),$(),y;function A(m){try{if(m==null)n.removeItem(e);else{const z=v.write(m),D=n.getItem(e);D!==z&&(n.setItem(e,z),f&&f.dispatchEvent(new CustomEvent(ti,{detail:{key:e,oldValue:D,newValue:z,storageArea:n}})))}}catch(z){g(z)}}function W(m){const z=m?m.newValue:n.getItem(e);if(z==null)return a&&k!==null&&n.setItem(e,v.write(k)),k;if(!m&&c){const D=v.read(z);return typeof c=="function"?c(D,k):L==="object"&&!Array.isArray(D)?{...k,...D}:D}else return typeof z!="string"?z:v.read(z)}function Q(m){$(m.detail)}function $(m){if(!(m&&m.storageArea!==n)){if(m&&m.key==null){y.value=k;return}if(!(m&&m.key!==e)){b();try{(m==null?void 0:m.newValue)!==v.write(y.value)&&(y.value=W(m))}catch(z){g(z)}finally{m?Lr(T):T()}}}}}function Hd(e){return Od("(prefers-color-scheme: dark)",e)}const jd=()=>Tl(),ze=()=>cd(),Il=Symbol(""),zo=()=>{const e=Le(Il);if(!e)throw new Error("useDarkMode() is called without provider.");return e},Bd=()=>{const e=ze(),t=Hd(),n=Fd("vuepress-color-scheme",e.value.colorMode),r=j({get(){return e.value.colorModeSwitch?n.value==="auto"?t.value:n.value==="dark":e.value.colorMode==="dark"},set(o){o===t.value?n.value="auto":n.value=o?"dark":"light"}});Ot(Il,r),zd(r)},zd=e=>{const t=(n=e.value)=>{const r=window==null?void 0:window.document.querySelector("html");r==null||r.classList.toggle("dark",n)};Ve(()=>{st(e,t,{immediate:!0})}),Pr(()=>t())},$l=(...e)=>{const n=Yt().resolve(...e),r=n.matched[n.matched.length-1];if(!(r!=null&&r.redirect))return n;const{redirect:o}=r,s=oe(o)?o(n):o,i=me(s)?{path:s}:s;return $l({hash:n.hash,query:n.query,params:n.params,...i})},Ko=e=>{const t=$l(encodeURI(e));return{text:t.meta.title||e,link:t.name==="404"?e:t.fullPath}};let Gr=null,wn=null;const Kd={wait:()=>Gr,pending:()=>{Gr=new Promise(e=>wn=e)},resolve:()=>{wn==null||wn(),Gr=null,wn=null}},Ml=()=>Kd,Nl=Symbol("sidebarItems"),Wo=()=>{const e=Le(Nl);if(!e)throw new Error("useSidebarItems() is called without provider.");return e},Wd=()=>{const e=ze(),t=vt(),n=j(()=>Ud(t.value,e.value));Ot(Nl,n)},Ud=(e,t)=>{const n=e.sidebar??t.sidebar??"auto",r=e.sidebarDepth??t.sidebarDepth??2;return e.home||n===!1?[]:n==="auto"?Vd(r):G(n)?Dl(n,r):Mo(n)?Jd(n,r):[]},qd=(e,t)=>({text:e.title,link:e.link,children:Uo(e.children,t)}),Uo=(e,t)=>t>0?e.map(n=>qd(n,t-1)):[],Vd=e=>{const t=Vt();return[{text:t.value.title,children:Uo(t.value.headers,e)}]},Dl=(e,t)=>{const n=Gt(),r=Vt(),o=s=>{var l;let i;if(me(s)?i=Ko(s):i=s,i.children)return{...i,children:i.children.map(a=>o(a))};if(i.link===n.path){const a=((l=r.value.headers[0])==null?void 0:l.level)===1?r.value.headers[0].children:r.value.headers;return{...i,children:Uo(a,t)}}return i};return e.map(s=>o(s))},Jd=(e,t)=>{const n=Gt(),r=ll(e,n.path),o=e[r]??[];return Dl(o,t)},Yd="719px",Gd={mobile:Yd};var Nn;(function(e){e.MOBILE="mobile"})(Nn||(Nn={}));var ai;const Qd={[Nn.MOBILE]:Number.parseInt((ai=Gd.mobile)==null?void 0:ai.replace("px",""),10)},Fl=(e,t)=>{const n=Qd[e];Number.isInteger(n)&&Ve(()=>{t(n),window.addEventListener("resize",()=>t(n),!1),window.addEventListener("orientationchange",()=>t(n),!1)})},Zd={},Xd={class:"theme-default-content"};function ep(e,t){const n=yt("Content");return H(),Z("div",Xd,[ee(n)])}const tp=xe(Zd,[["render",ep],["__file","HomeContent.vue"]]),np={key:0,class:"features"},rp=ue({__name:"HomeFeatures",setup(e){const t=vt(),n=j(()=>G(t.value.features)?t.value.features:[]);return(r,o)=>n.value.length?(H(),Z("div",np,[(H(!0),Z(we,null,$t(n.value,s=>(H(),Z("div",{key:s.title,class:"feature"},[pe("h2",null,Re(s.title),1),pe("p",null,Re(s.details),1)]))),128))])):Ce("v-if",!0)}}),op=xe(rp,[["__file","HomeFeatures.vue"]]),sp=["innerHTML"],ip=["textContent"],lp=ue({__name:"HomeFooter",setup(e){const t=vt(),n=j(()=>t.value.footer),r=j(()=>t.value.footerHtml);return(o,s)=>n.value?(H(),Z(we,{key:0},[Ce(" eslint-disable-next-line vue/no-v-html "),r.value?(H(),Z("div",{key:0,class:"footer",innerHTML:n.value},null,8,sp)):(H(),Z("div",{key:1,class:"footer",textContent:Re(n.value)},null,8,ip))],64)):Ce("v-if",!0)}}),ap=xe(lp,[["__file","HomeFooter.vue"]]),cp=["href","rel","target","aria-label"],up=ue({inheritAttrs:!1}),fp=ue({...up,__name:"AutoLink",props:{item:{type:Object,required:!0}},setup(e){const t=e,n=Gt(),r=hl(),{item:o}=Cr(t),s=j(()=>Un(o.value.link)),i=j(()=>Au(o.value.link)||Tu(o.value.link)),l=j(()=>{if(!i.value){if(o.value.target)return o.value.target;if(s.value)return"_blank"}}),a=j(()=>l.value==="_blank"),c=j(()=>!s.value&&!i.value&&!a.value),u=j(()=>{if(!i.value){if(o.value.rel)return o.value.rel;if(a.value)return"noopener noreferrer"}}),f=j(()=>o.value.ariaLabel||o.value.text),d=j(()=>{const k=Object.keys(r.value.locales);return k.length?!k.some(L=>L===o.value.link):o.value.link!=="/"}),g=j(()=>d.value?n.path.startsWith(o.value.link):!1),y=j(()=>c.value?o.value.activeMatch?new RegExp(o.value.activeMatch).test(n.path):g.value:!1);return(k,L)=>{const v=yt("RouterLink"),b=yt("AutoLinkExternalIcon");return c.value?(H(),Ae(v,ao({key:0,class:{"router-link-active":y.value},to:X(o).link,"aria-label":f.value},k.$attrs),{default:Ne(()=>[ye(k.$slots,"before"),Nt(" "+Re(X(o).text)+" ",1),ye(k.$slots,"after")]),_:3},16,["class","to","aria-label"])):(H(),Z("a",ao({key:1,class:"external-link",href:X(o).link,rel:u.value,target:l.value,"aria-label":f.value},k.$attrs),[ye(k.$slots,"before"),Nt(" "+Re(X(o).text)+" ",1),a.value?(H(),Ae(b,{key:0})):Ce("v-if",!0),ye(k.$slots,"after")],16,cp))}}}),_t=xe(fp,[["__file","AutoLink.vue"]]),dp={class:"hero"},pp={key:0,id:"main-title"},hp={key:1,class:"description"},mp={key:2,class:"actions"},gp=ue({__name:"HomeHero",setup(e){const t=vt(),n=Do(),r=zo(),o=j(()=>r.value&&t.value.heroImageDark!==void 0?t.value.heroImageDark:t.value.heroImage),s=j(()=>t.value.heroAlt||l.value||"hero"),i=j(()=>t.value.heroHeight||280),l=j(()=>t.value.heroText===null?null:t.value.heroText||n.value.title||"Hello"),a=j(()=>t.value.tagline===null?null:t.value.tagline||n.value.description||"Welcome to your VuePress site"),c=j(()=>G(t.value.actions)?t.value.actions.map(({text:f,link:d,type:g="primary"})=>({text:f,link:d,type:g})):[]),u=()=>{if(!o.value)return null;const f=ae("img",{src:Ir(o.value),alt:s.value,height:i.value});return t.value.heroImageDark===void 0?f:ae(Fo,()=>f)};return(f,d)=>(H(),Z("header",dp,[ee(u),l.value?(H(),Z("h1",pp,Re(l.value),1)):Ce("v-if",!0),a.value?(H(),Z("p",hp,Re(a.value),1)):Ce("v-if",!0),c.value.length?(H(),Z("p",mp,[(H(!0),Z(we,null,$t(c.value,g=>(H(),Ae(_t,{key:g.text,class:Ue(["action-button",[g.type]]),item:g},null,8,["class","item"]))),128))])):Ce("v-if",!0)]))}}),vp=xe(gp,[["__file","HomeHero.vue"]]),_p={class:"home"},bp=ue({__name:"Home",setup(e){return(t,n)=>(H(),Z("main",_p,[ee(vp),ee(op),ee(tp),ee(ap)]))}}),yp=xe(bp,[["__file","Home.vue"]]),wp=ue({__name:"NavbarBrand",setup(e){const t=qn(),n=Do(),r=ze(),o=zo(),s=j(()=>r.value.home||t.value),i=j(()=>n.value.title),l=j(()=>o.value&&r.value.logoDark!==void 0?r.value.logoDark:r.value.logo),a=()=>{if(!l.value)return null;const c=ae("img",{class:"logo",src:Ir(l.value),alt:i.value});return r.value.logoDark===void 0?c:ae(Fo,()=>c)};return(c,u)=>{const f=yt("RouterLink");return H(),Ae(f,{to:s.value},{default:Ne(()=>[ee(a),i.value?(H(),Z("span",{key:0,class:Ue(["site-name",{"can-hide":l.value}])},Re(i.value),3)):Ce("v-if",!0)]),_:1},8,["to"])}}}),kp=xe(wp,[["__file","NavbarBrand.vue"]]),Ep=ue({__name:"DropdownTransition",setup(e){const t=r=>{r.style.height=r.scrollHeight+"px"},n=r=>{r.style.height=""};return(r,o)=>(H(),Ae(Wn,{name:"dropdown",onEnter:t,onAfterEnter:n,onBeforeLeave:t},{default:Ne(()=>[ye(r.$slots,"default")]),_:3}))}}),Hl=xe(Ep,[["__file","DropdownTransition.vue"]]),xp=["aria-label"],Cp={class:"title"},Lp=pe("span",{class:"arrow down"},null,-1),Sp=["aria-label"],Ap={class:"title"},Tp={class:"navbar-dropdown"},Pp={class:"navbar-dropdown-subtitle"},Rp={key:1},Op={class:"navbar-dropdown-subitem-wrapper"},Ip=ue({__name:"NavbarDropdown",props:{item:{type:Object,required:!0}},setup(e){const t=e,{item:n}=Cr(t),r=j(()=>n.value.ariaLabel||n.value.text),o=ve(!1),s=Gt();st(()=>s.path,()=>{o.value=!1});const i=a=>{a.detail===0?o.value=!o.value:o.value=!1},l=(a,c)=>c[c.length-1]===a;return(a,c)=>(H(),Z("div",{class:Ue(["navbar-dropdown-wrapper",{open:o.value}])},[pe("button",{class:"navbar-dropdown-title",type:"button","aria-label":r.value,onClick:i},[pe("span",Cp,Re(X(n).text),1),Lp],8,xp),pe("button",{class:"navbar-dropdown-title-mobile",type:"button","aria-label":r.value,onClick:c[0]||(c[0]=u=>o.value=!o.value)},[pe("span",Ap,Re(X(n).text),1),pe("span",{class:Ue(["arrow",o.value?"down":"right"])},null,2)],8,Sp),ee(Hl,null,{default:Ne(()=>[pr(pe("ul",Tp,[(H(!0),Z(we,null,$t(X(n).children,u=>(H(),Z("li",{key:u.text,class:"navbar-dropdown-item"},[u.children?(H(),Z(we,{key:0},[pe("h4",Pp,[u.link?(H(),Ae(_t,{key:0,item:u,onFocusout:f=>l(u,X(n).children)&&u.children.length===0&&(o.value=!1)},null,8,["item","onFocusout"])):(H(),Z("span",Rp,Re(u.text),1))]),pe("ul",Op,[(H(!0),Z(we,null,$t(u.children,f=>(H(),Z("li",{key:f.link,class:"navbar-dropdown-subitem"},[ee(_t,{item:f,onFocusout:d=>l(f,u.children)&&l(u,X(n).children)&&(o.value=!1)},null,8,["item","onFocusout"])]))),128))])],64)):(H(),Ae(_t,{key:1,item:u,onFocusout:f=>l(u,X(n).children)&&(o.value=!1)},null,8,["item","onFocusout"]))]))),128))],512),[[_r,o.value]])]),_:1})],2))}}),$p=xe(Ip,[["__file","NavbarDropdown.vue"]]),ni=e=>decodeURI(e).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),Mp=(e,t)=>{if(t.hash===e)return!0;const n=ni(t.path),r=ni(e);return n===r},jl=(e,t)=>e.link&&Mp(e.link,t)?!0:e.children?e.children.some(n=>jl(n,t)):!1,Bl=e=>!Un(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,Np={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},Dp=({docsRepo:e,editLinkPattern:t})=>{if(t)return t;const n=Bl(e);return n!==null?Np[n]:null},Fp=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:o})=>{if(!r)return null;const s=Dp({docsRepo:e,editLinkPattern:o});return s?s.replace(/:repo/,Un(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,il(`${sl(n)}/${r}`)):null},Hp={key:0,class:"navbar-items"},jp=ue({__name:"NavbarItems",setup(e){const t=()=>{const u=Yt(),f=qn(),d=hl(),g=Do(),y=jd(),k=ze();return j(()=>{const L=Object.keys(d.value.locales);if(L.length<2)return[];const v=u.currentRoute.value.path,b=u.currentRoute.value.fullPath;return[{text:`${k.value.selectLanguageText}`,ariaLabel:`${k.value.selectLanguageAriaLabel??k.value.selectLanguageText}`,children:L.map(A=>{var D,V;const W=((D=d.value.locales)==null?void 0:D[A])??{},Q=((V=y.value.locales)==null?void 0:V[A])??{},$=`${W.lang}`,m=Q.selectLanguageName??$;let z;if($===g.value.lang)z=b;else{const C=v.replace(f.value,A);u.getRoutes().some(O=>O.path===C)?z=b.replace(v,C):z=Q.home??A}return{text:m,link:z}})}]})},n=()=>{const u=ze(),f=j(()=>u.value.repo),d=j(()=>f.value?Bl(f.value):null),g=j(()=>f.value&&!Un(f.value)?`https://github.com/${f.value}`:f.value),y=j(()=>g.value?u.value.repoLabel?u.value.repoLabel:d.value===null?"Source":d.value:null);return j(()=>!g.value||!y.value?[]:[{text:y.value,link:g.value}])},r=u=>me(u)?Ko(u):u.children?{...u,children:u.children.map(r)}:u,o=()=>{const u=ze();return j(()=>(u.value.navbar||[]).map(r))},s=ve(!1),i=o(),l=t(),a=n(),c=j(()=>[...i.value,...l.value,...a.value]);return Fl(Nn.MOBILE,u=>{window.innerWidthc.value.length?(H(),Z("nav",Hp,[(H(!0),Z(we,null,$t(c.value,d=>(H(),Z("div",{key:d.text,class:"navbar-item"},[d.children?(H(),Ae($p,{key:0,item:d,class:Ue(s.value?"mobile":"")},null,8,["item","class"])):(H(),Ae(_t,{key:1,item:d},null,8,["item"]))]))),128))])):Ce("v-if",!0)}}),zl=xe(jp,[["__file","NavbarItems.vue"]]),Bp=["title"],zp={class:"icon",focusable:"false",viewBox:"0 0 32 32"},Kp=Dc('',9),Wp=[Kp],Up={class:"icon",focusable:"false",viewBox:"0 0 32 32"},qp=pe("path",{d:"M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z",fill:"currentColor"},null,-1),Vp=[qp],Jp=ue({__name:"ToggleColorModeButton",setup(e){const t=ze(),n=zo(),r=()=>{n.value=!n.value};return(o,s)=>(H(),Z("button",{class:"toggle-color-mode-button",title:X(t).toggleColorMode,onClick:r},[pr((H(),Z("svg",zp,Wp,512)),[[_r,!X(n)]]),pr((H(),Z("svg",Up,Vp,512)),[[_r,X(n)]])],8,Bp))}}),Yp=xe(Jp,[["__file","ToggleColorModeButton.vue"]]),Gp=["title"],Qp=pe("div",{class:"icon","aria-hidden":"true"},[pe("span"),pe("span"),pe("span")],-1),Zp=[Qp],Xp=ue({__name:"ToggleSidebarButton",emits:["toggle"],setup(e){const t=ze();return(n,r)=>(H(),Z("div",{class:"toggle-sidebar-button",title:X(t).toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:r[0]||(r[0]=o=>n.$emit("toggle"))},Zp,8,Gp))}}),eh=xe(Xp,[["__file","ToggleSidebarButton.vue"]]),th=ue({__name:"Navbar",emits:["toggle-sidebar"],setup(e){const t=ze(),n=ve(null),r=ve(null),o=ve(0),s=j(()=>o.value?{maxWidth:o.value+"px"}:{});Fl(Nn.MOBILE,l=>{var c;const a=i(n.value,"paddingLeft")+i(n.value,"paddingRight");window.innerWidth{const c=yt("NavbarSearch");return H(),Z("header",{ref_key:"navbar",ref:n,class:"navbar"},[ee(eh,{onToggle:a[0]||(a[0]=u=>l.$emit("toggle-sidebar"))}),pe("span",{ref_key:"navbarBrand",ref:r},[ee(kp)],512),pe("div",{class:"navbar-items-wrapper",style:Fn(s.value)},[ye(l.$slots,"before"),ee(zl,{class:"can-hide"}),ye(l.$slots,"after"),X(t).colorModeSwitch?(H(),Ae(Yp,{key:0})):Ce("v-if",!0),ee(c)],4)],512)}}}),nh=xe(th,[["__file","Navbar.vue"]]),rh={class:"page-meta"},oh={key:0,class:"meta-item edit-link"},sh={key:1,class:"meta-item last-updated"},ih={class:"meta-item-label"},lh={class:"meta-item-info"},ah={key:2,class:"meta-item contributors"},ch={class:"meta-item-label"},uh={class:"meta-item-info"},fh=["title"],dh=ue({__name:"PageMeta",setup(e){const t=()=>{const a=ze(),c=Vt(),u=vt();return j(()=>{if(!(u.value.editLink??a.value.editLink??!0))return null;const{repo:d,docsRepo:g=d,docsBranch:y="main",docsDir:k="",editLinkText:L}=a.value;if(!g)return null;const v=Fp({docsRepo:g,docsBranch:y,docsDir:k,filePathRelative:c.value.filePathRelative,editLinkPattern:u.value.editLinkPattern??a.value.editLinkPattern});return v?{text:L??"Edit this page",link:v}:null})},n=()=>{const a=ze(),c=Vt(),u=vt();return j(()=>{var g,y;return!(u.value.lastUpdated??a.value.lastUpdated??!0)||!((g=c.value.git)!=null&&g.updatedTime)?null:new Date((y=c.value.git)==null?void 0:y.updatedTime).toLocaleString()})},r=()=>{const a=ze(),c=Vt(),u=vt();return j(()=>{var d;return u.value.contributors??a.value.contributors??!0?((d=c.value.git)==null?void 0:d.contributors)??null:null})},o=ze(),s=t(),i=n(),l=r();return(a,c)=>{const u=yt("ClientOnly");return H(),Z("footer",rh,[X(s)?(H(),Z("div",oh,[ee(_t,{class:"meta-item-label",item:X(s)},null,8,["item"])])):Ce("v-if",!0),X(i)?(H(),Z("div",sh,[pe("span",ih,Re(X(o).lastUpdatedText)+": ",1),ee(u,null,{default:Ne(()=>[pe("span",lh,Re(X(i)),1)]),_:1})])):Ce("v-if",!0),X(l)&&X(l).length?(H(),Z("div",ah,[pe("span",ch,Re(X(o).contributorsText)+": ",1),pe("span",uh,[(H(!0),Z(we,null,$t(X(l),(f,d)=>(H(),Z(we,{key:d},[pe("span",{class:"contributor",title:`email: ${f.email}`},Re(f.name),9,fh),d!==X(l).length-1?(H(),Z(we,{key:0},[Nt(", ")],64)):Ce("v-if",!0)],64))),128))])])):Ce("v-if",!0)])}}}),ph=xe(dh,[["__file","PageMeta.vue"]]),hh={key:0,class:"page-nav"},mh={class:"inner"},gh={key:0,class:"prev"},vh={key:1,class:"next"},_h=ue({__name:"PageNav",setup(e){const t=a=>a===!1?null:me(a)?Ko(a):Mo(a)?a:!1,n=(a,c,u)=>{const f=a.findIndex(d=>d.link===c);if(f!==-1){const d=a[f+u];return d!=null&&d.link?d:null}for(const d of a)if(d.children){const g=n(d.children,c,u);if(g)return g}return null},r=vt(),o=Wo(),s=Gt(),i=j(()=>{const a=t(r.value.prev);return a!==!1?a:n(o.value,s.path,-1)}),l=j(()=>{const a=t(r.value.next);return a!==!1?a:n(o.value,s.path,1)});return(a,c)=>i.value||l.value?(H(),Z("nav",hh,[pe("p",mh,[i.value?(H(),Z("span",gh,[ee(_t,{item:i.value},null,8,["item"])])):Ce("v-if",!0),l.value?(H(),Z("span",vh,[ee(_t,{item:l.value},null,8,["item"])])):Ce("v-if",!0)])])):Ce("v-if",!0)}}),bh=xe(_h,[["__file","PageNav.vue"]]),yh={class:"page"},wh={class:"theme-default-content"},kh=ue({__name:"Page",setup(e){return(t,n)=>{const r=yt("Content");return H(),Z("main",yh,[ye(t.$slots,"top"),pe("div",wh,[ye(t.$slots,"content-top"),ee(r),ye(t.$slots,"content-bottom")]),ee(ph),ee(bh),ye(t.$slots,"bottom")])}}}),Eh=xe(kh,[["__file","Page.vue"]]),xh=["onKeydown"],Ch={class:"sidebar-item-children"},Lh=ue({__name:"SidebarItem",props:{item:{type:Object,required:!0},depth:{type:Number,required:!1,default:0}},setup(e){const t=e,{item:n,depth:r}=Cr(t),o=Gt(),s=Yt(),i=j(()=>jl(n.value,o)),l=j(()=>({"sidebar-item":!0,"sidebar-heading":r.value===0,active:i.value,collapsible:n.value.collapsible})),a=j(()=>n.value.collapsible?i.value:!0),[c,u]=Ad(a.value),f=g=>{n.value.collapsible&&(g.preventDefault(),u())},d=s.afterEach(g=>{Lr(()=>{c.value=a.value})});return Kn(()=>{d()}),(g,y)=>{var L;const k=yt("SidebarItem",!0);return H(),Z("li",null,[X(n).link?(H(),Ae(_t,{key:0,class:Ue(l.value),item:X(n)},null,8,["class","item"])):(H(),Z("p",{key:1,tabindex:"0",class:Ue(l.value),onClick:f,onKeydown:bu(f,["enter"])},[Nt(Re(X(n).text)+" ",1),X(n).collapsible?(H(),Z("span",{key:0,class:Ue(["arrow",X(c)?"down":"right"])},null,2)):Ce("v-if",!0)],42,xh)),(L=X(n).children)!=null&&L.length?(H(),Ae(Hl,{key:2},{default:Ne(()=>[pr(pe("ul",Ch,[(H(!0),Z(we,null,$t(X(n).children,v=>(H(),Ae(k,{key:`${X(r)}${v.text}${v.link}`,item:v,depth:X(r)+1},null,8,["item","depth"]))),128))],512),[[_r,X(c)]])]),_:1})):Ce("v-if",!0)])}}}),Sh=xe(Lh,[["__file","SidebarItem.vue"]]),Ah={key:0,class:"sidebar-items"},Th=ue({__name:"SidebarItems",setup(e){const t=Gt(),n=Wo();return Ve(()=>{st(()=>t.hash,r=>{const o=document.querySelector(".sidebar");if(!o)return;const s=document.querySelector(`.sidebar a.sidebar-item[href="${t.path}${r}"]`);if(!s)return;const{top:i,height:l}=o.getBoundingClientRect(),{top:a,height:c}=s.getBoundingClientRect();ai+l&&s.scrollIntoView(!1)})}),(r,o)=>X(n).length?(H(),Z("ul",Ah,[(H(!0),Z(we,null,$t(X(n),s=>(H(),Ae(Sh,{key:`${s.text}${s.link}`,item:s},null,8,["item"]))),128))])):Ce("v-if",!0)}}),Ph=xe(Th,[["__file","SidebarItems.vue"]]),Rh={class:"sidebar"},Oh=ue({__name:"Sidebar",setup(e){return(t,n)=>(H(),Z("aside",Rh,[ee(zl),ye(t.$slots,"top"),ee(Ph),ye(t.$slots,"bottom")]))}}),Ih=xe(Oh,[["__file","Sidebar.vue"]]),$h=ue({__name:"Layout",setup(e){const t=Vt(),n=vt(),r=ze(),o=j(()=>n.value.navbar!==!1&&r.value.navbar!==!1),s=Wo(),i=ve(!1),l=L=>{i.value=typeof L=="boolean"?L:!i.value},a={x:0,y:0},c=L=>{a.x=L.changedTouches[0].clientX,a.y=L.changedTouches[0].clientY},u=L=>{const v=L.changedTouches[0].clientX-a.x,b=L.changedTouches[0].clientY-a.y;Math.abs(v)>Math.abs(b)&&Math.abs(v)>40&&(v>0&&a.x<=80?l(!0):l(!1))},f=j(()=>[{"no-navbar":!o.value,"no-sidebar":!s.value.length,"sidebar-open":i.value},n.value.pageClass]);let d;Ve(()=>{d=Yt().afterEach(()=>{l(!1)})}),Pr(()=>{d()});const g=Ml(),y=g.resolve,k=g.pending;return(L,v)=>(H(),Z("div",{class:Ue(["theme-container",f.value]),onTouchstart:c,onTouchend:u},[ye(L.$slots,"navbar",{},()=>[o.value?(H(),Ae(nh,{key:0,onToggleSidebar:l},{before:Ne(()=>[ye(L.$slots,"navbar-before")]),after:Ne(()=>[ye(L.$slots,"navbar-after")]),_:3})):Ce("v-if",!0)]),pe("div",{class:"sidebar-mask",onClick:v[0]||(v[0]=b=>l(!1))}),ye(L.$slots,"sidebar",{},()=>[ee(Ih,null,{top:Ne(()=>[ye(L.$slots,"sidebar-top")]),bottom:Ne(()=>[ye(L.$slots,"sidebar-bottom")]),_:3})]),ye(L.$slots,"page",{},()=>[X(n).home?(H(),Ae(yp,{key:0})):(H(),Ae(Wn,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:X(y),onBeforeLeave:X(k)},{default:Ne(()=>[(H(),Ae(Eh,{key:X(t).path},{top:Ne(()=>[ye(L.$slots,"page-top")]),"content-top":Ne(()=>[ye(L.$slots,"page-content-top")]),"content-bottom":Ne(()=>[ye(L.$slots,"page-content-bottom")]),bottom:Ne(()=>[ye(L.$slots,"page-bottom")]),_:3}))]),_:3},8,["onBeforeEnter","onBeforeLeave"]))])],34))}}),Mh=xe($h,[["__file","Layout.vue"]]),Nh={class:"theme-container"},Dh={class:"page"},Fh={class:"theme-default-content"},Hh=pe("h1",null,"404",-1),jh=ue({__name:"NotFound",setup(e){const t=qn(),n=ze(),r=n.value.notFound??["Not Found"],o=()=>r[Math.floor(Math.random()*r.length)],s=n.value.home??t.value,i=n.value.backToHome??"Back to home";return(l,a)=>{const c=yt("RouterLink");return H(),Z("div",Nh,[pe("main",Dh,[pe("div",Fh,[Hh,pe("blockquote",null,Re(o()),1),ee(c,{to:X(s)},{default:Ne(()=>[Nt(Re(X(i)),1)]),_:1},8,["to"])])])])}}}),Bh=xe(jh,[["__file","NotFound.vue"]]);const zh=dt({enhance({app:e,router:t}){e.component("Badge",pd),e.component("CodeGroup",hd),e.component("CodeGroupItem",_d),e.component("AutoLinkExternalIcon",()=>{const r=e.component("ExternalLinkIcon");return r?ae(r):null}),e.component("NavbarSearch",()=>{const r=e.component("Docsearch")||e.component("SearchBox");return r?ae(r):null});const n=t.options.scrollBehavior;t.options.scrollBehavior=async(...r)=>(await Ml().wait(),n(...r))},setup(){Bd(),Wd()},layouts:{Layout:Mh,NotFound:Bh}}),Kh=e=>e instanceof Element?document.activeElement===e&&(["TEXTAREA","SELECT","INPUT"].includes(e.tagName)||e.hasAttribute("contenteditable")):!1,Wh=(e,t)=>t.some(n=>{if(me(n))return n===e.key;const{key:r,ctrl:o=!1,shift:s=!1,alt:i=!1}=n;return r===e.key&&o===e.ctrlKey&&s===e.shiftKey&&i===e.altKey}),Uh=/[^\x00-\x7F]/,qh=e=>e.split(/\s+/g).map(t=>t.trim()).filter(t=>!!t),ri=e=>e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),oi=(e,t)=>{const n=t.join(" "),r=qh(e);if(Uh.test(e))return r.some(i=>n.toLowerCase().indexOf(i)>-1);const o=e.endsWith(" ");return new RegExp(r.map((i,l)=>r.length===l+1&&!o?`(?=.*\\b${ri(i)})`:`(?=.*\\b${ri(i)}\\b)`).join("")+".+","gi").test(n)},Vh=({input:e,hotKeys:t})=>{if(t.value.length===0)return;const n=r=>{e.value&&Wh(r,t.value)&&!Kh(r.target)&&(r.preventDefault(),e.value.focus())};Ve(()=>{document.addEventListener("keydown",n)}),Kn(()=>{document.removeEventListener("keydown",n)})},Jh=[{title:"Welcome",headers:[{level:2,title:"Who we are",slug:"who-we-are",link:"#who-we-are",children:[]},{level:2,title:"Prerequisites",slug:"prerequisites",link:"#prerequisites",children:[]},{level:2,title:"Useful links",slug:"useful-links",link:"#useful-links",children:[]}],path:"/",pathLocale:"/",extraFields:[]},{title:"Welcome",headers:[{level:2,title:"Who we are",slug:"who-we-are",link:"#who-we-are",children:[]},{level:2,title:"Prerequisites",slug:"prerequisites",link:"#prerequisites",children:[]},{level:2,title:"Useful links",slug:"useful-links",link:"#useful-links",children:[]}],path:"/en/",pathLocale:"/en/",extraFields:[]},{title:"",headers:[{level:2,title:"Prerequisites",slug:"prerequisites",link:"#prerequisites",children:[]},{level:2,title:"Liens utiles",slug:"liens-utiles",link:"#liens-utiles",children:[]}],path:"/fr/",pathLocale:"/fr/",extraFields:[]},{title:"Backend development",headers:[{level:2,title:"Ktor",slug:"ktor",link:"#ktor",children:[{level:3,title:"PW: develop an API with Ktor",slug:"pw-develop-an-api-with-ktor",link:"#pw-develop-an-api-with-ktor",children:[]}]},{level:2,title:"nodejs",slug:"nodejs",link:"#nodejs",children:[{level:3,title:"PW: Rest API with Kotlin/JS and Express",slug:"pw-rest-api-with-kotlin-js-and-express",link:"#pw-rest-api-with-kotlin-js-and-express",children:[]}]},{level:2,title:"Spring framework",slug:"spring-framework",link:"#spring-framework",children:[{level:3,title:"PW: Spring boot part 1 - develop the same API with Spring Boot",slug:"pw-spring-boot-part-1-develop-the-same-api-with-spring-boot",link:"#pw-spring-boot-part-1-develop-the-same-api-with-spring-boot",children:[]},{level:3,title:"PW: Spring boot part 2 - adding a database",slug:"pw-spring-boot-part-2-adding-a-database",link:"#pw-spring-boot-part-2-adding-a-database",children:[]},{level:3,title:"PW: Spring boot part 2 - adding tests",slug:"pw-spring-boot-part-2-adding-tests",link:"#pw-spring-boot-part-2-adding-tests",children:[]},{level:3,title:"Completed projects",slug:"completed-projects",link:"#completed-projects",children:[]}]},{level:2,title:"Going further",slug:"going-further",link:"#going-further",children:[]},{level:2,title:"Links and references",slug:"links-and-references",link:"#links-and-references",children:[]}],path:"/en/backend-development/",pathLocale:"/en/",extraFields:[]},{title:"Frontend development",headers:[{level:2,title:"KMP & KMM",slug:"kmp-kmm",link:"#kmp-kmm",children:[]},{level:2,title:"Kotlin/JS and Kotlin/WASM",slug:"kotlin-js-and-kotlin-wasm",link:"#kotlin-js-and-kotlin-wasm",children:[{level:3,title:"PW: Kotlin/WASM web app",slug:"pw-kotlin-wasm-web-app",link:"#pw-kotlin-wasm-web-app",children:[]},{level:3,title:"PW: KotlinJS web app",slug:"pw-kotlinjs-web-app",link:"#pw-kotlinjs-web-app",children:[]}]},{level:2,title:"Compose",slug:"compose",link:"#compose",children:[{level:3,title:"PW: Compose web",slug:"pw-compose-web",link:"#pw-compose-web",children:[]},{level:3,title:"PW: Compose desktop + Android app",slug:"pw-compose-desktop-android-app",link:"#pw-compose-desktop-android-app",children:[]}]},{level:2,title:"Further reading",slug:"further-reading",link:"#further-reading",children:[]}],path:"/en/front-development/",pathLocale:"/en/",extraFields:[]},{title:"Kotlin language features",headers:[{level:2,title:"Basic features",slug:"basic-features",link:"#basic-features",children:[{level:3,title:"Basic constructs (variables, control flow)",slug:"basic-constructs-variables-control-flow",link:"#basic-constructs-variables-control-flow",children:[]},{level:3,title:"Functions",slug:"functions",link:"#functions",children:[]},{level:3,title:"Null safety",slug:"null-safety",link:"#null-safety",children:[]},{level:3,title:"Enumerations",slug:"enumerations",link:"#enumerations",children:[]},{level:3,title:"Exercises",slug:"exercises",link:"#exercises",children:[]}]},{level:2,title:"Intermediate features",slug:"intermediate-features",link:"#intermediate-features",children:[{level:3,title:"Object oriented programming",slug:"object-oriented-programming",link:"#object-oriented-programming",children:[]},{level:3,title:"Data class",slug:"data-class",link:"#data-class",children:[]},{level:3,title:"Functional programming",slug:"functional-programming",link:"#functional-programming",children:[]},{level:3,title:"Kotlin and Java interoperability",slug:"kotlin-and-java-interoperability",link:"#kotlin-and-java-interoperability",children:[]},{level:3,title:"Exercises",slug:"exercises-1",link:"#exercises-1",children:[]}]},{level:2,title:"More Exercises and reading",slug:"more-exercises-and-reading",link:"#more-exercises-and-reading",children:[]}],path:"/en/kotlin-features/",pathLocale:"/en/",extraFields:[]},{title:"Advanced and other Kotlin features",headers:[{level:2,title:"Delegated properties",slug:"delegated-properties",link:"#delegated-properties",children:[]},{level:2,title:"Concurrency and Coroutines",slug:"concurrency-and-coroutines",link:"#concurrency-and-coroutines",children:[]},{level:2,title:"Function literal with receiver and Type-safe builders",slug:"function-literal-with-receiver-and-type-safe-builders",link:"#function-literal-with-receiver-and-type-safe-builders",children:[]},{level:2,title:"Exercises",slug:"exercises",link:"#exercises",children:[{level:3,title:"Exercise 1",slug:"exercise-1",link:"#exercise-1",children:[]}]}],path:"/en/kotlin-features-advanced/",pathLocale:"/en/",extraFields:[]},{title:"Cross-plaform and Fullstack app Codelab",headers:[{level:2,title:"PW : Cross-platform app + KMM + KMP for Android, iOS and Desktop",slug:"pw-cross-platform-app-kmm-kmp-for-android-ios-and-desktop",link:"#pw-cross-platform-app-kmm-kmp-for-android-ios-and-desktop",children:[]},{level:2,title:"PW : Add a Ktor server App",slug:"pw-add-a-ktor-server-app",link:"#pw-add-a-ktor-server-app",children:[]},{level:2,title:"PW: Add a Compose for Web Canvas target (experimental)",slug:"pw-add-a-compose-for-web-canvas-target-experimental",link:"#pw-add-a-compose-for-web-canvas-target-experimental",children:[]},{level:2,title:"Going futher",slug:"going-futher",link:"#going-futher",children:[]},{level:2,title:"Sources and references",slug:"sources-and-references",link:"#sources-and-references",children:[]}],path:"/en/other-technologies/",pathLocale:"/en/",extraFields:[]},{title:"Presentation of Kotlin",headers:[{level:2,title:"Some features",slug:"some-features",link:"#some-features",children:[]},{level:2,title:"History",slug:"history",link:"#history",children:[]},{level:2,title:"Some numbers and facts",slug:"some-numbers-and-facts",link:"#some-numbers-and-facts",children:[]},{level:2,title:"Why switch from Java to Kotlin",slug:"why-switch-from-java-to-kotlin",link:"#why-switch-from-java-to-kotlin",children:[]},{level:2,title:"Prerequisites",slug:"prerequisites",link:"#prerequisites",children:[]},{level:2,title:"Sources and more reading",slug:"sources-and-more-reading",link:"#sources-and-more-reading",children:[]}],path:"/en/presentation/",pathLocale:"/en/",extraFields:[]},{title:"Workshops",headers:[{level:2,title:"Android makers 2023: Kotlin Beyond Android",slug:"android-makers-2023-kotlin-beyond-android",link:"#android-makers-2023-kotlin-beyond-android",children:[{level:3,title:"Link",slug:"link",link:"#link",children:[]},{level:3,title:"Agenda",slug:"agenda",link:"#agenda",children:[]}]},{level:2,title:"JNation 2023: Let's discover the possibilities of Kotlin",slug:"jnation-2023-let-s-discover-the-possibilities-of-kotlin",link:"#jnation-2023-let-s-discover-the-possibilities-of-kotlin",children:[{level:3,title:"Link",slug:"link-1",link:"#link-1",children:[]},{level:3,title:"Agenda",slug:"agenda-1",link:"#agenda-1",children:[]}]}],path:"/en/workshops/",pathLocale:"/en/",extraFields:[]},{title:"Développement du backend",headers:[{level:2,title:"Ktor",slug:"ktor",link:"#ktor",children:[{level:3,title:"TP : développer une API avec Ktor",slug:"tp-developper-une-api-avec-ktor",link:"#tp-developper-une-api-avec-ktor",children:[]}]},{level:2,title:"nodejs",slug:"nodejs",link:"#nodejs",children:[{level:3,title:"TP : API Rest avec Kotlin/JS et Express",slug:"tp-api-rest-avec-kotlin-js-et-express",link:"#tp-api-rest-avec-kotlin-js-et-express",children:[]}]},{level:2,title:"Spring framework",slug:"spring-framework",link:"#spring-framework",children:[{level:3,title:"TP : Spring boot part 1 - développer la même API avec Spring Boot",slug:"tp-spring-boot-part-1-developper-la-meme-api-avec-spring-boot",link:"#tp-spring-boot-part-1-developper-la-meme-api-avec-spring-boot",children:[]},{level:3,title:"TP : Spring boot partie 2 - ajouter une base de données",slug:"tp-spring-boot-partie-2-ajouter-une-base-de-donnees",link:"#tp-spring-boot-partie-2-ajouter-une-base-de-donnees",children:[]},{level:3,title:"TP : Spring boot partie 3 - ajouter des tests",slug:"tp-spring-boot-partie-3-ajouter-des-tests",link:"#tp-spring-boot-partie-3-ajouter-des-tests",children:[]},{level:3,title:"Projets terminés",slug:"projets-termines",link:"#projets-termines",children:[]}]},{level:2,title:"Aller plus loin",slug:"aller-plus-loin",link:"#aller-plus-loin",children:[]},{level:2,title:"Lien et références",slug:"lien-et-references",link:"#lien-et-references",children:[]}],path:"/fr/backend-development/",pathLocale:"/fr/",extraFields:[]},{title:"Développement frontend",headers:[{level:2,title:"KMP & KMM",slug:"kmp-kmm",link:"#kmp-kmm",children:[]},{level:2,title:"Kotlin/JS et Kotlin/WASM",slug:"kotlin-js-et-kotlin-wasm",link:"#kotlin-js-et-kotlin-wasm",children:[{level:3,title:"TP : Application web Kotlin/WASM",slug:"tp-application-web-kotlin-wasm",link:"#tp-application-web-kotlin-wasm",children:[]},{level:3,title:"PW : Application web KotlinJS",slug:"pw-application-web-kotlinjs",link:"#pw-application-web-kotlinjs",children:[]}]},{level:2,title:"Compose",slug:"compose",link:"#compose",children:[{level:3,title:"TP : Compose Web",slug:"tp-compose-web",link:"#tp-compose-web",children:[]},{level:3,title:"TP : Compose desktop + Android app",slug:"tp-compose-desktop-android-app",link:"#tp-compose-desktop-android-app",children:[]}]},{level:2,title:"Pour aller plus loin",slug:"pour-aller-plus-loin",link:"#pour-aller-plus-loin",children:[]}],path:"/fr/front-development/",pathLocale:"/fr/",extraFields:[]},{title:"Fonctionnalités du langage Kotlin",headers:[{level:2,title:"Caractéristiques de base",slug:"caracteristiques-de-base",link:"#caracteristiques-de-base",children:[{level:3,title:"Constructions de base (variables, flux de contrôle)",slug:"constructions-de-base-variables-flux-de-controle",link:"#constructions-de-base-variables-flux-de-controle",children:[]},{level:3,title:"Les fonctions",slug:"les-fonctions",link:"#les-fonctions",children:[]},{level:3,title:"Null safety",slug:"null-safety",link:"#null-safety",children:[]},{level:3,title:"Énumérations",slug:"enumerations",link:"#enumerations",children:[]},{level:3,title:"Exercices",slug:"exercices",link:"#exercices",children:[]}]},{level:2,title:"Fonctionnalités intermédiaires",slug:"fonctionnalites-intermediaires",link:"#fonctionnalites-intermediaires",children:[{level:3,title:"Programmation orientée objet",slug:"programmation-orientee-objet",link:"#programmation-orientee-objet",children:[]},{level:3,title:"Data class",slug:"data-class",link:"#data-class",children:[]},{level:3,title:"Programmation fonctionnelle",slug:"programmation-fonctionnelle",link:"#programmation-fonctionnelle",children:[]},{level:3,title:"Kotlin and Java interoperability",slug:"kotlin-and-java-interoperability",link:"#kotlin-and-java-interoperability",children:[]},{level:3,title:"Exercices",slug:"exercices-1",link:"#exercices-1",children:[]}]},{level:2,title:"Plus d'exercices et de lecture",slug:"plus-d-exercices-et-de-lecture",link:"#plus-d-exercices-et-de-lecture",children:[]}],path:"/fr/kotlin-features/",pathLocale:"/fr/",extraFields:[]},{title:"Fonctionnalités avancées de Kotlin",headers:[{level:2,title:"Propriétés déléguées",slug:"proprietes-deleguees",link:"#proprietes-deleguees",children:[]},{level:2,title:"Concurrence et coroutines",slug:"concurrence-et-coroutines",link:"#concurrence-et-coroutines",children:[]},{level:2,title:"Littéral de fonction avec récepteur et constructeurs de type sécurisé",slug:"litteral-de-fonction-avec-recepteur-et-constructeurs-de-type-securise",link:"#litteral-de-fonction-avec-recepteur-et-constructeurs-de-type-securise",children:[]},{level:2,title:"Exercises",slug:"exercises",link:"#exercises",children:[{level:3,title:"Exercise 1",slug:"exercise-1",link:"#exercise-1",children:[]}]}],path:"/fr/kotlin-features-advanced/",pathLocale:"/fr/",extraFields:[]},{title:"Application multiplateforme et Fullstack Codelab",headers:[{level:2,title:"TP : Application multiplateforme + KMM + KMP pour Android, iOS et ordinateur de bureau",slug:"tp-application-multiplateforme-kmm-kmp-pour-android-ios-et-ordinateur-de-bureau",link:"#tp-application-multiplateforme-kmm-kmp-pour-android-ios-et-ordinateur-de-bureau",children:[]},{level:2,title:"PW : Ajouter une application serveur Ktor",slug:"pw-ajouter-une-application-serveur-ktor",link:"#pw-ajouter-une-application-serveur-ktor",children:[]},{level:2,title:"PW : Ajouter une cible Compose for Web Canvas (expérimental)",slug:"pw-ajouter-une-cible-compose-for-web-canvas-experimental",link:"#pw-ajouter-une-cible-compose-for-web-canvas-experimental",children:[]}],path:"/fr/other-technologies/",pathLocale:"/fr/",extraFields:[]},{title:"Présentation de Kotlin",headers:[{level:2,title:"Certaines fonctionnalités",slug:"certaines-fonctionnalites",link:"#certaines-fonctionnalites",children:[]},{level:2,title:"Histoire",slug:"histoire",link:"#histoire",children:[]},{level:2,title:"Quelques chiffres et faits",slug:"quelques-chiffres-et-faits",link:"#quelques-chiffres-et-faits",children:[]},{level:2,title:"Pourquoi passer de Java à Kotlin",slug:"pourquoi-passer-de-java-a-kotlin",link:"#pourquoi-passer-de-java-a-kotlin",children:[]},{level:2,title:"Sources et plus de lecture",slug:"sources-et-plus-de-lecture",link:"#sources-et-plus-de-lecture",children:[]}],path:"/fr/presentation/",pathLocale:"/fr/",extraFields:[]},{title:"Workshops",headers:[{level:2,title:"Android makers 2023: Kotlin Beyond Android",slug:"android-makers-2023-kotlin-beyond-android",link:"#android-makers-2023-kotlin-beyond-android",children:[{level:3,title:"Liens",slug:"liens",link:"#liens",children:[]},{level:3,title:"Agenda",slug:"agenda",link:"#agenda",children:[]}]}],path:"/fr/workshops/",pathLocale:"/fr/",extraFields:[]},{title:"",headers:[],path:"/404.html",pathLocale:"/",extraFields:[]}],Yh=ve(Jh),Gh=()=>Yh,Qh=({searchIndex:e,routeLocale:t,query:n,maxSuggestions:r})=>{const o=j(()=>e.value.filter(s=>s.pathLocale===t.value));return j(()=>{const s=n.value.trim().toLowerCase();if(!s)return[];const i=[],l=(a,c)=>{oi(s,[c.title])&&i.push({link:`${a.path}#${c.slug}`,title:a.title,header:c.title});for(const u of c.children){if(i.length>=r.value)return;l(a,u)}};for(const a of o.value){if(i.length>=r.value)break;if(oi(s,[a.title,...a.extraFields])){i.push({link:a.path,title:a.title});continue}for(const c of a.headers){if(i.length>=r.value)break;l(a,c)}}return i})},Zh=e=>{const t=ve(0);return{focusIndex:t,focusNext:()=>{t.value{t.value>0?t.value-=1:t.value=e.value.length-1}}},Xh=ue({name:"SearchBox",props:{locales:{type:Object,required:!1,default:()=>({})},hotKeys:{type:Array,required:!1,default:()=>[]},maxSuggestions:{type:Number,required:!1,default:5}},setup(e){const{locales:t,hotKeys:n,maxSuggestions:r}=Cr(e),o=Yt(),s=qn(),i=Gh(),l=ve(null),a=ve(!1),c=ve(""),u=j(()=>t.value[s.value]??{}),f=Qh({searchIndex:i,routeLocale:s,query:c,maxSuggestions:r}),{focusIndex:d,focusNext:g,focusPrev:y}=Zh(f);Vh({input:l,hotKeys:n});const k=j(()=>a.value&&!!f.value.length),L=()=>{k.value&&y()},v=()=>{k.value&&g()},b=T=>{if(!k.value)return;const A=f.value[T];A&&o.push(A.link).then(()=>{c.value="",d.value=0})};return()=>ae("form",{class:"search-box",role:"search"},[ae("input",{ref:l,type:"search",placeholder:u.value.placeholder,autocomplete:"off",spellcheck:!1,value:c.value,onFocus:()=>a.value=!0,onBlur:()=>a.value=!1,onInput:T=>c.value=T.target.value,onKeydown:T=>{switch(T.key){case"ArrowUp":{L();break}case"ArrowDown":{v();break}case"Enter":{T.preventDefault(),b(d.value);break}}}}),k.value&&ae("ul",{class:"suggestions",onMouseleave:()=>d.value=-1},f.value.map(({link:T,title:A,header:W},Q)=>ae("li",{class:["suggestion",{focus:d.value===Q}],onMouseenter:()=>d.value=Q,onMousedown:()=>b(Q)},ae("a",{href:T,onClick:$=>$.preventDefault()},[ae("span",{class:"page-title"},A),W&&ae("span",{class:"page-header"},`> ${W}`)]))))])}});const em={"/en/":{placeholder:"Search"},"/fr/":{placeholder:"Rechercher"}},tm=["s","/"],nm=5,rm=dt({enhance({app:e}){e.component("SearchBox",t=>ae(Xh,{locales:em,hotKeys:tm,maxSuggestions:nm,...t}))}});function om(e){return{all:e=e||new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map(function(o){o(n)}),(r=e.get("*"))&&r.slice().map(function(o){o(t,n)})}}}const sm=Symbol("pwaEvent"),im="service-worker.js",lm=dt({setup(){const e=(...n)=>console.log("[@vuepress/plugin-pwa]",...n),t=om();Ot(sm,t),Ve(async()=>{const{register:n}=await ie(()=>import("./index-e32a7948.js"),[]);n(Ir(im),{ready(r){e("Service worker is active."),t.emit("ready",r)},registered(r){e("Service worker has been registered."),t.emit("registered",r)},cached(r){e("Content has been cached for offline use."),t.emit("cached",r)},updatefound(r){e("New content is downloading."),t.emit("updatefound",r)},updated(r){e("New content is available, please refresh."),t.emit("updated",r)},offline(){e("No internet connection found. App is running in offline mode."),t.emit("offline")},error(r){e("Error during service worker registration:",r),t.emit("error",r)}})})}});/*! medium-zoom 1.0.8 | MIT License | https://github.com/francoischalifour/medium-zoom */var jt=Object.assign||function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{},r=window.Promise||function(C){function O(){}C(O,O)},o=function(C){var O=C.target;if(O===z){y();return}T.indexOf(O)!==-1&&k({target:O})},s=function(){if(!(W||!m.original)){var C=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(Q-C)>$.scrollOffset&&setTimeout(y,150)}},i=function(C){var O=C.key||C.keyCode;(O==="Escape"||O==="Esc"||O===27)&&y()},l=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},O=C;if(C.background&&(z.style.background=C.background),C.container&&C.container instanceof Object&&(O.container=jt({},$.container,C.container)),C.template){var I=lr(C.template)?C.template:document.querySelector(C.template);O.template=I}return $=jt({},$,O),T.forEach(function(se){se.dispatchEvent(Xt("medium-zoom:update",{detail:{zoom:D}}))}),D},a=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e(jt({},$,C))},c=function(){for(var C=arguments.length,O=Array(C),I=0;I0?O.reduce(function(K,ne){return[].concat(K,ii(ne))},[]):T;return se.forEach(function(K){K.classList.remove("medium-zoom-image"),K.dispatchEvent(Xt("medium-zoom:detach",{detail:{zoom:D}}))}),T=T.filter(function(K){return se.indexOf(K)===-1}),D},f=function(C,O){var I=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return T.forEach(function(se){se.addEventListener("medium-zoom:"+C,O,I)}),A.push({type:"medium-zoom:"+C,listener:O,options:I}),D},d=function(C,O){var I=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return T.forEach(function(se){se.removeEventListener("medium-zoom:"+C,O,I)}),A=A.filter(function(se){return!(se.type==="medium-zoom:"+C&&se.listener.toString()===O.toString())}),D},g=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},O=C.target,I=function(){var K={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},ne=void 0,re=void 0;if($.container)if($.container instanceof Object)K=jt({},K,$.container),ne=K.width-K.left-K.right-$.margin*2,re=K.height-K.top-K.bottom-$.margin*2;else{var Fe=lr($.container)?$.container:document.querySelector($.container),Me=Fe.getBoundingClientRect(),Ke=Me.width,He=Me.height,kt=Me.left,Et=Me.top;K=jt({},K,{width:Ke,height:He,left:kt,top:Et})}ne=ne||K.width-$.margin*2,re=re||K.height-$.margin*2;var lt=m.zoomedHd||m.original,Oe=si(lt)?ne:lt.naturalWidth||ne,E=si(lt)?re:lt.naturalHeight||re,B=lt.getBoundingClientRect(),M=B.top,q=B.left,ce=B.width,p=B.height,h=Math.min(Math.max(ce,Oe),ne)/ce,_=Math.min(Math.max(p,E),re)/p,w=Math.min(h,_),x=(-q+(ne-ce)/2+$.margin+K.left)/w,S=(-M+(re-p)/2+$.margin+K.top)/w,F="scale("+w+") translate3d("+x+"px, "+S+"px, 0)";m.zoomed.style.transform=F,m.zoomedHd&&(m.zoomedHd.style.transform=F)};return new r(function(se){if(O&&T.indexOf(O)===-1){se(D);return}var K=function Ke(){W=!1,m.zoomed.removeEventListener("transitionend",Ke),m.original.dispatchEvent(Xt("medium-zoom:opened",{detail:{zoom:D}})),se(D)};if(m.zoomed){se(D);return}if(O)m.original=O;else if(T.length>0){var ne=T;m.original=ne[0]}else{se(D);return}if(m.original.dispatchEvent(Xt("medium-zoom:open",{detail:{zoom:D}})),Q=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,W=!0,m.zoomed=um(m.original),document.body.appendChild(z),$.template){var re=lr($.template)?$.template:document.querySelector($.template);m.template=document.createElement("div"),m.template.appendChild(re.content.cloneNode(!0)),document.body.appendChild(m.template)}if(m.original.parentElement&&m.original.parentElement.tagName==="PICTURE"&&m.original.currentSrc&&(m.zoomed.src=m.original.currentSrc),document.body.appendChild(m.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),m.original.classList.add("medium-zoom-image--hidden"),m.zoomed.classList.add("medium-zoom-image--opened"),m.zoomed.addEventListener("click",y),m.zoomed.addEventListener("transitionend",K),m.original.getAttribute("data-zoom-src")){m.zoomedHd=m.zoomed.cloneNode(),m.zoomedHd.removeAttribute("srcset"),m.zoomedHd.removeAttribute("sizes"),m.zoomedHd.removeAttribute("loading"),m.zoomedHd.src=m.zoomed.getAttribute("data-zoom-src"),m.zoomedHd.onerror=function(){clearInterval(Fe),console.warn("Unable to reach the zoom image target "+m.zoomedHd.src),m.zoomedHd=null,I()};var Fe=setInterval(function(){m.zoomedHd.complete&&(clearInterval(Fe),m.zoomedHd.classList.add("medium-zoom-image--opened"),m.zoomedHd.addEventListener("click",y),document.body.appendChild(m.zoomedHd),I())},10)}else if(m.original.hasAttribute("srcset")){m.zoomedHd=m.zoomed.cloneNode(),m.zoomedHd.removeAttribute("sizes"),m.zoomedHd.removeAttribute("loading");var Me=m.zoomedHd.addEventListener("load",function(){m.zoomedHd.removeEventListener("load",Me),m.zoomedHd.classList.add("medium-zoom-image--opened"),m.zoomedHd.addEventListener("click",y),document.body.appendChild(m.zoomedHd),I()})}else I()})},y=function(){return new r(function(C){if(W||!m.original){C(D);return}var O=function I(){m.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(m.zoomed),m.zoomedHd&&document.body.removeChild(m.zoomedHd),document.body.removeChild(z),m.zoomed.classList.remove("medium-zoom-image--opened"),m.template&&document.body.removeChild(m.template),W=!1,m.zoomed.removeEventListener("transitionend",I),m.original.dispatchEvent(Xt("medium-zoom:closed",{detail:{zoom:D}})),m.original=null,m.zoomed=null,m.zoomedHd=null,m.template=null,C(D)};W=!0,document.body.classList.remove("medium-zoom--opened"),m.zoomed.style.transform="",m.zoomedHd&&(m.zoomedHd.style.transform=""),m.template&&(m.template.style.transition="opacity 150ms",m.template.style.opacity=0),m.original.dispatchEvent(Xt("medium-zoom:close",{detail:{zoom:D}})),m.zoomed.addEventListener("transitionend",O)})},k=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},O=C.target;return m.original?y():g({target:O})},L=function(){return $},v=function(){return T},b=function(){return m.original},T=[],A=[],W=!1,Q=0,$=n,m={original:null,zoomed:null,zoomedHd:null,template:null};Object.prototype.toString.call(t)==="[object Object]"?$=t:(t||typeof t=="string")&&c(t),$=jt({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},$);var z=cm($.background);document.addEventListener("click",o),document.addEventListener("keyup",i),document.addEventListener("scroll",s),window.addEventListener("resize",y);var D={open:g,close:y,toggle:k,update:l,clone:a,attach:c,detach:u,on:f,off:d,getOptions:L,getImages:v,getZoomedImage:b};return D};function dm(e,t){t===void 0&&(t={});var n=t.insertAt;if(!(!e||typeof document>"u")){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",n==="top"&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var pm=".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";dm(pm);const hm=fm,mm=Symbol("mediumZoom");const gm=":not(a) > img",vm={},_m=500,bm=dt({enhance({app:e,router:t}){const n=hm(vm);n.refresh=(r=gm)=>{n.detach(),n.attach(r)},e.provide(mm,n),t.afterEach(()=>{setTimeout(()=>n.refresh(),_m)})}});const ym={},wm=dt({enhance:({app:e})=>{},setup:()=>{}}),sr=[Yf,Zf,nd,id,fd,zh,rm,lm,bm,ym,wm],km=[["v-8daa1a0e","/",{title:"Welcome"},["/index.md"]],["v-2d0a870d","/en/",{title:"Welcome"},["/en/index.md"]],["v-2d0a8b4a","/fr/",{title:""},["/fr/index.md"]],["v-094bf77a","/en/backend-development/",{title:"Backend development"},["/en/backend-development/README.md"]],["v-582b1945","/en/front-development/",{title:"Frontend development"},["/en/front-development/README.md"]],["v-94d0425a","/en/kotlin-features/",{title:"Kotlin language features"},["/en/kotlin-features/README.md"]],["v-d7c64ec8","/en/kotlin-features-advanced/",{title:"Advanced and other Kotlin features"},["/en/kotlin-features-advanced/README.md"]],["v-a9393aca","/en/other-technologies/",{title:"Cross-plaform and Fullstack app Codelab"},["/en/other-technologies/README.md"]],["v-48a0fa68","/en/presentation/",{title:"Presentation of Kotlin"},["/en/presentation/README.md"]],["v-12e654b0","/en/workshops/",{title:"Workshops"},["/en/workshops/README.md"]],["v-6d947b37","/fr/backend-development/",{title:"Développement du backend"},["/fr/backend-development/README.md"]],["v-034b6842","/fr/front-development/",{title:"Développement frontend"},["/fr/front-development/README.md"]],["v-d4ec6de0","/fr/kotlin-features/",{title:"Fonctionnalités du langage Kotlin"},["/fr/kotlin-features/README.md"]],["v-6a3222ff","/fr/kotlin-features-advanced/",{title:"Fonctionnalités avancées de Kotlin"},["/fr/kotlin-features-advanced/README.md"]],["v-644cf33e","/fr/other-technologies/",{title:"Application multiplateforme et Fullstack Codelab"},["/fr/other-technologies/README.md"]],["v-dcbefd6a","/fr/presentation/",{title:"Présentation de Kotlin"},["/fr/presentation/README.md"]],["v-202ff0ad","/fr/workshops/",{title:"Workshops"},["/fr/workshops/README.md"]],["v-3706649a","/404.html",{title:""},[]]];var li=ue({name:"Vuepress",setup(){const e=Mu();return()=>ae(e.value)}}),Em=()=>km.reduce((e,[t,n,r,o])=>(e.push({name:t,path:n,component:li,meta:r},{path:n.endsWith("/")?n+"index.html":n.substring(0,n.length-5),redirect:n},...o.map(s=>({path:s===":md"?n.substring(0,n.length-5)+".md":s,redirect:n}))),e),[{name:"404",path:"/:catchAll(.*)",component:li}]),xm=of,Cm=()=>{const e=zf({history:xm(sl("/learning-kotlin/")),routes:Em(),scrollBehavior:(t,n,r)=>r||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{var r;(t.path!==n.path||n===mt)&&([t.meta._data]=await Promise.all([ht.resolvePageData(t.name),(r=al[t.name])==null?void 0:r.__asyncLoader()]))}),e},Lm=e=>{e.component("ClientOnly",Fo),e.component("Content",ju)},Sm=(e,t,n)=>{const r=Xs(()=>t.currentRoute.value.path),o=Xs(()=>ht.resolveRouteLocale(tn.value.locales,r.value)),s=bd(r,()=>t.currentRoute.value.meta._data),i=j(()=>ht.resolveLayouts(n)),l=j(()=>ht.resolveSiteLocaleData(tn.value,o.value)),a=j(()=>ht.resolvePageFrontmatter(s.value)),c=j(()=>ht.resolvePageHeadTitle(s.value,l.value)),u=j(()=>ht.resolvePageHead(c.value,a.value,l.value)),f=j(()=>ht.resolvePageLang(s.value,l.value)),d=j(()=>ht.resolvePageLayout(s.value,i.value));return e.provide(Pu,i),e.provide(cl,s),e.provide(ul,a),e.provide(Iu,c),e.provide(fl,u),e.provide(dl,f),e.provide(pl,d),e.provide(No,o),e.provide(ml,l),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>a.value},$head:{get:()=>u.value},$headTitle:{get:()=>c.value},$lang:{get:()=>f.value},$page:{get:()=>s.value},$routeLocale:{get:()=>o.value},$site:{get:()=>tn.value},$siteLocale:{get:()=>l.value},$withBase:{get:()=>Ir}}),{layouts:i,pageData:s,pageFrontmatter:a,pageHead:u,pageHeadTitle:c,pageLang:f,pageLayout:d,routeLocale:o,siteData:tn,siteLocaleData:l}},Am=()=>{const e=Ou(),t=$u(),n=ve([]),r=()=>{e.value.forEach(s=>{const i=Tm(s);i&&n.value.push(i)})},o=()=>{document.documentElement.lang=t.value,n.value.forEach(s=>{s.parentNode===document.head&&document.head.removeChild(s)}),n.value.splice(0,n.value.length),e.value.forEach(s=>{const i=Pm(s);i!==null&&(document.head.appendChild(i),n.value.push(i))})};Ot(Du,o),Ve(()=>{r(),o(),st(()=>e.value,o)})},Tm=([e,t,n=""])=>{const r=Object.entries(t).map(([l,a])=>me(a)?`[${l}=${JSON.stringify(a)}]`:a===!0?`[${l}]`:"").join(""),o=`head > ${e}${r}`;return Array.from(document.querySelectorAll(o)).find(l=>l.innerText===n)||null},Pm=([e,t,n])=>{if(!me(e))return null;const r=document.createElement(e);return Mo(t)&&Object.entries(t).forEach(([o,s])=>{me(s)?r.setAttribute(o,s):s===!0&&r.setAttribute(o,"")}),me(n)&&r.appendChild(document.createTextNode(n)),r},Rm=ku,Om=async()=>{var n;const e=Rm({name:"VuepressApp",setup(){var r;Am();for(const o of sr)(r=o.setup)==null||r.call(o);return()=>[ae(Sl),...sr.flatMap(({rootComponents:o=[]})=>o.map(s=>ae(s)))]}}),t=Cm();Lm(e),Sm(e,t,sr);for(const r of sr)await((n=r.enhance)==null?void 0:n.call(r,{app:e,router:t,siteData:tn}));return e.use(t),{app:e,router:t}};Om().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{xe as _,pe as a,Nt as b,Z as c,Om as createVueApp,ee as d,Dc as e,H as o,yt as r,Ne as w}; diff --git a/assets/back-to-top-8efcbe56.svg b/assets/back-to-top-8efcbe56.svg new file mode 100644 index 00000000..83236781 --- /dev/null +++ b/assets/back-to-top-8efcbe56.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/compose-multiplaform-6e96455d.gif b/assets/compose-multiplaform-6e96455d.gif new file mode 100644 index 0000000000000000000000000000000000000000..ffa4079f0b6ddbd5fb6f1ed5a7f1431ca02f9232 GIT binary patch literal 249383 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�$v~&CA{0v)QLh>wS80B+FRn} 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 literal 0 HcmV?d00001 diff --git a/assets/compose-multiplaform-e9e5bce8.js b/assets/compose-multiplaform-e9e5bce8.js new file mode 100644 index 00000000..42e5f319 --- /dev/null +++ b/assets/compose-multiplaform-e9e5bce8.js @@ -0,0 +1 @@ +const s="/learning-kotlin/assets/kotlin-wasm-flag-ee5f483f.png",n="/learning-kotlin/assets/wasm-build-conf-edit-2972b458.png",t="/learning-kotlin/assets/wasm-run-configuration-d79819b8.png",o="/learning-kotlin/assets/kotlin-wasm-webapp-5e0cad78.png",a="/learning-kotlin/assets/compose-multiplaform-web-87ee5d43.gif",i="/learning-kotlin/assets/compose-multiplaform-6e96455d.gif";export{s as _,n as a,t as b,o as c,a as d,i as e}; diff --git a/assets/compose-multiplaform-web-87ee5d43.gif b/assets/compose-multiplaform-web-87ee5d43.gif new file mode 100644 index 0000000000000000000000000000000000000000..b85ee79346f88444c0215cc287f329af396334e3 GIT binary patch literal 26612 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 literal 0 HcmV?d00001 diff --git a/assets/fs-kmp-architecture.drawio-fa432d3a.svg b/assets/fs-kmp-architecture.drawio-fa432d3a.svg new file mode 100644 index 00000000..247a9e98 --- /dev/null +++ b/assets/fs-kmp-architecture.drawio-fa432d3a.svg @@ -0,0 +1,153 @@ + + + + + + + + + Fullstack project architecture + + + + + + +
+
+
+

+ + sharedFullStack + +

+ - + + commonMain + + : Common code +
+ - + + jvmMain: + + Ktor Server +
+ - + + jsMain: + + React web app +
+
+
+
+ + sharedFullStack- commonMain: Comm... + +
+
+ + + + +
+
+
+

+ + shared + +

+
+ + - commonMain + + : + + Common Compose code + +
+
+ + - iOSMain, androidMain, desktopMain: platform specific code + +
+
+
+
+
+ + shared... + +
+
+ + + + + + + + +
+
+
+ androidApp +
+
+
+
+ + androidApp + +
+
+ + + + + + +
+
+
+ desktopApp +
+
+
+
+ + desktopApp + +
+
+ + + + + + +
+
+
+ iOSApp +
+
+
+
+ + iOSApp + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/assets/fs-kmp-webcanvas-architecture.drawio-2659deec.js b/assets/fs-kmp-webcanvas-architecture.drawio-2659deec.js new file mode 100644 index 00000000..d5ac8454 --- /dev/null +++ b/assets/fs-kmp-webcanvas-architecture.drawio-2659deec.js @@ -0,0 +1 @@ +const s="/learning-kotlin/assets/kmp_codelab-dcc38916.png",a="/learning-kotlin/assets/fs-kmp-architecture.drawio-fa432d3a.svg",t="/learning-kotlin/assets/kmm-fs-react-demo-11c681d6.png",n="/learning-kotlin/assets/kmp-fs-desktop-local-ktor-d6440da8.png",o="/learning-kotlin/assets/fs-kmp-webcanvas-architecture.drawio-c195dc62.svg";export{s as _,a,t as b,n as c,o as d}; diff --git a/assets/fs-kmp-webcanvas-architecture.drawio-c195dc62.svg b/assets/fs-kmp-webcanvas-architecture.drawio-c195dc62.svg new file mode 100644 index 00000000..cf3373cf --- /dev/null +++ b/assets/fs-kmp-webcanvas-architecture.drawio-c195dc62.svg @@ -0,0 +1,178 @@ + + + + + + + + + Fullstack project architecture with a Compose for Web Canvas target + + + + + + +
+
+
+

+ + sharedFullStack + +

+ - + + commonMain + + : Common code +
+ - + + jvmMain: + + Ktor Server +
+ - + + jsMain: + + React web app +
+
+
+
+ + sharedFullStack- commonMain: Comm... + +
+
+ + + + +
+
+
+

+ + shared + +

+
+ + - commonMain + + : + + Common Compose code + +
+
+ + - iOSMain, androidMain, desktopMain, + + + jsMain + + + : platform specific code + +
+
+
+
+
+ + shared... + +
+
+ + + + + + + + +
+
+
+ androidApp +
+
+
+
+ + androidApp + +
+
+ + + + + + +
+
+
+ desktopApp +
+
+
+
+ + desktopApp + +
+
+ + + + + + +
+
+
+ iOSApp +
+
+
+
+ + iOSApp + +
+
+ + + + + + +
+
+
+ composeWebCanvasApp +
+
+
+
+ + composeWebCanvasApp + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/assets/index-e32a7948.js b/assets/index-e32a7948.js new file mode 100644 index 00000000..69326545 --- /dev/null +++ b/assets/index-e32a7948.js @@ -0,0 +1 @@ +var v=function(){return!!(window.location.hostname==="localhost"||window.location.hostname==="[::1]"||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/))},c;typeof window<"u"&&(typeof Promise<"u"?c=new Promise(function(t){return window.addEventListener("load",t)}):c={then:function(t){return window.addEventListener("load",t)}});function s(t,n){n===void 0&&(n={});var i=n.registrationOptions;i===void 0&&(i={}),delete n.registrationOptions;var e=function(r){for(var f=[],a=arguments.length-1;a-- >0;)f[a]=arguments[a+1];n&&n[r]&&n[r].apply(n,f)};"serviceWorker"in navigator&&c.then(function(){v()?(l(t,e,i),navigator.serviceWorker.ready.then(function(r){e("ready",r)}).catch(function(r){return o(e,r)})):(u(t,e,i),navigator.serviceWorker.ready.then(function(r){e("ready",r)}).catch(function(r){return o(e,r)}))})}function o(t,n){navigator.onLine||t("offline"),t("error",n)}function u(t,n,i){navigator.serviceWorker.register(t,i).then(function(e){if(n("registered",e),e.waiting){n("updated",e);return}e.onupdatefound=function(){n("updatefound",e);var r=e.installing;r.onstatechange=function(){r.state==="installed"&&(navigator.serviceWorker.controller?n("updated",e):n("cached",e))}}}).catch(function(e){return o(n,e)})}function l(t,n,i){fetch(t).then(function(e){e.status===404?(n("error",new Error("Service worker not found at "+t)),d()):e.headers.get("content-type").indexOf("javascript")===-1?(n("error",new Error("Expected "+t+" to have javascript content-type, but received "+e.headers.get("content-type"))),d()):u(t,n,i)}).catch(function(e){return o(n,e)})}function d(){"serviceWorker"in navigator&&navigator.serviceWorker.ready.then(function(t){t.unregister()}).catch(function(t){return o(emit,t)})}export{s as register,d as unregister}; diff --git a/assets/index.html-057a2bb3.js b/assets/index.html-057a2bb3.js new file mode 100644 index 00000000..b26991dc --- /dev/null +++ b/assets/index.html-057a2bb3.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-a9393aca","path":"/en/other-technologies/","title":"Cross-plaform and Fullstack app Codelab","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"PW : Cross-platform app + KMM + KMP for Android, iOS and Desktop","slug":"pw-cross-platform-app-kmm-kmp-for-android-ios-and-desktop","link":"#pw-cross-platform-app-kmm-kmp-for-android-ios-and-desktop","children":[]},{"level":2,"title":"PW : Add a Ktor server App","slug":"pw-add-a-ktor-server-app","link":"#pw-add-a-ktor-server-app","children":[]},{"level":2,"title":"PW: Add a Compose for Web Canvas target (experimental)","slug":"pw-add-a-compose-for-web-canvas-target-experimental","link":"#pw-add-a-compose-for-web-canvas-target-experimental","children":[]},{"level":2,"title":"Going futher","slug":"going-futher","link":"#going-futher","children":[]},{"level":2,"title":"Sources and references","slug":"sources-and-references","link":"#sources-and-references","children":[]}],"git":{"updatedTime":1686068618000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":13},{"name":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":2}]},"filePathRelative":"en/other-technologies/README.md"}');export{e as data}; diff --git a/assets/index.html-0871564e.js b/assets/index.html-0871564e.js new file mode 100644 index 00000000..faffa955 --- /dev/null +++ b/assets/index.html-0871564e.js @@ -0,0 +1,7 @@ +import{_ as a,r as i,o as n,c as b,a as l,b as I,d as c,e}from"./app-a89e3102.js";const s={},t=e('

Kotlin is an object oriented language with functional features. This chapter covers important and relevant features of the language slit into basic and intermediate. Another chapter covers advanced features.

Basic features

Basic constructs (variables, control flow)

  • Kotlin is statically typed and supports implicit typing.
    • Static typing: types cannot change on runtime (it is the opposite of dynamic typing).
    • Implicit typing: the compiler can infer the type whenever possible.
  • var creates mutable variables.
  • val creates immutable variables or constants.
  • Semi-colons are optional.
  • Kotlin supports top level declaration of variables and functions (They can be declared outside of classes).
  • String interpolation is available with this syntax ${expression}.
  • if, and when statements are expressions (they can return a value).
    • when is equivalent to the switch statement of other languages
    • The ternary operator is not available but the if statement replaces-it.
  • for-each is the only type of for loop available.
  • Object oriented programming is supported as in Java with some additional features such as extensions.
  • The compiler supports Null Safety. It allows to write code free from null pointer errors with a compile time guarantee.
  • Functional programming is supported (Higher-order functions and functions as 1st class items, etc.).

Use val by default

Replace by var only if needed.

',6),o={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gRnVuY3Rpb25zIGNhbiBiZSBkZWNsYXJlZCBvdXRzaWRlIG9mIGNsYXNzZXNcbmZ1biBzdW0oeDpJbnQsIHk6SW50KSA6IEludCB7XG4gICAgcmV0dXJuIHggKyB5XG59IC8vIGZ1bmN0aW9uIGRlZmluaXRpb25cblxuXG52YWwgZ2xvYmFsVmFsdWUgPSBcIkkgYW0gYSBnbG9iYWwgdmFsdWVcIlxuXG5mdW4gbWFpbigpIHtcbiAgICB2YXIgYTogSW50ID0gMCAvLyB2YXJpYWJsZVxuXHRhID0gMjNcblxuXHR2YWwgYjogU3RyaW5nID0gXCJIZWxsb1wiIC8vIGltbXV0YWJsZSB2YXJpYWJsZVxuXHQvL2IgPSBcIldvcmxkXCIgLy9lcnJvclxuXG5cdHZhciBtZXNzYWdlID0gXCJIZWxsb1wiIC8vIFR5cGUgaXMgaW5mZXJyZWRcbiAgICBcbiAgICB2YWwgdG90YWwgPSBzdW0oMiwgMSkgLy8gY2FsbCBzdW0gZnVuY3Rpb24gICAgXG4gICAgcHJpbnRsbihcIlRoZSBzdW0gaXMgJHt0b3RhbH1cIikgLy8gaW50ZXJwb2xhdGlvblxuICAgIHByaW50bG4oXCJUaGUgZ2xvYmFsVmFsdWUgaXMgLT4gJGdsb2JhbFZhbHVlXCIpXG4gICAgXG4gICAgdmFsIHRlc3RSZXN1bHQxID0gaWYgKHRvdGFsID4gMykgeyBcbiAgICAgICAgXCJCaWdcIiBcbiAgICB9IGVsc2Uge1xuICAgICAgICBcInNtYWxsXCJcbiAgICB9ICBcbiAgICBwcmludGxuKHRlc3RSZXN1bHQxKVxuICBcbiAgICB2YWwgdGVzdFJlc3VsdDIgPSBpZiAodG90YWwgPiAzKSBcIkJpZ1wiIGVsc2UgXCJzbWFsbFwiXG4gICAgcHJpbnRsbih0ZXN0UmVzdWx0MilcbiAgICBcbiAgICB2YWwgZ3JlZXRpbmcgPSBcIkJvbmpvdXJcIlxuICAgIHZhbCBsYW5ndWFnZSA9IHdoZW4oZ3JlZXRpbmcpe1xuICAgICAgIFwiQm9uam91clwiLFwic2FsdXRcIiAtPiBcIkZyYW7Dp2Fpc1wiXG4gICAgICAgIFwiR29vZCBtb3JuaW5nXCIgLT4gXCJFbmdsaXNoXCJcbiAgICAgICAgZWxzZSAtPiBcIlVua25vd25cIlxuICAgIH1cbiAgICBwcmludGxuKGxhbmd1YWdlKVxuICAgIFxuICAgIGZvciAoaSBpbiAxLi4zKSBwcmludGxuKGkpIC8vIHNpbmdsZSBsaW5lXG5cdGZvciAoaSBpbiA2IGRvd25UbyAwIHN0ZXAgMikgcHJpbnRsbihpKVxuICAgIGZvciAobXNnIGluIGFycmF5T2YoXCJIZWxsb1wiLCBcIndvcmxkXCIpKSB7XG4gICAgXHRwcmludGxuKG1zZylcblx0fVxuICAgIHZhciB4ID0gMlxuICAgIHdoaWxlICh4ID4gMCkge1xuICAgIFx0eC0tXG5cdH1cbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},d=e('

Functions

In the this section, the terms 'argument' and 'parameter' are used interchangeably.

Functions in Kotlin have the following features:

  • Declaration: fun functionName(arg1: type1 = defaultvalue1, ...) : retunrType.
  • Call a function by passing the value in the declaration order.
    • Use argument labels for more clarity, however, it also allows for arbitrary ordering of arguments.
  • Optional arguments have a default value and can be omitted during the call.
  • Functions are first class items or citizen: they can be assigned to a variable, passed as a function parameter, or returned from a function.
    • 💡 A function that takes a function as an argument or returns one is a higher order function.
  • A function type can be expressed as follows: (typeOfParam1, typeOfParam2, etc) -> returnType (The empty return type is Unit).
  • Anonymous functions use the following syntax { argName1, argName2, etc. -> // code }
    • Also called or lambda functions or literal functions
  • The last function argument can be put after the closing after the closing parenthesis compute(9, 5) { x, y -> x * y }
',4),G={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gRnVuY3Rpb25zIGNhbiBiZSBkZWNsYXJlZCBvdXRzaWRlIG9mIGNsYXNzZXNcbmZ1biBzdW0oeDpJbnQsIHk6SW50KSA6IEludCB7XG4gICAgcmV0dXJuIHggKyB5XG59IC8vIGZ1bmN0aW9uIGRlZmluaXRpb25cblxuLy9PbmUgbGluZSBmdW5jdGlvblxuZnVuIG11bHQoeDpJbnQsIHk6IEludCkgPSB4ICogeVxuXG5mdW4gZ3JlZXQoeWVhcjogSW50ID0gMjAxOCwgbW9udGg6IEludCA9IDEsXG4gICAgICAgICAgbWVzc2FnZTogU3RyaW5nID0gXCJIZWxsb1wiKSA6IFN0cmluZyB7XG4gICAgcmV0dXJuIFwiJHttZXNzYWdlfS4gV2UgYXJlIGluICR7bW9udGh9LyR7eWVhcn1cIlxufVxuXG5mdW4gY2FsY3VsYXRlKHg6IEludCwgeTogSW50LCBmOiAoSW50LCBJbnQpIC0+IEludCkgOiBJbnR7XG4gICAgcmV0dXJuIGYoeCwgeSlcbn0gLy8gY2FsY3VsYXRlIHRha2VzIGEgZnVuY3Rpb24gYXMgYSBwYXJhbXRlclxuXG5mdW4gbWFpbihhcmd2OkFycmF5PFN0cmluZz4pe1xuICAgIHZhbCBhID0gc3VtKDIsIDEpIC8vIGNhbGwgc3VtIGZ1bmN0aW9uXG4gICAgcHJpbnRsbihtdWx0KGEsIHkgPSA4KSkgLy8gd2UgY2FuIG5hbWUgcGFyYW1ldGVyc1xuICAgIFxuICAgIHByaW50bG4oZ3JlZXQoMjAxNywgMTAsIFwiQm9uam91clwiKSkgLy9Cb25qb3VyLiBXZSBhcmUgaW4gMTAvMjAxN1xuICAgIHByaW50bG4oZ3JlZXQoKSkgLy9IZWxsby4gV2UgYXJlIGluIDEvMjAxOFxuICAgIHByaW50bG4oZ3JlZXQoMjAxOCwgbWVzc2FnZSA9IFwiS29ubmljaGl3YVwiKSlcbiAgICBcbiAgICBwcmludGxuKGNhbGN1bGF0ZSg5LCA1LCA6OnN1bSkpIC8vIDE0XG4gICAgLy8gZnVuY3Rpb25zIGNhbiBiZSBkZWNsYXJlZCBmcm9tIHdpdGhpbiBvdGhlciBmdW5jdGlvbnNcbiAgICB2YWwgZiA9IHt4OiBJbnQsIHk6IEludCAtPiB4IC0geX1cbiAgICBwcmludGxuKGNhbGN1bGF0ZSg5LCA1LCBmKSlcbiAgICBcbiAgICBmdW4gZGl2aWRlKHg6SW50LCB5OiBJbnQpID0geCAvIHlcbiAgICBwcmludGxuKGNhbGN1bGF0ZSg5LCA1LCA6OmRpdmlkZSkpXG4gICAgXG4gICAgcHJpbnRsbihjYWxjdWxhdGUoOSwgNSwgeyB4LCB5IC0+IHggKiB5IH0gKSkgLy8gNDVcbiAgICAvLyBJZiB0aGUgbGFzdCBwYXJhbWV0ZXIgaXMgZnVuY3Rpb24sIHdlIGNhbiBjbG9zZSAoKSBlcmxpZXJcbiAgICBwcmludGxuKGNhbGN1bGF0ZSg5LCA1KSB7IHgsIHkgLT4geCAqIHkgfSApIC8vIDQ1XG59In0=",target:"_blank",rel:"noopener noreferrer"},u=e('

The next section talk about null safety.

Null safety

In a nutshell, null safety is a compiler feature that eliminates the infamous Null pointer exception or npe. The Kotlin compiler reports errors and warnings when we manipulate nullable (also called optional) values. Here is a list of null safety features provided by Kotlin:

  • All types are non-nullable by default; we cannot assign null to a variable or an argument.
    • For example, this code fails var s: String = null.
  • A type can be made nullable by suffixing it with a ?. For example: var s: String? = null.
  • Kotlin forbids calling a method or a property of a non-nullable type, unless we do one of these possibilities:
    • Use optional chaining with the ? suffix.
    • Provide a default value with the elvis ?: operator.
    • Smart-cast the nullable into a non-nullable.
    • Use the !! operator that eliminates compiler checks. This should never be used.

Never unwrap with !!

Use other safe techniques instead.

',5),h={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiZnVuIG1haW4oYXJndjpBcnJheTxTdHJpbmc+KXtcbiAgICB2YXIgczogU3RyaW5nIC8vIHZhcnMgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgdXNpbmdcbiAgICAvLyBwcmludGxuKHMpIC0+IGNvbXBpbGUgZmFpbHNcbiAgICBzID0gXCJoZWxsb1wiXG4gICAgcHJpbnRsbihzKSAvLyBva1xuICAgIC8vIHMgPSBudWxsIC0+IGNvbXBpbGUgZmFpbHMuIFR5cGVzIGFyZSBub3QgbnVsbGFibGVcbiAgICB2YWwgbXNnIDogU3RyaW5nPyA9IG51bGwgLy8gbnVsbGFibGUgdHlwZXNcbiAgICBwcmludGxuKG1zZylcbiAgICAvLyBtc2cucmV2ZXJzZWQoKSAvLyBtc2cgbWF5IGJlIG51bGwgLT4gY29tcGlsZSBrb1xuICAgIHByaW50bG4obXNnPy5yZXZlcnNlZCgpPy5jYXBpdGFsaXplKCkpIC8vIHJldHVybiBudWxsIGlmIGFueSBwYXJ0IGlzIG51bGxcbiAgICAvL3ByaW50bG4obXNnISEucmV2ZXJzZWQoKSkgLy8gdGVsbCBjb21waWxlciB0byBpZ25vcmUgbnVsbCBjaGVja3MgLT4gTlBFIGlmIHRoZSB2YXIgaXMgbnVsbFxuICAgIFxuICAgIHZhciBuYjogSW50PyA9IDJcbiAgICAvLyBrb3RsaW4gY29tcGlsZXIga25vd24gdGhhdCBuYiBpcyBuZXZlciBudWxsIGluIGVsc2UgLT4gc21hcnQgY2FzdGluZ1xuICAgIHZhbCBkb3VibGUgPSBpZiggbmIgPT0gbnVsbCApIDAgZWxzZSBuYiAqIDJcbiAgICBwcmludGxuKGRvdWJsZSlcbiAgICBcbiAgICAvLyBzaG9ydGN1dCBvZiBwcmV2IGlmIHVzaW5nID86IGVsdmlzIG9wZXJhdG9yXG4gICAgdmFsIHRyaXBsZSA9IG5iPy50aW1lcygzKSA/OiAwIDsgcHJpbnRsbih0cmlwbGUpXG4gICAgLy9PdGhlciBzbWFydCBjYXN0aW5nIHVzZXNcbiAgICBpZiAobmIgaXMgSW50KSB7XG4gICAgICAgIHByaW50bG4obmIudGltZXMoMykpXG4gICAgfVxuICAgIFxuICAgIGlmIChuYiAhPSBudWxsKSB7XG4gICAgICAgIHByaW50bG4obmIudGltZXMoMykpXG4gICAgfVxuICAgIFxuICAgIC8vIHRoZSBhcmd1bWVudCBpcyB1bndyYXBwZWQgaW4gdGhlIGxhbWRhIG9mIGxldFxuICAgIG5iPy5sZXQgeyBpdC50aW1lcygzKSB9XG4gICAgXG4gICAgLy9zYWZlIGNhc3QgcmV0dXJuIG51bGxhYmxlIGFuZCBkb2VzIG5vdCB0aHJvdyBleGNlcHRpb25cbiAgICB2YWwgbmV3TmIgPSBuYiBhcz8gTG9uZ1xuICAgIHByaW50bG4obmV3TmIpXG4gICAgXG4gICAgLy8gQ29udmVydCBudWxsYWJsZSBsaXN0IHRvIG5vbiBudWxsYWJsZSBvbmVcbiAgICB2YWwgbnVsbGFibGVMaXN0OiBMaXN0PEludD8+ID0gbGlzdE9mKDEsIDIsIG51bGwsIDQpXG5cdHZhbCBpbnRMaXN0OiBMaXN0PEludD4gPSBudWxsYWJsZUxpc3QuZmlsdGVyTm90TnVsbCgpXG4gICAgcHJpbnRsbihpbnRMaXN0KVxufSJ9",target:"_blank",rel:"noopener noreferrer"},m=l("div",{class:"custom-container warning"},[l("p",{class:"custom-container-title"},"Java `Optional` does not provide compile time null checks"),l("p",null,[l("code",null,"Optional"),I(" wrap null values on runtime. The Java compiler (as of version 17) does not provide unwrapping features such as smart casting. It is still possible to have a npe like this: "),l("code",null,"Optional s = null; s.isPresent()"),I(";")])],-1),C=l("h3",{id:"enumerations",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#enumerations","aria-hidden":"true"},"#"),I(" Enumerations")],-1),r={href:"https://www.geeksforgeeks.org/enum-classes-in-kotlin",target:"_blank",rel:"noopener noreferrer"},Z=l("ul",null,[l("li",null,[l("code",null,"when"),I(" statements support enumerations.")]),l("li",null,"Enum constants can declare their own anonymous classes with their corresponding methods, as well as with overriding base methods."),l("li",null,"An enum class can implement an interface but it cannot derive from a class"),l("li",null,"There are methods for listing the defined enum constants and getting an enum constant by its name."),l("li",null,"Every enum constant has properties for obtaining its name and position (starting with 0).")],-1),p={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5CaW5hcnlPcGVyYXRvclxuaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5JbnRCaW5hcnlPcGVyYXRvclxuXG4vLyAvLyBTb3VyY2U6IGh0dHBzOi8va290bGlubGFuZy5vcmcvZG9jcy9lbnVtLWNsYXNzZXMuaHRtbFxuXG5lbnVtIGNsYXNzIERpcmVjdGlvbiB7XG4gICAgTk9SVEgsIFNPVVRILCBXRVNULCBFQVNUXG59XG5cbmVudW0gY2xhc3MgQ29sb3IodmFsIHJnYjogSW50KSB7XG4gICAgUkVEKDB4RkYwMDAwKSxcbiAgICBHUkVFTigweDAwRkYwMCksXG4gICAgQkxVRSgweDAwMDBGRilcbn1cblxuZW51bSBjbGFzcyBQcm90b2NvbFN0YXRlIHtcbiAgICBXQUlUSU5HIHtcbiAgICAgICAgb3ZlcnJpZGUgZnVuIHNpZ25hbCgpID0gVEFMS0lOR1xuICAgIH0sXG5cbiAgICBUQUxLSU5HIHtcbiAgICAgICAgb3ZlcnJpZGUgZnVuIHNpZ25hbCgpID0gV0FJVElOR1xuICAgIH07XG5cbiAgICBhYnN0cmFjdCBmdW4gc2lnbmFsKCk6IFByb3RvY29sU3RhdGVcbn1cblxuZW51bSBjbGFzcyBJbnRBcml0aG1ldGljcyA6IEJpbmFyeU9wZXJhdG9yPEludD4sIEludEJpbmFyeU9wZXJhdG9yIHtcbiAgICBQTFVTIHtcbiAgICAgICAgb3ZlcnJpZGUgZnVuIGFwcGx5KHQ6IEludCwgdTogSW50KTogSW50ID0gdCArIHVcbiAgICB9LFxuICAgIFRJTUVTIHtcbiAgICAgICAgb3ZlcnJpZGUgZnVuIGFwcGx5KHQ6IEludCwgdTogSW50KTogSW50ID0gdCAqIHVcbiAgICB9O1xuXG4gICAgb3ZlcnJpZGUgZnVuIGFwcGx5QXNJbnQodDogSW50LCB1OiBJbnQpID0gYXBwbHkodCwgdSlcbn1cblxuZnVuIG1haW4oKSB7XG4gICAgdmFsIHByb3RvY29sU3RhdGUgPSBQcm90b2NvbFN0YXRlLlRBTEtJTkdcbiAgICBwcmludGxuKFwiJHByb3RvY29sU3RhdGUsIHNpZ25hbCAtPiAke3Byb3RvY29sU3RhdGUuc2lnbmFsKCl9XCIpXG4gICAgcHJpbnRsbihcIm5hbWU6ICR7cHJvdG9jb2xTdGF0ZS5uYW1lfVwiKVxuICAgIHByaW50bG4oXCJvcmRpbmFsOiAke3Byb3RvY29sU3RhdGUub3JkaW5hbH1cIilcbiAgICBcbiAgICB2YWwgb3A6IEludEJpbmFyeU9wZXJhdG9yID0gSW50QXJpdGhtZXRpY3MuUExVU1xuICAgIHByaW50bG4ob3AuYXBwbHlBc0ludCgyLCAzMCkpXG4gICAgXG4gICAgcHJpbnRsbihQcm90b2NvbFN0YXRlLnZhbHVlcygpLmpvaW5Ub1N0cmluZyhcIiwgXCIpKVxuICAgIHByaW50bG4oUHJvdG9jb2xTdGF0ZS52YWx1ZU9mKFwiV0FJVElOR1wiKSlcbiAgICBcbiAgICB2YWwgYSA9IDEzXG4gICAgdmFsIGIgPSAzMVxuICAgIC8vIGxvb3AgdGhyb3VnaCB0aGUgcG9zc2libGUgZW51ZW1lcmF0aW9uc1xuICAgIGZvciAoZiBpbiBJbnRBcml0aG1ldGljcy52YWx1ZXMoKSkge1xuICAgICAgICBwcmludGxuKFwiJGYoJGEsICRiKSA9ICR7Zi5hcHBseShhLCBiKX1cIilcbiAgICB9XG59In0=",target:"_blank",rel:"noopener noreferrer"},B={href:"https://kotlinlang.org/docs/enum-classes.html#working-with-enum-constants",target:"_blank",rel:"noopener noreferrer"},X=l("h3",{id:"exercises",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercises","aria-hidden":"true"},"#"),I(" Exercises")],-1),W=l("h4",{id:"exercise-1",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercise-1","aria-hidden":"true"},"#"),I(" Exercise 1")],-1),y={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gUTogZGVjbGFyZSBhIGZ1bmN0aW9uIGNhbGxlZCBjb3VudFZvd2VscyB0aGF0IHRha2VzIGEgU3RyaW5nIGFyZ3VtZW50IFxuLy8gYW5kIHJldHVybnMgaXRzIG51bWJlciBvZiB2b3dlbHMgKGEsIHUsIGkgLCBlLCBvKS4gUGxlYXNlIHVzZSBhIGZvb3IgbG9vcC4ifQ==",target:"_blank",rel:"noopener noreferrer"},A={class:"custom-container details"},V=l("summary",null,"Please open to see the solution(s)",-1),Y={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gUTogZGVjbGFyZSBhIGZ1bmN0aW9uIGNhbGxlZCBjb3VudFZvd2VscyB0aGF0IHRha2VzIGEgU3RyaW5nIGFyZ3VtZW50IFxuLy8gYW5kIHJldHVybnMgaXRzIG51bWJlciBvZiB2b3dlbHMgKGEsIHUsIGkgLCBlLCBvKS4gUGxlYXNlIHVzZSBhIGZvb3IgbG9vcC5cblxuZnVuIGNvdW50Vm93ZWxzKHRleHQ6IFN0cmluZykgOiBJbnQge1xuICAgIHZhciBjb3VudCA9IDBcbiAgICBmb3IgKGMgaW4gdGV4dCl7XG4gICAgICAgIGlmIChcImF1aWVvXCIuY29udGFpbnMoYykpe1xuICAgICAgICAgICAgY291bnQgKz0gMVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb3VudFxufVxuXG5mdW4gbWFpbihhcmdzOkFycmF5PFN0cmluZz4pe1xuICAgIHByaW50bG4oY291bnRWb3dlbHMoXCJIZWxsb1wiKSlcbiAgICBwcmludGxuKGNvdW50Vm93ZWxzKFwiV29ybGRcIikpXG59In0=",target:"_blank",rel:"noopener noreferrer"},J=l("h4",{id:"exercise-2",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercise-2","aria-hidden":"true"},"#"),I(" Exercise 2")],-1),R={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gUTogcHJpbnQgdGhlIG1heCB2YWx1ZSBvZiB0aGUgbGlzdCAoaGludDogeW91IGNhbiB1c2UgdGhlIG1heCBtZXRob2QpXG5mdW4gcHJpbnRNYXgoaXRlbXM6IEFycmF5PEludD4/KXtcbiAgICBcbn1cblxuZnVuIG1haW4oYXJnczogQXJyYXk8U3RyaW5nPil7XG4gICAgdmFyIGl0ZW1zOiBBcnJheTxJbnQ+PyA9IG51bGxcblx0aXRlbXMgPSBhcnJheU9mKDEsIDIsIDIpXG5cdHByaW50TWF4KGl0ZW1zKVxuICAgIFxuICAgIC8vIFE6IHByaW50IHRoZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIGl0ZW0gb2YgdGhlIGFycmF5XG5cblx0Ly8gUTogcHJpbnQgdGhlIHN1bSBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgaXRlbSBvZiB0aGUgYXJyYXlcbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},x={class:"custom-container details"},F=l("summary",null,"Please open to see the solution(s)",-1),H={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gUTogcHJpbnQgdGhlIG1heCB2YWx1ZSBvZiB0aGUgbGlzdCAoaGludDogeW91IGNhbiB1c2UgdGhlIG1heCBtZXRob2QpXG5mdW4gcHJpbnRNYXgoaXRlbXM6IEFycmF5PEludD4/KXtcbiAgICBwcmludGxuKGl0ZW1zPy5tYXgoKSA/OiAwKVxuICAgIHByaW50bG4oaWYgKGl0ZW1zICE9IG51bGwpIGl0ZW1zLm1heCgpIGVsc2UgMClcbn1cblxuZnVuIG1haW4oYXJnczogQXJyYXk8U3RyaW5nPil7XG4gICAgdmFyIGl0ZW1zOiBBcnJheTxJbnQ+PyA9IG51bGxcblx0Ly9pdGVtcyA9IGFycmF5T2YoMSwgMiwgMylcblx0cHJpbnRNYXgoaXRlbXMpXG4gICAgcHJpbnRNYXgobnVsbClcbiAgICBcbiAgICAvLyBROiBwcmludCB0aGUgdmFsdWUgb2YgdGhlIHNlY29uZCBpdGVtIG9mIHRoZSBhcnJheVxuICAgIC8vIC8vIFE6IHByaW50IHRoZSBzdW0gb2YgdGhlIGZpcnN0IGFuZCBsYXN0IGl0ZW0gb2YgdGhlIGFycmF5XG4gICAgaWYgKGl0ZW1zICE9IG51bGwpe1xuICAgICAgICBwcmludGxuKGl0ZW1zWzJdKVxuXHRcdHByaW50bG4oaXRlbXNbMl0gKyBpdGVtc1swXSlcbiAgICB9XG59In0=",target:"_blank",rel:"noopener noreferrer"},v=e('

Intermediate features

Object oriented programming

Kotlin allows to write concise OOP code and has the following features:

  • Available common features: classes, inheritance, interfaces, and abstract classes.
  • Native support of properties: do not define getters and setters unless needed.
    • Just add get() and set(value) functions next to the property declaration.
  • Constructor arguments are defined next to the class name class ClassName(arg1, atg2, )
  • Prefixing a constructor arguments with val or var makes it a property (val makes it read-only).
  • The constructor name is init and does not require parameters.
  • The compiler checks that all non-nullable properties are initialized by the end of the constructor.
    • ⚠️ The compiler does not check the initialization of lateinit properties. Thus, accessing them before while uninitialized causes an exception.
  • Prefix classes with open to allow inheritance.
  • Kotlin enables the public access level by default.
  • The equality operator == calls equals() (as opposed to Java which uses reference equality).
  • A companion object contains static methods and properties.
  • Extensions add function and properties to existing classes.
    • 💡 They replace inheritance in many situations.
    • For example, we can add functions to the String class instead of creating a new StringUtils class.
  • Sealed classes and interfaces cannot be extended or implemented by third parties.

Do not define accessors unless needed

As opposed to Java, Kotlin supports properties and allows to add accessors later without refactoring the code that calls these properties. Thus, by default, just define the name of properties without accessors and use them directly.

',5),w={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gY2xhc3Mgd2l0aCBkZWZhdWx0IGNvbnN0cnVjdG9yXG4vLyBvcGVuOiBhbGxvdyBpbmhlcml0YW5jZSAoY2xhc3NlcyBhbmQgcHJvcGVydGllcyBhcmUgZmluYWwgYnkgZGVmYXVsdClcbi8vIC8vIHZhbCBnZW5lcmF0ZXMgcmVhZC1vbmx5IHByb3BlcnRpZXNcbm9wZW4gY2xhc3MgUGxhbmV0KG9wZW4gdmFsIHJhZGl1czogTG9uZykge1xuICAgIC8vIHZhciBnZW5lcmF0ZXMgcHJvcGVydGllc1xuICAgIHZhciByb3RhdGlvblNwZWVkID0gMFxuICAgIFxuICAgIC8vIFdlIGNhbiBjdXN0b21pemUgdGhlIGdldHRlciBhbmQgdGhlIHNldHRlciBvZiB0aGUgcHJvcG9lcnR5XG4gICAgdmFsIHJhZGl1c0luTWV0ZXI6IExvbmcgXG4gICAgXHRnZXQoKSA9IHJhZGl1cyAqIDEwMDBcbn1cbmNsYXNzIEluaGFiaXRlZFBsYW5ldChvdmVycmlkZSB2YWwgcmFkaXVzOiBMb25nLCB2YXIgcG9wdWxhdGlvbjogTG9uZyk6IFBsYW5ldChyYWRpdXMpIHtcbiAgICBpbml0IHsgcHJpbnRsbihcImNvbnN0cnVjdG9yIGNhbGxlZFwiKSB9XG4gICAgXG4gICAgdmFyIHBvcHVsYXRpb25JbkJpbGxpb246IEludFxuICAgIGdldCgpID0gKHBvcHVsYXRpb24gLyAxXzAwMF8wMDBfMDAwKS50b0ludCgpXG4gICAgc2V0KHZhbHVlKSB7XG4gICAgICAgIHBvcHVsYXRpb24gPSB2YWx1ZS50b0xvbmcoKSAqIDFfMDAwXzAwMF8wMDBcbiAgICB9XG4gICAgXG4gICAgZnVuIGluY3JlYXNlUG9wdWxhdGlvbihhbW91bnQ6IExvbmcpe1xuICAgICAgICBwb3B1bGF0aW9uICs9IGFtb3VudFxuICAgIH0gICAgICAgXG59XG5cbi8vIGV4dGVuc2lvbnNcbmZ1biBTdHJpbmcuY291bnRMZXR0ZXJzKGxldHRlcnM6IEFycmF5PENoYXI+KTogSW50IFxuXHQ9IHRoaXMuZmlsdGVyIHsgbGV0dGVycy5jb250YWlucyhpdCkgfVxuICAgIFx0XHQubWFwIHsgMSB9LnN1bSgpXG4gICAgICAgICAgICBcbnZhbCBJbmhhYml0ZWRQbGFuZXQuaGFzSW5oYWJpdGFudHM6IEJvb2xlYW4gXG5cdGdldCgpID0gcG9wdWxhdGlvbiA+IDBcblxuZnVuIG1haW4oKXtcbiAgICB2YWwgZWFydGggPSBJbmhhYml0ZWRQbGFuZXQoNl8zNzEsIDdfNzUzXzAwMF8wMDBfMDAwKVxuICAgIHByaW50bG4oZWFydGgpXG4gICAgcHJpbnRsbihlYXJ0aC5yYWRpdXMpXG4gICAgcHJpbnRsbihlYXJ0aC5wb3B1bGF0aW9uKVxuICAgIGVhcnRoLnBvcHVsYXRpb24gKz0gMVxuICAgIHByaW50bG4oZWFydGgucG9wdWxhdGlvbilcbiAgICBwcmludGxuKGVhcnRoLnBvcHVsYXRpb25JbkJpbGxpb24pXG4gICAgXG4gICAgZWFydGguaW5jcmVhc2VQb3B1bGF0aW9uKDEwMClcbiAgICBwcmludGxuKGVhcnRoLnBvcHVsYXRpb24pXG4gICAgcHJpbnRsbihlYXJ0aC5wb3B1bGF0aW9uSW5CaWxsaW9uKVxuICAgIFxuICAgIHByaW50bG4oXCJIZWxsb1wiLmNvdW50TGV0dGVycyhhcnJheU9mKCdIJywgJ2UnKSkpXG4gICAgcHJpbnRsbihlYXJ0aC5oYXNJbmhhYml0YW50cylcbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},N=l("h3",{id:"data-class",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#data-class","aria-hidden":"true"},"#"),I(" Data class")],-1),S=l("strong",null,"final",-1),k={href:"https://kotlinlang.org/docs/data-classes.html",target:"_blank",rel:"noopener noreferrer"},z=e("
  • equals() and hashCode()
  • toString() of the form "class(field=value, ...)"
  • componentN() that correspond to the properties in their order of declaration.
  • copy()
",1),E={href:"https://kotlinlang.org/docs/data-classes.html",target:"_blank",rel:"noopener noreferrer"},L=l("ul",null,[l("li",null,"The primary constructor needs to have at least one parameter."),l("li",null,"All primary constructor parameters need to be marked as val or var."),l("li",null,"They cannot be abstract, open, sealed, or inner (💡 but extensions are possible).")],-1),j={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gZGF0YSBjbGFzcyBhcmUgZmluYWwgY2xhc3NlcyBnZW5lcmF0ZSBtYW55IHVzZWZ1bCBib2lsZXJwbGF0ZSBjb2RlIChoYXNoQ29kZSwgZXF1YWxzLCBjb21wb25lbnROKCksIGNvcHkgYW5kIHRvU3RyaW5nKVxuZGF0YSBjbGFzcyBTcGFjZVNoaXAodmFsIG1heFNwZWVkOiBJbnQsIHZhciBjdXJyZW50U3BlZWQ6IEludCA9IDApXG5cbmZ1biBtYWluKCkge1xudmFsIHNoaXAxID0gU3BhY2VTaGlwKDEwMDAsIDApXG4gICAgdmFsIHNoaXAyID0gU3BhY2VTaGlwKDEwMDAsIDApXG4gICAgdmFsIHNoaXAzID0gU3BhY2VTaGlwKDEwMDAsIDEwKVxuICAgIHByaW50bG4oc2hpcDEpXG4gICAgcHJpbnRsbihzaGlwMSA9PSBzaGlwMilcbiAgICBwcmludGxuKHNoaXAxID09IHNoaXAzKVxuICAgIFxuICAgIHByaW50bG4oc2hpcDEuY29tcG9uZW50MSgpKVxuICAgIHByaW50bG4oc2hpcDEuY29tcG9uZW50MigpKVxuICAgIFxuICAgIC8vIGNvbXBvbmVudHMgZW5hYmxlIGRlc3RydWN0dXJpbmdcbiAgICB2YWwgKG1heFNwZWVkLCBjdXJyZW50U3BlZWQpID0gc2hpcDJcbiAgICBwcmludGxuKFwiTWF4IHNwZWVkOiAkbWF4U3BlZWQuIEN1cnJlbnQgc3BlZWQ6ICRjdXJyZW50U3BlZWRcIilcbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},f=l("h3",{id:"functional-programming",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#functional-programming","aria-hidden":"true"},"#"),I(" Functional programming")],-1),U=l("h4",{id:"general-concepts",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#general-concepts","aria-hidden":"true"},"#"),I(" General concepts")],-1),M={href:"https://www.geeksforgeeks.org/functional-programming-paradigm",target:"_blank",rel:"noopener noreferrer"},K=l("p",null,"Let's briefly explain these concepts:",-1),Q=l("li",null,"Immutable variables means that we cannot change the value of a variable or its properties once it has been created. If we want to do so, we must create a new instance with the new value.",-1),T=l("li",null,"Pure functions are functions that do not have side effects and will thus return always the same output given the same input.",-1),D=l("li",null,"Functions are first class citizens: they can be assigned to a variable or used in higher-order functions (passed as a function parameter to another function or returned from a function).",-1),_={href:"https://ericnormand.me/podcast/what-is-referential-transparency",target:"_blank",rel:"noopener noreferrer"},P=l("p",null,"💡 Pure functional languages provide these features natively and enforces them (at build time).",-1),O=l("h4",{id:"kotlin-and-functional-programming",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#kotlin-and-functional-programming","aria-hidden":"true"},"#"),I(" Kotlin and functional programming")],-1),q={href:"https://github.com/Kotlin/kotlinx.collections.immutable",target:"_blank",rel:"noopener noreferrer"},$={class:"custom-container warning"},ll=l("p",{class:"custom-container-title"},"listOf generates read-only lists, which are not immutable",-1),Il={href:"https://www.baeldung.com/kotlin/immutable-collections",target:"_blank",rel:"noopener noreferrer"},gl=e(`
@Test
+fun givenReadOnlyList_whenCastToMutableList_checkNewElementsAdded(){
+    val list: List<String> = listOf("This", "Is", "Totally", "Immutable")
+    (list as MutableList<String>)[2] = "Not"
+    assertEquals(listOf("This", "Is", "Not", "Immutable"), list)
+}
+
`,1),cl={href:"https://arrow-kt.io/",target:"_blank",rel:"noopener noreferrer"},el=l("h4",{id:"declarative-programming",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#declarative-programming","aria-hidden":"true"},"#"),I(" Declarative programming")],-1),al=l("p",null,[I("Declarative programming is a famous style within functional programming. It consists of writing code as a chaining of function calls in this style "),l("code",null,"val result = f(x).g(y). ..."),I(". Higher order functions replace many situation where we would use loops. This favors readable code which is easy to debug an maintain.")],-1),il={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiZnVuIG1haW4oKSB7XG4gICAgdmFsIGZhbnRhc3lOYW1lcyA9IGxpc3RPZihcIkNsZWJicmVyXCIsIFwiU25pbmp1clwiLCBcIk1vZGRuYWFjXCIsIFwiTGVlZG5hdFwiICxcIkdpZXJ3eXN0XCIsIFwiWmV2dXJpZ1wiLCBcIkNsYWFtcGFyYWlydFwiLCBcIkd1ZmFwcmFhbVwiLCBcIlJpZW1hcHJhc3RcIiwgXCJCaWxhbmpvbVwiKVxuICAgIFxuICAgIC8vIGZpbmQgbmFtZXMgdGhhdCBzdGFydCB3aXRoIFwiR1wiIG9yIGVuZCB3aXRoIFwidFwiIGFuZCByZXR1cm4gdGhlbSBhcyBjYXBpdGFsIGxldHRlcnNcbiAgICB2YWwgc2VsZWN0ZWROYW1lcyA9IGZhbnRhc3lOYW1lcy5maWx0ZXIgeyBpdC5zdGFydHNXaXRoKCdHJykgfHwgaXQuZW5kc1dpdGgoJ3QnKSB9Lm1hcCB7IGl0LnRvVXBwZXJDYXNlKCkgfVxuICAgIHByaW50bG4oXCJGaWx0ZXJlZCBuYW1lcyAke3NlbGVjdGVkTmFtZXMuam9pblRvU3RyaW5nKFwiLCBcIil9XCIpXG4gICAgXG4gICAgLy8gY291bnQgdGhlIG51bWJlciBvZiB2b3dlbHNcblx0Ly8gZmxhcG1hcCBhbGxvd3MgdG8gY29udmVydCBhIDJkIGFycmF5IHRvIGEgMWQgYXJyYXkgYnkgY29uY2F0ZW5hdGluZyB0aGUgZWxlbWVudHMgKGNhbGxlZCBhIGZsYXQgb3BlcmF0aW9uKVxuXHR2YWwgdm93ZWxDb3VudCA9IGZhbnRhc3lOYW1lcy5mbGF0TWFweyBpdC50b0xpc3QoKSB9LmZpbHRlcnsgXCJhaXVlb1wiLmNvbnRhaW5zKGl0KSB9Lm1hcCB7IDEgfS5zdW0oKVxuICAgIHZhbCB2b3dlbENvdW50MiA9IGZhbnRhc3lOYW1lcy5mbGF0TWFweyBpdC50b0xpc3QoKSB9XG4gICAgICAgIC5tYXB7IGlmIChcImFpdWVvXCIuY29udGFpbnMoaXQpKSAxIGVsc2UgMCB9XG4gICAgICAgIC5yZWR1Y2UgeyBhY2MsIGN1cnJlbnQgLT4gYWNjICsgY3VycmVudCB9XG4gICAgXG4gICAgcHJpbnRsbihcIlZvd2VsIGNvdW50OiAkdm93ZWxDb3VudFwiKVxuICAgIHByaW50bG4oXCJWb3dlbCBjb3VudDogJHZvd2VsQ291bnQyXCIpXG59In0=",target:"_blank",rel:"noopener noreferrer"},nl=l("h3",{id:"kotlin-and-java-interoperability",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#kotlin-and-java-interoperability","aria-hidden":"true"},"#"),I(" Kotlin and Java interoperability")],-1),bl=l("li",null,"Kotlin is designed with Java interoperability in mind.",-1),sl=l("li",null,"Kotlin code may require some annotations to be called from Java.",-1),tl=l("li",null,"It is possible to mix Java and Kotlin in the same project.",-1),ol=l("li",null,"JetBrain's IntelliJ and Android Studio can convert to Kotlin when pasting java code.",-1),dl=l("code",null,"@JvmRecord",-1),Gl={href:"https://kotlinlang.org/docs/jvm-records.html",target:"_blank",rel:"noopener noreferrer"},ul=l("li",null,[I("It is much more easier and natural to call Java from Kotlin. "),l("ul",null,[l("li",null,"For example: Java accessors are converted to Kotlin properties.")])],-1),hl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGphdmEudXRpbC4qXG5mdW4gY29udmVydFRvQXJyYXlMaXN0KGl0ZW1zOiBMaXN0PEludD4pOiBBcnJheUxpc3Q8SW50PiB7XG4gICAgLy8gaW5zdGFudGlhdGUgYXMgaW4gSmF2YSB3aXRob3V0ICduZXcnXG4gICAgdmFsIGxpc3QgPSBBcnJheUxpc3Q8SW50PigpXG4gICAgLy8gJ2ZvcictbG9vcHMgd29yayBmb3IgSmF2YSBjb2xsZWN0aW9uczpcbiAgICBmb3IgKGl0ZW0gaW4gaXRlbXMpIHsgXG4gICAgICAgIGxpc3QuYWRkKGl0ZW0pXG4gICAgfVxuICAgIFxuICAgIGZvciAoaSBpbiAwLi5pdGVtcy5zaXplIC0gMSkge1xuICAgICAgICBsaXN0W2ldID0gaXRlbXNbaV1cbiAgICB9XG4gICAgcmV0dXJuIGxpc3Rcbn1cbmZ1biBtYWluKCl7XG4gICAgdmFsIGxpc3QgPSBjb252ZXJ0VG9BcnJheUxpc3QobGlzdE9mKDAsIDIsIC0xKSlcbiAgICBwcmludGxuKFwibGlzdDogJHtsaXN0fS4gdHlwZTogJHtsaXN0OjpjbGFzcy5xdWFsaWZpZWROYW1lfVwiKVxuICAgIC8vbGlzdDogWzAsIDIsIC0xXS4gdHlwZTogamF2YS51dGlsLkFycmF5TGlzdFxufSJ9",target:"_blank",rel:"noopener noreferrer"},ml=l("code",null,"List",-1),Cl=l("code",null,"ArrayList",-1),rl={href:"https://kotlinlang.org/docs/jvm-get-started.html",target:"_blank",rel:"noopener noreferrer"},Zl=l("h3",{id:"exercises-1",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercises-1","aria-hidden":"true"},"#"),I(" Exercises")],-1),pl=l("h4",{id:"exercise-3",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercise-3","aria-hidden":"true"},"#"),I(" Exercise 3")],-1),Bl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gRXh0ZW5zaW9ucyBhbGxvd3MgdG8gYWRkIGZ1bmN0aW9ucyBvciBwcm9wZXJ0aWVzIHRvIGFuIGV4aXN0aW5nIGNsYXNzIChldmVuIGNsYXNzZXMgaW1wb3J0ZWQgZnJvbSBvdGhlciBsaWJyYXJpZXMpXG4vLyBodHRwczovL2tvdGxpbmxhbmcub3JnL2RvY3MvcmVmZXJlbmNlL2V4dGVuc2lvbnMuaHRtbFxuXG5vcGVuIGNsYXNzIEFkdmVudHVyZXIodmFyIGhwOiBJbnQpe1xuICAgIHZhbCBtYXhIcCA9IGhwXG4gICAgZnVuIGF0dGFjaygpOlN0cmluZyA9IFwiSSBkZWFsdCAxMCBkYW1hZ2VcIlxufVxuLy8gRXh0ZW5zaW9uIGZ1bmN0aW9uIHN5bnRheDogZnVuIGNsYXNzTmFtZS5mdW5jdGlvbk5hbWUocHJhbXMpIDogcmV0dXJuVHlwZVxuZnVuIEFkdmVudHVyZXIucmVwb3J0U3RhdHVzKCk6U3RyaW5nIHtcbiAgICByZXR1cm4gXCJJIGhhdmUgJHtocH0gSFBcIlxufVxuXG5mdW4gQWR2ZW50dXJlci5hdHRhY2soKTpTdHJpbmcgPSBcIkkgZGVhbHQgMTAwMCBkYW1hZ2VcIlxuXG5jbGFzcyBCYXJiYXJpYW4oaHA6IEludCk6IEFkdmVudHVyZXIoaHApXG5cbmZ1biBCYXJiYXJpYW4ucmVwb3J0U3RhdHVzKCk6U3RyaW5nID0gXCJJIGFtIGEgYmFyYmFyaWFuIGFuZCBJIGhhdmUgJHtocH0gSFBcIlxuXG5mdW4gcHJpbnRTdGF0dXMoYWR2ZW50dXJlcjogQWR2ZW50dXJlcikge1xuICAgIHByaW50bG4oYWR2ZW50dXJlci5yZXBvcnRTdGF0dXMoKSlcbn1cblxuZnVuIG1haW4oKXtcbiAgICAvLyBUT0RPIGNyZWF0ZSBhbiBhZHZlbnR1cmVyIHdpdGggMjAwaHAgYW5kIHByaW50IHRoZSByZXN1bHQgb2YgdGhlIHJlcG9ydFN0YXR1cyBleHRlbnNpb24gbWV0aG9kXG5cbiAgICAvLyBUT0RPIHByaW50IHRoZSByZXN1bHQgb2YgdGhlIGF0dGFjayBmdW5jdGlvbi4gV2hpY2ggdmVyc2lvbiBpcyByZXRhaW5lZCAobWVtYmVyIGZ1biBvciBleHRlbnNpb24gZnVuID8pXG5cbiAgICAvLyBUT0RPIGRlZmluZSB0aGUgZXh0ZXNudGlvbiBmdW4gJ0FkdmVudHVyZXIuYXR0YWNrKGRhbWFnZTogSW50KTpTdHJpbmcnIHRoYXQgcHJpbnRzIHRoZSB2YWx1ZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXJcblxuICAgIC8vIFRPRE8gcHJpbnQgdGhlIHJlc3VsdHMgb2YgdGhpcyBuZXcgZXh0ZW5zaW9uIGZ1bmN0aW9uIHdpdGggcGFyYW1ldGVyIHZhbHVlcyA1MCwgMTAgYW5kIDIwMFxuXG4gICAgLy8gVE9ETyB3aGF0IGlzIHRoZSByZXN1bHQgb2YgcHJpbnRTdGF0dXMgb24gYSBCYXJiYXJpYW4gPyB3aGF0IGRvIHlvdSBjb25jbHVkZSA/XG4gICAgdmFsIGJhcmJhcmlhbiA9IEJhcmJhcmlhbig1MDApXG4gICAgcHJpbnRTdGF0dXMoYmFyYmFyaWFuKVxuXG4gICAgLy8gVE9ETyBjcmVhdGUgYW4gZXh0ZW5zaW9uIHByb3BlcnR5IFwibG9zdEhwXCIgdGhhdCBjb3JyZXNwb25kcyB0byBcIm1heEhwIC0gaHBcIiAuXG4gICAgLy8gIEJlY2F1c2Ugd2UgY2Fubm90IGFkZCBmaWVsZHMgdG8gYW4gZXhpc3RpbmcgY2xhc3MsIGV4dGVuc2lvbiBwcm9wZXJ0aWVzIGNhbiBiZSBkZWZpbmVkIHVzaW5nIGdldHRlcnMgYW5kIHNldHRlcnMuXG5cbiAgICAvKiAgdW5jb21tZW50IGFmdGVyIGRlZmluaW5nIHRoZSBwcm9wZXJ0eSAgXG4gICAgdmFsIGIgPSBCYXJiYXJpYW4oMzAwKVxuICAgIGIuaHAgLT0gMTAwXG4gICAgcHJpbnRsbihiLmxvc3RIcCkgLy8gMTAwXG4gICAgYi5sb3N0SHAgPSAyNTBcbiAgICBwcmludGxuKGIuaHApIC8vIDUwXG4gICAgKi9cbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},Xl={class:"custom-container details"},Wl=l("summary",null,"Please open to see the solution(s)",-1),yl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gRXh0ZW5zaW9ucyBhbGxvd3MgdG8gYWRkIGZ1bmN0aW9ucyBvciBwcm9wZXJ0aWVzIHRvIGFuIGV4aXN0aW5nIGNsYXNzIChldmVuIGNsYXNzZXMgaW1wb3J0ZWQgZnJvbSBvdGhlciBsaWJyYXJpZXMpXG4vLyBodHRwczovL2tvdGxpbmxhbmcub3JnL2RvY3MvcmVmZXJlbmNlL2V4dGVuc2lvbnMuaHRtbFxuXG5vcGVuIGNsYXNzIEFkdmVudHVyZXIodmFyIGhwOiBJbnQpe1xuICAgIHZhbCBtYXhIcCA9IGhwXG4gICAgZnVuIGF0dGFjaygpOlN0cmluZyA9IFwiSSBkZWFsdCAxMCBkYW1hZ2VcIlxufVxuLy8gRXh0ZW5zaW9uIGZ1bmN0aW9uIHN5bnRheDogZnVuIGNsYXNzTmFtZS5mdW5jdGlvbk5hbWUocHJhbXMpIDogcmV0dXJuVHlwZVxuZnVuIEFkdmVudHVyZXIucmVwb3J0U3RhdHVzKCk6U3RyaW5nIHtcbiAgICByZXR1cm4gXCJJIGhhdmUgJHtocH0gSFBcIlxufVxuXG5mdW4gQWR2ZW50dXJlci5hdHRhY2soKTpTdHJpbmcgPSBcIkkgZGVhbHQgMTAwMCBkYW1hZ2VcIlxuXG5jbGFzcyBCYXJiYXJpYW4oaHA6IEludCk6IEFkdmVudHVyZXIoaHApXG5cbmZ1biBCYXJiYXJpYW4ucmVwb3J0U3RhdHVzKCk6U3RyaW5nID0gXCJJIGFtIGEgYmFyYmFyaWFuIGFuZCBJIGhhdmUgJHtocH0gSFBcIlxuXG5mdW4gcHJpbnRTdGF0dXMoYWR2ZW50dXJlcjogQWR2ZW50dXJlcikge1xuICAgIHByaW50bG4oYWR2ZW50dXJlci5yZXBvcnRTdGF0dXMoKSlcbn1cblxuZnVuIG1haW4oKXtcbiAgICAvLyBUT0RPIGNyZWF0ZSBhbiBhZHZlbnR1cmVyIHdpdGggMjAwaHAgYW5kIHByaW50IHRoZSByZXN1bHQgb2YgdGhlIHJlcG9ydFN0YXR1cyBleHRlbnNpb24gbWV0aG9kXG5cbiAgICAvLyBUT0RPIHByaW50IHRoZSByZXN1bHQgb2YgdGhlIGF0dGFjayBmdW5jdGlvbi4gV2hpY2ggdmVyc2lvbiBpcyByZXRhaW5lZCAobWVtYmVyIGZ1biBvciBleHRlbnNpb24gZnVuID8pXG5cbiAgICAvLyBUT0RPIGRlZmluZSB0aGUgZXh0ZXNudGlvbiBmdW4gJ0FkdmVudHVyZXIuYXR0YWNrKGRhbWFnZTogSW50KTpTdHJpbmcnIHRoYXQgcHJpbnRzIHRoZSB2YWx1ZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXJcblxuICAgIC8vIFRPRE8gcHJpbnQgdGhlIHJlc3VsdHMgb2YgdGhpcyBuZXcgZXh0ZW5zaW9uIGZ1bmN0aW9uIHdpdGggcGFyYW1ldGVyIHZhbHVlcyA1MCwgMTAgYW5kIDIwMFxuXG4gICAgLy8gVE9ETyB3aGF0IGlzIHRoZSByZXN1bHQgb2YgcHJpbnRTdGF0dXMgb24gYSBCYXJiYXJpYW4gPyB3aGF0IGRvIHlvdSBjb25jbHVkZSA/XG4gICAgdmFsIGJhcmJhcmlhbiA9IEJhcmJhcmlhbig1MDApXG4gICAgcHJpbnRTdGF0dXMoYmFyYmFyaWFuKVxuXG4gICAgLy8gVE9ETyBjcmVhdGUgYW4gZXh0ZW5zaW9uIHByb3BlcnR5IFwibG9zdEhwXCIgdGhhdCBjb3JyZXNwb25kcyB0byBcIm1heEhwIC0gaHBcIiAuXG4gICAgLy8gIEJlY2F1c2Ugd2UgY2Fubm90IGFkZCBmaWVsZHMgdG8gYW4gZXhpc3RpbmcgY2xhc3MsIGV4dGVuc2lvbiBwcm9wZXJ0aWVzIGNhbiBiZSBkZWZpbmVkIHVzaW5nIGdldHRlcnMgYW5kIHNldHRlcnMuXG4gICAgdmFyIEJhcmJhcmlhbi5sb3N0SHA6SW50XG4gICAgICAgIGdldCgpID0gbWF4SHAgLSBocFxuICAgICAgICBzZXQgKHZhbHVlKSB7IGhwID0gbWF4SHAgLSB2YWx1ZX1cblxuICAgIHZhbCBiID0gQmFyYmFyaWFuKDMwMClcbiAgICBiLmhwIC09IDEwMFxuICAgIHByaW50bG4oYi5sb3N0SHApIC8vIDEwMFxuICAgIGIubG9zdEhwID0gMjUwXG4gICAgcHJpbnRsbihiLmhwKSAvLyA1MFxuXG59In0=",target:"_blank",rel:"noopener noreferrer"},Al=l("h4",{id:"exercise-4",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercise-4","aria-hidden":"true"},"#"),I(" Exercise 4")],-1),Vl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGVcbmltcG9ydCBqYXZhLnRpbWUuUGVyaW9kXG5cbi8vIC8vIFE6IGNyZWF0ZSBhbiBlbnVtZXJhdGlvbiBjbGFzcyBjYWxsZWQgXCJDYXRDb2xvclwiIHRoYXQgaGFzIHRoZXNlIHZhbHVlczogV0hJVEUsIENSRUFNLCBCTEFDSywgUkVELGFuZCBCUk9XTlxuXG4vLyBROiBjcmVhdGUgYSBkYXRhY2xhc3MgXCJDYXRcIiB0aGF0IGhhcyAzIGltbXV0YWJsZSBwcm9wZXJ0aWVzOiBuYW1lOiBTdHJpbmcsIGJpcnRoRGF0ZTogTG9jYWxEYXRlIGFuZCBjb2xvcjogQ2F0Q29sb3JcblxuZnVuIG1haW4oKXtcbiAgICAvLyBROiBhZGQgYSBjYXQgd2l0aCBjcmVhbSBjb2xvciBhbmQgYW5vdGhlciBvbmUgd2l0aCBibGFjayBjb2xvclxuICAgIHZhbCBjYXRzID0gbGlzdE9mKFxuICAgICAgQ2F0KFwiQmVsbGFcIiwgTG9jYWxEYXRlLnBhcnNlKFwiMjAyMC0xMC0xMlwiKSwgQ2F0Q29sb3IuV0hJVEUpLFxuICAgICAgQ2F0KFwiU2ltYmFcIiwgTG9jYWxEYXRlLnBhcnNlKFwiMjAxMC0wMS0zMVwiKSwgQ2F0Q29sb3IuQlJPV04pLFxuICAgICAgQ2F0KFwiS2l0dHlcIiwgTG9jYWxEYXRlLnBhcnNlKFwiMjAxNy0wNS0wNlwiKSwgQ2F0Q29sb3IuV0hJVEUpXG4gICAgKVxuICAgIFxuICAgIC8vIFBsZWFzZSB1c2UgYSBkZWNsYXJhdGl2ZSBzdHlsZSBpbiB0aGlzIGV4ZXJjaXNlXG5cbiAgICAvLyBROiBwcmludCB0aGUgbmFtZXMgb2Ygd2hpdGUgY2F0c1xuXG4gICAgLy8gUTogcHJpbnQgdGhlIG5hbWUgYW5kIGFnZSAoYW5kIGp1c3QgdGhlIG5hbWUgYW5kIGFnZSkgb2YgY2F0cyB0aGF0IGFyZSBhdCBsZWFzdCA1IHllYXJzIG9sZC5cbiAgICAvLyBIaW50OiBpbXBvcnQgamF2YS50aW1lLlBlcmlvZCBhbmQgdXNlIFBhaXIgY2xhc3NcbiAgICAgICBcbiAgICBcbiAgICAvLyBMZXQncyBzdXBwb3NlIHRoYXQgd2UgaGF2ZSBhbiBhcnJheSBvZiBvd25lcnMgd2hlcmUgZWFjaCBlbGVtZW50IGlzIHRoZSBvd25lciBvZiB0aGUgY29ycmVzcG9uZGluZyBpbmRleCBpbiB0aGUgY2F0cyB0YWJsZS4gRm9yIGV4YW1wbGUgQW5kYW5vciBpcyB0aGUgb3duZXIgb2YgS2l0dHlcbiAgICB2YWwgb3duZXJzID0gbGlzdE9mKFwiSXJ5ZW5cIiwgXCJJcnllblwiLCBcIkFuZGFub3JcIiwgXCJBbmRhbm9yXCIsIFwiR2FuZGFsZlwiKVxuICAgIFxuICAgIC8vIFE6IHVzaW5nIHRoZSB6aXAgbWV0aG9kLCBwcmludCB0aGUgbmFtZSBvZiBjYXRzIG93bmVkIGJ5IFwiSXJ5ZW5cIlxufSJ9",target:"_blank",rel:"noopener noreferrer"},Yl={class:"custom-container details"},Jl=l("summary",null,"Please open to see the solution(s)",-1),Rl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGVcbmltcG9ydCBqYXZhLnRpbWUuUGVyaW9kXG5cbi8vIC8vIFE6IGNyZWF0ZSBhbiBlbnVtZXJhdGlvbiBjbGFzcyBjYWxsZWQgXCJDYXRDb2xvclwiIHRoYXQgaGFzIHRoZXNlIHZhbHVlczogV0hJVEUsIENSRUFNLCBCTEFDSywgUkVELGFuZCBCUk9XTlxuZW51bSBjbGFzcyBDYXRDb2xvciB7XG4gICAgV0hJVEUsIENSRUFNLCBCTEFDSywgUkVELCBCUk9XTlxufVxuXG4vLyBROiBjcmVhdGUgYSBkYXRhY2xhc3MgXCJDYXRcIiB0aGF0IGhhcyAzIGltbXV0YWJsZSBwcm9wZXJ0aWVzOiBuYW1lOiBTdHJpbmcsIGJpcnRoRGF0ZTogTG9jYWxEYXRlIGFuZCBjb2xvcjogQ2F0Q29sb3Jcbi8vIEhpbnQ6IGltcG9ydCBqYXZhLnRpbWUuTG9jYWxEYXRlXG5kYXRhIGNsYXNzIENhdCh2YWwgbmFtZTogU3RyaW5nLCB2YWwgYmlydGhEYXRlOiBMb2NhbERhdGUsIHZhbCBjb2xvcjogQ2F0Q29sb3IpXG5cbmZ1biBtYWluKCl7XG4gICAgLy8gUTogYWRkIGEgY2F0IHdpdGggY3JlYW0gY29sb3IgYW5kIGFub3RoZXIgb25lIHdpdGggYmxhY2sgY29sb3JcbiAgICB2YWwgY2F0cyA9IGxpc3RPZihcbiAgICAgIENhdChcIkJlbGxhXCIsIExvY2FsRGF0ZS5wYXJzZShcIjIwMjAtMTAtMTJcIiksIENhdENvbG9yLldISVRFKSxcbiAgICAgIENhdChcIlNpbWJhXCIsIExvY2FsRGF0ZS5wYXJzZShcIjIwMTAtMDEtMzFcIiksIENhdENvbG9yLkJST1dOKSxcbiAgICAgIENhdChcIktpdHR5XCIsIExvY2FsRGF0ZS5wYXJzZShcIjIwMTctMDUtMDZcIiksIENhdENvbG9yLldISVRFKSxcbiAgICAgIENhdChcIk1pYW91XCIsIExvY2FsRGF0ZS5wYXJzZShcIjIwMTEtMDItMjVcIiksIENhdENvbG9yLkNSRUFNKSxcbiAgICAgIENhdChcIk55YW5cIiwgTG9jYWxEYXRlLnBhcnNlKFwiMjAxNC0wNy0xMVwiKSwgQ2F0Q29sb3IuQkxBQ0spXG4gICAgKVxuICAgIFxuICAgIC8vIFBsZWFzZSB1c2UgYSBkZWNsYXJhdGl2ZSBzdHlsZSBpbiB0aGlzIGV4ZXJjaXNlXG5cbiAgICAvLyBROiBwcmludCB0aGUgbmFtZXMgb2Ygd2hpdGUgY2F0c1xuICAgIHZhbCB3aGl0ZUNhdE5hbWVzID0gY2F0cy5maWx0ZXIgeyBpdC5jb2xvciA9PSBDYXRDb2xvci5XSElURSB9Lm1hcCB7IGl0Lm5hbWUgfVxuICAgIHByaW50bG4oXCJXaGl0ZSBjYXRzOiAke3doaXRlQ2F0TmFtZXMuam9pblRvU3RyaW5nKFwiLCBcIil9XCIpXG5cbiAgICAvLyBROiBwcmludCB0aGUgbmFtZSBhbmQgYWdlIChhbmQganVzdCB0aGUgbmFtZSBhbmQgYWdlKSBvZiBjYXRzIHRoYXQgYXJlIGF0IGxlYXN0IDUgeWVhcnMgb2xkLlxuICAgIC8vIEhpbnQ6IGltcG9ydCBqYXZhLnRpbWUuUGVyaW9kIGFuZCB1c2UgUGFpciBjbGFzc1xuICAgIHZhbCBNb3JlVGhhbjV5b0NhdHMgPSBjYXRzLmZpbHRlciB7IFBlcmlvZC5iZXR3ZWVuKGl0LmJpcnRoRGF0ZSwgTG9jYWxEYXRlLm5vdygpKS5nZXRZZWFycygpID49IDUgfVxuICAgIFx0Lm1hcCB7IFBhaXIoaXQubmFtZSwgUGVyaW9kLmJldHdlZW4oaXQuYmlydGhEYXRlLCBMb2NhbERhdGUubm93KCkpLmdldFllYXJzKCkpIH1cbiAgICAgICAgLm1hcCB7IFwiKG5hbWU6ICR7aXQuZmlyc3R9IC0gYWdlOiAke2l0LnNlY29uZH0pXCIgfVxuICAgIHByaW50bG4oXCJXaGl0ZSBjYXRzOiAke01vcmVUaGFuNXlvQ2F0cy5qb2luVG9TdHJpbmcoXCIsIFwiKX1cIilcbiAgICAgICAgXG4gICAgXG4gICAgLy8gTGV0J3Mgc3VwcG9zZSB0aGF0IHdlIGhhdmUgYW4gYXJyYXkgb2Ygb3duZXJzIHdoZXJlIGVhY2ggZWxlbWVudCBpcyB0aGUgb3duZXIgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXggaW4gdGhlIGNhdHMgdGFibGUuIEZvciBleGFtcGxlIEFuZGFub3IgaXMgdGhlIG93bmVyIG9mIEtpdHR5XG4gICAgdmFsIG93bmVycyA9IGxpc3RPZihcIklyeWVuXCIsIFwiSXJ5ZW5cIiwgXCJBbmRhbm9yXCIsIFwiQW5kYW5vclwiLCBcIkdhbmRhbGZcIilcbiAgICBcbiAgICAvLyBROiB1c2luZyB0aGUgemlwIG1ldGhvZCwgcHJpbnQgdGhlIG5hbWUgb2YgY2F0cyBvd25lZCBieSBcIklyeWVuXCJcblx0dmFsIGlyeWVuQ2F0cyA9IChvd25lcnMgemlwIGNhdHMpLmZpbHRlciB7IGl0LmZpcnN0ID09IFwiSXJ5ZW5cIn0ubWFwIHsgaXQuc2Vjb25kLm5hbWUgfVxuICAgIHByaW50bG4oXCJJcnllbidzIGNhdHMgYXJlOiAke2lyeWVuQ2F0cy5qb2luVG9TdHJpbmcoXCIsIFwiKX1cIilcbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},xl=l("h4",{id:"exercise-5",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercise-5","aria-hidden":"true"},"#"),I(" Exercise 5")],-1),Fl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gVGhlICd0aGlzJyBrZXl3b3JkIGluc2lkZSBhbiBleHRlbnNpb24gY29ycmVzcG9uZHMgdG8gdGhlIHJlY2VpdmVyIG9iamVjdCAodGhlIG9iamVjdCB0aGF0IGNhbGxzIHRoZSBleHRlbnNpb24pXG4vLyBUT0RPIGNlZWF0ZSBhbiBleHRlbnNpb24gZnVuY3Rpb24gJ21ha2VRdWVzdGlvbicgb2YgdGhlIFN0cmluZyBjbGFzcyB0aGF0IHJldHVybiBhIG5ldyBTdHJpbmcgdGhhdCBjb250YWlucyB0aGUgb3JpZ2luYWwgU3RyaW5nICsgJz8nIGF0IHRoZSBlbmRcblxuLy8gcHJpbnRsbihcIkhvdyBkbyB5b3UgZG9cIi5tYWtlUXVlc3Rpb24oKSkgLy8gc2hvdWxkIHByaW50IFwiSG93IGRvIHlvdSBkbyA/XCJcblxuY2xhc3MgTWFnZShocDogSW50KTogRXh0ZW5zaW9uczAxLkFkdmVudHVyZXIoaHApe1xuICAgIGNvbXBhbmlvbiBvYmplY3Qge1xuICAgICAgICB2YXIgY291bnQgPSAwXG4gICAgfVxuICAgIGluaXQge1xuICAgICAgICBNYWdlLmNvdW50ICs9IDFcbiAgICB9XG59XG4vLyBUT0RPIGRlZmluZSBhbiBleHRlbnNpb24gZnVuY3Rpb24gb24gdGhlIGNvbXBhbmlvbiBvYmplY3QgdGhhdCBwcmludHMgdGhlIG51bWJlciBvZiBjcmVhdGVkIG1hZ2VzLlxuLy8gaGludDogXCJ0aGlzXCIgYWxsb3dzIHRvIHJlZmVyZW5jZSB0aGUgY29tcGFuaW9uIG9iamVjdFxuXG52YWwgbWFnZSA9IE1hZ2UoMTAwKVxudmFsIG1hZ2UyID0gTWFnZSgyMDApXG5wcmludChcIk1hZ2UgY291bnQ6IFwiKVxuLy8gTWFnZS5wcmludENvdW50KCkgLy8gMlxuXG4vLyBUT0RPIGNyYXRlIGFuIGV4dGVuc2lvbiBmdW5jdGlvbiBcImV2ZW5Db3VudCgpOkludFwiIG9uIExpc3Q8SW50PiB0aGF0IHJldHVybiB0aGUgbnVtYmVyIG9mIGV2ZW4gdmFsdWVzXG5cbi8vcHJpbnRsbihsaXN0T2YoMSwgMiwgMywgNCwgNSkuZXZlbkNvdW50KCkpIC8vIHByaW50cyAyXG5cbi8vIFRPRE8gY3JlYXRlIGEgZ2VuZXJpYyBleHRlbnNpb24gZnVuY3Rpb24gXCJjb25jYXRlbmF0ZSgpOlN0cmluZ1wiIG9uIExpc3Q8VD4gdGhhdCBjb25jYXRlbmF0ZXMgdGhlIHRvU3RyaW5nIHZhbHVlIG9mIGFsbCBvZiB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3RcblxuLy8gcHJpbnRsbihsaXN0T2YoXCJIZWxsbyBcIiwgXCJXb3JsZFwiLCBcIkxpbmVcIikuY29uY2F0ZW5hdGUoKSkgLy8gc2hvdWxkIHByaW50IFwiSGVsbG8gV29ybGRMaW5lXCJcbi8vIHByaW50bG4obGlzdE9mKDEwMCwgMjAwLCAzMDApLmNvbmNhdGVuYXRlKCkpIC8vIHNob3VsZCBwcmludCBcIjEwMDIwMDMwMFwiXG5cbi8vIFRPRE8gY3JlYXRlIGEgZ2VuZXJpYyBleHRlbnNpb24gZnVuY3Rpb24gXCJMaXN0Py5tYWtlTm90TnVsbCgpOkxpc3QnICB0aGF0IHJldHVybnMgYW4gZW1wdHkgbGlzdCBpZiB0aGUgcmVjZWl2ZXIgaXMgbnVsbCwgb3IgdGhlIG9yaWdpbmFsIGxpc3Qgb3JoZXJ3aXNlXG5cbi8vIHByaW50bG4obGlzdE9mKDEsIDIsIDMpLm1ha2VOb3ROdWxsKCkpIC8vIHNob3VsZCBwcmludCBbMSwgMiwgM11cbi8vIHZhbCBsOiBMaXN0PEludD4/ID0gbnVsbFxuLy8gcHJpbnRsbihsLm1ha2VOb3ROdWxsKCkpIC8vIHNob3VsZCBwcmludCBbXSJ9",target:"_blank",rel:"noopener noreferrer"},Hl={class:"custom-container details"},vl=l("summary",null,"Please open to see the solution(s)",-1),wl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gVGhlICd0aGlzJyBrZXl3b3JkIGluc2lkZSBhbiBleHRlbnNpb24gY29ycmVzcG9uZHMgdG8gdGhlIHJlY2VpdmVyIG9iamVjdCAodGhlIG9iamVjdCB0aGF0IGNhbGxzIHRoZSBleHRlbnNpb24pXG4vLyBUT0RPIGNlZWF0ZSBhbiBleHRlbnNpb24gZnVuY3Rpb24gJ21ha2VRdWVzdGlvbicgb2YgdGhlIFN0cmluZyBjbGFzcyB0aGF0IHJldHVybiBhIG5ldyBTdHJpbmcgdGhhdCBjb250YWlucyB0aGUgb3JpZ2luYWwgU3RyaW5nICsgJz8nIGF0IHRoZSBlbmRcblxuLy8gcHJpbnRsbihcIkhvdyBkbyB5b3UgZG9cIi5tYWtlUXVlc3Rpb24oKSkgLy8gc2hvdWxkIHByaW50IFwiSG93IGRvIHlvdSBkbyA/XCJcblxuLy8gVE9ETyBkZWZpbmUgYW4gZXh0ZW5zaW9uIGZ1bmN0aW9uIG9uIHRoZSBjb21wYW5pb24gb2JqZWN0IHRoYXQgcHJpbnRzIHRoZSBudW1iZXIgb2YgY3JlYXRlZCBtYWdlcy5cbmNsYXNzIE1hZ2UoaHA6IEludCk6IEV4dGVuc2lvbnMwMS5BZHZlbnR1cmVyKGhwKXtcbiAgICBjb21wYW5pb24gb2JqZWN0IHtcbiAgICAgICAgdmFyIGNvdW50ID0gMFxuICAgIH1cbiAgICBpbml0IHtcbiAgICAgICAgTWFnZS5jb3VudCArPSAxXG4gICAgfVxufVxuLy8gaGludDogXCJ0aGlzXCIgYWxsb3dzIHRvIHJlZmVyZW5jZSB0aGUgY29tcGFuaW9uIG9iamVjdFxuZnVuIE1hZ2UuQ29tcGFuaW9uLnByaW50Q291bnQoKSA9IHByaW50bG4odGhpcy5jb3VudClcblxudmFsIG1hZ2UgPSBNYWdlKDEwMClcbnZhbCBtYWdlMiA9IE1hZ2UoMjAwKVxucHJpbnQoXCJNYWdlIGNvdW50OiBcIilcbk1hZ2UucHJpbnRDb3VudCgpIC8vIDJcblxuLy8gVE9ETyBjcmF0ZSBhbiBleHRlbnNpb24gZnVuY3Rpb24gXCJldmVuQ291bnQoKTpJbnRcIiBvbiBMaXN0PEludD4gdGhhdCByZXR1cm4gdGhlIG51bWJlciBvZiBldmVuIHZhbHVlc1xuXG4vL3ByaW50bG4obGlzdE9mKDEsIDIsIDMsIDQsIDUpLmV2ZW5Db3VudCgpKSAvLyBwcmludHMgMlxuXG4vLyBUT0RPIGNyZWF0ZSBhIGdlbmVyaWMgZXh0ZW5zaW9uIGZ1bmN0aW9uIFwiY29uY2F0ZW5hdGUoKTpTdHJpbmdcIiBvbiBMaXN0PFQ+IHRoYXQgY29uY2F0ZW5hdGVzIHRoZSB0b1N0cmluZyB2YWx1ZSBvZiBhbGwgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSBsaXN0XG5mdW4gPFQ+IExpc3Q8VD4uY29uY2F0ZW5hdGUoKTogU3RyaW5nID0gdGhpcy5tYXAgeyB2IC0+IHYudG9TdHJpbmcoKSB9LnJlZHVjZSB7IGFjYywgcyAtPiBhY2MgKyBzIH1cbnByaW50bG4obGlzdE9mKFwiSGVsbG8gXCIsIFwiV29ybGRcIiwgXCJMaW5lXCIpLmNvbmNhdGVuYXRlKCkpIC8vIHNob3VsZCBwcmludCBcIkhlbGxvIFdvcmxkTGluZVwiXG5wcmludGxuKGxpc3RPZigxMDAsIDIwMCwgMzAwKS5jb25jYXRlbmF0ZSgpKSAvLyBzaG91bGQgcHJpbnQgXCIxMDAyMDAzMDBcIlxuXG4vLyBUT0RPIGNyZWF0ZSBhIGdlbmVyaWMgZXh0ZW5zaW9uIGZ1bmN0aW9uIFwiTGlzdD8ubWFrZU5vdE51bGwoKTpMaXN0JyAgdGhhdCByZXR1cm4gYW4gZW1wdHkgbGlzdCBpZiB0aGUgcmVjZWl2ZXIgaXMgbnVsbCwgb3IgdGhlIG9yaWdpbmFsIGxpc3Qgb3JoZXJ3aXNlXG5mdW4gPFQ+IExpc3Q8VD4/Lm1ha2VOb3ROdWxsKCk6IExpc3Q8VD57XG4gICAgcmV0dXJuIGxpc3RPZjxUPigpXG59XG5wcmludGxuKGxpc3RPZigxLCAyLCAzKS5tYWtlTm90TnVsbCgpKSAvLyBzaG91bGQgcHJpbnQgWzEsIDIsIDNdXG52YWwgbDogTGlzdDxJbnQ+PyA9IG51bGxcbnByaW50bG4obC5tYWtlTm90TnVsbCgpKSAvLyBzaG91bGQgcHJpbnQgW10ifQ==",target:"_blank",rel:"noopener noreferrer"},Nl=l("h4",{id:"exercise-6",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercise-6","aria-hidden":"true"},"#"),I(" Exercise 6")],-1),Sl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gVE9ETyB1c2luZyB0aGUgb2JqZWN0IGRlY2xhcmF0aW9uIHN5bmN0YXgsIGNyZWF0ZSBhIHNpbmdsZXRvbiBEcmlua0Rpc3BlbnNlciB0aGF0IGhhcyB0aGVzZSBtZXRob2RzOiBwdXREcmluayhEcmluayksIExpc3Q8RHJpbms+IGFsbEF2YWlsYWJsZURyaW5rcygpIGFuZCBwaWNrTGFzdERyaW5rKCk6RHJpbmtcbi8vICBTeW50YXg6IG9iamVjdCBTaW5nbGV0b25OYW1lIHsgLi4uIH0gfVxuXG4vLyBUT0RPIHVuY29tbWVudCB0byB0ZXN0IHlvdSBjb2RlXG4vL0RyaW5rRGlzcGVuc2VyLnB1dERyaW5rKE9iamVjdEV4cHJlc3Npb25zMDEuRHJpbmsoMTAwKSlcbi8vRHJpbmtEaXNwZW5zZXIucHV0RHJpbmsoT2JqZWN0RXhwcmVzc2lvbnMwMS5Ecmluayg1MCkpXG4vL0RyaW5rRGlzcGVuc2VyLnB1dERyaW5rKE9iamVjdEV4cHJlc3Npb25zMDEuRHJpbmsoNzApKVxuLy9wcmludGxuKERyaW5rRGlzcGVuc2VyLmFsbEF2YWlsYWJsZURyaW5rcygpLnNpemUpIC8vIDNcbi8vRHJpbmtEaXNwZW5zZXIucHV0RHJpbmsoT2JqZWN0RXhwcmVzc2lvbnMwMS5waWNrTGFzdERyaW5rKCkpXG4vL3ByaW50bG4oRHJpbmtEaXNwZW5zZXIuYWxsQXZhaWxhYmxlRHJpbmtzKCkuc2l6ZSkgLy8gMlxuXG4vLyBUT0RPIGNyZWF0ZSBhIGNsYXNzIG5hbWVkIERyaW5rTWFrZXIuIFdlIHdhbnQgdG8gaGF2ZSBhIHN0YXRpYyBtZXRob2QgXCJjcmVhdGVEcmluaygpOiBPYmplY3RFeHByZXNzaW9uczAxLkRyaW5rXCIgdGhhdCBjcmVhdGVzIGEgbmV3IERyaW5rLlxuLy8gICBBbiBvYmplY3QgZGVjbGFyYXRpb24gaW5zaWRlIGEgY2xhc3MgY2FuIGJlIG1hcmtlZCBhcyBjb21wYW5pb25cbi8vICAgU3ludGF4OlxuLypcbmNsYXNzIENsYXNzTmFtZSB7XG4gICAgY29tcGFuaW9uIG9iamVjdCAob3B0aW9ubmFsIG5hbWUpIHtcbiAgICAgICAgLi4uXG4gICAgfVxufVxuKi9cblxuXG4vLyBUT0RPIHVuY29tbWVudCB0byB0ZXN0XG4vL3ZhbCBkcmluayA9IERyaW5rTWFrZXIuY3JlYXRlRHJpbmsoKVxuLy92YWwgZHJpbmsyID0gRHJpbmtNYWtlci5Db21wYW5pb24uY3JlYXRlRHJpbmsoKVxuXG4vLyBUT0RPIHdoYXQgaXMgdGhlIHR5cGUgb2YgY29tcGFuaW9uT2JqZWN0XG4vL3ZhbCBjb21wYW5pb25PYmplY3QgPSBEcmlua01ha2VyXG4vL2NvbXBhbmlvbk9iamVjdC5jcmVhdGVEcmluaygpXG5cbi8vIFRPRE8gbWFrZSB0aGUgZWFybGllciBjb21wYW5pb24gb2JqZWN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIENvdW50ZXIgaW50ZXJmYWNlIGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIGNyZWF0ZWQgRHJpbmtzXG5pbnRlcmZhY2UgQ291bnRlcntcbiAgICB2YXIgY291bnQ6IEludFxufVxuLy8gVE9ETyB1bmNvbW1lbnQgdG8gdGVzdFxuLy9wcmludGxuKERyaW5rTWFrZXIuY291bnQpIC8vIDMifQ==",target:"_blank",rel:"noopener noreferrer"},kl={class:"custom-container details"},zl=l("summary",null,"Please open to see the solution(s)",-1),El={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gVE9ETyB1c2luZyB0aGUgb2JqZWN0IGRlY2xhcmF0aW9uIHN5bmN0YXgsIGNyZWF0ZSBhIHNpbmdsZXRvbiBEcmlua0Rpc3BlbnNlciB0aGF0IGhhcyB0aGVzZSBtZXRob2RzOiBwdXREcmluayhEcmluayksIExpc3Q8RHJpbms+IGFsbEF2YWlsYWJsZURyaW5rcygpIGFuZCBwaWNrTGFzdERyaW5rKCk6RHJpbmtcbi8vICBTeW50YXg6IG9iamVjdCBTaW5nbGV0b25OYW1lIHsgLi4uIH0gfVxuXG4vLyBUT0RPIHVuY29tbWVudCB0byB0ZXN0IHlvdSBjb2RlXG4vL0RyaW5rRGlzcGVuc2VyLnB1dERyaW5rKE9iamVjdEV4cHJlc3Npb25zMDEuRHJpbmsoMTAwKSlcbi8vRHJpbmtEaXNwZW5zZXIucHV0RHJpbmsoT2JqZWN0RXhwcmVzc2lvbnMwMS5Ecmluayg1MCkpXG4vL0RyaW5rRGlzcGVuc2VyLnB1dERyaW5rKE9iamVjdEV4cHJlc3Npb25zMDEuRHJpbmsoNzApKVxuLy9wcmludGxuKERyaW5rRGlzcGVuc2VyLmFsbEF2YWlsYWJsZURyaW5rcygpLnNpemUpIC8vIDNcbi8vRHJpbmtEaXNwZW5zZXIucHV0RHJpbmsoT2JqZWN0RXhwcmVzc2lvbnMwMS5waWNrTGFzdERyaW5rKCkpXG4vL3ByaW50bG4oRHJpbmtEaXNwZW5zZXIuYWxsQXZhaWxhYmxlRHJpbmtzKCkuc2l6ZSkgLy8gMlxuXG4vLyBUT0RPIGNyZWF0ZSBhIGNsYXNzIG5hbWVkIERyaW5rTWFrZXIuIFdlIHdhbnQgdG8gaGF2ZSBhIHN0YXRpYyBtZXRob2QgXCJjcmVhdGVEcmluaygpOiBPYmplY3RFeHByZXNzaW9uczAxLkRyaW5rXCIgdGhhdCBjcmVhdGVzIGEgbmV3IERyaW5rLlxuLy8gICBBbiBvYmplY3QgZGVjbGFyYXRpb24gaW5zaWRlIGEgY2xhc3MgY2FuIGJlIG1hcmtlZCBhcyBjb21wYW5pb25cbi8vICAgU3ludGF4OlxuLypcbmNsYXNzIENsYXNzTmFtZSB7XG4gICAgY29tcGFuaW9uIG9iamVjdCAob3B0aW9ubmFsIG5hbWUpIHtcbiAgICAgICAgLi4uXG4gICAgfVxufVxuKi9cbmNsYXNzIERyaW5rTWFrZXIge1xuICAgIGNvbXBhbmlvbiBvYmplY3Q6IENvdW50ZXJ7XG4gICAgICAgIHByaXZhdGUgdmFyIG5iQ3JlYXRlZCA9IDBcbiAgICAgICAgb3ZlcnJpZGUgdmFyIGNvdW50OiBJbnRcbiAgICAgICAgICAgIGdldCgpID0gbmJDcmVhdGVkXG4gICAgICAgICAgICBzZXQodmFsdWUpIHsgbmJDcmVhdGVkID0gdmFsdWV9XG5cbiAgICAgICAgZnVuIGNyZWF0ZURyaW5rKCkgOiBPYmplY3RFeHByZXNzaW9uczAxLkRyaW5re1xuICAgICAgICAgICAgY291bnQgKz0gMVxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdEV4cHJlc3Npb25zMDEuRHJpbmsoMTAwKVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUT0RPIHVuY29tbWVudCB0byB0ZXN0XG4vL3ZhbCBkcmluayA9IERyaW5rTWFrZXIuY3JlYXRlRHJpbmsoKVxuLy92YWwgZHJpbmsyID0gRHJpbmtNYWtlci5Db21wYW5pb24uY3JlYXRlRHJpbmsoKVxuXG4vLyBUT0RPIHdoYXQgaXMgdGhlIHR5cGUgb2YgY29tcGFuaW9uT2JqZWN0XG4vL3ZhbCBjb21wYW5pb25PYmplY3QgPSBEcmlua01ha2VyXG4vL2NvbXBhbmlvbk9iamVjdC5jcmVhdGVEcmluaygpXG5cbi8vIFRPRE8gbWFrZSB0aGUgZWFybGllciBjb21wYW5pb24gb2JqZWN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIENvdW50ZXIgaW50ZXJmYWNlIGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIGNyZWF0ZWQgRHJpbmtzXG5pbnRlcmZhY2UgQ291bnRlcntcbiAgICB2YXIgY291bnQ6IEludFxufVxuLy8gVE9ETyB1bmNvbW1lbnQgdG8gdGVzdFxuLy9wcmludGxuKERyaW5rTWFrZXIuY291bnQpIC8vIDMifQ==",target:"_blank",rel:"noopener noreferrer"},Ll=l("h4",{id:"exercise-7",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercise-7","aria-hidden":"true"},"#"),I(" Exercise 7")],-1),jl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoicGFja2FnZSBjb20ud29ybGRsaW5lLmxlYXJuaW5nLmtvdGxpbi5vYmplY3RzQW5kQ29tcGFuaW9uc1xuXG4vLyBPYmplY3RzIGluIGtvdGxpbiBodHRwczovL2tvdGxpbmxhbmcub3JnL2RvY3MvcmVmZXJlbmNlL29iamVjdC1kZWNsYXJhdGlvbnMuaHRtbFxub3BlbiBjbGFzcyBEcmluayh2YXIgdm9sdW1lOiBJbnQpe1xuICAgIG9wZW4gZnVuIGNvbnN1bWUoY29uc3VtZWRWb2x1bWU6IEludCl7XG4gICAgICAgIHRoaXMudm9sdW1lIC09IGNvbnN1bWVkVm9sdW1lXG4gICAgfVxufVxuaW50ZXJmYWNlIENvbG9yZWR7XG4gICAgdmFsIGNvbG9yOlN0cmluZ1xufVxuXG4vLyBhbm9ueW1vdXMgb2JqZWN0cyBoYXZlIGFjY2VzcyB0byB2YXJpYWJsZXMgaW4gdGhlIGVuY2xvc2luZyBzY29wZVxuZnVuIGNyZWF0ZURyaW5rQW5kQ291bnQoKTogRHJpbmt7XG4gICAgdmFyIG5iQ29uc3VtcHRpb24gPSAwXG4gICAgcmV0dXJuIG9iamVjdCA6IERyaW5rKDEwMCl7XG4gICAgICAgIG92ZXJyaWRlIGZ1biBjb25zdW1lKGNvbnN1bWVkVm9sdW1lOiBJbnQpIHtcbiAgICAgICAgICAgIHN1cGVyLmNvbnN1bWUoY29uc3VtZWRWb2x1bWUpXG4gICAgICAgICAgICBuYkNvbnN1bXB0aW9uICs9IDFcbiAgICAgICAgICAgIHByaW50bG4obmJDb25zdW1wdGlvbilcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuIG1haW4oKSB7XG4gICAgLy8gQ3JlYXRpbmcgYW4gaW5zdGFuY2Ugb2YgRHJpbmtcbiAgICB2YWwgc21hbGxCb3R0bGUgPSBEcmluaygxMDApXG4gICAgLy8gVE9ETyBjcmVhdGUgYSBiaWdCb3R0bGUgd2l0aCBhIHZvbHVtZSBvZiA1MDBcblxuICAgIC8vIEtvdGxpbiBhbGxvd3MgdG8gcXVpY2tseSBjcmVhdGUgYW4gYW5vbnltb3VzIG9iamVjdCB0aGF0IGltcGxlbWVudHMgYW5kIGV4aXN0aW5nIGNsYXNzIGFuZC9vciBpbnRlcmZhY2VzXG4gICAgdmFsIHNtYWxsQ2FyYm9uYXRlZERyaW5rQm90dGxlID0gb2JqZWN0OiBEcmluaygxMDApIHtcbiAgICAgICAgb3ZlcnJpZGUgZnVuIGNvbnN1bWUoY29uc3VtZWRWb2x1bWU6IEludCkge1xuICAgICAgICAgICAgc3VwZXIuY29uc3VtZShjb25zdW1lZFZvbHVtZSlcbiAgICAgICAgICAgIHByaW50bG4oXCJQU0hISEhISFwiKVxuICAgICAgICB9XG4gICAgfVxuICAgIHNtYWxsQ2FyYm9uYXRlZERyaW5rQm90dGxlLmNvbnN1bWUoMjApXG5cbiAgICAvLyBUT0RPIGNyZWF0ZWQgYW4gYW5vbnltb3VzIG9iamVjdCBzbWFsbENhcmJvbmF0ZWRSZWREcmlua0JvdHRsZSB0aGF0IGlzIGJvdGggYSBEcmluayBhbmQgQ29sb3JlZFxuICAgIC8vIFRPRE8gQ2FuIGtvdGxpbiBpbmZlciB0aGUgdHlwZSBvZiBzbWFsbENhcmJvbmF0ZWRSZWREcmlua0JvdHRsZSA/XG5cbiAgICAvLyBUT0RPIG1ha2UgdGhpcyBjb2RlIHByaW50IFwiUmVkXCJcbiAgICAvLyBwcmludGxuKHNtYWxsQ2FyYm9uYXRlZFJlZERyaW5rQm90dGxlLmNvbG9yKVxuICAgIFxuICAgIFxuICAgIC8vIFRPRE8gd2hhdCBpcyBwcmludGVkIGFmdGVyIGNhbGxpbmcgdGhlIGZvbGxvd2luZyBjb2RlID9cbiAgICB2YWwgZHJpbmtUaGF0Q291bnRzID0gY3JlYXRlRHJpbmtBbmRDb3VudCgpXG4gICAgZHJpbmtUaGF0Q291bnRzLmNvbnN1bWUoMTApXG4gICAgZHJpbmtUaGF0Q291bnRzLmNvbnN1bWUoMjApXG5cbiAgICAvLyBUT0RPIFRyeSB0byBndWVzcyB3aGF0IGlzIHByaW50ZWQgaWYgd2UgZ2V0IGFub3RoZXIgZHJpbmsgZnJvbSAnY3JlYXRlRHJpbmtBbmRDb3VudCgpJyBhbmQgY2FsbCBjb25zdW1lID9cblxuICAgIFxuICAgIC8vIEtvdGxpbiBhbHNvIGFsbG93cyB0byBjcmVhdGUgYW5vbnltb3VzIG9iamVjdHMgd2l0aG91dCBzdXBlcnR5cGVzXG4gICAgZnVuIG1peChkcmlua1RvTWl4OiBEcmluayl7XG4gICAgXHR2YWwgbWl4dHVyZSA9IG9iamVjdCB7XG4gICAgICAgICAgICB2YWwgZHJpbmsgPSBkcmlua1RvTWl4XG4gICAgICAgICAgICB2YWwgaW5ncmVkaWVudCA9IFwiU2FsdFwiXG4gICAgXHR9XG4gICAgICAgIC8vIFRPRE8gdHJ5IHRvIHByaW50IHRoZSByZXN1bHQgb2YgbWl4dHVyZS5pbmdyZWRpZW50ICsgbWl4dHVyZS5kcmlua1RvTWl4XG4gICAgICAgIHByaW50bG4oKVxuICAgIH1cbiAgICBtaXgoc21hbGxCb3R0bGUpXG4gICAgXG4gICAgXG4gICAgLy8gTGV0J3MgdHJ5IHRvIHJldHVybiBhbiBhZGhvYyBhbm9ueW1vdXMgb2JqZWN0XG4gICAgZnVuIHByZXBhcmVOZXdNaXgoZHJpbmtUb01peDogRHJpbmspID0gb2JqZWN0IHtcbiAgICAgICAgdmFsIGRyaW5rID0gZHJpbmtUb01peFxuICAgICAgICB2YWwgaW5ncmVkaWVudCA9IFwiU2FsdFwiXG4gICAgfVxuICAgIHZhbCBuZXdNaXggPSBwcmVwYXJlTmV3TWl4KHNtYWxsQm90dGxlKVxuICAgIC8vIFRPRE8gdHlwZSB0byBwcmludCB0aGUgY29tcG9uZW50cyBvZiBuZXdNaXguIElzIGl0IHBvc3NpYmxlIHRvIGFjY2VzcyB0aGUgY29udGVudHMgb2YgdGhlIGFub255bW91cyBvYmplY3Qgb3V0c2lkZSB0aGUgbG9jYWwgc2NvcGUgP1xuXG4gICAgLy8gVE9ETyB3aGF0IGhhcHBlbnMgaWYgd2UgcmVtb3ZlIHRoZSBwcml2YXRlIHF1YWxpZmllciB0byBwcmVwYXJlID9cbiAgICBjbGFzcyBEcmlua01peGVyIHtcbiAgICAgICAgcHJpdmF0ZSBmdW4gcGVyYXByZShkcmlua1RvTWl4OiBEcmluaykgPSBvYmplY3Qge1xuICAgICAgICAgICAgdmFsIGRyaW5rID0gZHJpbmtUb01peFxuICAgICAgICAgICAgdmFsIGluZ3JlZGllbnQgPSBcIlNhbHRcIlxuICAgICAgICB9XG5cbiAgICAgICAgZnVuIG1peCgpe1xuICAgICAgICAgICAgdmFsIHByZXBhcmF0aW9uID0gcGVyYXByZShEcmluaygxMDApKVxuICAgICAgICAgICAgcHJpbnRsbihcIiR7cHJlcGFyYXRpb24uZHJpbmt9IGFuZCAke3ByZXBhcmF0aW9uLmluZ3JlZGllbnR9XCIpXG4gICAgICAgIH1cblx0fVxufSJ9",target:"_blank",rel:"noopener noreferrer"},fl={class:"custom-container details"},Ul=l("summary",null,"Please open to see the solution(s)",-1),Ml={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gT2JqZWN0cyBpbiBrb3RsaW4gaHR0cHM6Ly9rb3RsaW5sYW5nLm9yZy9kb2NzL3JlZmVyZW5jZS9vYmplY3QtZGVjbGFyYXRpb25zLmh0bWxcbm9wZW4gY2xhc3MgRHJpbmsodmFyIHZvbHVtZTogSW50KXtcbiAgICBvcGVuIGZ1biBjb25zdW1lKGNvbnN1bWVkVm9sdW1lOiBJbnQpe1xuICAgICAgICB0aGlzLnZvbHVtZSAtPSBjb25zdW1lZFZvbHVtZVxuICAgIH1cbn1cbmludGVyZmFjZSBDb2xvcmVke1xuICAgIHZhbCBjb2xvcjpTdHJpbmdcbn1cblxuLy8gYW5vbnltb3VzIG9iamVjdHMgaGF2ZSBhY2Nlc3MgdG8gdmFyaWFibGVzIGluIHRoZSBlbmNsb3Npbmcgc2NvcGVcbmZ1biBjcmVhdGVEcmlua0FuZENvdW50KCk6IERyaW5re1xuICAgIHZhciBuYkNvbnN1bXB0aW9uID0gMFxuICAgIHJldHVybiBvYmplY3QgOiBEcmluaygxMDApe1xuICAgICAgICBvdmVycmlkZSBmdW4gY29uc3VtZShjb25zdW1lZFZvbHVtZTogSW50KSB7XG4gICAgICAgICAgICBzdXBlci5jb25zdW1lKGNvbnN1bWVkVm9sdW1lKVxuICAgICAgICAgICAgbmJDb25zdW1wdGlvbiArPSAxXG4gICAgICAgICAgICBwcmludGxuKG5iQ29uc3VtcHRpb24pXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1biBtYWluKCkge1xuICAgIC8vIENyZWF0aW5nIGFuIGluc3RhbmNlIG9mIERyaW5rXG4gICAgdmFsIHNtYWxsQm90dGxlID0gRHJpbmsoMTAwKVxuICAgIC8vIFRPRE8gY3JlYXRlIGEgYmlnQm90dGxlIHdpdGggYSB2b2x1bWUgb2YgNTAwXG5cbiAgICAvLyBLb3RsaW4gYWxsb3dzIHRvIHF1aWNrbHkgY3JlYXRlIGFuIGFub255bW91cyBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIGFuZCBleGlzdGluZyBjbGFzcyBhbmQvb3IgaW50ZXJmYWNlc1xuICAgIHZhbCBzbWFsbENhcmJvbmF0ZWREcmlua0JvdHRsZSA9IG9iamVjdDogRHJpbmsoMTAwKSB7XG4gICAgICAgIG92ZXJyaWRlIGZ1biBjb25zdW1lKGNvbnN1bWVkVm9sdW1lOiBJbnQpIHtcbiAgICAgICAgICAgIHN1cGVyLmNvbnN1bWUoY29uc3VtZWRWb2x1bWUpXG4gICAgICAgICAgICBwcmludGxuKFwiUFNISEhISEhcIilcbiAgICAgICAgfVxuICAgIH1cbiAgICBzbWFsbENhcmJvbmF0ZWREcmlua0JvdHRsZS5jb25zdW1lKDIwKVxuXG4gICAgLy8gVE9ETyBjcmVhdGVkIGFuIGFub255bW91cyBvYmplY3Qgc21hbGxDYXJib25hdGVkUmVkRHJpbmtCb3R0bGUgdGhhdCBpcyBib3RoIGEgRHJpbmsgYW5kIENvbG9yZWRcbiAgICAvLyBUT0RPIENhbiBrb3RsaW4gaW5mZXIgdGhlIHR5cGUgb2Ygc21hbGxDYXJib25hdGVkUmVkRHJpbmtCb3R0bGUgP1xuICAgIHZhbCBzbWFsbENhcmJvbmF0ZWRSZWREcmlua0JvdHRsZTogQ29sb3JlZCA9IG9iamVjdDogRHJpbmsoMTAwKSwgQ29sb3JlZCB7XG4gICAgICAgIG92ZXJyaWRlIHZhbCBjb2xvcjogU3RyaW5nXG4gICAgICAgICAgICBnZXQoKSA9IFwiUmVkXCJcblxuICAgICAgICBvdmVycmlkZSBmdW4gY29uc3VtZShjb25zdW1lZFZvbHVtZTogSW50KSB7XG4gICAgICAgICAgICBzdXBlci5jb25zdW1lKGNvbnN1bWVkVm9sdW1lKVxuICAgICAgICAgICAgcHJpbnRsbihcIlBTSEhISEhIXCIpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPIG1ha2UgdGhpcyBjb2RlIHByaW50IFwiUmVkXCJcbiAgICAvLyBwcmludGxuKHNtYWxsQ2FyYm9uYXRlZFJlZERyaW5rQm90dGxlLmNvbG9yKVxuICAgIFxuICAgIFxuICAgIC8vIFRPRE8gd2hhdCBpcyBwcmludGVkIGFmdGVyIGNhbGxpbmcgdGhlIGZvbGxvd2luZyBjb2RlID9cbiAgICB2YWwgZHJpbmtUaGF0Q291bnRzID0gY3JlYXRlRHJpbmtBbmRDb3VudCgpXG4gICAgZHJpbmtUaGF0Q291bnRzLmNvbnN1bWUoMTApXG4gICAgZHJpbmtUaGF0Q291bnRzLmNvbnN1bWUoMjApXG5cbiAgICAvLyBUT0RPIFRyeSB0byBndWVzcyB3aGF0IGlzIHByaW50ZWQgaWYgd2UgZ2V0IGFub3RoZXIgZHJpbmsgZnJvbSAnY3JlYXRlRHJpbmtBbmRDb3VudCgpJyBhbmQgY2FsbCBjb25zdW1lID9cblxuICAgIFxuICAgIC8vIEtvdGxpbiBhbHNvIGFsbG93cyB0byBjcmVhdGUgYW5vbnltb3VzIG9iamVjdHMgd2l0aG91dCBzdXBlcnR5cGVzXG4gICAgZnVuIG1peChkcmlua1RvTWl4OiBEcmluayl7XG4gICAgXHR2YWwgbWl4dHVyZSA9IG9iamVjdCB7XG4gICAgICAgICAgICB2YWwgZHJpbmsgPSBkcmlua1RvTWl4XG4gICAgICAgICAgICB2YWwgaW5ncmVkaWVudCA9IFwiU2FsdFwiXG4gICAgXHR9XG4gICAgICAgIC8vIFRPRE8gdHJ5IHRvIHByaW50IHRoZSByZXN1bHQgb2YgbWl4dHVyZS5pbmdyZWRpZW50ICsgbWl4dHVyZS5kcmlua1RvTWl4XG4gICAgICAgIHByaW50bG4oKVxuICAgIH1cbiAgICBtaXgoc21hbGxCb3R0bGUpXG4gICAgXG4gICAgXG4gICAgLy8gTGV0J3MgdHJ5IHRvIHJldHVybiBhbiBhZGhvYyBhbm9ueW1vdXMgb2JqZWN0XG4gICAgZnVuIHByZXBhcmVOZXdNaXgoZHJpbmtUb01peDogRHJpbmspID0gb2JqZWN0IHtcbiAgICAgICAgdmFsIGRyaW5rID0gZHJpbmtUb01peFxuICAgICAgICB2YWwgaW5ncmVkaWVudCA9IFwiU2FsdFwiXG4gICAgfVxuICAgIHZhbCBuZXdNaXggPSBwcmVwYXJlTmV3TWl4KHNtYWxsQm90dGxlKVxuICAgIC8vIFRPRE8gdHlwZSB0byBwcmludCB0aGUgY29tcG9uZW50cyBvZiBuZXdNaXguIElzIGl0IHBvc3NpYmxlIHRvIGFjY2VzcyB0aGUgY29udGVudHMgb2YgdGhlIGFub255bW91cyBvYmplY3Qgb3V0c2lkZSB0aGUgbG9jYWwgc2NvcGUgP1xuXG4gICAgLy8gVE9ETyB3aGF0IGhhcHBlbnMgaWYgd2UgcmVtb3ZlIHRoZSBwcml2YXRlIHF1YWxpZmllciB0byBwcmVwYXJlID9cbiAgICBjbGFzcyBEcmlua01peGVyIHtcbiAgICAgICAgcHJpdmF0ZSBmdW4gcGVyYXByZShkcmlua1RvTWl4OiBEcmluaykgPSBvYmplY3Qge1xuICAgICAgICAgICAgdmFsIGRyaW5rID0gZHJpbmtUb01peFxuICAgICAgICAgICAgdmFsIGluZ3JlZGllbnQgPSBcIlNhbHRcIlxuICAgICAgICB9XG5cbiAgICAgICAgZnVuIG1peCgpe1xuICAgICAgICAgICAgdmFsIHByZXBhcmF0aW9uID0gcGVyYXByZShEcmluaygxMDApKVxuICAgICAgICAgICAgcHJpbnRsbihcIiR7cHJlcGFyYXRpb24uZHJpbmt9IGFuZCAke3ByZXBhcmF0aW9uLmluZ3JlZGllbnR9XCIpXG4gICAgICAgIH1cblx0fVxufSJ9",target:"_blank",rel:"noopener noreferrer"},Kl=l("h2",{id:"more-exercises-and-reading",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#more-exercises-and-reading","aria-hidden":"true"},"#"),I(" More Exercises and reading")],-1),Ql={href:"https://play.kotlinlang.org/koans/overview",target:"_blank",rel:"noopener noreferrer"},Tl={href:"https://sderosiaux.medium.com/why-referential-transparency-matters-7c179424dab5",target:"_blank",rel:"noopener noreferrer"};function Dl(_l,Pl){const g=i("ExternalLinkIcon");return n(),b("div",null,[t,l("p",null,[l("a",o,[I("▶️ this code"),c(g)]),I(" highlights the above features.")]),d,l("p",null,[l("a",G,[I("▶️ this code"),c(g)]),I(" highlights the above features.")]),u,l("p",null,[l("a",h,[I("▶️ this code"),c(g)]),I(" illustrates null safety and how to use optional types.")]),m,C,l("p",null,[I("Enumerations allow to work with a group of values in a type-safe fashion. Unlike Java enums, "),l("a",r,[I("Kotlin enums are classes"),c(g)]),I(". Kotlin enum classes provide these features:")]),Z,l("p",null,[l("a",p,[I("▶️ this code"),c(g)]),I(" illustrated the features above. For further reading please consult "),l("a",B,[I("the official documentation"),c(g)]),I(".")]),X,W,l("p",null,[l("a",y,[I("Please click on this link to view the exercise"),c(g)])]),l("details",A,[V,l("p",null,[l("a",Y,[I("Solution"),c(g)])])]),J,l("p",null,[l("a",R,[I("Please click on this link to view the exercise"),c(g)])]),l("details",x,[F,l("p",null,[l("a",H,[I("Solution"),c(g)])])]),v,l("p",null,[l("a",w,[I("▶️ this code"),c(g)]),I(" illustrates some features.")]),N,l("p",null,[I("Data classes are "),S,I(" (cannot be inherited from) classes that provide "),l("a",k,[I("standard functionality"),c(g)]),I(":")]),z,l("p",null,[I("However, they have the "),l("a",E,[I("following constraints"),c(g)]),I(":")]),L,l("p",null,[l("a",j,[I("▶️ this code"),c(g)]),I(" illustrates some features.")]),f,U,l("p",null,[I("Functional programming revolves around "),l("a",M,[I("these concepts"),c(g)]),I(": pure functions, recursion, referential transparency, immutable variables, functions as first-class citizens, and higher-order functions.")]),K,l("ul",null,[Q,T,D,l("li",null,[l("a",_,[I("Referential transparency"),c(g)]),I(": means that an expression can be replaced by its result without changing the behavior of the program. Transparency refers to the fact that the implementation of the expression is irrelevant.")])]),P,O,l("p",null,[I("Kotlin is not a pure functional languages but it supports some features. For example, Kotlin does not have compile time verification of pure functions, but it provides immutable collections through the "),l("a",q,[I("kotlinx.collections.immutable"),c(g)]),I(" library.")]),l("div",$,[ll,l("p",null,[l("a",Il,[I("A read-only list"),c(g)]),I(" cannot add or remove elements, but it can change the underlying data.")]),gl]),l("p",null,[I("The "),l("a",cl,[I("Arrow-kt"),c(g)]),I(" library add more functional programming features.")]),el,al,l("p",null,[l("a",il,[I("▶️ this code"),c(g)]),I(" show an example of list manipulation using declarative programming.")]),nl,l("ul",null,[bl,sl,tl,ol,l("li",null,[I("Kotlin generates Java records by annotating a data class with "),dl,I(" and targeting JVM 16, among other requirement "),l("a",Gl,[I("listed here"),c(g)]),I(".")]),ul]),l("p",null,[l("a",hl,[I("▶️ this code"),c(g)]),I(" shows how to convert a Kotlin "),ml,I(" to a Java "),Cl,I(".")]),l("p",null,[I("The official documentation provides exhaustive documentation on "),l("a",rl,[I("Kotlin and JVM integration"),c(g)])]),Zl,pl,l("p",null,[l("a",Bl,[I("Please click on this link to view the exercise"),c(g)])]),l("details",Xl,[Wl,l("p",null,[l("a",yl,[I("Solution"),c(g)])])]),Al,l("p",null,[l("a",Vl,[I("Please click on this link to view the exercise"),c(g)])]),l("details",Yl,[Jl,l("p",null,[l("a",Rl,[I("Solution"),c(g)])])]),xl,l("p",null,[l("a",Fl,[I("Please click on this link to view the exercise"),c(g)])]),l("details",Hl,[vl,l("p",null,[l("a",wl,[I("Solution"),c(g)])])]),Nl,l("p",null,[l("a",Sl,[I("Please click on this link to view the exercise"),c(g)])]),l("details",kl,[zl,l("p",null,[l("a",El,[I("Solution"),c(g)])])]),Ll,l("p",null,[l("a",jl,[I("Please click on this link to view the exercise"),c(g)])]),l("details",fl,[Ul,l("p",null,[l("a",Ml,[I("Solution"),c(g)])])]),Kl,l("ul",null,[l("li",null,[l("a",Ql,[I("Kotlin Koans"),c(g)])]),l("li",null,[l("a",Tl,[I("Referential transparency"),c(g)])])])])}const ql=a(s,[["render",Dl],["__file","index.html.vue"]]);export{ql as default}; diff --git a/assets/index.html-133fa6a3.js b/assets/index.html-133fa6a3.js new file mode 100644 index 00000000..4bdb5a30 --- /dev/null +++ b/assets/index.html-133fa6a3.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-d7c64ec8","path":"/en/kotlin-features-advanced/","title":"Advanced and other Kotlin features","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Delegated properties","slug":"delegated-properties","link":"#delegated-properties","children":[]},{"level":2,"title":"Concurrency and Coroutines","slug":"concurrency-and-coroutines","link":"#concurrency-and-coroutines","children":[]},{"level":2,"title":"Function literal with receiver and Type-safe builders","slug":"function-literal-with-receiver-and-type-safe-builders","link":"#function-literal-with-receiver-and-type-safe-builders","children":[]},{"level":2,"title":"Exercises","slug":"exercises","link":"#exercises","children":[{"level":3,"title":"Exercise 1","slug":"exercise-1","link":"#exercise-1","children":[]}]}],"git":{"updatedTime":1680904850000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":5}]},"filePathRelative":"en/kotlin-features-advanced/README.md"}');export{e as data}; diff --git a/assets/index.html-1b2bb433.js b/assets/index.html-1b2bb433.js new file mode 100644 index 00000000..f6b63469 --- /dev/null +++ b/assets/index.html-1b2bb433.js @@ -0,0 +1,35 @@ +import{_ as o,a as l,b as i,c as p,d as r,e as u}from"./compose-multiplaform-e9e5bce8.js";import{_ as c,r as d,o as m,c as k,a as e,b as n,d as a,e as t}from"./app-a89e3102.js";const h={},b=e("h1",{id:"developpement-frontend",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#developpement-frontend","aria-hidden":"true"},"#"),n(" Développement frontend")],-1),v=e("p",null,"Kotlin supporte une large sélection de frameworks frontaux sur toutes les plateformes : mobile, desktop et web. Vous trouverez ci-dessous un aperçu des possibilités que vous pouvez faire directement à partir d'IntelliJ :",-1),f={href:"https://openjfx.io/",target:"_blank",rel:"noopener noreferrer"},g={href:"https://tornadofx.io/",target:"_blank",rel:"noopener noreferrer"},_={href:"https://www.jetbrains.com/lp/compose-mpp/",target:"_blank",rel:"noopener noreferrer"},w={href:"https://ktor.io/docs/creating-interactive-website.html",target:"_blank",rel:"noopener noreferrer"},M={href:"https://freemarker.apache.org/",target:"_blank",rel:"noopener noreferrer"},x=e("li",null,"Avec KotlinJS, les développeurs peuvent créer des applications React, nodsjs ou vanilla JS en utilisant Kotlin.",-1),C=e("li",null,"Kotlin WASM se compile en Web Assembly. Il peut compléter KotlinJS pour les tâches à forte intensité de calcul.",-1),K={href:"https://www.jetbrains.com/lp/compose-mpp/",target:"_blank",rel:"noopener noreferrer"},S={href:"https://developer.android.com/jetpack/compose",target:"_blank",rel:"noopener noreferrer"},q=e("strong",null,"layout XML",-1),y={href:"https://www.jetbrains.com/lp/compose-mpp/",target:"_blank",rel:"noopener noreferrer"},z=e("p",null,[n("Comme nous pouvons le voir, Kotlin propose plusieurs options. L'option la plus séduisante en terme de partage de code est Compose Multiplatform. Ceci est possible notamment grâce à "),e("strong",null,"KMP et KMM")],-1),A=e("h2",{id:"kmp-kmm",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#kmp-kmm","aria-hidden":"true"},"#"),n(" KMP & KMM")],-1),j=e("li",null,"KMP (Kotlin Multiplatform) et KMM (Kotlin Multiplatform Mobile) sont les deux technologies Kotlin qui permettent de partager une base de code unique sur plusieurs cibles.",-1),W={href:"https://blog.jetbrains.com/kotlin/2021/08/compose-multiplatform-goes-alpha/",target:"_blank",rel:"noopener noreferrer"},J=e("p",null,[e("img",{src:"https://kotlinlang.org/docs/images/kotlin-multiplatform.png",alt:"KMP",loading:"lazy"})],-1),I={href:"https://kotlinlang.org/docs/multiplatform-full-stack-app.html",target:"_blank",rel:"noopener noreferrer"},D={href:"https://kotlinlang.org/docs/multiplatform-library.html",target:"_blank",rel:"noopener noreferrer"},P={href:"https://kotlinlang.org/lp/mobile/",target:"_blank",rel:"noopener noreferrer"},L=e("li",null,"KMM est basé sur KMP et vise à aider les développeurs mobiles à créer un SDK multiplateforme pour le mobile de façon aisée.",-1),B=t('

KMM

Dans la suite de ce chapitre, nous explorerons les différentes possibilités individuellement et on fera un projet KMP dans le chapitre suivant.

Kotlin/JS et Kotlin/WASM

  • Kotlin/JS peut également cibler le web et même utiliser des frameworks web (tels que react) dans Kolitn.
  • Kotlin WASM est une autre possibilité de cibler le web, mais il génère WASM au lieu de code JS pur.
    • Il peut être utilisé par exemple pour développer des bibliothèques à forte intensité de calcul.
  • Nous pourrons peut-être faire encore plus à l'avenir grâce à l'évolution de toutes ces technologies (Kotlin, WASM et Kotlin/WASM). - Par exemple, [WASI] (https://wasi.dev/) permet à WASM de communiquer avec le système d'exploitation. - Cela signifie que je pourrais voir des projets Kotlin/WASM à l'avenir qui peuvent cibler à la fois le navigateur et le système d'exploitation.
  • Continuons à observer 😄.

TP : Application web Kotlin/WASM

',5),T=t("
  • Les assistants de création de projet Kotlin/WASM et Kotlin/JS sur IntelliJ fonctionnent de manière similaire:
    • L'IDE génère un fichier Kotlin qui sera compilé par la suite en WASM et/ou JS. Kotlin/JS ne génère que du JS tandis que Kotin/WASM génère à la fois du JS et du WASM.
    • Dans les deux cas, le point d'entrée du code généré est un fichier JS appelé nom_du_module.js.
    • L'IDE génère également dans le dossier des ressources un fichier index.html dont le but est de charger le JS généré (le fichier nom_du_module.js).
    • La tâche wasmBrowserDevelopmentRun ou jsWasmBrowserDevelopmentRun lancera un serveur local qui hébergera à la fois les fichiers index.html et les fichiers JS et WASM générés.
  • ",1),N=e("strong",null,"kotlin.wasm.wizard",-1),O={href:"https://github.com/worldline/learning-kotlin/tree/main/material/kotlin-wasm-starter",target:"_blank",rel:"noopener noreferrer"},V=t('

    • Vérifiez qu'on est sur la dernière version de Kotlin dans build.gradle.kts (l'assistant peut le configurer à une version antérieure).
    • Ouvrez src/wasmMain/kotlin/sample.kt et cliquez sur le bouton lancer qui apparaît à côté de la fonction main.
    • Si la compilation échoue parce que l'IDE a utilisé la mauvaise tâche gradle, veuillez la changer en wasmBrowserDevelopmentRun et essayez de l'exécuter à nouveau.

    ',3),E={href:"http://localhost:8080/",target:"_blank",rel:"noopener noreferrer"},F=e("li",null,"⚠️ Il se peut que vous deviez activer certains drapeaux sur votre navigateur pour que l'application fonctionne. Si vous voyez une page blanche, veuillez lire les journaux du navigateur pour vérifier les instructions.",-1),R=e("p",null,[e("img",{src:p,alt:"",loading:"lazy"})],-1),G=e("li",null,[n("Le fichier wasm généré est disponible dans "),e("strong",null,"build/js/packages/nom_du_projet/kotlin")],-1),U=e("li",null,[n("Nous pouvons soit installer [WABT (The WebAssembly Binary Toolkit ou wabbit)] (https://github.com/WebAssembly/wabt) et utiliser l'outil "),e("em",null,"wasm2wattool"),n(),e("code",null,"wasm2wat --enable-all -v .\\kotlin-wasm-demo-wasm.wasm -o wasm.wat"),n(",")],-1),X={href:"https://webassembly.github.io/wabt/demo/wasm2wat/",target:"_blank",rel:"noopener noreferrer"},$=e("li",null,"❗ Cependant, je n'ai pas réussi à le faire fonctionner",-1),H=e("h3",{id:"pw-application-web-kotlinjs",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#pw-application-web-kotlinjs","aria-hidden":"true"},"#"),n(" PW : Application web KotlinJS")],-1),Q=e("p",null,"L'assistant Kotlin/JS crée une application très similaire à celle de Kotlin/WASM. Dans un prochain PW, nous créerons une application complète avec Ktor et Kotlin/JS.",-1),Y=e("h2",{id:"compose",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#compose","aria-hidden":"true"},"#"),n(" Compose")],-1),Z={href:"https://blog.jetbrains.com/kotlin/2021/08/compose-multiplatform-goes-alpha/",target:"_blank",rel:"noopener noreferrer"},ee={class:"custom-container warning"},ne=e("p",{class:"custom-container-title"},"Compose multiplatform vs Jetpack Compose",-1),se={href:"https://developer.android.com/jetpack/compose/tutorial",target:"_blank",rel:"noopener noreferrer"},ae=t(`

    Compose Web vs Compose for Web Canvas

    • La surface de l'API de Compose Web est différente des autres cibles de Compose car elle travaille directement avec le DOM.
    • Compose for Web Canvas a la même surface d'API que celle du Desktop, Android et iOS car il dessine sur un Canvas et ne manipule pas le DOM.

    Cela signifie que le premier a un meilleur support web et que le second a plus de code réutilisable.

    TP : Compose Web

    • Créez un nouveau projet IntelliJ -> Compose Multiplaform.
    • Choisissez "Single platform" -> "Web" et remplissez les autres champs.
    • Choisissez Finish
    • IntelliJ peut prendre un certain temps pour préparer le projet et peut demander d'installer des plugins supplémentaires.
    • Lancez le serveur de développement de l'application web à l'aide de la commande ./gradlew jsBrowserRun --continuous.
    • Modifiez Main.kt comme suit et lancez l'application.
    • Ouvrez cette adresse : localhost:8080.
    fun main() {
    +    renderComposable(rootElementId = "root") {
    +        Div({ style { padding(25.px) } }) {
    +            var expanded by remember { mutableStateOf(false) }
    +            Button(
    +                attrs = {
    +                    onClick { expanded = !expanded }
    +                }
    +            ) { Text("Cliquez sur moi") }
    +            Div({ style { display(if (expanded) DisplayStyle.Block else DisplayStyle.None) } }) {
    +                Text("Cliquez sur moi !")
    +            }
    +        }
    +    }
    +}
    +

    compose multiplatform demo

    TP : Compose desktop + Android app

    • Créez un nouveau projet sur IntelliJ -> Compose Multiplatform.
    • Choisissez "multiple platforms" et remplissez les autres champs. Choisissez ensuite Finish.
    • IntelliJ commence à préparer le projet et peut demander l'installation de plugins.
    • Une fois le projet prêt, lancez l'application Android en utilisant le bouton vert run.
    • Lancez l'application desktop en exécutant la fonction principale du projet desktop (qui devrait se trouver dans Main.kt).
    • Modifiez App.kt dans le projet principal comme suit et lancez l'application.
    @Composable
    +fun App() {
    +    val platformName = getPlatformName()
    +    Card {
    +        var expanded by remember { mutableStateOf(false) }
    +        Column(Modifier.clickable { expanded = !expanded }) {
    +            Texte(
    +                text="Cliquez sur moi !",
    +                style = MaterialTheme.typography.h2
    +            )
    +            AnimatedVisibility(expanded){
    +                Texte(
    +                    text = "Bonjour, \${platformName} 🎊",
    +                    style = MaterialTheme.typography.h1
    +                )
    +            }
    +        }
    +    }
    +}
    +

    compose multiplatform demo

    Pour aller plus loin

    ',10),te={href:"https://seb.deleuze.fr/the-huge-potential-of-kotlin-wasm/",target:"_blank",rel:"noopener noreferrer"};function oe(le,ie){const s=d("ExternalLinkIcon");return m(),k("div",null,[b,v,e("ul",null,[e("li",null,[n("Côté bureau "),e("ul",null,[e("li",null,[n("Grâce au support de la JVM, Kotlin supporte "),e("a",f,[n("JavaFX"),a(s)]),n(". 💡 Il existe même un équivalent en Kotlin appelé "),e("a",g,[n("tornadofx"),a(s)]),n(".")]),e("li",null,[e("a",_,[n("Compose Multiplatform"),a(s)]),n(" apporte l'API Jetpack Compose sur le bureau, le web et le mobile.")])])]),e("li",null,[n("Sur le web "),e("ul",null,[e("li",null,[e("a",w,[n("Ktor"),a(s)]),n(" peut utiliser des moteurs de modèles "),e("a",M,[n("tels que FreeMarker"),a(s)]),n(" pour créer des pages de serveur.")]),x,C,e("li",null,[e("a",K,[n("Compose Multiplatform"),a(s)]),n(" apporte deux options sur le web: Compose web et Compose for Web Canvas.")])])]),e("li",null,[n("Sur les mobiles "),e("ul",null,[e("li",null,[n("Les développeurs Android utilisent "),e("a",S,[n("Jetpack Compose"),a(s)]),n(" ou l'ancienne méthode de "),q,n(".")]),e("li",null,[e("a",y,[n("Compose Multiplatform"),a(s)]),n(" supporte Android de façon stable et iOS de façon expérimentale.")])])])]),z,A,e("ul",null,[j,e("li",null,[e("a",W,[n("KMP"),a(s)]),n(" s'appuie sur Kotlin native et d'autres fonctionnalités de Kotlin pour aider les développeurs à créer des projets destinés à plusieurs plates-formes en utilisant une base de code Kotlin commune.")])]),J,e("ul",null,[e("li",null,[n("De nombreuses combinaisons de cibles et de cas d'utilisation sont possibles : "),e("ul",null,[e("li",null,[e("a",I,[n("Full-Stack web apps"),a(s)]),n(" : Un projet qui contient un backend et une application web tout en partageant une logique commune.")]),e("li",null,[e("a",D,[n("Bibliothèques multiplateformes"),a(s)])]),e("li",null,[e("a",P,[n("KMM"),a(s)]),n(" : dénomination spéciale pour KMP lorsqu'il est utilisé pour des projets iOS et Android.")])])]),L]),B,e("ul",null,[T,e("li",null,[n("Créons une application Kotlin/WASM. Tout d'abord, activez l'assistant Kotlin/WASM en activant "),N,n(` dans le registre d'IntelliJ (ouvrez le registre en appuyant deux fois sur shift et en tapant "registry" dans la boîte de recherche). Alternativement, clonez `),e("a",O,[n("ce projet"),a(s)]),n(".")])]),V,e("ul",null,[e("li",null,[n("Le serveur de développement devrait démarrer et vous pouvez ouvrir votre application web sur "),e("a",E,[n("http://localhost:8080/"),a(s)])]),F]),R,e("ul",null,[G,e("li",null,[n("WASM étant un format binaire, nous devons d'abord le convertir au format texte. "),e("ul",null,[U,e("li",null,[n("ou utiliser un convertisseur en ligne "),e("a",X,[n("comme celui-ci"),a(s)])]),$])])]),H,Q,Y,e("p",null,[e("a",Z,[n("Compose multiplatform"),a(s)]),n(" est une famille de frameworks d'interface utilisateur déclaratifs pour Android (Jetpack Compose), le bureau (Compose Desktop) et le web (Compose Web). Il dispose d'un support expérimental pour iOS et Web Canvas.")]),e("div",ee,[ne,e("p",null,[n("Bien que très similaire, Compose multiplatform est différent de Jetpack Compose car ce dernier n'est compatible qu'avec Android. Google fournit un "),e("a",se,[n("JetPack compose tutorial"),a(s)]),n(" pour le développement Android.")])]),ae,e("ul",null,[e("li",null,[e("a",te,[n("L'énorme potentiel de Kotlin/Wasm"),a(s)])])])])}const ue=c(h,[["render",oe],["__file","index.html.vue"]]);export{ue as default}; diff --git a/assets/index.html-2616f981.js b/assets/index.html-2616f981.js new file mode 100644 index 00000000..6dca338c --- /dev/null +++ b/assets/index.html-2616f981.js @@ -0,0 +1 @@ +const e=JSON.parse(`{"key":"v-2d0a8b4a","path":"/fr/","title":"","lang":"fr-FR","frontmatter":{"home":true,"heroImage":"./kotlin_logo.png","tagline":"A beginner's guide to a modern programming language","actions":[{"text":"Débuter →","link":"/fr/presentation/","type":"primary"}],"features":[{"title":"Bien commencer avec Kotlin","details":"lorem"},{"title":"Syntaxe de base","details":"lorem"},{"title":"Exemples","details":"lorem"}],"footer":"Worldline, 2021"},"headers":[{"level":2,"title":"Prerequisites","slug":"prerequisites","link":"#prerequisites","children":[]},{"level":2,"title":"Liens utiles","slug":"liens-utiles","link":"#liens-utiles","children":[]}],"git":{"updatedTime":1660920327000,"contributors":[{"name":"W112314","email":"quentin.carpentier@worldline.com","commits":1},{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":1}]},"filePathRelative":"fr/index.md"}`);export{e as data}; diff --git a/assets/index.html-272066df.js b/assets/index.html-272066df.js new file mode 100644 index 00000000..b361adeb --- /dev/null +++ b/assets/index.html-272066df.js @@ -0,0 +1,7 @@ +import{_ as n,r as i,o as a,c as s,a as l,b as e,d as c,e as g}from"./app-a89e3102.js";const b={},t=g('

    Fonctionnalités du langage Kotlin

    Kotlin est un langage qui support les paradigmes orienté objet et fonctionnel. Ce chapitre couvre les caractéristiques basiques et intermédiaires. Le chapitre suivant couvrira les fonctionnalités avancées.

    Caractéristiques de base

    Constructions de base (variables, flux de contrôle)

    • Kotlin est typé statiquement et prend en charge le typage implicite.
      • Typage statique : les types ne peuvent pas changer à l'exécution (c'est l'inverse du typage dynamique).
      • Typage implicite : le compilateur peut inférer le type tant que c'est possible.
    • var crée des variables ré-assignables.
    • val crée des variables qu'on ne peut plus ré-assigner.
    • Les points-virgules sont facultatifs.
    • Kotlin prend en charge la déclaration de haut niveau des variables et des fonctions (elles peuvent être déclarées en dehors des classes).
    • L'interpolation de chaîne de caractères est disponible avec cette syntaxe ${expression}.
    • if et when sont des expressions (elles peuvent renvoyer une valeur).
      • when est équivalent à l'instruction switch des autres langages
      • L'opérateur ternaire n'est pas disponible. L'expression if le remplace.
    • for-each est le seul type de boucle for disponible.
    • La programmation orientée objet est prise en charge comme en Java avec quelques fonctionnalités supplémentaires telles que les extensions.
    • Le compilateur prend en charge la Null Safety. Il permet d'écrire du code sans erreur de pointeur nulle vérifié à la compilation.
    • La programmation fonctionnelle est prise en charge (fonctions d'ordre supérieur et fonctions en tant qu'éléments de 1ère classe, etc.).

    Utiliser val par défaut

    Utiliser var uniquement si vous réassignez une variable ou argument.

    ',6),u={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gRnVuY3Rpb25zIGNhbiBiZSBkZWNsYXJlZCBvdXRzaWRlIG9mIGNsYXNzZXNcbmZ1biBzdW0oeDpJbnQsIHk6SW50KSA6IEludCB7XG4gICAgcmV0dXJuIHggKyB5XG59IC8vIGZ1bmN0aW9uIGRlZmluaXRpb25cblxuXG52YWwgZ2xvYmFsVmFsdWUgPSBcIkkgYW0gYSBnbG9iYWwgdmFsdWVcIlxuXG5mdW4gbWFpbigpIHtcbiAgICB2YXIgYTogSW50ID0gMCAvLyB2YXJpYWJsZVxuXHRhID0gMjNcblxuXHR2YWwgYjogU3RyaW5nID0gXCJIZWxsb1wiIC8vIGltbXV0YWJsZSB2YXJpYWJsZVxuXHQvL2IgPSBcIldvcmxkXCIgLy9lcnJvclxuXG5cdHZhciBtZXNzYWdlID0gXCJIZWxsb1wiIC8vIFR5cGUgaXMgaW5mZXJyZWRcbiAgICBcbiAgICB2YWwgdG90YWwgPSBzdW0oMiwgMSkgLy8gY2FsbCBzdW0gZnVuY3Rpb24gICAgXG4gICAgcHJpbnRsbihcIlRoZSBzdW0gaXMgJHt0b3RhbH1cIikgLy8gaW50ZXJwb2xhdGlvblxuICAgIHByaW50bG4oXCJUaGUgZ2xvYmFsVmFsdWUgaXMgLT4gJGdsb2JhbFZhbHVlXCIpXG4gICAgXG4gICAgdmFsIHRlc3RSZXN1bHQxID0gaWYgKHRvdGFsID4gMykgeyBcbiAgICAgICAgXCJCaWdcIiBcbiAgICB9IGVsc2Uge1xuICAgICAgICBcInNtYWxsXCJcbiAgICB9ICBcbiAgICBwcmludGxuKHRlc3RSZXN1bHQxKVxuICBcbiAgICB2YWwgdGVzdFJlc3VsdDIgPSBpZiAodG90YWwgPiAzKSBcIkJpZ1wiIGVsc2UgXCJzbWFsbFwiXG4gICAgcHJpbnRsbih0ZXN0UmVzdWx0MilcbiAgICBcbiAgICB2YWwgZ3JlZXRpbmcgPSBcIkJvbmpvdXJcIlxuICAgIHZhbCBsYW5ndWFnZSA9IHdoZW4oZ3JlZXRpbmcpe1xuICAgICAgIFwiQm9uam91clwiLFwic2FsdXRcIiAtPiBcIkZyYW7Dp2Fpc1wiXG4gICAgICAgIFwiR29vZCBtb3JuaW5nXCIgLT4gXCJFbmdsaXNoXCJcbiAgICAgICAgZWxzZSAtPiBcIlVua25vd25cIlxuICAgIH1cbiAgICBwcmludGxuKGxhbmd1YWdlKVxuICAgIFxuICAgIGZvciAoaSBpbiAxLi4zKSBwcmludGxuKGkpIC8vIHNpbmdsZSBsaW5lXG5cdGZvciAoaSBpbiA2IGRvd25UbyAwIHN0ZXAgMikgcHJpbnRsbihpKVxuICAgIGZvciAobXNnIGluIGFycmF5T2YoXCJIZWxsb1wiLCBcIndvcmxkXCIpKSB7XG4gICAgXHRwcmludGxuKG1zZylcblx0fVxuICAgIHZhciB4ID0gMlxuICAgIHdoaWxlICh4ID4gMCkge1xuICAgIFx0eC0tXG5cdH1cbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},d=g('

    Les fonctions

    Dans cette section, les termes 'argument' et 'paramètre' sont utilisés de manière interchangeable.

    Les fonctions de Kotlin ont les caractéristiques suivantes :

    • Déclaration : fun functionName(arg1 : type1 = defaultvalue1, ...) : retunrType.
    • Appeler une fonction en passant la valeur dans l'ordre de déclaration.
      • Utilisez des étiquettes d'argument pour plus de clarté, cependant, cela permet également un classement arbitraire des arguments.
    • Les arguments optionnels ont une valeur par défaut et peuvent être omis lors de l'appel.
    • Les fonctions sont des éléments de première classe ou citoyens : elles peuvent être affectées à une variable, passées en tant que paramètre de fonction ou renvoyées par une fonction.
      • 💡 Une fonction qui prend une fonction comme argument ou en renvoie une est une fonction d'ordre supérieur.
    • Un type de fonction peut être exprimé comme suit : (typeOfParam1, typeOfParam2, etc) -> returnType (Le type de retour vide est Unit).
    • Les fonctions anonymes utilisent la syntaxe suivante { argName1, argName2, etc. -> // code }
      • Aussi appelées fonctions lambda ou fonctions littérales
    • Le dernier argument de la fonction peut être mis après la fermeture après la parenthèse fermante compute(9, 5) { x, y -> x * y }
    ',4),o={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gRnVuY3Rpb25zIGNhbiBiZSBkZWNsYXJlZCBvdXRzaWRlIG9mIGNsYXNzZXNcbmZ1biBzdW0oeDpJbnQsIHk6SW50KSA6IEludCB7XG4gICAgcmV0dXJuIHggKyB5XG59IC8vIGZ1bmN0aW9uIGRlZmluaXRpb25cblxuLy9PbmUgbGluZSBmdW5jdGlvblxuZnVuIG11bHQoeDpJbnQsIHk6IEludCkgPSB4ICogeVxuXG5mdW4gZ3JlZXQoeWVhcjogSW50ID0gMjAxOCwgbW9udGg6IEludCA9IDEsXG4gICAgICAgICAgbWVzc2FnZTogU3RyaW5nID0gXCJIZWxsb1wiKSA6IFN0cmluZyB7XG4gICAgcmV0dXJuIFwiJHttZXNzYWdlfS4gV2UgYXJlIGluICR7bW9udGh9LyR7eWVhcn1cIlxufVxuXG5mdW4gY2FsY3VsYXRlKHg6IEludCwgeTogSW50LCBmOiAoSW50LCBJbnQpIC0+IEludCkgOiBJbnR7XG4gICAgcmV0dXJuIGYoeCwgeSlcbn0gLy8gY2FsY3VsYXRlIHRha2VzIGEgZnVuY3Rpb24gYXMgYSBwYXJhbXRlclxuXG5mdW4gbWFpbihhcmd2OkFycmF5PFN0cmluZz4pe1xuICAgIHZhbCBhID0gc3VtKDIsIDEpIC8vIGNhbGwgc3VtIGZ1bmN0aW9uXG4gICAgcHJpbnRsbihtdWx0KGEsIHkgPSA4KSkgLy8gd2UgY2FuIG5hbWUgcGFyYW1ldGVyc1xuICAgIFxuICAgIHByaW50bG4oZ3JlZXQoMjAxNywgMTAsIFwiQm9uam91clwiKSkgLy9Cb25qb3VyLiBXZSBhcmUgaW4gMTAvMjAxN1xuICAgIHByaW50bG4oZ3JlZXQoKSkgLy9IZWxsby4gV2UgYXJlIGluIDEvMjAxOFxuICAgIHByaW50bG4oZ3JlZXQoMjAxOCwgbWVzc2FnZSA9IFwiS29ubmljaGl3YVwiKSlcbiAgICBcbiAgICBwcmludGxuKGNhbGN1bGF0ZSg5LCA1LCA6OnN1bSkpIC8vIDE0XG4gICAgLy8gZnVuY3Rpb25zIGNhbiBiZSBkZWNsYXJlZCBmcm9tIHdpdGhpbiBvdGhlciBmdW5jdGlvbnNcbiAgICB2YWwgZiA9IHt4OiBJbnQsIHk6IEludCAtPiB4IC0geX1cbiAgICBwcmludGxuKGNhbGN1bGF0ZSg5LCA1LCBmKSlcbiAgICBcbiAgICBmdW4gZGl2aWRlKHg6SW50LCB5OiBJbnQpID0geCAvIHlcbiAgICBwcmludGxuKGNhbGN1bGF0ZSg5LCA1LCA6OmRpdmlkZSkpXG4gICAgXG4gICAgcHJpbnRsbihjYWxjdWxhdGUoOSwgNSwgeyB4LCB5IC0+IHggKiB5IH0gKSkgLy8gNDVcbiAgICAvLyBJZiB0aGUgbGFzdCBwYXJhbWV0ZXIgaXMgZnVuY3Rpb24sIHdlIGNhbiBjbG9zZSAoKSBlcmxpZXJcbiAgICBwcmludGxuKGNhbGN1bGF0ZSg5LCA1KSB7IHgsIHkgLT4geCAqIHkgfSApIC8vIDQ1XG59In0=",target:"_blank",rel:"noopener noreferrer"},G=g('

    La prochaine section abordera le null safety.

    Null safety

    null safety est une fonctionnalité du compilateur qui élimine la fameuse Null pointer exception ou npe. En effet, le compilateur signale des erreurs et des avertissements lorsque nous manipulons des types nullables (également appelées types optionnels) dès qu'il y a un risque de npe à l'exécution. Ainsi, afin de mettre Voici une liste des fonctionnalités de sécurité null fournies par Kotlin :

    • Tous les types ne sont pas nullables par défaut ; nous ne pouvons pas affecter null à une variable ou à un argument.
      • Par exemple, ce code échoue var s: String = null.
    • Un type peut être rendu nullable en le suffixant avec un ?. Par exemple : var s : chaîne ? = nul.
    • Kotlin interdit d'appeler une méthode ou une propriété de type non nullable, sauf si l'on fait l'une de ces possibilités :
      • Utilisez le chaînage optionnel avec le suffixe ?.
      • Fournissez une valeur par défaut avec l'opérateur elvis ?:.
      • Smart-cast le nullable dans un non-nullable.
      • Utilisez l'opérateur !! qui élimine les vérifications du compilateur. Cela ne devrait jamais être utilisé.

    Ne jamais déballer avec !!

    Car cela équivaut à désactiver la null safety. Utilisez les autres possibilités à la place.

    ',5),m={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiZnVuIG1haW4oYXJndjpBcnJheTxTdHJpbmc+KXtcbiAgICB2YXIgczogU3RyaW5nIC8vIHZhcnMgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgdXNpbmdcbiAgICAvLyBwcmludGxuKHMpIC0+IGNvbXBpbGUgZmFpbHNcbiAgICBzID0gXCJoZWxsb1wiXG4gICAgcHJpbnRsbihzKSAvLyBva1xuICAgIC8vIHMgPSBudWxsIC0+IGNvbXBpbGUgZmFpbHMuIFR5cGVzIGFyZSBub3QgbnVsbGFibGVcbiAgICB2YWwgbXNnIDogU3RyaW5nPyA9IG51bGwgLy8gbnVsbGFibGUgdHlwZXNcbiAgICBwcmludGxuKG1zZylcbiAgICAvLyBtc2cucmV2ZXJzZWQoKSAvLyBtc2cgbWF5IGJlIG51bGwgLT4gY29tcGlsZSBrb1xuICAgIHByaW50bG4obXNnPy5yZXZlcnNlZCgpPy5jYXBpdGFsaXplKCkpIC8vIHJldHVybiBudWxsIGlmIGFueSBwYXJ0IGlzIG51bGxcbiAgICAvL3ByaW50bG4obXNnISEucmV2ZXJzZWQoKSkgLy8gdGVsbCBjb21waWxlciB0byBpZ25vcmUgbnVsbCBjaGVja3MgLT4gTlBFIGlmIHRoZSB2YXIgaXMgbnVsbFxuICAgIFxuICAgIHZhciBuYjogSW50PyA9IDJcbiAgICAvLyBrb3RsaW4gY29tcGlsZXIga25vd24gdGhhdCBuYiBpcyBuZXZlciBudWxsIGluIGVsc2UgLT4gc21hcnQgY2FzdGluZ1xuICAgIHZhbCBkb3VibGUgPSBpZiggbmIgPT0gbnVsbCApIDAgZWxzZSBuYiAqIDJcbiAgICBwcmludGxuKGRvdWJsZSlcbiAgICBcbiAgICAvLyBzaG9ydGN1dCBvZiBwcmV2IGlmIHVzaW5nID86IGVsdmlzIG9wZXJhdG9yXG4gICAgdmFsIHRyaXBsZSA9IG5iPy50aW1lcygzKSA/OiAwIDsgcHJpbnRsbih0cmlwbGUpXG4gICAgLy9PdGhlciBzbWFydCBjYXN0aW5nIHVzZXNcbiAgICBpZiAobmIgaXMgSW50KSB7XG4gICAgICAgIHByaW50bG4obmIudGltZXMoMykpXG4gICAgfVxuICAgIFxuICAgIGlmIChuYiAhPSBudWxsKSB7XG4gICAgICAgIHByaW50bG4obmIudGltZXMoMykpXG4gICAgfVxuICAgIFxuICAgIC8vIHRoZSBhcmd1bWVudCBpcyB1bndyYXBwZWQgaW4gdGhlIGxhbWRhIG9mIGxldFxuICAgIG5iPy5sZXQgeyBpdC50aW1lcygzKSB9XG4gICAgXG4gICAgLy9zYWZlIGNhc3QgcmV0dXJuIG51bGxhYmxlIGFuZCBkb2VzIG5vdCB0aHJvdyBleGNlcHRpb25cbiAgICB2YWwgbmV3TmIgPSBuYiBhcz8gTG9uZ1xuICAgIHByaW50bG4obmV3TmIpXG4gICAgXG4gICAgLy8gQ29udmVydCBudWxsYWJsZSBsaXN0IHRvIG5vbiBudWxsYWJsZSBvbmVcbiAgICB2YWwgbnVsbGFibGVMaXN0OiBMaXN0PEludD8+ID0gbGlzdE9mKDEsIDIsIG51bGwsIDQpXG5cdHZhbCBpbnRMaXN0OiBMaXN0PEludD4gPSBudWxsYWJsZUxpc3QuZmlsdGVyTm90TnVsbCgpXG4gICAgcHJpbnRsbihpbnRMaXN0KVxufSJ9",target:"_blank",rel:"noopener noreferrer"},r=l("em",null,"null safety",-1),C=l("div",{class:"custom-container warning"},[l("p",{class:"custom-container-title"},"La classe `Optional` de Java ne fournit aucun protection à la compilation"),l("p",null,[e("Ce code lance une npe en Java: "),l("code",null,"Optional s = null; s.isPresent();"),e(". Le compilateur Java (au moins à la version version 17) ne propose pas d'équivalent à ce que propose Kotlin comme le smart casting.")])],-1),p=l("h3",{id:"enumerations",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#enumerations","aria-hidden":"true"},"#"),e(" Énumérations")],-1),Z={href:"https://www.geeksforgeeks.org/enum-classes-in-kotlin",target:"_blank",rel:"noopener noreferrer"},B=l("code",null,"enum class",-1),X=l("ul",null,[l("li",null,[e("Les expressions "),l("em",null,"when"),e(" prennent en charge les énumérations.")]),l("li",null,[e("Une "),l("code",null,"enum class"),e(" peut définir des méthodes et implémenter des interfaces mais elle ne peut pas dériver d'une classe.")]),l("li",null,[e("Il existe des méthodes pour lister les constantes d'une "),l("code",null,"enum class"),e(".")]),l("li",null,"Chaque constante d'une énumération a des propriétés pour obtenir son nom et sa position (en commençant par 0).")],-1),h={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5CaW5hcnlPcGVyYXRvclxuaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5JbnRCaW5hcnlPcGVyYXRvclxuXG4vLyAvLyBTb3VyY2U6IGh0dHBzOi8va290bGlubGFuZy5vcmcvZG9jcy9lbnVtLWNsYXNzZXMuaHRtbFxuXG5lbnVtIGNsYXNzIERpcmVjdGlvbiB7XG4gICAgTk9SVEgsIFNPVVRILCBXRVNULCBFQVNUXG59XG5cbmVudW0gY2xhc3MgQ29sb3IodmFsIHJnYjogSW50KSB7XG4gICAgUkVEKDB4RkYwMDAwKSxcbiAgICBHUkVFTigweDAwRkYwMCksXG4gICAgQkxVRSgweDAwMDBGRilcbn1cblxuZW51bSBjbGFzcyBQcm90b2NvbFN0YXRlIHtcbiAgICBXQUlUSU5HIHtcbiAgICAgICAgb3ZlcnJpZGUgZnVuIHNpZ25hbCgpID0gVEFMS0lOR1xuICAgIH0sXG5cbiAgICBUQUxLSU5HIHtcbiAgICAgICAgb3ZlcnJpZGUgZnVuIHNpZ25hbCgpID0gV0FJVElOR1xuICAgIH07XG5cbiAgICBhYnN0cmFjdCBmdW4gc2lnbmFsKCk6IFByb3RvY29sU3RhdGVcbn1cblxuZW51bSBjbGFzcyBJbnRBcml0aG1ldGljcyA6IEJpbmFyeU9wZXJhdG9yPEludD4sIEludEJpbmFyeU9wZXJhdG9yIHtcbiAgICBQTFVTIHtcbiAgICAgICAgb3ZlcnJpZGUgZnVuIGFwcGx5KHQ6IEludCwgdTogSW50KTogSW50ID0gdCArIHVcbiAgICB9LFxuICAgIFRJTUVTIHtcbiAgICAgICAgb3ZlcnJpZGUgZnVuIGFwcGx5KHQ6IEludCwgdTogSW50KTogSW50ID0gdCAqIHVcbiAgICB9O1xuXG4gICAgb3ZlcnJpZGUgZnVuIGFwcGx5QXNJbnQodDogSW50LCB1OiBJbnQpID0gYXBwbHkodCwgdSlcbn1cblxuZnVuIG1haW4oKSB7XG4gICAgdmFsIHByb3RvY29sU3RhdGUgPSBQcm90b2NvbFN0YXRlLlRBTEtJTkdcbiAgICBwcmludGxuKFwiJHByb3RvY29sU3RhdGUsIHNpZ25hbCAtPiAke3Byb3RvY29sU3RhdGUuc2lnbmFsKCl9XCIpXG4gICAgcHJpbnRsbihcIm5hbWU6ICR7cHJvdG9jb2xTdGF0ZS5uYW1lfVwiKVxuICAgIHByaW50bG4oXCJvcmRpbmFsOiAke3Byb3RvY29sU3RhdGUub3JkaW5hbH1cIilcbiAgICBcbiAgICB2YWwgb3A6IEludEJpbmFyeU9wZXJhdG9yID0gSW50QXJpdGhtZXRpY3MuUExVU1xuICAgIHByaW50bG4ob3AuYXBwbHlBc0ludCgyLCAzMCkpXG4gICAgXG4gICAgcHJpbnRsbihQcm90b2NvbFN0YXRlLnZhbHVlcygpLmpvaW5Ub1N0cmluZyhcIiwgXCIpKVxuICAgIHByaW50bG4oUHJvdG9jb2xTdGF0ZS52YWx1ZU9mKFwiV0FJVElOR1wiKSlcbiAgICBcbiAgICB2YWwgYSA9IDEzXG4gICAgdmFsIGIgPSAzMVxuICAgIC8vIGxvb3AgdGhyb3VnaCB0aGUgcG9zc2libGUgZW51ZW1lcmF0aW9uc1xuICAgIGZvciAoZiBpbiBJbnRBcml0aG1ldGljcy52YWx1ZXMoKSkge1xuICAgICAgICBwcmludGxuKFwiJGYoJGEsICRiKSA9ICR7Zi5hcHBseShhLCBiKX1cIilcbiAgICB9XG59In0=",target:"_blank",rel:"noopener noreferrer"},W={href:"https://kotlinlang.org/docs/enum-classes.html",target:"_blank",rel:"noopener noreferrer"},y=l("h3",{id:"exercices",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercices","aria-hidden":"true"},"#"),e(" Exercices")],-1),A=l("h4",{id:"exercice-1",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercice-1","aria-hidden":"true"},"#"),e(" Exercice 1")],-1),V={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gUTogZGVjbGFyZSBhIGZ1bmN0aW9uIGNhbGxlZCBjb3VudFZvd2VscyB0aGF0IHRha2VzIGEgU3RyaW5nIGFyZ3VtZW50IFxuLy8gYW5kIHJldHVybnMgaXRzIG51bWJlciBvZiB2b3dlbHMgKGEsIHUsIGkgLCBlLCBvKS4gUGxlYXNlIHVzZSBhIGZvb3IgbG9vcC4ifQ==",target:"_blank",rel:"noopener noreferrer"},Y={class:"custom-container details"},J=l("summary",null,"Déplier pour consulter la solution",-1),R={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gUTogZGVjbGFyZSBhIGZ1bmN0aW9uIGNhbGxlZCBjb3VudFZvd2VscyB0aGF0IHRha2VzIGEgU3RyaW5nIGFyZ3VtZW50IFxuLy8gYW5kIHJldHVybnMgaXRzIG51bWJlciBvZiB2b3dlbHMgKGEsIHUsIGkgLCBlLCBvKS4gUGxlYXNlIHVzZSBhIGZvb3IgbG9vcC5cblxuZnVuIGNvdW50Vm93ZWxzKHRleHQ6IFN0cmluZykgOiBJbnQge1xuICAgIHZhciBjb3VudCA9IDBcbiAgICBmb3IgKGMgaW4gdGV4dCl7XG4gICAgICAgIGlmIChcImF1aWVvXCIuY29udGFpbnMoYykpe1xuICAgICAgICAgICAgY291bnQgKz0gMVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb3VudFxufVxuXG5mdW4gbWFpbihhcmdzOkFycmF5PFN0cmluZz4pe1xuICAgIHByaW50bG4oY291bnRWb3dlbHMoXCJIZWxsb1wiKSlcbiAgICBwcmludGxuKGNvdW50Vm93ZWxzKFwiV29ybGRcIikpXG59In0=",target:"_blank",rel:"noopener noreferrer"},x=l("h4",{id:"exercise-2",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercise-2","aria-hidden":"true"},"#"),e(" Exercise 2")],-1),v={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gUTogcHJpbnQgdGhlIG1heCB2YWx1ZSBvZiB0aGUgbGlzdCAoaGludDogeW91IGNhbiB1c2UgdGhlIG1heCBtZXRob2QpXG5mdW4gcHJpbnRNYXgoaXRlbXM6IEFycmF5PEludD4/KXtcbiAgICBcbn1cblxuZnVuIG1haW4oYXJnczogQXJyYXk8U3RyaW5nPil7XG4gICAgdmFyIGl0ZW1zOiBBcnJheTxJbnQ+PyA9IG51bGxcblx0aXRlbXMgPSBhcnJheU9mKDEsIDIsIDIpXG5cdHByaW50TWF4KGl0ZW1zKVxuICAgIFxuICAgIC8vIFE6IHByaW50IHRoZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIGl0ZW0gb2YgdGhlIGFycmF5XG5cblx0Ly8gUTogcHJpbnQgdGhlIHN1bSBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgaXRlbSBvZiB0aGUgYXJyYXlcbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},F={class:"custom-container details"},H=l("summary",null,"Déplier pour consulter la solution",-1),w={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gUTogcHJpbnQgdGhlIG1heCB2YWx1ZSBvZiB0aGUgbGlzdCAoaGludDogeW91IGNhbiB1c2UgdGhlIG1heCBtZXRob2QpXG5mdW4gcHJpbnRNYXgoaXRlbXM6IEFycmF5PEludD4/KXtcbiAgICBwcmludGxuKGl0ZW1zPy5tYXgoKSA/OiAwKVxuICAgIHByaW50bG4oaWYgKGl0ZW1zICE9IG51bGwpIGl0ZW1zLm1heCgpIGVsc2UgMClcbn1cblxuZnVuIG1haW4oYXJnczogQXJyYXk8U3RyaW5nPil7XG4gICAgdmFyIGl0ZW1zOiBBcnJheTxJbnQ+PyA9IG51bGxcblx0Ly9pdGVtcyA9IGFycmF5T2YoMSwgMiwgMylcblx0cHJpbnRNYXgoaXRlbXMpXG4gICAgcHJpbnRNYXgobnVsbClcbiAgICBcbiAgICAvLyBROiBwcmludCB0aGUgdmFsdWUgb2YgdGhlIHNlY29uZCBpdGVtIG9mIHRoZSBhcnJheVxuICAgIC8vIC8vIFE6IHByaW50IHRoZSBzdW0gb2YgdGhlIGZpcnN0IGFuZCBsYXN0IGl0ZW0gb2YgdGhlIGFycmF5XG4gICAgaWYgKGl0ZW1zICE9IG51bGwpe1xuICAgICAgICBwcmludGxuKGl0ZW1zWzJdKVxuXHRcdHByaW50bG4oaXRlbXNbMl0gKyBpdGVtc1swXSlcbiAgICB9XG59In0=",target:"_blank",rel:"noopener noreferrer"},N=g('

    Fonctionnalités intermédiaires

    Programmation orientée objet

    Kotlin permet d'écrire du code Orienté Object concis grâce aux caractéristiques suivantes :

    • Concepts disponibles : classes, héritage, interfaces et classes abstraites.
    • Prise en charge possée des propriétés : les getters et les setters sont automatiquement implémentés.
      • On peut les personnaliser les accesseurs en définissant les fonctions get() et set(value) à côté de la déclaration de la propriété.
    • Les arguments du constructeur sont définis à côté du nom de la classe class ClassName(arg1, atg2, )
    • Préfixer les arguments d'un constructeur avec val ou var en fait une propriété (val la rend non ré-assignable).
    • Le nom du constructeur est init et ne nécessite pas de paramètres.
    • Le compilateur vérifie que toutes les propriétés non nullables sont initialisées à la fin du constructeur.
      • ⚠️ Le compilateur ne vérifie pas l'initialisation des propriétés lateinit. Ainsi, y accéder avant alors qu'elles ne sont pas initialisés provoque une exception.
    • Une classe doit être préfixée avec open pour permettre l'héritage.
    • Kotlin utilise le niveau d'accès public par défaut.
    • L'opérateur d'égalité == appelle implicitement la méthode equals() (contrairement à Java qui utilise l'égalité de référence).
    • Un objet compagnon contient des méthodes et des propriétés statiques.
    • Les extensions ajoutent des fonctions et des propriétés aux classes existantes.
      • 💡 Ils remplacent l'héritage dans de nombreuses situations.
      • Par exemple, nous pouvons ajouter des fonctions à la classe String au lieu de créer une nouvelle classe StringUtils.
    • Les classes et interfaces scellées ne peuvent pas être étendues ou implémentées par des tiers.

    Ne définir les accesseurs que si vous avez un comportement personnalisé

    Kotlin prend en charge les propriétés de façon plus poussée que Java et permet d'ajouter des accesseurs ultérieurement sans refactoriser le code qui appelle ces propriétés. Ainsi, par défaut, il suffit de définir le nom des propriétés sans accesseurs et on peut les utiliser directement.

    ',5),S={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gY2xhc3Mgd2l0aCBkZWZhdWx0IGNvbnN0cnVjdG9yXG4vLyBvcGVuOiBhbGxvdyBpbmhlcml0YW5jZSAoY2xhc3NlcyBhbmQgcHJvcGVydGllcyBhcmUgZmluYWwgYnkgZGVmYXVsdClcbi8vIC8vIHZhbCBnZW5lcmF0ZXMgcmVhZC1vbmx5IHByb3BlcnRpZXNcbm9wZW4gY2xhc3MgUGxhbmV0KG9wZW4gdmFsIHJhZGl1czogTG9uZykge1xuICAgIC8vIHZhciBnZW5lcmF0ZXMgcHJvcGVydGllc1xuICAgIHZhciByb3RhdGlvblNwZWVkID0gMFxuICAgIFxuICAgIC8vIFdlIGNhbiBjdXN0b21pemUgdGhlIGdldHRlciBhbmQgdGhlIHNldHRlciBvZiB0aGUgcHJvcG9lcnR5XG4gICAgdmFsIHJhZGl1c0luTWV0ZXI6IExvbmcgXG4gICAgXHRnZXQoKSA9IHJhZGl1cyAqIDEwMDBcbn1cbmNsYXNzIEluaGFiaXRlZFBsYW5ldChvdmVycmlkZSB2YWwgcmFkaXVzOiBMb25nLCB2YXIgcG9wdWxhdGlvbjogTG9uZyk6IFBsYW5ldChyYWRpdXMpIHtcbiAgICBpbml0IHsgcHJpbnRsbihcImNvbnN0cnVjdG9yIGNhbGxlZFwiKSB9XG4gICAgXG4gICAgdmFyIHBvcHVsYXRpb25JbkJpbGxpb246IEludFxuICAgIGdldCgpID0gKHBvcHVsYXRpb24gLyAxXzAwMF8wMDBfMDAwKS50b0ludCgpXG4gICAgc2V0KHZhbHVlKSB7XG4gICAgICAgIHBvcHVsYXRpb24gPSB2YWx1ZS50b0xvbmcoKSAqIDFfMDAwXzAwMF8wMDBcbiAgICB9XG4gICAgXG4gICAgZnVuIGluY3JlYXNlUG9wdWxhdGlvbihhbW91bnQ6IExvbmcpe1xuICAgICAgICBwb3B1bGF0aW9uICs9IGFtb3VudFxuICAgIH0gICAgICAgXG59XG5cbi8vIGV4dGVuc2lvbnNcbmZ1biBTdHJpbmcuY291bnRMZXR0ZXJzKGxldHRlcnM6IEFycmF5PENoYXI+KTogSW50IFxuXHQ9IHRoaXMuZmlsdGVyIHsgbGV0dGVycy5jb250YWlucyhpdCkgfVxuICAgIFx0XHQubWFwIHsgMSB9LnN1bSgpXG4gICAgICAgICAgICBcbnZhbCBJbmhhYml0ZWRQbGFuZXQuaGFzSW5oYWJpdGFudHM6IEJvb2xlYW4gXG5cdGdldCgpID0gcG9wdWxhdGlvbiA+IDBcblxuZnVuIG1haW4oKXtcbiAgICB2YWwgZWFydGggPSBJbmhhYml0ZWRQbGFuZXQoNl8zNzEsIDdfNzUzXzAwMF8wMDBfMDAwKVxuICAgIHByaW50bG4oZWFydGgpXG4gICAgcHJpbnRsbihlYXJ0aC5yYWRpdXMpXG4gICAgcHJpbnRsbihlYXJ0aC5wb3B1bGF0aW9uKVxuICAgIGVhcnRoLnBvcHVsYXRpb24gKz0gMVxuICAgIHByaW50bG4oZWFydGgucG9wdWxhdGlvbilcbiAgICBwcmludGxuKGVhcnRoLnBvcHVsYXRpb25JbkJpbGxpb24pXG4gICAgXG4gICAgZWFydGguaW5jcmVhc2VQb3B1bGF0aW9uKDEwMClcbiAgICBwcmludGxuKGVhcnRoLnBvcHVsYXRpb24pXG4gICAgcHJpbnRsbihlYXJ0aC5wb3B1bGF0aW9uSW5CaWxsaW9uKVxuICAgIFxuICAgIHByaW50bG4oXCJIZWxsb1wiLmNvdW50TGV0dGVycyhhcnJheU9mKCdIJywgJ2UnKSkpXG4gICAgcHJpbnRsbihlYXJ0aC5oYXNJbmhhYml0YW50cylcbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},k=l("h3",{id:"data-class",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#data-class","aria-hidden":"true"},"#"),e(" Data class")],-1),L={href:"https://kotlinlang.org/docs/data-classes.html",target:"_blank",rel:"noopener noreferrer"},z=l("ul",null,[l("li",null,[l("code",null,"equals()"),e(", "),l("code",null,"hashCode()"),e(", "),l("code",null,"copy()"),e(" et "),l("code",null,"toString()")]),l("li",null,[l("code",null,"componentN()"),e(" qui est une syntaxe alternative pour récupérer les propriétés.")])],-1),E={href:"https://kotlinlang.org/docs/data-classes.html",target:"_blank",rel:"noopener noreferrer"},j=l("ul",null,[l("li",null,"Le constructeur principal doit avoir au moins un paramètre."),l("li",null,[e("Tous les paramètres du constructeur principal doivent être marqués comme "),l("code",null,"val"),e(" ou "),l("code",null,"var"),e(".")]),l("li",null,"Une Data class ne peut pas être abstraite, ouverte à l'héritage, scellée ou interne (💡 mais des extensions sont possibles).")],-1),U={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gZGF0YSBjbGFzcyBhcmUgZmluYWwgY2xhc3NlcyBnZW5lcmF0ZSBtYW55IHVzZWZ1bCBib2lsZXJwbGF0ZSBjb2RlIChoYXNoQ29kZSwgZXF1YWxzLCBjb21wb25lbnROKCksIGNvcHkgYW5kIHRvU3RyaW5nKVxuZGF0YSBjbGFzcyBTcGFjZVNoaXAodmFsIG1heFNwZWVkOiBJbnQsIHZhciBjdXJyZW50U3BlZWQ6IEludCA9IDApXG5cbmZ1biBtYWluKCkge1xudmFsIHNoaXAxID0gU3BhY2VTaGlwKDEwMDAsIDApXG4gICAgdmFsIHNoaXAyID0gU3BhY2VTaGlwKDEwMDAsIDApXG4gICAgdmFsIHNoaXAzID0gU3BhY2VTaGlwKDEwMDAsIDEwKVxuICAgIHByaW50bG4oc2hpcDEpXG4gICAgcHJpbnRsbihzaGlwMSA9PSBzaGlwMilcbiAgICBwcmludGxuKHNoaXAxID09IHNoaXAzKVxuICAgIFxuICAgIHByaW50bG4oc2hpcDEuY29tcG9uZW50MSgpKVxuICAgIHByaW50bG4oc2hpcDEuY29tcG9uZW50MigpKVxuICAgIFxuICAgIC8vIGNvbXBvbmVudHMgZW5hYmxlIGRlc3RydWN0dXJpbmdcbiAgICB2YWwgKG1heFNwZWVkLCBjdXJyZW50U3BlZWQpID0gc2hpcDJcbiAgICBwcmludGxuKFwiTWF4IHNwZWVkOiAkbWF4U3BlZWQuIEN1cnJlbnQgc3BlZWQ6ICRjdXJyZW50U3BlZWRcIilcbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},M=l("h3",{id:"programmation-fonctionnelle",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#programmation-fonctionnelle","aria-hidden":"true"},"#"),e(" Programmation fonctionnelle")],-1),f=l("h4",{id:"concepts-generaux",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#concepts-generaux","aria-hidden":"true"},"#"),e(" Concepts généraux")],-1),K={href:"https://www.geeksforgeeks.org/functional-programming-paradigm",target:"_blank",rel:"noopener noreferrer"},Q=l("p",null,"Expliquons brièvement ces concepts :",-1),D=l("li",null,"Les variables immuables signifient qu'on ne peut pas changer la valeur d'une variable ou ses propriétés une fois qu'elle a été créée. Si nous voulons le faire, nous devons créer une nouvelle instance avec la nouvelle valeur.",-1),T=l("li",null,"Les fonctions pures sont des fonctions qui n'ont pas d'effets secondaires et renverront donc toujours la même sortie étant donné la même entrée.",-1),_=l("li",null,"Les fonctions sont des citoyennes de première classe : elles peuvent être affectées à une variable ou utilisées dans des fonctions d'ordre supérieur (passées en tant qu'un argument de fonction ou retournées dans un fonction).",-1),P={href:"https://ericnormand.me/podcast/what-is-referential-transparency",target:"_blank",rel:"noopener noreferrer"},q=l("p",null,"💡 Les langages fonctionnels purs fournissent ces fonctionnalités de manière native et les appliquent (au moment de la construction).",-1),O=l("h4",{id:"kotlin-et-programmation-fonctionnelle",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#kotlin-et-programmation-fonctionnelle","aria-hidden":"true"},"#"),e(" Kotlin et programmation fonctionnelle")],-1),$={href:"https://github.com/Kotlin/kotlinx.collections.immutable",target:"_blank",rel:"noopener noreferrer"},ll={class:"custom-container warning"},el=l("p",{class:"custom-container-title"},"`listOf` génère des listes en lecture seule, mais qui sont mutables",-1),Il={href:"https://www.baeldung.com/kotlin/immutable-collections",target:"_blank",rel:"noopener noreferrer"},cl=g(`
    @Test
    +fun givenReadOnlyList_whenCastToMutableList_checkNewElementsAdded(){
    +    val list: List<String> = listOf("This", "Is", "Totally", "Immutable")
    +    (list as MutableList<String>)[2] = "Not"
    +    assertEquals(listOf("This", "Is", "Not", "Immutable"), list)
    +}
    +
    `,1),gl={href:"https://arrow-kt.io/",target:"_blank",rel:"noopener noreferrer"},nl=l("h4",{id:"programmation-declarative",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#programmation-declarative","aria-hidden":"true"},"#"),e(" Programmation déclarative")],-1),il=l("p",null,[e("La programmation déclarative est un style célèbre dans la programmation fonctionnelle. Il consiste à écrire du code sous la forme d'un enchaînement d'appels de fonction dans ce style "),l("code",null,"val result = f(x).g(y). ..."),e(". Les fonctions d'ordre supérieur remplacent de nombreuses situations où nous utiliserions des boucles. Cela favorise le code lisible qui est facile à déboguer et à maintenir.")],-1),al={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiZnVuIG1haW4oKSB7XG4gICAgdmFsIGZhbnRhc3lOYW1lcyA9IGxpc3RPZihcIkNsZWJicmVyXCIsIFwiU25pbmp1clwiLCBcIk1vZGRuYWFjXCIsIFwiTGVlZG5hdFwiICxcIkdpZXJ3eXN0XCIsIFwiWmV2dXJpZ1wiLCBcIkNsYWFtcGFyYWlydFwiLCBcIkd1ZmFwcmFhbVwiLCBcIlJpZW1hcHJhc3RcIiwgXCJCaWxhbmpvbVwiKVxuICAgIFxuICAgIC8vIGZpbmQgbmFtZXMgdGhhdCBzdGFydCB3aXRoIFwiR1wiIG9yIGVuZCB3aXRoIFwidFwiIGFuZCByZXR1cm4gdGhlbSBhcyBjYXBpdGFsIGxldHRlcnNcbiAgICB2YWwgc2VsZWN0ZWROYW1lcyA9IGZhbnRhc3lOYW1lcy5maWx0ZXIgeyBpdC5zdGFydHNXaXRoKCdHJykgfHwgaXQuZW5kc1dpdGgoJ3QnKSB9Lm1hcCB7IGl0LnRvVXBwZXJDYXNlKCkgfVxuICAgIHByaW50bG4oXCJGaWx0ZXJlZCBuYW1lcyAke3NlbGVjdGVkTmFtZXMuam9pblRvU3RyaW5nKFwiLCBcIil9XCIpXG4gICAgXG4gICAgLy8gY291bnQgdGhlIG51bWJlciBvZiB2b3dlbHNcblx0Ly8gZmxhcG1hcCBhbGxvd3MgdG8gY29udmVydCBhIDJkIGFycmF5IHRvIGEgMWQgYXJyYXkgYnkgY29uY2F0ZW5hdGluZyB0aGUgZWxlbWVudHMgKGNhbGxlZCBhIGZsYXQgb3BlcmF0aW9uKVxuXHR2YWwgdm93ZWxDb3VudCA9IGZhbnRhc3lOYW1lcy5mbGF0TWFweyBpdC50b0xpc3QoKSB9LmZpbHRlcnsgXCJhaXVlb1wiLmNvbnRhaW5zKGl0KSB9Lm1hcCB7IDEgfS5zdW0oKVxuICAgIHZhbCB2b3dlbENvdW50MiA9IGZhbnRhc3lOYW1lcy5mbGF0TWFweyBpdC50b0xpc3QoKSB9XG4gICAgICAgIC5tYXB7IGlmIChcImFpdWVvXCIuY29udGFpbnMoaXQpKSAxIGVsc2UgMCB9XG4gICAgICAgIC5yZWR1Y2UgeyBhY2MsIGN1cnJlbnQgLT4gYWNjICsgY3VycmVudCB9XG4gICAgXG4gICAgcHJpbnRsbihcIlZvd2VsIGNvdW50OiAkdm93ZWxDb3VudFwiKVxuICAgIHByaW50bG4oXCJWb3dlbCBjb3VudDogJHZvd2VsQ291bnQyXCIpXG59In0=",target:"_blank",rel:"noopener noreferrer"},sl=l("h3",{id:"kotlin-and-java-interoperability",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#kotlin-and-java-interoperability","aria-hidden":"true"},"#"),e(" Kotlin and Java interoperability")],-1),bl=l("li",null,"Kotlin is designed with Java interoperability in mind.",-1),tl=l("li",null,"Kotlin code may require some annotations to be called from Java.",-1),ul=l("li",null,"It is possible to mix Java and Kotlin in the same project.",-1),dl=l("li",null,"JetBrain's IntelliJ and Android Studio can convert to Kotlin when pasting java code.",-1),ol=l("code",null,"@JvmRecord",-1),Gl={href:"https://kotlinlang.org/docs/jvm-records.html",target:"_blank",rel:"noopener noreferrer"},ml=l("li",null,[e("It is much more easier and natural to call Java from Kotlin. "),l("ul",null,[l("li",null,"For example: Java accessors are converted to Kotlin properties.")])],-1),rl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGphdmEudXRpbC4qXG5mdW4gY29udmVydFRvQXJyYXlMaXN0KGl0ZW1zOiBMaXN0PEludD4pOiBBcnJheUxpc3Q8SW50PiB7XG4gICAgLy8gaW5zdGFudGlhdGUgYXMgaW4gSmF2YSB3aXRob3V0ICduZXcnXG4gICAgdmFsIGxpc3QgPSBBcnJheUxpc3Q8SW50PigpXG4gICAgLy8gJ2ZvcictbG9vcHMgd29yayBmb3IgSmF2YSBjb2xsZWN0aW9uczpcbiAgICBmb3IgKGl0ZW0gaW4gaXRlbXMpIHsgXG4gICAgICAgIGxpc3QuYWRkKGl0ZW0pXG4gICAgfVxuICAgIFxuICAgIGZvciAoaSBpbiAwLi5pdGVtcy5zaXplIC0gMSkge1xuICAgICAgICBsaXN0W2ldID0gaXRlbXNbaV1cbiAgICB9XG4gICAgcmV0dXJuIGxpc3Rcbn1cbmZ1biBtYWluKCl7XG4gICAgdmFsIGxpc3QgPSBjb252ZXJ0VG9BcnJheUxpc3QobGlzdE9mKDAsIDIsIC0xKSlcbiAgICBwcmludGxuKFwibGlzdDogJHtsaXN0fS4gdHlwZTogJHtsaXN0OjpjbGFzcy5xdWFsaWZpZWROYW1lfVwiKVxuICAgIC8vbGlzdDogWzAsIDIsIC0xXS4gdHlwZTogamF2YS51dGlsLkFycmF5TGlzdFxufSJ9",target:"_blank",rel:"noopener noreferrer"},Cl=l("code",null,"List",-1),pl=l("code",null,"ArrayList",-1),Zl={href:"https://kotlinlang.org/docs/jvm-get-started.html",target:"_blank",rel:"noopener noreferrer"},Bl=l("h3",{id:"exercices-1",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercices-1","aria-hidden":"true"},"#"),e(" Exercices")],-1),Xl=l("h4",{id:"exercice-3",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercice-3","aria-hidden":"true"},"#"),e(" Exercice 3")],-1),hl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gRXh0ZW5zaW9ucyBhbGxvd3MgdG8gYWRkIGZ1bmN0aW9ucyBvciBwcm9wZXJ0aWVzIHRvIGFuIGV4aXN0aW5nIGNsYXNzIChldmVuIGNsYXNzZXMgaW1wb3J0ZWQgZnJvbSBvdGhlciBsaWJyYXJpZXMpXG4vLyBodHRwczovL2tvdGxpbmxhbmcub3JnL2RvY3MvcmVmZXJlbmNlL2V4dGVuc2lvbnMuaHRtbFxuXG5vcGVuIGNsYXNzIEFkdmVudHVyZXIodmFyIGhwOiBJbnQpe1xuICAgIHZhbCBtYXhIcCA9IGhwXG4gICAgZnVuIGF0dGFjaygpOlN0cmluZyA9IFwiSSBkZWFsdCAxMCBkYW1hZ2VcIlxufVxuLy8gRXh0ZW5zaW9uIGZ1bmN0aW9uIHN5bnRheDogZnVuIGNsYXNzTmFtZS5mdW5jdGlvbk5hbWUocHJhbXMpIDogcmV0dXJuVHlwZVxuZnVuIEFkdmVudHVyZXIucmVwb3J0U3RhdHVzKCk6U3RyaW5nIHtcbiAgICByZXR1cm4gXCJJIGhhdmUgJHtocH0gSFBcIlxufVxuXG5mdW4gQWR2ZW50dXJlci5hdHRhY2soKTpTdHJpbmcgPSBcIkkgZGVhbHQgMTAwMCBkYW1hZ2VcIlxuXG5jbGFzcyBCYXJiYXJpYW4oaHA6IEludCk6IEFkdmVudHVyZXIoaHApXG5cbmZ1biBCYXJiYXJpYW4ucmVwb3J0U3RhdHVzKCk6U3RyaW5nID0gXCJJIGFtIGEgYmFyYmFyaWFuIGFuZCBJIGhhdmUgJHtocH0gSFBcIlxuXG5mdW4gcHJpbnRTdGF0dXMoYWR2ZW50dXJlcjogQWR2ZW50dXJlcikge1xuICAgIHByaW50bG4oYWR2ZW50dXJlci5yZXBvcnRTdGF0dXMoKSlcbn1cblxuZnVuIG1haW4oKXtcbiAgICAvLyBUT0RPIGNyZWF0ZSBhbiBhZHZlbnR1cmVyIHdpdGggMjAwaHAgYW5kIHByaW50IHRoZSByZXN1bHQgb2YgdGhlIHJlcG9ydFN0YXR1cyBleHRlbnNpb24gbWV0aG9kXG5cbiAgICAvLyBUT0RPIHByaW50IHRoZSByZXN1bHQgb2YgdGhlIGF0dGFjayBmdW5jdGlvbi4gV2hpY2ggdmVyc2lvbiBpcyByZXRhaW5lZCAobWVtYmVyIGZ1biBvciBleHRlbnNpb24gZnVuID8pXG5cbiAgICAvLyBUT0RPIGRlZmluZSB0aGUgZXh0ZXNudGlvbiBmdW4gJ0FkdmVudHVyZXIuYXR0YWNrKGRhbWFnZTogSW50KTpTdHJpbmcnIHRoYXQgcHJpbnRzIHRoZSB2YWx1ZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXJcblxuICAgIC8vIFRPRE8gcHJpbnQgdGhlIHJlc3VsdHMgb2YgdGhpcyBuZXcgZXh0ZW5zaW9uIGZ1bmN0aW9uIHdpdGggcGFyYW1ldGVyIHZhbHVlcyA1MCwgMTAgYW5kIDIwMFxuXG4gICAgLy8gVE9ETyB3aGF0IGlzIHRoZSByZXN1bHQgb2YgcHJpbnRTdGF0dXMgb24gYSBCYXJiYXJpYW4gPyB3aGF0IGRvIHlvdSBjb25jbHVkZSA/XG4gICAgdmFsIGJhcmJhcmlhbiA9IEJhcmJhcmlhbig1MDApXG4gICAgcHJpbnRTdGF0dXMoYmFyYmFyaWFuKVxuXG4gICAgLy8gVE9ETyBjcmVhdGUgYW4gZXh0ZW5zaW9uIHByb3BlcnR5IFwibG9zdEhwXCIgdGhhdCBjb3JyZXNwb25kcyB0byBcIm1heEhwIC0gaHBcIiAuXG4gICAgLy8gIEJlY2F1c2Ugd2UgY2Fubm90IGFkZCBmaWVsZHMgdG8gYW4gZXhpc3RpbmcgY2xhc3MsIGV4dGVuc2lvbiBwcm9wZXJ0aWVzIGNhbiBiZSBkZWZpbmVkIHVzaW5nIGdldHRlcnMgYW5kIHNldHRlcnMuXG5cbiAgICAvKiAgdW5jb21tZW50IGFmdGVyIGRlZmluaW5nIHRoZSBwcm9wZXJ0eSAgXG4gICAgdmFsIGIgPSBCYXJiYXJpYW4oMzAwKVxuICAgIGIuaHAgLT0gMTAwXG4gICAgcHJpbnRsbihiLmxvc3RIcCkgLy8gMTAwXG4gICAgYi5sb3N0SHAgPSAyNTBcbiAgICBwcmludGxuKGIuaHApIC8vIDUwXG4gICAgKi9cbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},Wl={class:"custom-container details"},yl=l("summary",null,"Solution(s)",-1),Al={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gRXh0ZW5zaW9ucyBhbGxvd3MgdG8gYWRkIGZ1bmN0aW9ucyBvciBwcm9wZXJ0aWVzIHRvIGFuIGV4aXN0aW5nIGNsYXNzIChldmVuIGNsYXNzZXMgaW1wb3J0ZWQgZnJvbSBvdGhlciBsaWJyYXJpZXMpXG4vLyBodHRwczovL2tvdGxpbmxhbmcub3JnL2RvY3MvcmVmZXJlbmNlL2V4dGVuc2lvbnMuaHRtbFxuXG5vcGVuIGNsYXNzIEFkdmVudHVyZXIodmFyIGhwOiBJbnQpe1xuICAgIHZhbCBtYXhIcCA9IGhwXG4gICAgZnVuIGF0dGFjaygpOlN0cmluZyA9IFwiSSBkZWFsdCAxMCBkYW1hZ2VcIlxufVxuLy8gRXh0ZW5zaW9uIGZ1bmN0aW9uIHN5bnRheDogZnVuIGNsYXNzTmFtZS5mdW5jdGlvbk5hbWUocHJhbXMpIDogcmV0dXJuVHlwZVxuZnVuIEFkdmVudHVyZXIucmVwb3J0U3RhdHVzKCk6U3RyaW5nIHtcbiAgICByZXR1cm4gXCJJIGhhdmUgJHtocH0gSFBcIlxufVxuXG5mdW4gQWR2ZW50dXJlci5hdHRhY2soKTpTdHJpbmcgPSBcIkkgZGVhbHQgMTAwMCBkYW1hZ2VcIlxuXG5jbGFzcyBCYXJiYXJpYW4oaHA6IEludCk6IEFkdmVudHVyZXIoaHApXG5cbmZ1biBCYXJiYXJpYW4ucmVwb3J0U3RhdHVzKCk6U3RyaW5nID0gXCJJIGFtIGEgYmFyYmFyaWFuIGFuZCBJIGhhdmUgJHtocH0gSFBcIlxuXG5mdW4gcHJpbnRTdGF0dXMoYWR2ZW50dXJlcjogQWR2ZW50dXJlcikge1xuICAgIHByaW50bG4oYWR2ZW50dXJlci5yZXBvcnRTdGF0dXMoKSlcbn1cblxuZnVuIG1haW4oKXtcbiAgICAvLyBUT0RPIGNyZWF0ZSBhbiBhZHZlbnR1cmVyIHdpdGggMjAwaHAgYW5kIHByaW50IHRoZSByZXN1bHQgb2YgdGhlIHJlcG9ydFN0YXR1cyBleHRlbnNpb24gbWV0aG9kXG5cbiAgICAvLyBUT0RPIHByaW50IHRoZSByZXN1bHQgb2YgdGhlIGF0dGFjayBmdW5jdGlvbi4gV2hpY2ggdmVyc2lvbiBpcyByZXRhaW5lZCAobWVtYmVyIGZ1biBvciBleHRlbnNpb24gZnVuID8pXG5cbiAgICAvLyBUT0RPIGRlZmluZSB0aGUgZXh0ZXNudGlvbiBmdW4gJ0FkdmVudHVyZXIuYXR0YWNrKGRhbWFnZTogSW50KTpTdHJpbmcnIHRoYXQgcHJpbnRzIHRoZSB2YWx1ZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXJcblxuICAgIC8vIFRPRE8gcHJpbnQgdGhlIHJlc3VsdHMgb2YgdGhpcyBuZXcgZXh0ZW5zaW9uIGZ1bmN0aW9uIHdpdGggcGFyYW1ldGVyIHZhbHVlcyA1MCwgMTAgYW5kIDIwMFxuXG4gICAgLy8gVE9ETyB3aGF0IGlzIHRoZSByZXN1bHQgb2YgcHJpbnRTdGF0dXMgb24gYSBCYXJiYXJpYW4gPyB3aGF0IGRvIHlvdSBjb25jbHVkZSA/XG4gICAgdmFsIGJhcmJhcmlhbiA9IEJhcmJhcmlhbig1MDApXG4gICAgcHJpbnRTdGF0dXMoYmFyYmFyaWFuKVxuXG4gICAgLy8gVE9ETyBjcmVhdGUgYW4gZXh0ZW5zaW9uIHByb3BlcnR5IFwibG9zdEhwXCIgdGhhdCBjb3JyZXNwb25kcyB0byBcIm1heEhwIC0gaHBcIiAuXG4gICAgLy8gIEJlY2F1c2Ugd2UgY2Fubm90IGFkZCBmaWVsZHMgdG8gYW4gZXhpc3RpbmcgY2xhc3MsIGV4dGVuc2lvbiBwcm9wZXJ0aWVzIGNhbiBiZSBkZWZpbmVkIHVzaW5nIGdldHRlcnMgYW5kIHNldHRlcnMuXG4gICAgdmFyIEJhcmJhcmlhbi5sb3N0SHA6SW50XG4gICAgICAgIGdldCgpID0gbWF4SHAgLSBocFxuICAgICAgICBzZXQgKHZhbHVlKSB7IGhwID0gbWF4SHAgLSB2YWx1ZX1cblxuICAgIHZhbCBiID0gQmFyYmFyaWFuKDMwMClcbiAgICBiLmhwIC09IDEwMFxuICAgIHByaW50bG4oYi5sb3N0SHApIC8vIDEwMFxuICAgIGIubG9zdEhwID0gMjUwXG4gICAgcHJpbnRsbihiLmhwKSAvLyA1MFxuXG59In0=",target:"_blank",rel:"noopener noreferrer"},Vl=l("h4",{id:"exercice-4",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercice-4","aria-hidden":"true"},"#"),e(" Exercice 4")],-1),Yl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGVcbmltcG9ydCBqYXZhLnRpbWUuUGVyaW9kXG5cbi8vIC8vIFE6IGNyZWF0ZSBhbiBlbnVtZXJhdGlvbiBjbGFzcyBjYWxsZWQgXCJDYXRDb2xvclwiIHRoYXQgaGFzIHRoZXNlIHZhbHVlczogV0hJVEUsIENSRUFNLCBCTEFDSywgUkVELGFuZCBCUk9XTlxuXG4vLyBROiBjcmVhdGUgYSBkYXRhY2xhc3MgXCJDYXRcIiB0aGF0IGhhcyAzIGltbXV0YWJsZSBwcm9wZXJ0aWVzOiBuYW1lOiBTdHJpbmcsIGJpcnRoRGF0ZTogTG9jYWxEYXRlIGFuZCBjb2xvcjogQ2F0Q29sb3JcblxuZnVuIG1haW4oKXtcbiAgICAvLyBROiBhZGQgYSBjYXQgd2l0aCBjcmVhbSBjb2xvciBhbmQgYW5vdGhlciBvbmUgd2l0aCBibGFjayBjb2xvclxuICAgIHZhbCBjYXRzID0gbGlzdE9mKFxuICAgICAgQ2F0KFwiQmVsbGFcIiwgTG9jYWxEYXRlLnBhcnNlKFwiMjAyMC0xMC0xMlwiKSwgQ2F0Q29sb3IuV0hJVEUpLFxuICAgICAgQ2F0KFwiU2ltYmFcIiwgTG9jYWxEYXRlLnBhcnNlKFwiMjAxMC0wMS0zMVwiKSwgQ2F0Q29sb3IuQlJPV04pLFxuICAgICAgQ2F0KFwiS2l0dHlcIiwgTG9jYWxEYXRlLnBhcnNlKFwiMjAxNy0wNS0wNlwiKSwgQ2F0Q29sb3IuV0hJVEUpXG4gICAgKVxuICAgIFxuICAgIC8vIFBsZWFzZSB1c2UgYSBkZWNsYXJhdGl2ZSBzdHlsZSBpbiB0aGlzIGV4ZXJjaXNlXG5cbiAgICAvLyBROiBwcmludCB0aGUgbmFtZXMgb2Ygd2hpdGUgY2F0c1xuXG4gICAgLy8gUTogcHJpbnQgdGhlIG5hbWUgYW5kIGFnZSAoYW5kIGp1c3QgdGhlIG5hbWUgYW5kIGFnZSkgb2YgY2F0cyB0aGF0IGFyZSBhdCBsZWFzdCA1IHllYXJzIG9sZC5cbiAgICAvLyBIaW50OiBpbXBvcnQgamF2YS50aW1lLlBlcmlvZCBhbmQgdXNlIFBhaXIgY2xhc3NcbiAgICAgICBcbiAgICBcbiAgICAvLyBMZXQncyBzdXBwb3NlIHRoYXQgd2UgaGF2ZSBhbiBhcnJheSBvZiBvd25lcnMgd2hlcmUgZWFjaCBlbGVtZW50IGlzIHRoZSBvd25lciBvZiB0aGUgY29ycmVzcG9uZGluZyBpbmRleCBpbiB0aGUgY2F0cyB0YWJsZS4gRm9yIGV4YW1wbGUgQW5kYW5vciBpcyB0aGUgb3duZXIgb2YgS2l0dHlcbiAgICB2YWwgb3duZXJzID0gbGlzdE9mKFwiSXJ5ZW5cIiwgXCJJcnllblwiLCBcIkFuZGFub3JcIiwgXCJBbmRhbm9yXCIsIFwiR2FuZGFsZlwiKVxuICAgIFxuICAgIC8vIFE6IHVzaW5nIHRoZSB6aXAgbWV0aG9kLCBwcmludCB0aGUgbmFtZSBvZiBjYXRzIG93bmVkIGJ5IFwiSXJ5ZW5cIlxufSJ9",target:"_blank",rel:"noopener noreferrer"},Jl={class:"custom-container details"},Rl=l("summary",null,"Solutions(s)",-1),xl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGphdmEudGltZS5Mb2NhbERhdGVcbmltcG9ydCBqYXZhLnRpbWUuUGVyaW9kXG5cbi8vIC8vIFE6IGNyZWF0ZSBhbiBlbnVtZXJhdGlvbiBjbGFzcyBjYWxsZWQgXCJDYXRDb2xvclwiIHRoYXQgaGFzIHRoZXNlIHZhbHVlczogV0hJVEUsIENSRUFNLCBCTEFDSywgUkVELGFuZCBCUk9XTlxuZW51bSBjbGFzcyBDYXRDb2xvciB7XG4gICAgV0hJVEUsIENSRUFNLCBCTEFDSywgUkVELCBCUk9XTlxufVxuXG4vLyBROiBjcmVhdGUgYSBkYXRhY2xhc3MgXCJDYXRcIiB0aGF0IGhhcyAzIGltbXV0YWJsZSBwcm9wZXJ0aWVzOiBuYW1lOiBTdHJpbmcsIGJpcnRoRGF0ZTogTG9jYWxEYXRlIGFuZCBjb2xvcjogQ2F0Q29sb3Jcbi8vIEhpbnQ6IGltcG9ydCBqYXZhLnRpbWUuTG9jYWxEYXRlXG5kYXRhIGNsYXNzIENhdCh2YWwgbmFtZTogU3RyaW5nLCB2YWwgYmlydGhEYXRlOiBMb2NhbERhdGUsIHZhbCBjb2xvcjogQ2F0Q29sb3IpXG5cbmZ1biBtYWluKCl7XG4gICAgLy8gUTogYWRkIGEgY2F0IHdpdGggY3JlYW0gY29sb3IgYW5kIGFub3RoZXIgb25lIHdpdGggYmxhY2sgY29sb3JcbiAgICB2YWwgY2F0cyA9IGxpc3RPZihcbiAgICAgIENhdChcIkJlbGxhXCIsIExvY2FsRGF0ZS5wYXJzZShcIjIwMjAtMTAtMTJcIiksIENhdENvbG9yLldISVRFKSxcbiAgICAgIENhdChcIlNpbWJhXCIsIExvY2FsRGF0ZS5wYXJzZShcIjIwMTAtMDEtMzFcIiksIENhdENvbG9yLkJST1dOKSxcbiAgICAgIENhdChcIktpdHR5XCIsIExvY2FsRGF0ZS5wYXJzZShcIjIwMTctMDUtMDZcIiksIENhdENvbG9yLldISVRFKSxcbiAgICAgIENhdChcIk1pYW91XCIsIExvY2FsRGF0ZS5wYXJzZShcIjIwMTEtMDItMjVcIiksIENhdENvbG9yLkNSRUFNKSxcbiAgICAgIENhdChcIk55YW5cIiwgTG9jYWxEYXRlLnBhcnNlKFwiMjAxNC0wNy0xMVwiKSwgQ2F0Q29sb3IuQkxBQ0spXG4gICAgKVxuICAgIFxuICAgIC8vIFBsZWFzZSB1c2UgYSBkZWNsYXJhdGl2ZSBzdHlsZSBpbiB0aGlzIGV4ZXJjaXNlXG5cbiAgICAvLyBROiBwcmludCB0aGUgbmFtZXMgb2Ygd2hpdGUgY2F0c1xuICAgIHZhbCB3aGl0ZUNhdE5hbWVzID0gY2F0cy5maWx0ZXIgeyBpdC5jb2xvciA9PSBDYXRDb2xvci5XSElURSB9Lm1hcCB7IGl0Lm5hbWUgfVxuICAgIHByaW50bG4oXCJXaGl0ZSBjYXRzOiAke3doaXRlQ2F0TmFtZXMuam9pblRvU3RyaW5nKFwiLCBcIil9XCIpXG5cbiAgICAvLyBROiBwcmludCB0aGUgbmFtZSBhbmQgYWdlIChhbmQganVzdCB0aGUgbmFtZSBhbmQgYWdlKSBvZiBjYXRzIHRoYXQgYXJlIGF0IGxlYXN0IDUgeWVhcnMgb2xkLlxuICAgIC8vIEhpbnQ6IGltcG9ydCBqYXZhLnRpbWUuUGVyaW9kIGFuZCB1c2UgUGFpciBjbGFzc1xuICAgIHZhbCBNb3JlVGhhbjV5b0NhdHMgPSBjYXRzLmZpbHRlciB7IFBlcmlvZC5iZXR3ZWVuKGl0LmJpcnRoRGF0ZSwgTG9jYWxEYXRlLm5vdygpKS5nZXRZZWFycygpID49IDUgfVxuICAgIFx0Lm1hcCB7IFBhaXIoaXQubmFtZSwgUGVyaW9kLmJldHdlZW4oaXQuYmlydGhEYXRlLCBMb2NhbERhdGUubm93KCkpLmdldFllYXJzKCkpIH1cbiAgICAgICAgLm1hcCB7IFwiKG5hbWU6ICR7aXQuZmlyc3R9IC0gYWdlOiAke2l0LnNlY29uZH0pXCIgfVxuICAgIHByaW50bG4oXCJXaGl0ZSBjYXRzOiAke01vcmVUaGFuNXlvQ2F0cy5qb2luVG9TdHJpbmcoXCIsIFwiKX1cIilcbiAgICAgICAgXG4gICAgXG4gICAgLy8gTGV0J3Mgc3VwcG9zZSB0aGF0IHdlIGhhdmUgYW4gYXJyYXkgb2Ygb3duZXJzIHdoZXJlIGVhY2ggZWxlbWVudCBpcyB0aGUgb3duZXIgb2YgdGhlIGNvcnJlc3BvbmRpbmcgaW5kZXggaW4gdGhlIGNhdHMgdGFibGUuIEZvciBleGFtcGxlIEFuZGFub3IgaXMgdGhlIG93bmVyIG9mIEtpdHR5XG4gICAgdmFsIG93bmVycyA9IGxpc3RPZihcIklyeWVuXCIsIFwiSXJ5ZW5cIiwgXCJBbmRhbm9yXCIsIFwiQW5kYW5vclwiLCBcIkdhbmRhbGZcIilcbiAgICBcbiAgICAvLyBROiB1c2luZyB0aGUgemlwIG1ldGhvZCwgcHJpbnQgdGhlIG5hbWUgb2YgY2F0cyBvd25lZCBieSBcIklyeWVuXCJcblx0dmFsIGlyeWVuQ2F0cyA9IChvd25lcnMgemlwIGNhdHMpLmZpbHRlciB7IGl0LmZpcnN0ID09IFwiSXJ5ZW5cIn0ubWFwIHsgaXQuc2Vjb25kLm5hbWUgfVxuICAgIHByaW50bG4oXCJJcnllbidzIGNhdHMgYXJlOiAke2lyeWVuQ2F0cy5qb2luVG9TdHJpbmcoXCIsIFwiKX1cIilcbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},vl=l("h4",{id:"exercice-5",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercice-5","aria-hidden":"true"},"#"),e(" Exercice 5")],-1),Fl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gVGhlICd0aGlzJyBrZXl3b3JkIGluc2lkZSBhbiBleHRlbnNpb24gY29ycmVzcG9uZHMgdG8gdGhlIHJlY2VpdmVyIG9iamVjdCAodGhlIG9iamVjdCB0aGF0IGNhbGxzIHRoZSBleHRlbnNpb24pXG4vLyBUT0RPIGNlZWF0ZSBhbiBleHRlbnNpb24gZnVuY3Rpb24gJ21ha2VRdWVzdGlvbicgb2YgdGhlIFN0cmluZyBjbGFzcyB0aGF0IHJldHVybiBhIG5ldyBTdHJpbmcgdGhhdCBjb250YWlucyB0aGUgb3JpZ2luYWwgU3RyaW5nICsgJz8nIGF0IHRoZSBlbmRcblxuLy8gcHJpbnRsbihcIkhvdyBkbyB5b3UgZG9cIi5tYWtlUXVlc3Rpb24oKSkgLy8gc2hvdWxkIHByaW50IFwiSG93IGRvIHlvdSBkbyA/XCJcblxuY2xhc3MgTWFnZShocDogSW50KTogRXh0ZW5zaW9uczAxLkFkdmVudHVyZXIoaHApe1xuICAgIGNvbXBhbmlvbiBvYmplY3Qge1xuICAgICAgICB2YXIgY291bnQgPSAwXG4gICAgfVxuICAgIGluaXQge1xuICAgICAgICBNYWdlLmNvdW50ICs9IDFcbiAgICB9XG59XG4vLyBUT0RPIGRlZmluZSBhbiBleHRlbnNpb24gZnVuY3Rpb24gb24gdGhlIGNvbXBhbmlvbiBvYmplY3QgdGhhdCBwcmludHMgdGhlIG51bWJlciBvZiBjcmVhdGVkIG1hZ2VzLlxuLy8gaGludDogXCJ0aGlzXCIgYWxsb3dzIHRvIHJlZmVyZW5jZSB0aGUgY29tcGFuaW9uIG9iamVjdFxuXG52YWwgbWFnZSA9IE1hZ2UoMTAwKVxudmFsIG1hZ2UyID0gTWFnZSgyMDApXG5wcmludChcIk1hZ2UgY291bnQ6IFwiKVxuLy8gTWFnZS5wcmludENvdW50KCkgLy8gMlxuXG4vLyBUT0RPIGNyYXRlIGFuIGV4dGVuc2lvbiBmdW5jdGlvbiBcImV2ZW5Db3VudCgpOkludFwiIG9uIExpc3Q8SW50PiB0aGF0IHJldHVybiB0aGUgbnVtYmVyIG9mIGV2ZW4gdmFsdWVzXG5cbi8vcHJpbnRsbihsaXN0T2YoMSwgMiwgMywgNCwgNSkuZXZlbkNvdW50KCkpIC8vIHByaW50cyAyXG5cbi8vIFRPRE8gY3JlYXRlIGEgZ2VuZXJpYyBleHRlbnNpb24gZnVuY3Rpb24gXCJjb25jYXRlbmF0ZSgpOlN0cmluZ1wiIG9uIExpc3Q8VD4gdGhhdCBjb25jYXRlbmF0ZXMgdGhlIHRvU3RyaW5nIHZhbHVlIG9mIGFsbCBvZiB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3RcblxuLy8gcHJpbnRsbihsaXN0T2YoXCJIZWxsbyBcIiwgXCJXb3JsZFwiLCBcIkxpbmVcIikuY29uY2F0ZW5hdGUoKSkgLy8gc2hvdWxkIHByaW50IFwiSGVsbG8gV29ybGRMaW5lXCJcbi8vIHByaW50bG4obGlzdE9mKDEwMCwgMjAwLCAzMDApLmNvbmNhdGVuYXRlKCkpIC8vIHNob3VsZCBwcmludCBcIjEwMDIwMDMwMFwiXG5cbi8vIFRPRE8gY3JlYXRlIGEgZ2VuZXJpYyBleHRlbnNpb24gZnVuY3Rpb24gXCJMaXN0Py5tYWtlTm90TnVsbCgpOkxpc3QnICB0aGF0IHJldHVybnMgYW4gZW1wdHkgbGlzdCBpZiB0aGUgcmVjZWl2ZXIgaXMgbnVsbCwgb3IgdGhlIG9yaWdpbmFsIGxpc3Qgb3JoZXJ3aXNlXG5cbi8vIHByaW50bG4obGlzdE9mKDEsIDIsIDMpLm1ha2VOb3ROdWxsKCkpIC8vIHNob3VsZCBwcmludCBbMSwgMiwgM11cbi8vIHZhbCBsOiBMaXN0PEludD4/ID0gbnVsbFxuLy8gcHJpbnRsbihsLm1ha2VOb3ROdWxsKCkpIC8vIHNob3VsZCBwcmludCBbXSJ9",target:"_blank",rel:"noopener noreferrer"},Hl={class:"custom-container details"},wl=l("summary",null,"Solution(s)",-1),Nl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gVGhlICd0aGlzJyBrZXl3b3JkIGluc2lkZSBhbiBleHRlbnNpb24gY29ycmVzcG9uZHMgdG8gdGhlIHJlY2VpdmVyIG9iamVjdCAodGhlIG9iamVjdCB0aGF0IGNhbGxzIHRoZSBleHRlbnNpb24pXG4vLyBUT0RPIGNlZWF0ZSBhbiBleHRlbnNpb24gZnVuY3Rpb24gJ21ha2VRdWVzdGlvbicgb2YgdGhlIFN0cmluZyBjbGFzcyB0aGF0IHJldHVybiBhIG5ldyBTdHJpbmcgdGhhdCBjb250YWlucyB0aGUgb3JpZ2luYWwgU3RyaW5nICsgJz8nIGF0IHRoZSBlbmRcblxuLy8gcHJpbnRsbihcIkhvdyBkbyB5b3UgZG9cIi5tYWtlUXVlc3Rpb24oKSkgLy8gc2hvdWxkIHByaW50IFwiSG93IGRvIHlvdSBkbyA/XCJcblxuLy8gVE9ETyBkZWZpbmUgYW4gZXh0ZW5zaW9uIGZ1bmN0aW9uIG9uIHRoZSBjb21wYW5pb24gb2JqZWN0IHRoYXQgcHJpbnRzIHRoZSBudW1iZXIgb2YgY3JlYXRlZCBtYWdlcy5cbmNsYXNzIE1hZ2UoaHA6IEludCk6IEV4dGVuc2lvbnMwMS5BZHZlbnR1cmVyKGhwKXtcbiAgICBjb21wYW5pb24gb2JqZWN0IHtcbiAgICAgICAgdmFyIGNvdW50ID0gMFxuICAgIH1cbiAgICBpbml0IHtcbiAgICAgICAgTWFnZS5jb3VudCArPSAxXG4gICAgfVxufVxuLy8gaGludDogXCJ0aGlzXCIgYWxsb3dzIHRvIHJlZmVyZW5jZSB0aGUgY29tcGFuaW9uIG9iamVjdFxuZnVuIE1hZ2UuQ29tcGFuaW9uLnByaW50Q291bnQoKSA9IHByaW50bG4odGhpcy5jb3VudClcblxudmFsIG1hZ2UgPSBNYWdlKDEwMClcbnZhbCBtYWdlMiA9IE1hZ2UoMjAwKVxucHJpbnQoXCJNYWdlIGNvdW50OiBcIilcbk1hZ2UucHJpbnRDb3VudCgpIC8vIDJcblxuLy8gVE9ETyBjcmF0ZSBhbiBleHRlbnNpb24gZnVuY3Rpb24gXCJldmVuQ291bnQoKTpJbnRcIiBvbiBMaXN0PEludD4gdGhhdCByZXR1cm4gdGhlIG51bWJlciBvZiBldmVuIHZhbHVlc1xuXG4vL3ByaW50bG4obGlzdE9mKDEsIDIsIDMsIDQsIDUpLmV2ZW5Db3VudCgpKSAvLyBwcmludHMgMlxuXG4vLyBUT0RPIGNyZWF0ZSBhIGdlbmVyaWMgZXh0ZW5zaW9uIGZ1bmN0aW9uIFwiY29uY2F0ZW5hdGUoKTpTdHJpbmdcIiBvbiBMaXN0PFQ+IHRoYXQgY29uY2F0ZW5hdGVzIHRoZSB0b1N0cmluZyB2YWx1ZSBvZiBhbGwgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSBsaXN0XG5mdW4gPFQ+IExpc3Q8VD4uY29uY2F0ZW5hdGUoKTogU3RyaW5nID0gdGhpcy5tYXAgeyB2IC0+IHYudG9TdHJpbmcoKSB9LnJlZHVjZSB7IGFjYywgcyAtPiBhY2MgKyBzIH1cbnByaW50bG4obGlzdE9mKFwiSGVsbG8gXCIsIFwiV29ybGRcIiwgXCJMaW5lXCIpLmNvbmNhdGVuYXRlKCkpIC8vIHNob3VsZCBwcmludCBcIkhlbGxvIFdvcmxkTGluZVwiXG5wcmludGxuKGxpc3RPZigxMDAsIDIwMCwgMzAwKS5jb25jYXRlbmF0ZSgpKSAvLyBzaG91bGQgcHJpbnQgXCIxMDAyMDAzMDBcIlxuXG4vLyBUT0RPIGNyZWF0ZSBhIGdlbmVyaWMgZXh0ZW5zaW9uIGZ1bmN0aW9uIFwiTGlzdD8ubWFrZU5vdE51bGwoKTpMaXN0JyAgdGhhdCByZXR1cm4gYW4gZW1wdHkgbGlzdCBpZiB0aGUgcmVjZWl2ZXIgaXMgbnVsbCwgb3IgdGhlIG9yaWdpbmFsIGxpc3Qgb3JoZXJ3aXNlXG5mdW4gPFQ+IExpc3Q8VD4/Lm1ha2VOb3ROdWxsKCk6IExpc3Q8VD57XG4gICAgcmV0dXJuIGxpc3RPZjxUPigpXG59XG5wcmludGxuKGxpc3RPZigxLCAyLCAzKS5tYWtlTm90TnVsbCgpKSAvLyBzaG91bGQgcHJpbnQgWzEsIDIsIDNdXG52YWwgbDogTGlzdDxJbnQ+PyA9IG51bGxcbnByaW50bG4obC5tYWtlTm90TnVsbCgpKSAvLyBzaG91bGQgcHJpbnQgW10ifQ==",target:"_blank",rel:"noopener noreferrer"},Sl=l("h4",{id:"exercice-6",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercice-6","aria-hidden":"true"},"#"),e(" Exercice 6")],-1),kl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gVE9ETyB1c2luZyB0aGUgb2JqZWN0IGRlY2xhcmF0aW9uIHN5bmN0YXgsIGNyZWF0ZSBhIHNpbmdsZXRvbiBEcmlua0Rpc3BlbnNlciB0aGF0IGhhcyB0aGVzZSBtZXRob2RzOiBwdXREcmluayhEcmluayksIExpc3Q8RHJpbms+IGFsbEF2YWlsYWJsZURyaW5rcygpIGFuZCBwaWNrTGFzdERyaW5rKCk6RHJpbmtcbi8vICBTeW50YXg6IG9iamVjdCBTaW5nbGV0b25OYW1lIHsgLi4uIH0gfVxuXG4vLyBUT0RPIHVuY29tbWVudCB0byB0ZXN0IHlvdSBjb2RlXG4vL0RyaW5rRGlzcGVuc2VyLnB1dERyaW5rKE9iamVjdEV4cHJlc3Npb25zMDEuRHJpbmsoMTAwKSlcbi8vRHJpbmtEaXNwZW5zZXIucHV0RHJpbmsoT2JqZWN0RXhwcmVzc2lvbnMwMS5Ecmluayg1MCkpXG4vL0RyaW5rRGlzcGVuc2VyLnB1dERyaW5rKE9iamVjdEV4cHJlc3Npb25zMDEuRHJpbmsoNzApKVxuLy9wcmludGxuKERyaW5rRGlzcGVuc2VyLmFsbEF2YWlsYWJsZURyaW5rcygpLnNpemUpIC8vIDNcbi8vRHJpbmtEaXNwZW5zZXIucHV0RHJpbmsoT2JqZWN0RXhwcmVzc2lvbnMwMS5waWNrTGFzdERyaW5rKCkpXG4vL3ByaW50bG4oRHJpbmtEaXNwZW5zZXIuYWxsQXZhaWxhYmxlRHJpbmtzKCkuc2l6ZSkgLy8gMlxuXG4vLyBUT0RPIGNyZWF0ZSBhIGNsYXNzIG5hbWVkIERyaW5rTWFrZXIuIFdlIHdhbnQgdG8gaGF2ZSBhIHN0YXRpYyBtZXRob2QgXCJjcmVhdGVEcmluaygpOiBPYmplY3RFeHByZXNzaW9uczAxLkRyaW5rXCIgdGhhdCBjcmVhdGVzIGEgbmV3IERyaW5rLlxuLy8gICBBbiBvYmplY3QgZGVjbGFyYXRpb24gaW5zaWRlIGEgY2xhc3MgY2FuIGJlIG1hcmtlZCBhcyBjb21wYW5pb25cbi8vICAgU3ludGF4OlxuLypcbmNsYXNzIENsYXNzTmFtZSB7XG4gICAgY29tcGFuaW9uIG9iamVjdCAob3B0aW9ubmFsIG5hbWUpIHtcbiAgICAgICAgLi4uXG4gICAgfVxufVxuKi9cblxuXG4vLyBUT0RPIHVuY29tbWVudCB0byB0ZXN0XG4vL3ZhbCBkcmluayA9IERyaW5rTWFrZXIuY3JlYXRlRHJpbmsoKVxuLy92YWwgZHJpbmsyID0gRHJpbmtNYWtlci5Db21wYW5pb24uY3JlYXRlRHJpbmsoKVxuXG4vLyBUT0RPIHdoYXQgaXMgdGhlIHR5cGUgb2YgY29tcGFuaW9uT2JqZWN0XG4vL3ZhbCBjb21wYW5pb25PYmplY3QgPSBEcmlua01ha2VyXG4vL2NvbXBhbmlvbk9iamVjdC5jcmVhdGVEcmluaygpXG5cbi8vIFRPRE8gbWFrZSB0aGUgZWFybGllciBjb21wYW5pb24gb2JqZWN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIENvdW50ZXIgaW50ZXJmYWNlIGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIGNyZWF0ZWQgRHJpbmtzXG5pbnRlcmZhY2UgQ291bnRlcntcbiAgICB2YXIgY291bnQ6IEludFxufVxuLy8gVE9ETyB1bmNvbW1lbnQgdG8gdGVzdFxuLy9wcmludGxuKERyaW5rTWFrZXIuY291bnQpIC8vIDMifQ==",target:"_blank",rel:"noopener noreferrer"},Ll={class:"custom-container details"},zl=l("summary",null,"solution(s)",-1),El={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gVE9ETyB1c2luZyB0aGUgb2JqZWN0IGRlY2xhcmF0aW9uIHN5bmN0YXgsIGNyZWF0ZSBhIHNpbmdsZXRvbiBEcmlua0Rpc3BlbnNlciB0aGF0IGhhcyB0aGVzZSBtZXRob2RzOiBwdXREcmluayhEcmluayksIExpc3Q8RHJpbms+IGFsbEF2YWlsYWJsZURyaW5rcygpIGFuZCBwaWNrTGFzdERyaW5rKCk6RHJpbmtcbi8vICBTeW50YXg6IG9iamVjdCBTaW5nbGV0b25OYW1lIHsgLi4uIH0gfVxuXG4vLyBUT0RPIHVuY29tbWVudCB0byB0ZXN0IHlvdSBjb2RlXG4vL0RyaW5rRGlzcGVuc2VyLnB1dERyaW5rKE9iamVjdEV4cHJlc3Npb25zMDEuRHJpbmsoMTAwKSlcbi8vRHJpbmtEaXNwZW5zZXIucHV0RHJpbmsoT2JqZWN0RXhwcmVzc2lvbnMwMS5Ecmluayg1MCkpXG4vL0RyaW5rRGlzcGVuc2VyLnB1dERyaW5rKE9iamVjdEV4cHJlc3Npb25zMDEuRHJpbmsoNzApKVxuLy9wcmludGxuKERyaW5rRGlzcGVuc2VyLmFsbEF2YWlsYWJsZURyaW5rcygpLnNpemUpIC8vIDNcbi8vRHJpbmtEaXNwZW5zZXIucHV0RHJpbmsoT2JqZWN0RXhwcmVzc2lvbnMwMS5waWNrTGFzdERyaW5rKCkpXG4vL3ByaW50bG4oRHJpbmtEaXNwZW5zZXIuYWxsQXZhaWxhYmxlRHJpbmtzKCkuc2l6ZSkgLy8gMlxuXG4vLyBUT0RPIGNyZWF0ZSBhIGNsYXNzIG5hbWVkIERyaW5rTWFrZXIuIFdlIHdhbnQgdG8gaGF2ZSBhIHN0YXRpYyBtZXRob2QgXCJjcmVhdGVEcmluaygpOiBPYmplY3RFeHByZXNzaW9uczAxLkRyaW5rXCIgdGhhdCBjcmVhdGVzIGEgbmV3IERyaW5rLlxuLy8gICBBbiBvYmplY3QgZGVjbGFyYXRpb24gaW5zaWRlIGEgY2xhc3MgY2FuIGJlIG1hcmtlZCBhcyBjb21wYW5pb25cbi8vICAgU3ludGF4OlxuLypcbmNsYXNzIENsYXNzTmFtZSB7XG4gICAgY29tcGFuaW9uIG9iamVjdCAob3B0aW9ubmFsIG5hbWUpIHtcbiAgICAgICAgLi4uXG4gICAgfVxufVxuKi9cbmNsYXNzIERyaW5rTWFrZXIge1xuICAgIGNvbXBhbmlvbiBvYmplY3Q6IENvdW50ZXJ7XG4gICAgICAgIHByaXZhdGUgdmFyIG5iQ3JlYXRlZCA9IDBcbiAgICAgICAgb3ZlcnJpZGUgdmFyIGNvdW50OiBJbnRcbiAgICAgICAgICAgIGdldCgpID0gbmJDcmVhdGVkXG4gICAgICAgICAgICBzZXQodmFsdWUpIHsgbmJDcmVhdGVkID0gdmFsdWV9XG5cbiAgICAgICAgZnVuIGNyZWF0ZURyaW5rKCkgOiBPYmplY3RFeHByZXNzaW9uczAxLkRyaW5re1xuICAgICAgICAgICAgY291bnQgKz0gMVxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdEV4cHJlc3Npb25zMDEuRHJpbmsoMTAwKVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUT0RPIHVuY29tbWVudCB0byB0ZXN0XG4vL3ZhbCBkcmluayA9IERyaW5rTWFrZXIuY3JlYXRlRHJpbmsoKVxuLy92YWwgZHJpbmsyID0gRHJpbmtNYWtlci5Db21wYW5pb24uY3JlYXRlRHJpbmsoKVxuXG4vLyBUT0RPIHdoYXQgaXMgdGhlIHR5cGUgb2YgY29tcGFuaW9uT2JqZWN0XG4vL3ZhbCBjb21wYW5pb25PYmplY3QgPSBEcmlua01ha2VyXG4vL2NvbXBhbmlvbk9iamVjdC5jcmVhdGVEcmluaygpXG5cbi8vIFRPRE8gbWFrZSB0aGUgZWFybGllciBjb21wYW5pb24gb2JqZWN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIENvdW50ZXIgaW50ZXJmYWNlIGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIGNyZWF0ZWQgRHJpbmtzXG5pbnRlcmZhY2UgQ291bnRlcntcbiAgICB2YXIgY291bnQ6IEludFxufVxuLy8gVE9ETyB1bmNvbW1lbnQgdG8gdGVzdFxuLy9wcmludGxuKERyaW5rTWFrZXIuY291bnQpIC8vIDMifQ==",target:"_blank",rel:"noopener noreferrer"},jl=l("h4",{id:"exercice-7",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#exercice-7","aria-hidden":"true"},"#"),e(" Exercice 7")],-1),Ul={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoicGFja2FnZSBjb20ud29ybGRsaW5lLmxlYXJuaW5nLmtvdGxpbi5vYmplY3RzQW5kQ29tcGFuaW9uc1xuXG4vLyBPYmplY3RzIGluIGtvdGxpbiBodHRwczovL2tvdGxpbmxhbmcub3JnL2RvY3MvcmVmZXJlbmNlL29iamVjdC1kZWNsYXJhdGlvbnMuaHRtbFxub3BlbiBjbGFzcyBEcmluayh2YXIgdm9sdW1lOiBJbnQpe1xuICAgIG9wZW4gZnVuIGNvbnN1bWUoY29uc3VtZWRWb2x1bWU6IEludCl7XG4gICAgICAgIHRoaXMudm9sdW1lIC09IGNvbnN1bWVkVm9sdW1lXG4gICAgfVxufVxuaW50ZXJmYWNlIENvbG9yZWR7XG4gICAgdmFsIGNvbG9yOlN0cmluZ1xufVxuXG4vLyBhbm9ueW1vdXMgb2JqZWN0cyBoYXZlIGFjY2VzcyB0byB2YXJpYWJsZXMgaW4gdGhlIGVuY2xvc2luZyBzY29wZVxuZnVuIGNyZWF0ZURyaW5rQW5kQ291bnQoKTogRHJpbmt7XG4gICAgdmFyIG5iQ29uc3VtcHRpb24gPSAwXG4gICAgcmV0dXJuIG9iamVjdCA6IERyaW5rKDEwMCl7XG4gICAgICAgIG92ZXJyaWRlIGZ1biBjb25zdW1lKGNvbnN1bWVkVm9sdW1lOiBJbnQpIHtcbiAgICAgICAgICAgIHN1cGVyLmNvbnN1bWUoY29uc3VtZWRWb2x1bWUpXG4gICAgICAgICAgICBuYkNvbnN1bXB0aW9uICs9IDFcbiAgICAgICAgICAgIHByaW50bG4obmJDb25zdW1wdGlvbilcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuIG1haW4oKSB7XG4gICAgLy8gQ3JlYXRpbmcgYW4gaW5zdGFuY2Ugb2YgRHJpbmtcbiAgICB2YWwgc21hbGxCb3R0bGUgPSBEcmluaygxMDApXG4gICAgLy8gVE9ETyBjcmVhdGUgYSBiaWdCb3R0bGUgd2l0aCBhIHZvbHVtZSBvZiA1MDBcblxuICAgIC8vIEtvdGxpbiBhbGxvd3MgdG8gcXVpY2tseSBjcmVhdGUgYW4gYW5vbnltb3VzIG9iamVjdCB0aGF0IGltcGxlbWVudHMgYW5kIGV4aXN0aW5nIGNsYXNzIGFuZC9vciBpbnRlcmZhY2VzXG4gICAgdmFsIHNtYWxsQ2FyYm9uYXRlZERyaW5rQm90dGxlID0gb2JqZWN0OiBEcmluaygxMDApIHtcbiAgICAgICAgb3ZlcnJpZGUgZnVuIGNvbnN1bWUoY29uc3VtZWRWb2x1bWU6IEludCkge1xuICAgICAgICAgICAgc3VwZXIuY29uc3VtZShjb25zdW1lZFZvbHVtZSlcbiAgICAgICAgICAgIHByaW50bG4oXCJQU0hISEhISFwiKVxuICAgICAgICB9XG4gICAgfVxuICAgIHNtYWxsQ2FyYm9uYXRlZERyaW5rQm90dGxlLmNvbnN1bWUoMjApXG5cbiAgICAvLyBUT0RPIGNyZWF0ZWQgYW4gYW5vbnltb3VzIG9iamVjdCBzbWFsbENhcmJvbmF0ZWRSZWREcmlua0JvdHRsZSB0aGF0IGlzIGJvdGggYSBEcmluayBhbmQgQ29sb3JlZFxuICAgIC8vIFRPRE8gQ2FuIGtvdGxpbiBpbmZlciB0aGUgdHlwZSBvZiBzbWFsbENhcmJvbmF0ZWRSZWREcmlua0JvdHRsZSA/XG5cbiAgICAvLyBUT0RPIG1ha2UgdGhpcyBjb2RlIHByaW50IFwiUmVkXCJcbiAgICAvLyBwcmludGxuKHNtYWxsQ2FyYm9uYXRlZFJlZERyaW5rQm90dGxlLmNvbG9yKVxuICAgIFxuICAgIFxuICAgIC8vIFRPRE8gd2hhdCBpcyBwcmludGVkIGFmdGVyIGNhbGxpbmcgdGhlIGZvbGxvd2luZyBjb2RlID9cbiAgICB2YWwgZHJpbmtUaGF0Q291bnRzID0gY3JlYXRlRHJpbmtBbmRDb3VudCgpXG4gICAgZHJpbmtUaGF0Q291bnRzLmNvbnN1bWUoMTApXG4gICAgZHJpbmtUaGF0Q291bnRzLmNvbnN1bWUoMjApXG5cbiAgICAvLyBUT0RPIFRyeSB0byBndWVzcyB3aGF0IGlzIHByaW50ZWQgaWYgd2UgZ2V0IGFub3RoZXIgZHJpbmsgZnJvbSAnY3JlYXRlRHJpbmtBbmRDb3VudCgpJyBhbmQgY2FsbCBjb25zdW1lID9cblxuICAgIFxuICAgIC8vIEtvdGxpbiBhbHNvIGFsbG93cyB0byBjcmVhdGUgYW5vbnltb3VzIG9iamVjdHMgd2l0aG91dCBzdXBlcnR5cGVzXG4gICAgZnVuIG1peChkcmlua1RvTWl4OiBEcmluayl7XG4gICAgXHR2YWwgbWl4dHVyZSA9IG9iamVjdCB7XG4gICAgICAgICAgICB2YWwgZHJpbmsgPSBkcmlua1RvTWl4XG4gICAgICAgICAgICB2YWwgaW5ncmVkaWVudCA9IFwiU2FsdFwiXG4gICAgXHR9XG4gICAgICAgIC8vIFRPRE8gdHJ5IHRvIHByaW50IHRoZSByZXN1bHQgb2YgbWl4dHVyZS5pbmdyZWRpZW50ICsgbWl4dHVyZS5kcmlua1RvTWl4XG4gICAgICAgIHByaW50bG4oKVxuICAgIH1cbiAgICBtaXgoc21hbGxCb3R0bGUpXG4gICAgXG4gICAgXG4gICAgLy8gTGV0J3MgdHJ5IHRvIHJldHVybiBhbiBhZGhvYyBhbm9ueW1vdXMgb2JqZWN0XG4gICAgZnVuIHByZXBhcmVOZXdNaXgoZHJpbmtUb01peDogRHJpbmspID0gb2JqZWN0IHtcbiAgICAgICAgdmFsIGRyaW5rID0gZHJpbmtUb01peFxuICAgICAgICB2YWwgaW5ncmVkaWVudCA9IFwiU2FsdFwiXG4gICAgfVxuICAgIHZhbCBuZXdNaXggPSBwcmVwYXJlTmV3TWl4KHNtYWxsQm90dGxlKVxuICAgIC8vIFRPRE8gdHlwZSB0byBwcmludCB0aGUgY29tcG9uZW50cyBvZiBuZXdNaXguIElzIGl0IHBvc3NpYmxlIHRvIGFjY2VzcyB0aGUgY29udGVudHMgb2YgdGhlIGFub255bW91cyBvYmplY3Qgb3V0c2lkZSB0aGUgbG9jYWwgc2NvcGUgP1xuXG4gICAgLy8gVE9ETyB3aGF0IGhhcHBlbnMgaWYgd2UgcmVtb3ZlIHRoZSBwcml2YXRlIHF1YWxpZmllciB0byBwcmVwYXJlID9cbiAgICBjbGFzcyBEcmlua01peGVyIHtcbiAgICAgICAgcHJpdmF0ZSBmdW4gcGVyYXByZShkcmlua1RvTWl4OiBEcmluaykgPSBvYmplY3Qge1xuICAgICAgICAgICAgdmFsIGRyaW5rID0gZHJpbmtUb01peFxuICAgICAgICAgICAgdmFsIGluZ3JlZGllbnQgPSBcIlNhbHRcIlxuICAgICAgICB9XG5cbiAgICAgICAgZnVuIG1peCgpe1xuICAgICAgICAgICAgdmFsIHByZXBhcmF0aW9uID0gcGVyYXByZShEcmluaygxMDApKVxuICAgICAgICAgICAgcHJpbnRsbihcIiR7cHJlcGFyYXRpb24uZHJpbmt9IGFuZCAke3ByZXBhcmF0aW9uLmluZ3JlZGllbnR9XCIpXG4gICAgICAgIH1cblx0fVxufSJ9",target:"_blank",rel:"noopener noreferrer"},Ml={class:"custom-container details"},fl=l("summary",null,"Solution(s)",-1),Kl={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiLy8gT2JqZWN0cyBpbiBrb3RsaW4gaHR0cHM6Ly9rb3RsaW5sYW5nLm9yZy9kb2NzL3JlZmVyZW5jZS9vYmplY3QtZGVjbGFyYXRpb25zLmh0bWxcbm9wZW4gY2xhc3MgRHJpbmsodmFyIHZvbHVtZTogSW50KXtcbiAgICBvcGVuIGZ1biBjb25zdW1lKGNvbnN1bWVkVm9sdW1lOiBJbnQpe1xuICAgICAgICB0aGlzLnZvbHVtZSAtPSBjb25zdW1lZFZvbHVtZVxuICAgIH1cbn1cbmludGVyZmFjZSBDb2xvcmVke1xuICAgIHZhbCBjb2xvcjpTdHJpbmdcbn1cblxuLy8gYW5vbnltb3VzIG9iamVjdHMgaGF2ZSBhY2Nlc3MgdG8gdmFyaWFibGVzIGluIHRoZSBlbmNsb3Npbmcgc2NvcGVcbmZ1biBjcmVhdGVEcmlua0FuZENvdW50KCk6IERyaW5re1xuICAgIHZhciBuYkNvbnN1bXB0aW9uID0gMFxuICAgIHJldHVybiBvYmplY3QgOiBEcmluaygxMDApe1xuICAgICAgICBvdmVycmlkZSBmdW4gY29uc3VtZShjb25zdW1lZFZvbHVtZTogSW50KSB7XG4gICAgICAgICAgICBzdXBlci5jb25zdW1lKGNvbnN1bWVkVm9sdW1lKVxuICAgICAgICAgICAgbmJDb25zdW1wdGlvbiArPSAxXG4gICAgICAgICAgICBwcmludGxuKG5iQ29uc3VtcHRpb24pXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1biBtYWluKCkge1xuICAgIC8vIENyZWF0aW5nIGFuIGluc3RhbmNlIG9mIERyaW5rXG4gICAgdmFsIHNtYWxsQm90dGxlID0gRHJpbmsoMTAwKVxuICAgIC8vIFRPRE8gY3JlYXRlIGEgYmlnQm90dGxlIHdpdGggYSB2b2x1bWUgb2YgNTAwXG5cbiAgICAvLyBLb3RsaW4gYWxsb3dzIHRvIHF1aWNrbHkgY3JlYXRlIGFuIGFub255bW91cyBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIGFuZCBleGlzdGluZyBjbGFzcyBhbmQvb3IgaW50ZXJmYWNlc1xuICAgIHZhbCBzbWFsbENhcmJvbmF0ZWREcmlua0JvdHRsZSA9IG9iamVjdDogRHJpbmsoMTAwKSB7XG4gICAgICAgIG92ZXJyaWRlIGZ1biBjb25zdW1lKGNvbnN1bWVkVm9sdW1lOiBJbnQpIHtcbiAgICAgICAgICAgIHN1cGVyLmNvbnN1bWUoY29uc3VtZWRWb2x1bWUpXG4gICAgICAgICAgICBwcmludGxuKFwiUFNISEhISEhcIilcbiAgICAgICAgfVxuICAgIH1cbiAgICBzbWFsbENhcmJvbmF0ZWREcmlua0JvdHRsZS5jb25zdW1lKDIwKVxuXG4gICAgLy8gVE9ETyBjcmVhdGVkIGFuIGFub255bW91cyBvYmplY3Qgc21hbGxDYXJib25hdGVkUmVkRHJpbmtCb3R0bGUgdGhhdCBpcyBib3RoIGEgRHJpbmsgYW5kIENvbG9yZWRcbiAgICAvLyBUT0RPIENhbiBrb3RsaW4gaW5mZXIgdGhlIHR5cGUgb2Ygc21hbGxDYXJib25hdGVkUmVkRHJpbmtCb3R0bGUgP1xuICAgIHZhbCBzbWFsbENhcmJvbmF0ZWRSZWREcmlua0JvdHRsZTogQ29sb3JlZCA9IG9iamVjdDogRHJpbmsoMTAwKSwgQ29sb3JlZCB7XG4gICAgICAgIG92ZXJyaWRlIHZhbCBjb2xvcjogU3RyaW5nXG4gICAgICAgICAgICBnZXQoKSA9IFwiUmVkXCJcblxuICAgICAgICBvdmVycmlkZSBmdW4gY29uc3VtZShjb25zdW1lZFZvbHVtZTogSW50KSB7XG4gICAgICAgICAgICBzdXBlci5jb25zdW1lKGNvbnN1bWVkVm9sdW1lKVxuICAgICAgICAgICAgcHJpbnRsbihcIlBTSEhISEhIXCIpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPIG1ha2UgdGhpcyBjb2RlIHByaW50IFwiUmVkXCJcbiAgICAvLyBwcmludGxuKHNtYWxsQ2FyYm9uYXRlZFJlZERyaW5rQm90dGxlLmNvbG9yKVxuICAgIFxuICAgIFxuICAgIC8vIFRPRE8gd2hhdCBpcyBwcmludGVkIGFmdGVyIGNhbGxpbmcgdGhlIGZvbGxvd2luZyBjb2RlID9cbiAgICB2YWwgZHJpbmtUaGF0Q291bnRzID0gY3JlYXRlRHJpbmtBbmRDb3VudCgpXG4gICAgZHJpbmtUaGF0Q291bnRzLmNvbnN1bWUoMTApXG4gICAgZHJpbmtUaGF0Q291bnRzLmNvbnN1bWUoMjApXG5cbiAgICAvLyBUT0RPIFRyeSB0byBndWVzcyB3aGF0IGlzIHByaW50ZWQgaWYgd2UgZ2V0IGFub3RoZXIgZHJpbmsgZnJvbSAnY3JlYXRlRHJpbmtBbmRDb3VudCgpJyBhbmQgY2FsbCBjb25zdW1lID9cblxuICAgIFxuICAgIC8vIEtvdGxpbiBhbHNvIGFsbG93cyB0byBjcmVhdGUgYW5vbnltb3VzIG9iamVjdHMgd2l0aG91dCBzdXBlcnR5cGVzXG4gICAgZnVuIG1peChkcmlua1RvTWl4OiBEcmluayl7XG4gICAgXHR2YWwgbWl4dHVyZSA9IG9iamVjdCB7XG4gICAgICAgICAgICB2YWwgZHJpbmsgPSBkcmlua1RvTWl4XG4gICAgICAgICAgICB2YWwgaW5ncmVkaWVudCA9IFwiU2FsdFwiXG4gICAgXHR9XG4gICAgICAgIC8vIFRPRE8gdHJ5IHRvIHByaW50IHRoZSByZXN1bHQgb2YgbWl4dHVyZS5pbmdyZWRpZW50ICsgbWl4dHVyZS5kcmlua1RvTWl4XG4gICAgICAgIHByaW50bG4oKVxuICAgIH1cbiAgICBtaXgoc21hbGxCb3R0bGUpXG4gICAgXG4gICAgXG4gICAgLy8gTGV0J3MgdHJ5IHRvIHJldHVybiBhbiBhZGhvYyBhbm9ueW1vdXMgb2JqZWN0XG4gICAgZnVuIHByZXBhcmVOZXdNaXgoZHJpbmtUb01peDogRHJpbmspID0gb2JqZWN0IHtcbiAgICAgICAgdmFsIGRyaW5rID0gZHJpbmtUb01peFxuICAgICAgICB2YWwgaW5ncmVkaWVudCA9IFwiU2FsdFwiXG4gICAgfVxuICAgIHZhbCBuZXdNaXggPSBwcmVwYXJlTmV3TWl4KHNtYWxsQm90dGxlKVxuICAgIC8vIFRPRE8gdHlwZSB0byBwcmludCB0aGUgY29tcG9uZW50cyBvZiBuZXdNaXguIElzIGl0IHBvc3NpYmxlIHRvIGFjY2VzcyB0aGUgY29udGVudHMgb2YgdGhlIGFub255bW91cyBvYmplY3Qgb3V0c2lkZSB0aGUgbG9jYWwgc2NvcGUgP1xuXG4gICAgLy8gVE9ETyB3aGF0IGhhcHBlbnMgaWYgd2UgcmVtb3ZlIHRoZSBwcml2YXRlIHF1YWxpZmllciB0byBwcmVwYXJlID9cbiAgICBjbGFzcyBEcmlua01peGVyIHtcbiAgICAgICAgcHJpdmF0ZSBmdW4gcGVyYXByZShkcmlua1RvTWl4OiBEcmluaykgPSBvYmplY3Qge1xuICAgICAgICAgICAgdmFsIGRyaW5rID0gZHJpbmtUb01peFxuICAgICAgICAgICAgdmFsIGluZ3JlZGllbnQgPSBcIlNhbHRcIlxuICAgICAgICB9XG5cbiAgICAgICAgZnVuIG1peCgpe1xuICAgICAgICAgICAgdmFsIHByZXBhcmF0aW9uID0gcGVyYXByZShEcmluaygxMDApKVxuICAgICAgICAgICAgcHJpbnRsbihcIiR7cHJlcGFyYXRpb24uZHJpbmt9IGFuZCAke3ByZXBhcmF0aW9uLmluZ3JlZGllbnR9XCIpXG4gICAgICAgIH1cblx0fVxufSJ9",target:"_blank",rel:"noopener noreferrer"},Ql=l("h2",{id:"plus-d-exercices-et-de-lecture",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#plus-d-exercices-et-de-lecture","aria-hidden":"true"},"#"),e(" Plus d'exercices et de lecture")],-1),Dl={href:"https://play.kotlinlang.org/koans/overview",target:"_blank",rel:"noopener noreferrer"},Tl={href:"https://sderosiaux.medium.com/why-referential-transparency-matters-7c179424dab5",target:"_blank",rel:"noopener noreferrer"};function _l(Pl,ql){const I=i("ExternalLinkIcon");return a(),s("div",null,[t,l("p",null,[l("a",u,[e("▶️ this code"),c(I)]),e(" highlights the above features.")]),d,l("p",null,[l("a",o,[e("▶️ Ce code"),c(I)]),e(" illustre les fonctions en Kotlin.")]),G,l("p",null,[l("a",m,[e("▶️ ce code"),c(I)]),e(" illustrate la "),r,e(" et les types optionnels.")]),C,p,l("p",null,[e("Les énumérations permettent de travailler avec un groupe de valeurs de façon cadrée. Contrairement aux énumérations Java, "),l("a",Z,[e("les énumérations Kotlin sont des classes"),c(I)]),e(". Les "),B,e(" de Kotlin fournissent ces fonctionnalités :")]),X,l("p",null,[l("a",h,[e("▶️ ce code"),c(I)]),e(" illustres les enum en Kotlin de façon succincte. Veuillez consulter "),l("a",W,[e("la documentation officielle pour aller plus loin"),c(I)]),e(".")]),y,A,l("p",null,[l("a",V,[e("Veuillez cliquer sur le lien pour consulter l'énoncé"),c(I)])]),l("details",Y,[J,l("p",null,[l("a",R,[e("Solution"),c(I)])])]),x,l("p",null,[l("a",v,[e("Veuillez cliquer sur le lien pour consulter l'énoncé"),c(I)])]),l("details",F,[H,l("p",null,[l("a",w,[e("Solution"),c(I)])])]),N,l("p",null,[l("a",S,[e("▶️ ce code"),c(I)]),e(" illustre la POO en Kotlin.")]),k,l("p",null,[e("Ce sont des classes qui implémentent "),l("a",L,[e("des méthodes communes"),c(I)]),e(":")]),z,l("p",null,[e("Cependant, les data class "),l("a",E,[e("ont des restrictions"),c(I)]),e(":")]),j,l("p",null,[l("a",U,[e("▶️ ce code"),c(I)]),e(" illustrate les data class.")]),M,f,l("p",null,[e("La programmation fonctionnelle s'articule autour de "),l("a",K,[e("ces concepts"),c(I)]),e(" : fonctions pures, récursivité, transparence référentielle, variables immuables, fonctions en tant que citoyens de première classe et fonctions d'ordre supérieur.")]),Q,l("ul",null,[D,T,_,l("li",null,[l("a",P,[e("Transparence référentielle"),c(I)]),e(" : signifie qu'une expression peut être remplacée par son résultat sans modifier le comportement du programme.")])]),q,O,l("p",null,[e("Kotlin n'est pas un langage fonctionnel pur mais il prend en charge certaines fonctionnalités. En effet, Kotlin ne sait pas dire si une fonction est pures ou non, mais il fournit des collections immuables via la bibliothèque "),l("a",$,[e("kotlinx.collections.immutable"),c(I)]),e(" pour nous aider à manipuler des données immuables.")]),l("div",ll,[el,l("p",null,[l("a",Il,[e("Une liste en lecture seule"),c(I)]),e(" ne peut pas ajouter ou supprimer des éléments, mais elle peut modifier les données sous-jacentes.")]),cl]),l("p",null,[e("La librairie "),l("a",gl,[e("Arrow-kt"),c(I)]),e(" permet d'aller encore plus loin en développement fonctionnel.")]),nl,il,l("p",null,[l("a",al,[e("▶️ ce code"),c(I)]),e(" montre comment manipuler une liste avec la programmation déclarative.")]),sl,l("ul",null,[bl,tl,ul,dl,l("li",null,[e("Kotlin generates Java records by annotating a data class with "),ol,e(" and targeting JVM 16, among other requirement "),l("a",Gl,[e("listed here"),c(I)]),e(".")]),ml]),l("p",null,[l("a",rl,[e("▶️ this code"),c(I)]),e(" shows how to convert a Kotlin "),Cl,e(" to a Java "),pl,e(".")]),l("p",null,[e("The official documentation provides exhaustive documentation on "),l("a",Zl,[e("Kotlin and JVM integration"),c(I)])]),Bl,Xl,l("p",null,[l("a",hl,[e("Voir l'exercice"),c(I)])]),l("details",Wl,[yl,l("p",null,[l("a",Al,[e("Solution"),c(I)])])]),Vl,l("p",null,[l("a",Yl,[e("Exercice"),c(I)])]),l("details",Jl,[Rl,l("p",null,[l("a",xl,[e("Solution"),c(I)])])]),vl,l("p",null,[l("a",Fl,[e("Exercice"),c(I)])]),l("details",Hl,[wl,l("p",null,[l("a",Nl,[e("Solution"),c(I)])])]),Sl,l("p",null,[l("a",kl,[e("Exercice"),c(I)])]),l("details",Ll,[zl,l("p",null,[l("a",El,[e("Solution"),c(I)])])]),jl,l("p",null,[l("a",Ul,[e("Exercice"),c(I)])]),l("details",Ml,[fl,l("p",null,[l("a",Kl,[e("Solution"),c(I)])])]),Ql,l("ul",null,[l("li",null,[l("a",Dl,[e("Kotlin Koans"),c(I)])]),l("li",null,[l("a",Tl,[e("Referential transparency"),c(I)])])])])}const $l=n(b,[["render",_l],["__file","index.html.vue"]]);export{$l as default}; diff --git a/assets/index.html-2bf95174.js b/assets/index.html-2bf95174.js new file mode 100644 index 00000000..0b91003d --- /dev/null +++ b/assets/index.html-2bf95174.js @@ -0,0 +1,13 @@ +import{_ as i,r as c,o as l,c as o,a as n,b as e,d as s,e as t}from"./app-a89e3102.js";const p={},u=n("h1",{id:"advanced-and-other-kotlin-features",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#advanced-and-other-kotlin-features","aria-hidden":"true"},"#"),e(" Advanced and other Kotlin features")],-1),r=n("h2",{id:"delegated-properties",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#delegated-properties","aria-hidden":"true"},"#"),e(" Delegated properties")],-1),d=n("p",null,[e("Kotlin allows to delegate the getter and setter of a property to another object, which is called a delegate. It is a class that defines the "),n("code",null,"getValue"),e(" and "),n("code",null,"setValue"),e(" methods.")],-1),g=n("p",null,"Kotlin provides standard delegates such lazy properties and observable properties.",-1),I={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbi5yYW5kb20uUmFuZG9tXG5pbXBvcnQga290bGluLnByb3BlcnRpZXMuRGVsZWdhdGVzXG5pbXBvcnQga290bGluLnJlZmxlY3QuS1Byb3BlcnR5XG5cbmNsYXNzIFN1cGVySGVybyB7XG4gICAgdmFsIHJhbmRvbVN0cmVuZ3RoOiBJbnQgYnkgbGF6eSB7XG4gICAgICAgIHByaW50bG4oXCJjb21wdXRlZFwiKVxuICAgICAgICBSYW5kb20ubmV4dEludCg1MCwgMTAwKVxuICAgIH1cbiAgICBcbiAgICB2YXIgcG93ZXJOYW1lOiBTdHJpbmcgYnkgRGVsZWdhdGVzLm9ic2VydmFibGUoXCJMYXNlclwiKSB7IF8sIG9sZCwgbmV3IC0+XG4gICAgICAgIHByaW50bG4oXCJDaGFuZ2VkIHBvd2VyIGZyb20gJG9sZCB0byAkbmV3XCIpXG4gICAgfVxuICAgIFxuICAgIHZhciBjb2RlTmFtZTogU3RyaW5nIGJ5IENhcGl0YWxpemVEZWxlZ2F0ZSgpXG59XG5cbmNsYXNzIENhcGl0YWxpemVEZWxlZ2F0ZXtcbiAgICB2YXIgdXBwZXJjYXNlZCA9IFwiXCJcbiAgICBvcGVyYXRvciBmdW4gZ2V0VmFsdWUodGhpc1JlZjogQW55PywgcHJvcGVydHk6IEtQcm9wZXJ0eTwqPik6IFN0cmluZyB7XG4gICAgICAgIHByaW50bG4oXCIkdGhpc1JlZiwgdGhhbmsgeW91IGZvciBkZWxlZ2F0aW5nICcke3Byb3BlcnR5Lm5hbWV9JyB0byBtZSFcIilcbiAgICAgICAgcmV0dXJuIHVwcGVyY2FzZWRcbiAgICB9XG5cbiAgICBvcGVyYXRvciBmdW4gc2V0VmFsdWUodGhpc1JlZjogQW55PywgcHJvcGVydHk6IEtQcm9wZXJ0eTwqPiwgdmFsdWU6IFN0cmluZykge1xuICAgICAgICBwcmludGxuKFwiJyR2YWx1ZScgaGFzIGJlZW4gYXNzaWduZWQgdG8gJyR7cHJvcGVydHkubmFtZX0nIGluICR0aGlzUmVmLlwiKVxuICAgICAgICB1cHBlcmNhc2VkID0gdmFsdWUudXBwZXJjYXNlKClcbiAgICB9XG59XG5cbmZ1biBtYWluKCkge1xuICAgdmFsIHN1cGVyTGFuZGVyID0gU3VwZXJIZXJvKClcbiAgIHByaW50bG4oc3VwZXJMYW5kZXIucmFuZG9tU3RyZW5ndGgpXG4gICBwcmludGxuKHN1cGVyTGFuZGVyLnJhbmRvbVN0cmVuZ3RoKVxuICAgXG4gICBzdXBlckxhbmRlci5wb3dlck5hbWUgPSBcInNwZWVkXCJcbiAgICBcbiAgICBzdXBlckxhbmRlci5jb2RlTmFtZSA9IFwic3VwZXJsYW5kZXJcIlxuICAgIHByaW50bG4oc3VwZXJMYW5kZXIuY29kZU5hbWUpXG59In0=",target:"_blank",rel:"noopener noreferrer"},b=t('

    Concurrency and Coroutines

    Kotlin provides a high level concurrency model called Coroutines. The developer can delegated the management of threads to the compiler and runtime and using higher level constructs than threads to express asynchronous operations.

    Coroutines in Kotlin revolve around these concepts:

    • A coroutine is an instance of suspendable computation.
      • Kotlin has many methods for creating a coroutine such as launch.
    • A coroutine must exist within a coroutine scope.
      • For example runBlocking creates a coroutine scope whithin which coroutines can be launched.
    • A coroutine can run suspend functions which can suspend the coroutine but do not block the thread.
      • For example: the delay suspend the coroutine but does not block the thread on which it is running.
      • Suspend functions are operations that may take time such http requests and file system calls.
    • The suspend qualifier defines a suspend function. It runs within a coroutine and can call other suspend functions.
    • Flow allows to generate a list of asynchronous values.
    • Deferred and Channel transfer a single value and a stream of values, respectively, between coroutines.
    ',4),h={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbnguY29yb3V0aW5lcy4qXG5cbnN1c3BlbmQgZnVuIHJ1blNvbWV0aGluZygpIHtcbiAgICBwcmludGxuKFwic3RhcnRpbmdcIilcbiAgICBkZWxheSg1MDApXG4gICAgcHJpbnRsbihcImZpbmlzaGVkXCIpXG59XG5cbi8vIHJ1bkJsb2NraW5nIGNyZWF0ZXMgYSBDb3JvdXRpbmVTY29wZVxuZnVuIG1haW4oKSA9IHJ1bkJsb2NraW5nIHsgXG4gICAgLy8gbGF1bmNoIGEgbmV3IGNvcm91dGluZVxuICAgIGxhdW5jaCB7IFxuICAgICAgICAvLyBTdXNwZW5kIHRoZSBjb3JvdXRpbmUgYnV0IGRvZXMgbm90IGJsb2NrIHRoZSB0aHJlYWRcbiAgICAgICAgZGVsYXkoMTAwMEwpIFxuICAgICAgICBwcmludGxuKFwiV29ybGQhXCIpIFxuICAgIH1cbiAgICAgICAgXG4gICAgLy8gbWFpbiBjb3JvdXRpbmUgY29udGludWVzIHdoaWxlIGEgcHJldmlvdXMgb25lIGlzIGRlbGF5ZWRcbiAgICBwcmludGxuKFwiSGVsbG9cIikgXG4gICAgXG4gICAgdmFsIGpvYiA9IGxhdW5jaCB7XG4gICAgICAgIHJ1blNvbWV0aGluZygpXG4gICAgfVxuICAgIGpvYi5qb2luKClcbiAgICBydW5Tb21ldGhpbmcoKVxuICAgIFxufSJ9",target:"_blank",rel:"noopener noreferrer"},m={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbnguY29yb3V0aW5lcy4qXG5pbXBvcnQga290bGlueC5jb3JvdXRpbmVzLmZsb3cuKlxuXG5mdW4gZ2VucmF0ZUFzeW5jUmFuZG9tVmFsdWVzKCk6IEZsb3c8SW50PiA9IGZsb3cgeyBcbiAgICBwcmludGxuKFwiRmxvdyBzdGFydGVkXCIpXG4gICAgZm9yIChpIGluIDAuLjEwKSB7XG4gICAgICAgIGRlbGF5KDEwMClcbiAgICAgICAgZW1pdChpKVxuICAgIH1cbn1cblxuLy8gVGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgaW4gbm90IGhhbmRsZWRlZCBjb3JyZWN0bHlcbmZ1biBnZW5yYXRlQXN5bmNSYW5kb21WYWx1ZXNJbmZpbml0ZSgpOiBGbG93PEludD4gPSBmbG93IHsgXG4gICAgcHJpbnRsbihcIkZsb3cgc3RhcnRlZFwiKVxuICAgIHZhciBpID0gMFxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGRlbGF5KDEwMClcbiAgICAgICAgZW1pdChpKVxuICAgICAgICBpICs9IDFcbiAgICB9XG59XG5cblxuXG4vLyBydW5CbG9ja2luZyBjcmVhdGVzIGEgQ29yb3V0aW5lU2NvcGVcbmZ1biBtYWluKCkgPSBydW5CbG9ja2luZzxVbml0PiB7XG4gICAgbGF1bmNoe1xuICAgICAgICBnZW5yYXRlQXN5bmNSYW5kb21WYWx1ZXMoKS5jb2xsZWN0IHtcbiAgICAgICBcdFx0cHJpbnRsbihcIjFzdCBmbG93OiBHb3QgJGl0XCIpXG4gICBcdFx0fVxuICAgIH1cbiAgIFxuICAgbGF1bmNoe1xuICAgICAgIHdpdGhUaW1lb3V0T3JOdWxsKDEwMDApe1xuICAgICAgICAgICBnZW5yYXRlQXN5bmNSYW5kb21WYWx1ZXMoKS5jb2xsZWN0IHtcbiAgICAgICAgICAgcHJpbnRsbihcIjJuZCBmbG93OiBHb3QgJGl0XCIpXG4gICAgICAgICB9XG4gICAgICAgfVxuICAgfVxufSJ9",target:"_blank",rel:"noopener noreferrer"},G={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbnguY29yb3V0aW5lcy4qXG5pbXBvcnQga290bGlueC5jb3JvdXRpbmVzLmNoYW5uZWxzLipcblxuZnVuIG1haW4oKSA9IHJ1bkJsb2NraW5nIHtcbiAgICBcbiAgICAvLyBhc3luYyBsYXVuY2hlcyBhIGNvcm91dGluZXMgYW5kIHJldHVybnMgYSBEZWZlcnJlZDxJbnQ+XG4gICAgdmFsIGRlZmVycmVkID0gYXN5bmMge1xuICAgICAgICA0MlxuICAgIH1cbiAgICBwcmludGxuKGRlZmVycmVkLmF3YWl0KCkpXG5cbiAgICB2YWwgY2hhbm5lbCA9IENoYW5uZWw8SW50PigpXG4gICAgbGF1bmNoIHtcbiAgICAgICAgLy8gdGhpcyBtaWdodCBiZSBoZWF2eSBDUFUtY29uc3VtaW5nIGNvbXB1dGF0aW9uIG9yIGFzeW5jIGxvZ2ljLCB3ZSdsbCBqdXN0IHNlbmQgZml2ZSBzcXVhcmVzXG4gICAgICAgIGZvciAoeCBpbiAxLi41KSBjaGFubmVsLnNlbmQoeCAqIHgpXG4gICAgfVxuICAgIC8vIGhlcmUgd2UgcHJpbnQgZml2ZSByZWNlaXZlZCBpbnRlZ2VyczpcbiAgICByZXBlYXQoNSkgeyBwcmludGxuKGNoYW5uZWwucmVjZWl2ZSgpKSB9XG4gICAgcHJpbnRsbihcIkRvbmUhXCIpXG5cbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},C=t(`

    Function literal with receiver and Type-safe builders

    As seen previously, function extension add behavior to existing classes. Inside the definition of the function extension, we can reference the extension receiver (or this) implicitly.

    fun String.countCharacters() = length // or this.length
    +println("hello".countCharacters()) // prints 5
    +

    We can define this extension with a function literal (or lambda) in instead of a named function (declared with fun).

    var extFn: String.() -> Int
    +extFn = { length } // extFn is a function literal
    +println("hello".extFn()) // prints 5
    +println(extFn("hello")) // prints 5
    +

    extFn is a function literal (lambda) that has access to the receiver (this). That's why it's called a function literal with receiver.

    extFn("hello") or extFn("hello") call the extension as expected from extension functions.

    The type of a function literal with receiver is funName: ReceiverType.(arg1Type, arg2Type, etc.) -> ReturnType and is called with funName(receiverValue, arg1Value, etc.) or receiverValue.funName(arg1Value, etc.). However, this is not the interesting aspect.

    `,8),Z=n("code",null,"extFn = { length }",-1),X=n("code",null,"extFn",-1),A={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbi5yYW5kb20uUmFuZG9tXG5cbmZ1biBtYWluKCkge1xuICAgIC8vIGZuIGlzIGEgZnVuY3Rpb24gbGl0ZXJhbHMgd2l0aCByZWNlaXZlciB0aGF0IHJldHVybnMgYW4gaW50XG4gICAgZnVuIGRvU29tZXRoaW5nV2l0aFJhbmRvbUludChmbjogSW50LigpIC0+IEludCk6IEludCB7XG4gICAgXHR2YWwgcmFuZG9tSW50ID0gUmFuZG9tLm5leHRJbnQoMzIsIDk4KVxuICAgIFx0cmV0dXJuIHJhbmRvbUludC5mbigpXG5cdH1cbiAgICAgXG4gICAgdmFsIHJlc3VsdCA9IGRvU29tZXRoaW5nV2l0aFJhbmRvbUludCB7XG4gICAgICAgIC8vIFRoZSByZWNlaXZlciBpcyBpbXBsaWNpdGx5IGF2YWlsYWJsZSBpbiB0aGlzIGxhbWJkYVxuICAgICAgICBwcmludGxuKFwidGhpczogJHRoaXNcIilcbiAgICAgICAgcHJpbnRsbihcInBsdXM6ICR7cGx1cygxMDApfVwiKVxuICAgICAgICBtaW51cyg1MDApXG4gICAgfVxuICAgIHByaW50bG4oXCJyZXN1bHQgOiAkcmVzdWx0XCIpXG59In0=",target:"_blank",rel:"noopener noreferrer"},k={href:"https://kotlinlang.org/docs/type-safe-builders.htmlhttps://kotlinlang.org/docs/type-safe-builders.html",target:"_blank",rel:"noopener noreferrer"},W=n("strong",null,"Type-safe builders",-1),x={class:"custom-container tip"},y=n("p",{class:"custom-container-title"},"Builder pattern",-1),v={href:"https://refactoring.guru/design-patterns/builder",target:"_blank",rel:"noopener noreferrer"},B=t(`
    // StirngBuilder uses the builder pattern
    +val text = StringBuilder("Temp")
    +  .append(1)
    +  .append(true)
    +  .append("friend")
    +  .toString()
    +
    `,1),V={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiY2xhc3MgTWlsa3tcbiAgICB2YXIgYnJhbmQ6IFN0cmluZyA9IFwiXCJcbiAgICB2YXIgcXVhbnRpdHk6IEludCA9IDBcbiAgICBmdW4gYnJhbmQoaGFuZGxlcjogTWlsay4oKS0+IFN0cmluZyl7XG4gICAgICAgIGJyYW5kID0gaGFuZGxlcigpXG4gICAgfVxuICAgIGZ1biBxdWFudGl0eShoYW5kbGVyOiBNaWxrLigpLT5JbnQpe1xuICAgICAgICBxdWFudGl0eSA9IGhhbmRsZXIoKVxuICAgIH1cbiAgICBvdmVycmlkZSBmdW4gdG9TdHJpbmcoKSA9IFwiJHF1YW50aXR5IEwgb2YgbWlsayBmcm9tICRicmFuZFwiXG59XG5cbi8vIHR5cGVzYWZlIGJ1aWxkZXIgZW50cnkgcG9pbnRcbmZ1biBwcm9kdWNlTWlsayhpbml0OiBNaWxrLigpIC0+IFVuaXQpOiBNaWxrIHtcbiAgICB2YWwgbWlsayA9IE1pbGsoKVxuICAgIG1pbGsuaW5pdCgpXG4gICAgcmV0dXJuIG1pbGtcbn1cblxuZnVuIG1haW4oKXtcbiAgICB2YWwgbWlsayA9IHByb2R1Y2VNaWxrIHtcbiAgICAgICAgYnJhbmQgeyBcIlN1cGVyIG1pbGtcIiB9XG4gICAgICAgIHF1YW50aXR5IHsgMTAwIH1cbiAgICB9XG4gICAgcHJpbnRsbihtaWxrKVxufSJ9",target:"_blank",rel:"noopener noreferrer"},J={href:"https://kotlinlang.org/docs/type-safe-builders.html",target:"_blank",rel:"noopener noreferrer"},w=t('

    Exercises

    Exercise 1

    1. open the java-integration-exercise projects in the materials folder.
    2. Have a look at the Java class we provided you in the src/main/java/com/worldline/learning/kotlin/java2kotlin package. (yes, that's the Pokemon class)
    3. Convert that Java class in Kotlin using IntelliJ's awesome copy-pasta tool! (just copy paste the java code in a kotlin file, one is provided at src/main/kotlin/com/worldline/learning/kotlin/java2kotlin)
    4. Have a look at the generated Kotlin code, and note the major differences you spot!
    ',3);function f(F,Y){const a=c("ExternalLinkIcon");return l(),o("div",null,[u,r,d,g,n("p",null,[n("a",I,[e("▶️ this code"),s(a)]),e(" illustrates delegate properties.")]),b,n("p",null,[n("a",h,[e("▶️ this code"),s(a)]),e(" show how to create a coroutine and suspend function and how to use them.")]),n("p",null,[n("a",m,[e("▶️ this code"),s(a)]),e(" illustrated flows.")]),n("p",null,[n("a",G,[e("▶️ this code"),s(a)]),e(" illustrates channels and deferred.")]),C,n("p",null,[e("The important part is "),Z,e(" which can be put as a function argument in a higher order function. The developer that calls the higher order function must define "),X,e(", which in turn has access to the receiver. This allows for a nice style of programming. "),n("a",A,[e("▶️ this code"),s(a)]),e(" shows an example.")]),n("p",null,[n("a",k,[W,s(a)]),e(" combine well-named builder functions and functions literals with receiver to create type-safe, statically typed builders in Kotlin.")]),n("div",x,[y,n("p",null,[n("a",v,[e("The builder pattern"),s(a)]),e(" is a way to construct complex objects.")]),B]),n("p",null,[n("a",V,[e("This code shows"),s(a)]),e(" a basic type-safe builder.")]),n("p",null,[n("a",J,[e("Kotlin docs"),s(a)]),e(" provides an example of an advanced type-safe builder that builds an HTML page.")]),w])}const R=i(p,[["render",f],["__file","index.html.vue"]]);export{R as default}; diff --git a/assets/index.html-32146963.js b/assets/index.html-32146963.js new file mode 100644 index 00000000..9be30a99 --- /dev/null +++ b/assets/index.html-32146963.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-dcbefd6a","path":"/fr/presentation/","title":"Présentation de Kotlin","lang":"fr-FR","frontmatter":{},"headers":[{"level":2,"title":"Certaines fonctionnalités","slug":"certaines-fonctionnalites","link":"#certaines-fonctionnalites","children":[]},{"level":2,"title":"Histoire","slug":"histoire","link":"#histoire","children":[]},{"level":2,"title":"Quelques chiffres et faits","slug":"quelques-chiffres-et-faits","link":"#quelques-chiffres-et-faits","children":[]},{"level":2,"title":"Pourquoi passer de Java à Kotlin","slug":"pourquoi-passer-de-java-a-kotlin","link":"#pourquoi-passer-de-java-a-kotlin","children":[]},{"level":2,"title":"Sources et plus de lecture","slug":"sources-et-plus-de-lecture","link":"#sources-et-plus-de-lecture","children":[]}],"git":{"updatedTime":1673442959000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":1}]},"filePathRelative":"fr/presentation/README.md"}');export{e as data}; diff --git a/assets/index.html-5789aaa7.js b/assets/index.html-5789aaa7.js new file mode 100644 index 00000000..02b4b403 --- /dev/null +++ b/assets/index.html-5789aaa7.js @@ -0,0 +1 @@ +import{_ as r,a as d}from"./Androidmakers2023Kotlinshortlink-943614c6.js";import{_ as s,r as i,o as p,c as h,a as e,b as o,d as t,w as l,e as u}from"./app-a89e3102.js";const c={},m=u('

    Workshops

    Android makers 2023: Kotlin Beyond Android

    am2023 logo

    ',4),f={href:"https://awl.li/am23-kt",target:"_blank",rel:"noopener noreferrer"},k=e("p",null,[e("img",{src:d,alt:"qr code",width:"350",loading:"lazy"})],-1),K=e("h3",{id:"agenda",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#agenda","aria-hidden":"true"},"#"),o(" Agenda")],-1),b={href:"https://worldline.github.io/learning-kotlin-multiplatform/",target:"_blank",rel:"noopener noreferrer"},w=e("h2",{id:"jnation-2023-let-s-discover-the-possibilities-of-kotlin",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#jnation-2023-let-s-discover-the-possibilities-of-kotlin","aria-hidden":"true"},"#"),o(" JNation 2023: Let's discover the possibilities of Kotlin")],-1),A=e("h3",{id:"link-1",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#link-1","aria-hidden":"true"},"#"),o(" Link")],-1),g={href:"https://awl.li/jnation23-kt",target:"_blank",rel:"noopener noreferrer"},x=e("p",null,[e("img",{src:"data:image/gif;base64,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",alt:"qr code",width:"350",loading:"lazy"})],-1),v=e("h3",{id:"agenda-1",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#agenda-1","aria-hidden":"true"},"#"),o(" Agenda")],-1),W={href:"https://worldline.github.io/learning-kotlin-multiplatform/",target:"_blank",rel:"noopener noreferrer"};function q(_,y){const a=i("ExternalLinkIcon"),n=i("RouterLink");return p(),h("div",null,[m,e("p",null,[o("Workshop link: "),e("a",f,[o("awl.li/am23-kt"),t(a)])]),k,K,e("ul",null,[e("li",null,[t(n,{to:"/en/backend-development/#ktor"},{default:l(()=>[o("Backend development: Rest API with Ktor")]),_:1})]),e("li",null,[o("Optional: "),t(n,{to:"/en/backend-development/#ktor"},{default:l(()=>[o("Backend development: Rest API with nodeJS and Kotlin/JS")]),_:1})]),e("li",null,[t(n,{to:"/en/front-development/#kotlin-js-and-kotlin-wasm"},{default:l(()=>[o("Front-end development: Kotlin/WASM and Kotlin/JS webapp")]),_:1})]),e("li",null,[t(n,{to:"/en/front-development/#compose"},{default:l(()=>[o("Front-end development: cross-platform Hello world App with Compose multiplatform")]),_:1})]),e("li",null,[e("a",b,[o("Front-end development: Cross-platform Quiz App with Compose multiplatform"),t(a)])]),e("li",null,[t(n,{to:"/en/other-technologies/#pw-add-a-ktor-server-app"},{default:l(()=>[o("Full-stack development: Quiz App with Compose multiplatform and Ktor server")]),_:1})])]),w,A,e("p",null,[o("Workshop link: "),e("a",g,[o("awl.li/jnation23-kt"),t(a)])]),x,v,e("ul",null,[e("li",null,[t(n,{to:"/en/presentation/#prerequisites"},{default:l(()=>[o("Prerequisutes")]),_:1})]),e("li",null,[o("Selection of Kotlin's languages features: "),t(n,{to:"/en/kotlin-features/#null-safety"},{default:l(()=>[o("null safety")]),_:1}),o(" and "),t(n,{to:"/en/kotlin-features/#functions"},{default:l(()=>[o("functions")]),_:1})]),e("li",null,[t(n,{to:"/en/backend-development/#ktor"},{default:l(()=>[o("Backend development: Rest API with Ktor")]),_:1})]),e("li",null,[o("Optional: "),t(n,{to:"/en/backend-development/#ktor"},{default:l(()=>[o("Backend development: Rest API with nodeJS and Kotlin/JS")]),_:1})]),e("li",null,[t(n,{to:"/en/front-development/#kotlin-js-and-kotlin-wasm"},{default:l(()=>[o("Front-end development: Kotlin/WASM and Kotlin/JS webapp")]),_:1})]),e("li",null,[t(n,{to:"/en/front-development/#compose"},{default:l(()=>[o("Front-end development: cross-platform Hello world App with Compose multiplatform")]),_:1})]),e("li",null,[e("a",W,[o("Front-end development: Cross-platform Quiz App with Compose multiplatform"),t(a)])]),e("li",null,[t(n,{to:"/en/other-technologies/#pw-add-a-ktor-server-app"},{default:l(()=>[o("Full-stack development: Quiz App with Compose multiplatform and Ktor server")]),_:1})])])])}const C=s(c,[["render",q],["__file","index.html.vue"]]);export{C as default}; diff --git a/assets/index.html-5828365f.js b/assets/index.html-5828365f.js new file mode 100644 index 00000000..11deb458 --- /dev/null +++ b/assets/index.html-5828365f.js @@ -0,0 +1 @@ +const e=JSON.parse(`{"key":"v-12e654b0","path":"/en/workshops/","title":"Workshops","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Android makers 2023: Kotlin Beyond Android","slug":"android-makers-2023-kotlin-beyond-android","link":"#android-makers-2023-kotlin-beyond-android","children":[{"level":3,"title":"Link","slug":"link","link":"#link","children":[]},{"level":3,"title":"Agenda","slug":"agenda","link":"#agenda","children":[]}]},{"level":2,"title":"JNation 2023: Let's discover the possibilities of Kotlin","slug":"jnation-2023-let-s-discover-the-possibilities-of-kotlin","link":"#jnation-2023-let-s-discover-the-possibilities-of-kotlin","children":[{"level":3,"title":"Link","slug":"link-1","link":"#link-1","children":[]},{"level":3,"title":"Agenda","slug":"agenda-1","link":"#agenda-1","children":[]}]}],"git":{"updatedTime":1686071411000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":6},{"name":"yostane","email":"1958676+yostane@users.noreply.github.com","commits":1}]},"filePathRelative":"en/workshops/README.md"}`);export{e as data}; diff --git a/assets/index.html-679cf9c6.js b/assets/index.html-679cf9c6.js new file mode 100644 index 00000000..e0efd6d3 --- /dev/null +++ b/assets/index.html-679cf9c6.js @@ -0,0 +1 @@ +import{_ as l}from"./kotlin-used-for-492dbcd9.js";import{_ as r,r as a,o as s,c as d,a as e,b as n,d as o,e as i}from"./app-a89e3102.js";const u={},c=e("h1",{id:"presentation-de-kotlin",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#presentation-de-kotlin","aria-hidden":"true"},"#"),n(" Présentation de Kotlin")],-1),p=e("p",null,"Kotlin est un langage de programmation moderne développé par JetBrains.",-1),h=e("h2",{id:"certaines-fonctionnalites",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#certaines-fonctionnalites","aria-hidden":"true"},"#"),n(" Certaines fonctionnalités")],-1),_=i("
  • Kotlin est capable de compiler vers différentes cibles : la JVM, JS, Android, iOS, Les OS de bureau, etc.
    • Pris en charge officiellement par de grands frameworks back-end, tels que Spring et Quarkus,
    • Langage préféré pour le développement Android,
    • Kotlin Native compile en code natif,
    • Kotlin peut être considéré comme un langage fullstack
  • Interopérable avec Java.
  • Fournit des fonctionnalités modernes telles que la null safety à la compilation.
  • Prend en charge la programmation orientée objet et la programmation fonctionnelle.
  • ",4),m={href:"https://github.com/Kotlin/KEEP",target:"_blank",rel:"noopener noreferrer"},f=e("h2",{id:"histoire",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#histoire","aria-hidden":"true"},"#"),n(" Histoire")],-1),g=e("ul",null,[e("li",null,"15 février 2016 : sortie de Kotlin 1.0."),e("li",null,"4 janvier 2017 : Spring a introduit le support de Kotlin dans Spring 5."),e("li",null,"Lors de Google I/O 2017, Google a annoncé une prise en charge officielle de Kotlin sur Android."),e("li",null,"Le 7 mai 2019, Google a annoncé que Kotlin était le langage préféré des développeurs d'applications Android."),e("li",null,"Juin 2022 : Kotlin 1.7 est sorti avec la version du nouveau compilateur K2.")],-1),v=e("h2",{id:"quelques-chiffres-et-faits",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#quelques-chiffres-et-faits","aria-hidden":"true"},"#"),n(" Quelques chiffres et faits")],-1),k={href:"https://medium.com/predict/8-stats-and-fact-you-should-know-about-kotlin-in-2021-b41133a1834",target:"_blank",rel:"noopener noreferrer"},K=e("li",null,"En 2022, Kotlin est utilisé par 7,8 % des experts de l'industrie.",-1),b=e("li",null,"Selon StackOverflow, Kotlin était le 4ème langage le plus apprécié en 2020 avec 62,9 % des votes.",-1),w=e("li",null,"Kotlin est désormais répertorié parmi les 20 meilleurs langages de programmation par Redmonk.",-1),q=e("li",null,"Kotlin fait partie des 3 principaux langages vers lesquels la plupart des entreprises prévoient de migrer leurs applications en 2022.",-1),x=e("li",null,"Kotlin est utilisé par des entreprises mondiales telles que Google, Netflix, Amazon, Trello, etc.",-1),S={href:"https://www.youtube.com/watch?v=o14wGByBRAQ",target:"_blank",rel:"noopener noreferrer"},y=e("p",null,[e("img",{src:l,alt:"kotlin utilisé pour quoi ?",loading:"lazy"})],-1),J=e("p",null,"Veuillez trouver plus de statiques ici :",-1),L={href:"https://www.jetbrains.com/lp/kotlin-census-2020/",target:"_blank",rel:"noopener noreferrer"},P={href:"https://www.jetbrains.com/lp/devecosystem-2021/kotlin/",target:"_blank",rel:"noopener noreferrer"},V=i('

    Pourquoi passer de Java à Kotlin

    Voici quelques arguments qui motivent le passage de Java (version 17 LTS au moment de la rédaction) à Kotlin.

    • Kotlin prend en charge plus de cibles que Java.
    • Kotlin protège des références null à la compilation (les Optional Java sont ne sont pas de protections à la compilation).
    • Les chaînes de caractères Kotlin prennent en charge l'interpolation.
    • Les fonctionnalités de programmation fonctionnelle de Kotlin sont meilleures. Il permet même de définir des constructeurs et des DSL (Domain Specific Language) dont le typage est sécurisé (type-safe).
    • Kotlin peut être mélangé avec du code Java, facilitant ainsi le processus de migration.

    Vous pouvez lire plus d'arguments dans ces articles :

    ',4),j={href:"https://codersera.com/blog/java-vs-kotlin/",target:"_blank",rel:"noopener noreferrer"},E=e("li",null,"[8 raisons pour lesquelles vous devriez passer à Kotlin depuis Java] (https://www.geeksforgeeks.org/8-reasons-why-you-should-switch-to-kotlin-from-java)",-1),A=e("h2",{id:"sources-et-plus-de-lecture",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#sources-et-plus-de-lecture","aria-hidden":"true"},"#"),n(" Sources et plus de lecture")],-1),B={href:"https://en.wikipedia.org/wiki/Kotlin_(programming_language)",target:"_blank",rel:"noopener noreferrer"},z={href:"https://spring.io/blog/2017/01/04/introducing-kotlin-support-in-spring-framework-5-0",target:"_blank",rel:"noopener noreferrer"},G={href:"https://medium.com/predict/8-stats-and-fact-you-should-know-about-kotlin-in-2021-b41133a1834",target:"_blank",rel:"noopener noreferrer"},N={href:"https://dev.to/aashiya123/why-should-you-learn-kotlin-in-2021-57e2",target:"_blank",rel:"noopener noreferrer"};function I(O,Q){const t=a("ExternalLinkIcon");return s(),d("div",null,[c,p,h,e("ul",null,[_,e("li",null,[n("Processus d'évolution open source: "),e("a",m,[n("Kotlin KEEP"),o(t)]),n(".")])]),f,g,v,e("p",null,[e("a",k,[n("Source : Amyra Sheldon"),o(t)])]),e("ul",null,[K,b,w,q,x,e("li",null,[n("Plusieurs entreprises dont "),e("a",S,[n("Google"),o(t)]),n(", Pinterest et Uber ont migré leurs applications de Java vers Kotlin.")])]),y,J,e("ul",null,[e("li",null,[e("a",L,[n("Recensement Kotlin 2020"),o(t)])]),e("li",null,[e("a",P,[n("État Kotlin de JetBrains en 2021"),o(t)])])]),V,e("ul",null,[e("li",null,[e("a",j,[n("Java Vs Kotlin : Lequel vaut-il mieux apprendre en 2022 ?"),o(t)])]),E]),A,e("ul",null,[e("li",null,[e("a",B,[n("Kotlin sur Wikipedia"),o(t)])]),e("li",null,[e("a",z,[n("Présentation de la prise en charge de Kotlin dans Spring Framework 5.0"),o(t)])]),e("li",null,[e("a",G,[n("8 statistiques et faits à connaître sur Kotlin en 2022"),o(t)])]),e("li",null,[e("a",N,[n("Pourquoi devriez-vous apprendre Kotlin en 2022 ?"),o(t)])])])])}const C=r(u,[["render",I],["__file","index.html.vue"]]);export{C as default}; diff --git a/assets/index.html-79bb2826.js b/assets/index.html-79bb2826.js new file mode 100644 index 00000000..bed8214b --- /dev/null +++ b/assets/index.html-79bb2826.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-034b6842","path":"/fr/front-development/","title":"Développement frontend","lang":"fr-FR","frontmatter":{},"headers":[{"level":2,"title":"KMP & KMM","slug":"kmp-kmm","link":"#kmp-kmm","children":[]},{"level":2,"title":"Kotlin/JS et Kotlin/WASM","slug":"kotlin-js-et-kotlin-wasm","link":"#kotlin-js-et-kotlin-wasm","children":[{"level":3,"title":"TP : Application web Kotlin/WASM","slug":"tp-application-web-kotlin-wasm","link":"#tp-application-web-kotlin-wasm","children":[]},{"level":3,"title":"PW : Application web KotlinJS","slug":"pw-application-web-kotlinjs","link":"#pw-application-web-kotlinjs","children":[]}]},{"level":2,"title":"Compose","slug":"compose","link":"#compose","children":[{"level":3,"title":"TP : Compose Web","slug":"tp-compose-web","link":"#tp-compose-web","children":[]},{"level":3,"title":"TP : Compose desktop + Android app","slug":"tp-compose-desktop-android-app","link":"#tp-compose-desktop-android-app","children":[]}]},{"level":2,"title":"Pour aller plus loin","slug":"pour-aller-plus-loin","link":"#pour-aller-plus-loin","children":[]}],"git":{"updatedTime":1686068618000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":4},{"name":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":1}]},"filePathRelative":"fr/front-development/README.md"}');export{e as data}; diff --git a/assets/index.html-7c67d373.js b/assets/index.html-7c67d373.js new file mode 100644 index 00000000..a0185c01 --- /dev/null +++ b/assets/index.html-7c67d373.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-202ff0ad","path":"/fr/workshops/","title":"Workshops","lang":"fr-FR","frontmatter":{},"headers":[{"level":2,"title":"Android makers 2023: Kotlin Beyond Android","slug":"android-makers-2023-kotlin-beyond-android","link":"#android-makers-2023-kotlin-beyond-android","children":[{"level":3,"title":"Liens","slug":"liens","link":"#liens","children":[]},{"level":3,"title":"Agenda","slug":"agenda","link":"#agenda","children":[]}]}],"git":{"updatedTime":1683196784000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":2},{"name":"yostane","email":"1958676+yostane@users.noreply.github.com","commits":1}]},"filePathRelative":"fr/workshops/README.md"}');export{e as data}; diff --git a/assets/index.html-7f8c050f.js b/assets/index.html-7f8c050f.js new file mode 100644 index 00000000..224efc7f --- /dev/null +++ b/assets/index.html-7f8c050f.js @@ -0,0 +1 @@ +const e=JSON.parse(`{"key":"v-8daa1a0e","path":"/","title":"Welcome","lang":"en-US","frontmatter":{"home":true,"heroImage":"./kotlin_logo.png","tagline":"A beginner's guide to a modern programming language","actions":[{"text":"Get started →","link":"/en/presentation/","type":"primary"}],"features":[{"title":"Language features","details":"null safetry, extenesions, …"},{"title":"Backend development","details":"ktor, spring, …"},{"title":"Frontend development","details":"compose, KMP, …"}],"footer":"Worldline, 2023"},"headers":[{"level":2,"title":"Who we are","slug":"who-we-are","link":"#who-we-are","children":[]},{"level":2,"title":"Prerequisites","slug":"prerequisites","link":"#prerequisites","children":[]},{"level":2,"title":"Useful links","slug":"useful-links","link":"#useful-links","children":[]}],"git":{"updatedTime":1680904850000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":3},{"name":"W112314","email":"quentin.carpentier@worldline.com","commits":2}]},"filePathRelative":"index.md"}`);export{e as data}; diff --git a/assets/index.html-84257041.js b/assets/index.html-84257041.js new file mode 100644 index 00000000..15f0668a --- /dev/null +++ b/assets/index.html-84257041.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-94d0425a","path":"/en/kotlin-features/","title":"Kotlin language features","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Basic features","slug":"basic-features","link":"#basic-features","children":[{"level":3,"title":"Basic constructs (variables, control flow)","slug":"basic-constructs-variables-control-flow","link":"#basic-constructs-variables-control-flow","children":[]},{"level":3,"title":"Functions","slug":"functions","link":"#functions","children":[]},{"level":3,"title":"Null safety","slug":"null-safety","link":"#null-safety","children":[]},{"level":3,"title":"Enumerations","slug":"enumerations","link":"#enumerations","children":[]},{"level":3,"title":"Exercises","slug":"exercises","link":"#exercises","children":[]}]},{"level":2,"title":"Intermediate features","slug":"intermediate-features","link":"#intermediate-features","children":[{"level":3,"title":"Object oriented programming","slug":"object-oriented-programming","link":"#object-oriented-programming","children":[]},{"level":3,"title":"Data class","slug":"data-class","link":"#data-class","children":[]},{"level":3,"title":"Functional programming","slug":"functional-programming","link":"#functional-programming","children":[]},{"level":3,"title":"Kotlin and Java interoperability","slug":"kotlin-and-java-interoperability","link":"#kotlin-and-java-interoperability","children":[]},{"level":3,"title":"Exercises","slug":"exercises-1","link":"#exercises-1","children":[]}]},{"level":2,"title":"More Exercises and reading","slug":"more-exercises-and-reading","link":"#more-exercises-and-reading","children":[]}],"git":{"updatedTime":1686068618000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":8},{"name":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":1}]},"filePathRelative":"en/kotlin-features/README.md"}');export{e as data}; diff --git a/assets/index.html-93be45bf.js b/assets/index.html-93be45bf.js new file mode 100644 index 00000000..a4094db4 --- /dev/null +++ b/assets/index.html-93be45bf.js @@ -0,0 +1 @@ +import{_ as o}from"./logo_worldline-35dfdc75.js";import{_ as i,r as s,o as l,c,a as e,b as n,d as t,e as a}from"./app-a89e3102.js";const h={},d=a('

    Welcome

    Who we are

    avatar

    We design payments technology that powers the growth of millions​ of businesses around the world. Engineering the next frontiers​ in payments technology​

    • Leader in payment and secured transactions
    • Over 50bn transactions/year​
    • 7000+ engineers​ in over 40 countries
    • A huge & diverse​ tech-stack
    ',5),u={class:"custom-container tip"},f=e("p",{class:"custom-container-title"},"TIP",-1),_={href:"/fr/",target:"_blank",rel:"noopener noreferrer"},p={href:"/fr/",target:"_blank",rel:"noopener noreferrer"},m=a('

    Prerequisites

    • Basic knowledge of object-oriented language like Java
    • Prepare your dev environment and install stuff before the session (see Tooling section)
    ',3),g={href:"https://kotlinlang.org/docs/home.html",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/worldline/learning-kotlin",target:"_blank",rel:"noopener noreferrer"};function k(x,v){const r=s("ExternalLinkIcon");return l(),c("div",null,[d,e("div",u,[f,e("p",null,[n("This training is also available in "),e("a",_,[n("French"),t(r)]),n(" / Cette formation est aussi disponible en "),e("a",p,[n("Français"),t(r)])])]),m,e("ul",null,[e("li",null,[e("a",g,[n("Official Kotlin documentation"),t(r)])]),e("li",null,[e("a",b,[n("Github repository for this training"),t(r)])])])])}const B=i(h,[["render",k],["__file","index.html.vue"]]);export{B as default}; diff --git a/assets/index.html-99c4b89d.js b/assets/index.html-99c4b89d.js new file mode 100644 index 00000000..6c832946 --- /dev/null +++ b/assets/index.html-99c4b89d.js @@ -0,0 +1,195 @@ +import{_ as c,r as o,o as u,c as r,a as n,b as s,d as e,w as i,e as t}from"./app-a89e3102.js";const d={},k=n("h1",{id:"developpement-du-backend",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#developpement-du-backend","aria-hidden":"true"},"#"),s(" Développement du backend")],-1),v={href:"https://spring.io/blog/2017/01/04/introducing-kotlin-support-in-spring-framework-5-0",target:"_blank",rel:"noopener noreferrer"},m={href:"https://quarkus.io/guides/kotlin",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/ktorio/ktor",target:"_blank",rel:"noopener noreferrer"},b={href:"https://kotlinlang.org/docs/server-overview.html#deploying-kotlin-server-side-applications",target:"_blank",rel:"noopener noreferrer"},h=n("p",null,"En outre, Kotlin est théoriquement compatible avec tout framework qui cible la JVM ou JS. Cependant, les frameworks qui ne supportent pas officiellement Kotlin peuvent nécessiter quelques ajustements pour l'utiliser.",-1),f=n("h2",{id:"ktor",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#ktor","aria-hidden":"true"},"#"),s(" Ktor")],-1),_=n("p",null,"Ktor est une bibliothèque Kotlin multiplateforme permettant de développer des clients et des serveurs HTTP. Cela fait de Ktor une bibliothèque utile à la fois aux développeurs frontend, pour la partie client HTTP, ainsi qu'aux développeurs backend, pour la partie serveur HTTP. Dans ce qui suit, nous allons créer une API REST avec le serveur Ktor.",-1),q=n("h3",{id:"tp-developper-une-api-avec-ktor",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#tp-developper-une-api-avec-ktor","aria-hidden":"true"},"#"),s(" TP : développer une API avec Ktor")],-1),y={href:"https://start.ktor.io/",target:"_blank",rel:"noopener noreferrer"},x=t("
  • Cliquez sur "Generate project".
  • Téléchargez l'archive, décompressez-la et ouvrez le projet avec votre IDE préféré.
  • Créez un package models et ajoutez-y une classe de données Customer avec ces propriétés immuables id : String, firstName : String, lastName : Chaîne, email : Chaîne.
  • Annotez la classe avec @Serializable.
  • Créez un nouveau package nommé routes et ajoutez-y un fichier CustomerRoutes.kt qui contiendra le code pour l'endpoint /customer.
  • Le code ci-dessous fournit l'implémentation de certains endpoints. Veuillez implémenter les autres.
  • Pour activer la route, appelez customerRouting() dans le fichier de configuration du routage situé dans plugins/Routing.kt.
  • Pour plus de simplicité, utilisez une liste globale de clients en mémoire val store = mutableListOf<Customer>().
  • Lancer le serveur en exécutant la méthode main.
  • Tester l'API sur l'IDE en utilisant un fichier http ou en utilisant n'importe quel autre client.
  • ",10),S=t(`
    CustomerRoutes.kt
    val store = mutableListOf<Customer>()
    +
    +fun Route.customerRouting() {
    +  route("/customer") {
    +    get {
    +      call.respond(store)
    +    }
    +    get("{id?}") {
    +      val id = call.parameters["id"] ? : return@get call.respondText(
    +        "Missing id",
    +        status = HttpStatusCode.BadRequest
    +      )
    +      val customer =
    +        store.find { it.id == id } ? : return@get call.respondText(
    +          "Pas de client avec l'id $id",
    +          status = HttpStatusCode.NotFound
    +        )
    +      call.respond(customer)
    +    }
    +    post {
    +      val customer = call.receive<Customer>()
    +      store.add(customer)
    +      call.respondText("Customer stored correctly", status = HttpStatusCode.Created)
    +    }
    +    delete("{id?}") {
    +      // TODO
    +    }
    +  }
    +}
    +
    +
    plugins/Routing.kt
    fun Application.configureRouting() {
    +    routing {
    +        customerRouting()
    +    }
    +}
    +
    `,2),w={class:"custom-container tip"},C=t(`

    return@label

    Vous pouvez spécifier le niveau que vous voulez retourner avec un label explicite en utilisant return@lambda.

    lambdaA {
    +    lambdaB {
    +        lambdaC {
    +            val randomInt = Random.nextInt(0, 100)
    +            if (randomInt > 50) return@lambdaC else return@lambdaB
    +        }
    +        printf("In lambdaB")
    +    }
    +}
    +
    `,3),j={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbi5yYW5kb20uUmFuZG9tXG5cbi8vIHJldHVybiB3aXRoIGltcGxpY2l0IGxhYmVsc1xuXG5mdW4gbWFpbigpIHtcbiAgIHZhbCBrb3RsaW4gPSBcIvCfmYJcIlxuICAga290bGluLmxldCB7XG4gICAgICAgaXQuYXBwbHkge1xuXHRcdFx0dmFsIHJhbmRvbUludCA9IFJhbmRvbS5uZXh0SW50KDAsIDEwMClcbiAgICAgICAgICAgIHByaW50bG4ocmFuZG9tSW50KVxuICAgICAgICAgICAgaWYgKHJhbmRvbUludCA+IDUwKSByZXR1cm5AYXBwHkgZWxzZSByZXR1cm5AbGV0XG4gICAgICAgfVxuICAgICAgIHByaW50bG4oXCJpbnQgbV0IGFmdGVyIGFwcGx5XCIpXG4gICB9XG59In0=",target:"_blank",rel:"noopener noreferrer"},I=t(`
    CustomerTest.http
    POST http://127.0.0.1:8080/customer
    +Content-Type : application/json
    +
    +{
    +  "id" : "100",
    +  "firstName" : "Jane",
    +  "lastName" : "Smith",
    +  "email" : "jane.smith@company.com"
    +}
    +
    +
    +###
    +POST http://127.0.0.1:8080/customer
    +Content-Type : application/json
    +
    +{
    +  "id" : "200",
    +  "firstName" : "John",
    +  "lastName" : "Smith",
    +  "email" : "john.smith@company.com"
    +}
    +
    +###
    +POST http://127.0.0.1:8080/customer
    +Content-Type : application/json
    +
    +{
    +  "id" : "300",
    +  "firstName" : "Mary",
    +  "lastName" : "Smith",
    +  "email" : "mary.smith@company.com"
    +}
    +
    +
    +###
    +GET http://127.0.0.1:8080/customer
    +Accept : application/json
    +
    +###
    +GET http://127.0.0.1:8080/customer/200
    +Accepte : application/json
    +
    +###
    +GET http://127.0.0.1:8080/customer/500
    +Accepte : application/json
    +
    +###
    +DELETE http://127.0.0.1:8080/customer/100
    +
    +###
    +DELETE http://127.0.0.1:8080/customer/500
    +
    `,1),P={href:"https://ktor.io/docs/creating-http-apis.html",target:"_blank",rel:"noopener noreferrer"},T=n("h2",{id:"nodejs",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#nodejs","aria-hidden":"true"},"#"),s(" nodejs")],-1),A=n("p",null,"Grâce à Kotlin/JS, nous pouvons écrire des applications qui ciblent nodejs en utilisant Kotlin.",-1),R=n("strong",null,"déclaration externe",-1),E={href:"https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/-js-module/",target:"_blank",rel:"noopener noreferrer"},z={href:"https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/-js-non-module/",target:"_blank",rel:"noopener noreferrer"},G={href:"https://github.com/Kotlin/dukat",target:"_blank",rel:"noopener noreferrer"},D=n("p",null,"Heureusement pour nous, le prochain TP utilise la librairie Express pour laquelle nous pouvons trouver une déclaration de type externe.",-1),K=n("h3",{id:"tp-api-rest-avec-kotlin-js-et-express",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#tp-api-rest-avec-kotlin-js-et-express","aria-hidden":"true"},"#"),s(" TP : API Rest avec Kotlin/JS et Express")],-1),B=n("li",null,"Dans IntelliJ, créer un nouveau projet nodejs",-1),J=n("strong",null,"build.gradle.ts",-1),L=n("li",null,[s("Mettre la dernière version de Kotlin dans la ligne contenant "),n("code",null,'kotlin("js")'),s(".")],-1),O={href:"https://expressjs.com/",target:"_blank",rel:"noopener noreferrer"},V=n("strong",null,"Express",-1),M={href:"https://github.com/chrisnkrueger/kotlin-express",target:"_blank",rel:"noopener noreferrer"},N=n("code",null,"useCommonJs()",-1),H=n("code",null,"js",-1),X={href:"https://github.com/Kotlin/dukat/issues/106",target:"_blank",rel:"noopener noreferrer"},W={href:"https://github.com/chrisnkrueger/kotlin-express",target:"_blank",rel:"noopener noreferrer"},Z=t(`
    implementation(npm("express", "> 4.0.0 < 5.0.0"));
    +implementation("dev.chriskrueger:kotlin-express:1.2.0");
    +
    • Modifiez main.kt comme suit. Cela crée un serveur API REST qui écoute le port 3000 et fournit une route GET /hello.
    data class Message(val id : Int, val message : String)
    +
    +fun main() {
    +    val messages = listOf(Message(0, "I love Kotlin/JS"))
    +    val app = express.Express()
    +    app.get("/hello") { req, res ->
    +        res.send(messages)
    +    }
    +
    +    app.listen(3000) {
    +        console.log("server start at port 3000")
    +    }
    +}
    +
    `,3),U=n("li",null,[s("Exécutez la tâche "),n("code",null,"nodeRun"),s(" depuis votre IDE ou depuis la ligne de commande (si vous avez installé Gradle). "),n("ul",null,[n("li",null,[s("Si vous rencontrez une erreur avec Yarn lock, exécutez la tâche "),n("code",null,"kotlinUpgradeYarnLock"),s(" puis réessayez.")])])],-1),Y=n("li",null,"Ajouter des routes en POST, PUT et DELETE",-1),F=n("code",null,"req.body",-1),Q=n("code",null,"undefined",-1),$=n("strong",null,"body parser",-1),nn=n("li",null,[s("Pour un corps en JSON, nous devons appeler "),n("code",null,"app.use(bodyParser.json())"),s(".")],-1),sn={href:"https://www.npmjs.com/package/body-parser",target:"_blank",rel:"noopener noreferrer"},en=n("strong",null,"bodyParser",-1),an={href:"https://github.com/chrisnkrueger/kotlin-express",target:"_blank",rel:"noopener noreferrer"},tn=n("strong",null,"bodyParser",-1),on={href:"https://www.npmjs.com/package/body-parser?activeTab=code",target:"_blank",rel:"noopener noreferrer"},ln={href:"https://github.com/worldline/learning-kotlin/blob/main/material/kotlin-nodejs-demo/src/main/kotlin/BodyParser.kt",target:"_blank",rel:"noopener noreferrer"},pn=n("h2",{id:"spring-framework",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#spring-framework","aria-hidden":"true"},"#"),s(" Spring framework")],-1),cn=n("p",null,"Spring est un framework célèbre pour le développement d'applications côté serveur : API REST, pages web générées par le serveur, microservices, etc. Il s'appuie sur l'écosystème Java pour la compilation et l'exécution, ce qui le rend compatible avec Kotlin. Mieux encore, Spring supporte officiellement Kotlin. On peut même démarrer un nouveau projet avec Kotlin et Gradle-Kotlin. Dans la prochaine section, nous utiliserons ce projet pour recréer notre API REST plus haut avec Spring.",-1),un=n("h3",{id:"tp-spring-boot-part-1-developper-la-meme-api-avec-spring-boot",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#tp-spring-boot-part-1-developper-la-meme-api-avec-spring-boot","aria-hidden":"true"},"#"),s(" TP : Spring boot part 1 - développer la même API avec Spring Boot")],-1),rn={href:"https://start.spring.io/",target:"_blank",rel:"noopener noreferrer"},dn=n("li",null,"Choisissez Kotlin comme langage et Kotlin-Grade comme gestionnaire de projet.",-1),kn=n("li",null,[s("Ajoutez les dépendances suivantes : "),n("strong",null,"Spring Web"),s(" et "),n("strong",null,"Spring Boot DevTools"),s(".")],-1),vn=n("strong",null,"Generate",-1),mn={href:"https://marketplace.visualstudio.com/search?term=kotlin&target=VSCode&category=All%20categories&sortBy=Relevance",target:"_blank",rel:"noopener noreferrer"},gn={href:"https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack",target:"_blank",rel:"noopener noreferrer"},bn=n("li",null,[s("Vérifiez que la partie plugins "),n("code",null,"build.gradle.kts"),s(" utilise la dernière version de Kotlin. Voici à quoi cela devrait ressembler avec Kotlin "),n("em",null,"1.8.10"),s(" :")],-1),hn=t(`
    plugins {
    +  id("org.springframework.boot") version "3.0.4"
    +  id("io.spring.dependency-management") version "1.1.0"
    +  kotlin("jvm") version "1.8.10"
    +  kotlin("plugin.spring") version "1.8.10"
    +}
    +
    `,1),fn=t("
  • Créez la data class Customer dans le package model (sans l'annotation @Serializable).
  • Créez un paquetage controller qui contient une classe CustomerController qui fournit un CRUD en utilisant une liste globale.
    • Vous pouvez trouver un squelette ci-dessous.
    • 💡 Dans Spring, les contrôleurs Rest servent de routes Ktor, où un contrôleur définit une ressource REST.
  • Définissez les mêmes routes que dans le TP précédent.
  • Démarrez le serveur de l'API REST en exécutant :
    • Sur Powershell : .\\gradlew.bat bootRun
    • Tout shell Unix : .\\gradlew bootRun
    • Ou bien, vérifiez si votre IDE fournit déjà des configurations d'exécution pour les projets Spring Boot.
  • ",4),_n=n("strong",null,"http",-1),qn={href:"https://github.com/worldline/learning-kotlin/blob/main/material/spring-boot-kt-api/customer.jetbrains.http",target:"_blank",rel:"noopener noreferrer"},yn={href:"https://github.com/worldline/learning-kotlin/blob/main/material/spring-boot-kt-api/customer.vscode-resclient.http",target:"_blank",rel:"noopener noreferrer"},xn=t(`
    CustomerController.kt
    val store = mutableListOf<Customer>()
    +
    +@RestController
    +@RequestMapping("/customer")
    +class CustomerController {
    +    @GetMapping
    +    fun getAll() = store
    +
    +    @GetMapping("{id}")
    +    fun getById(@PathVariable id : String) { /* TODO : implement */ }
    +
    +    @PostMapping
    +    fun addOne(@RequestBody customer : Customer) { /* TODO : implement */ }
    +
    +    @DeleteMapping("{id}")
    +    fun deleteOne(@PathVariable id : String) { /* TODO : implement */ }
    +}
    +

    TP : Spring boot partie 2 - ajouter une base de données

    Allons un peu plus loin en stockant des données dans une base de données et en écrivant quelques tests.

    Nous utiliserons la base de données en mémoire H2 pour des raisons de simplicité, puisqu'elle ne nécessite pas de serveur pour fonctionner. Les classes seront mappées aux tables de la base de données avec des annotations JPA. L'API de base de données que nous utiliserons s'appelle JPARepository. C'est une API légère qui fournit des fonctionnalités CRUD communes à partir d'une simple une interface.

    `,4),Sn={href:"https://start.spring.io/",target:"_blank",rel:"noopener noreferrer"},wn=t("
  • Ouvrez le projet et ajoutez cette classe dans le package model @Entity class Product(@Id @GeneratedValue var id : Long ? = null, var name : String, var price : Int). Ceci définit la classe ainsi que les annotations JPA minimales (@Entity, @Id et @GeneratedValue) pour générer la table correspondante.
  • Dans le package repository, déclarez l'interface ProductRepository comme suit interface ProductRepository : JpaRepository<Produit, Long>. C'est suffisant pour que Spring génère une implémentation avec des caractéristiques communes comme nous le verrons plus tard.
  • Ensuite, créez une classe ProductService qui contiendra la logique métier. En termes d'architecture, le contrôleur appelle un service qui, à son tour, s'appuie sur d'autres services ou référentiels.
  • ",3),Cn=t(`
    ProductService.kt
    @Service
    +class ProductService(@Autowired val productRepository: ProductRepository) {
    +    fun getAll() = productRepository.findAll()
    +
    +    // use findByIdOrNull instad of findById because the latter returns an optional<Product> instead of Product?
    +    fun getById(id: Long) = productRepository.findByIdOrNull(id)
    +}
    +
    • Dans le package controller, créez une classe ProductController qui est mappée à /product et injectée avec @Autowired. Répondez à @Get comme suit.
    ProductController.kt
    @RestController
    +@RequestMapping("/product")
    +class ProductController(@Autowired val productService : ProductService) {
    +    @GetMapping fun getAll() = productService.getAll()
    +
    +    @GetMapping("{id}")
    +    fun getById(@PathVariable id : Long) =
    +        productService.getById(id) ? : throw ResponseStatusException(HttpStatus.NOT_FOUND)
    +}
    +

    Kotlin rend getById(@PathVariable id : Long) plus concis

    L'opérateur Elvis ?: permet de simplifier le code. Voici une version plus longue en guise de référence.

    @GetMapping("{id}")
    +fun getById(@PathVariable id : Long) : Produit {
    +    val product = productService.getById(id)
    +    if (product != null){
    +        return product
    +    }
    +    throw ResponseStatusException(HttpStatus.NOT_FOUND)
    +}
    +

    En outre, Spring fournit @ControllerAdvice pour modifier le message d'exception. Vous pouvez voir un [exemple ici] (https://spring.io/guides/tutorials/rest/).

    • Exécutons le projet. Avant de lancer le projet, nous devons ajouter un plugin qui permet aux classes Kotlin de générer un constructeur par défaut id("org.jetbrains.kotlin.plugin.jpa") version "1.8.10". Les plugins devraient ressembler à ce qui suit :
    plugins {
    +  id("org.jetbrains.kotlin.plugin.jpa") version "1.8.10"
    +  id("org.springframework.boot") version "3.0.4"
    +  id("io.spring.dependency-management") version "1.1.0"
    +  kotlin("jvm") version "1.8.10"
    +  kotlin("plugin.spring") version "1.8.10"
    +}
    +
    +
    • En guise d'exercice, implémentez ces routes : POST d'un seul produit, DELETE par id (/produit/{id}) et GET par id (/produit/{id}).
      • Indice : ProductController fournit déjà les méthodes nécessaires.
    • Appelez les différents points de terminaison avec un client REST.
    • Tester votre API Rest avec un client HTTP

    TP : Spring boot partie 3 - ajouter des tests

    Les frameworks Spring permettent d'effectuer différents types de tests en fournissant différentes classes dès le départ :

    • Tests unitaires/de composants des services et de l'API REST. Cela se fait par le biais d'utilitaires de bouchonnage tels que MockMVC.
    • Tests d'intégration de l'API REST en utilisant TestRestTemplate. Dans ce cas, un serveur complet est exécuté et testé.

    La plupart des classes fournies par Spring, si ce n'est toutes, offrent une syntaxe élégante pour les développeurs Java. Certaines d'entre elles vont plus loin en tirant parti des caractéristiques spécifiques de Kotlin. Dans ce qui suit, nous allons nous concentrer sur les parties qui fournissent des DSLs Kotlin, à savoir le test unitaire de l'API REST avec MockMVC.

    • Créer une classe de test ProductControllerUnitTests avec le contenu initial ci-dessous. MockMvc permet de tester unitairement l'API REST. L'annotation @AutoConfigureMockMvc permet à Spring de la configurer automatiquement.
    @SpringBootTest
    +@AutoConfigureMockMvc
    +classe ProductControllerTests(
    +    @Autowired val mockMvc : MockMvc,
    +    @Autowired val productRepository : ProductRepository) {
    +
    +    @BeforeEach
    +    fun reset(){
    +        productRepository.deleteAll()
    +    }
    +}
    +
    • Ajoutez les deux tests ci-dessous. Le premier utilise une approche classique tandis que le second tire parti des capacités du DSL de Kotlin. De plus, nous utilisons une chaîne littérale plus lisible.
    `,14),jn=n("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[n("pre",{class:"language-kotlin"},[n("code",null,[n("span",{class:"token annotation builtin"},"@Test"),s(` +`),n("span",{class:"token keyword"},"fun"),s(),n("span",{class:"token function"},"testWithClassicApproach"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},"{"),s(` + mockMvc`),n("span",{class:"token punctuation"},"."),n("span",{class:"token function"},"perform"),n("span",{class:"token punctuation"},"("),n("span",{class:"token keyword"},"get"),n("span",{class:"token punctuation"},"("),n("span",{class:"token string-literal singleline"},[n("span",{class:"token string"},'"/product"')]),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},")"),s(` + `),n("span",{class:"token punctuation"},"."),n("span",{class:"token function"},"andExpect"),n("span",{class:"token punctuation"},"("),n("span",{class:"token function"},"status"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},"."),s("isOk"),n("span",{class:"token punctuation"},")"),s(` + `),n("span",{class:"token punctuation"},"."),n("span",{class:"token function"},"andExpect"),n("span",{class:"token punctuation"},"("),n("span",{class:"token function"},"content"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},"."),n("span",{class:"token function"},"string"),n("span",{class:"token punctuation"},"("),n("span",{class:"token function"},"containsString"),n("span",{class:"token punctuation"},"("),n("span",{class:"token string-literal singleline"},[n("span",{class:"token string"},'"[]"')]),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},")"),s(` +`),n("span",{class:"token punctuation"},"}"),s(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),In=n("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[n("pre",{class:"language-kotlin"},[n("code",null,[n("span",{class:"token annotation builtin"},"@Test"),s(` +`),n("span",{class:"token keyword"},"fun"),s(),n("span",{class:"token function"},"`test GET a single product`"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"{"),s(` + mockMvc`),n("span",{class:"token punctuation"},"."),n("span",{class:"token function"},"get"),n("span",{class:"token punctuation"},"("),n("span",{class:"token string-literal singleline"},[n("span",{class:"token string"},'"/product/1"')]),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},"."),n("span",{class:"token function"},"andExpect"),s(),n("span",{class:"token punctuation"},"{"),s(` + status `),n("span",{class:"token punctuation"},"{"),s(),n("span",{class:"token function"},"isOk"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"}"),s(` + `),n("span",{class:"token function"},"jsonPath"),n("span",{class:"token punctuation"},"("),n("span",{class:"token string-literal singleline"},[n("span",{class:"token string"},'"$.name"')]),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"{"),s(),n("span",{class:"token function"},"value"),n("span",{class:"token punctuation"},"("),n("span",{class:"token string-literal singleline"},[n("span",{class:"token string"},'"A"')]),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"}"),s(` + `),n("span",{class:"token function"},"jsonPath"),n("span",{class:"token punctuation"},"("),n("span",{class:"token string-literal singleline"},[n("span",{class:"token string"},'"$.price"')]),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"{"),s(),n("span",{class:"token function"},"value"),n("span",{class:"token punctuation"},"("),n("span",{class:"token number"},"1"),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"}"),s(` + content `),n("span",{class:"token punctuation"},"{"),s(),n("span",{class:"token function"},"contentType"),n("span",{class:"token punctuation"},"("),s("MediaType"),n("span",{class:"token punctuation"},"."),s("APPLICATION_JSON"),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"}"),s(` + `),n("span",{class:"token punctuation"},"}"),s(` +`),n("span",{class:"token punctuation"},"}"),s(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),Pn=t(`
    • En guise d'exercice, écrire des tests pour les autres points d'accès.

    Le constructeur de requêtes de JpaRepository

    Les repository Spring implémentent des requêtes basées sur le nom de leurs méthodes. Par exemple, pour obtenir tous les produits triés par nom, nous pouvons ajouter cette méthode à l'interface.

    interface ProductRepository : JpaRepository<Produit, Long> {
    +    fun findAllByOrderByNameAsc() : List<Produit> ;
    +}
    +

    La [documentation officielle] (https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-creation) fournit des explications et des exemples plus détaillés.

    Projets terminés

    `,3),Tn={href:"https://github.com/worldline/learning-kotlin/tree/master/material/ktor-api",target:"_blank",rel:"noopener noreferrer"},An={href:"https://github.com/worldline/learning-kotlin/tree/master/material/kotlin-nodejs-demo",target:"_blank",rel:"noopener noreferrer"},Rn={href:"https://github.com/worldline/learning-kotlin/tree/master/material/spring-boot-kt-api",target:"_blank",rel:"noopener noreferrer"},En=n("h2",{id:"aller-plus-loin",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#aller-plus-loin","aria-hidden":"true"},"#"),s(" Aller plus loin")],-1),zn=n("p",null,"Ces tutoriels officiels vont encore plus loin :",-1),Gn={href:"https://kotlinlang.org/docs/jvm-spring-boot-restful.html",target:"_blank",rel:"noopener noreferrer"},Dn={href:"https://spring.io/guides/tutorials/spring-boot-kotlin/",target:"_blank",rel:"noopener noreferrer"},Kn={href:"https://spring.io/guides/tutorials/rest/",target:"_blank",rel:"noopener noreferrer"},Bn={href:"https://quarkus.io/guides/kotlin",target:"_blank",rel:"noopener noreferrer"},Jn=n("h2",{id:"lien-et-references",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#lien-et-references","aria-hidden":"true"},"#"),s(" Lien et références")],-1),Ln={href:"https://dev.to/mpetuska/js-in-kotlinjs-c4g",target:"_blank",rel:"noopener noreferrer"},On={href:"https://www.baeldung.com/kotlin/mockmvc-kotlin-dsl",target:"_blank",rel:"noopener noreferrer"},Vn={href:"https://spring.io/guides/tutorials/spring-boot-kotlin/",target:"_blank",rel:"noopener noreferrer"},Mn={href:"https://www.baeldung.com/kotlin/jpa",target:"_blank",rel:"noopener noreferrer"},Nn={href:"https://stackoverflow.com/questions/47143127/spring-data-jpa-how-to-use-kotlin-nulls-instead-of-optional",target:"_blank",rel:"noopener noreferrer"};function Hn(Xn,Wn){const a=o("ExternalLinkIcon"),l=o("CodeGroupItem"),p=o("CodeGroup");return u(),r("div",null,[k,n("p",null,[s("De nombreux frameworks supportent officiellement Kotlin comme "),n("a",v,[s("Spring"),e(a)]),s(", "),n("a",m,[s("Quarkus"),e(a)]),s(" et "),n("a",g,[s("Ktor"),e(a)]),s(", parmi d'autres "),n("a",b,[s("listés ici"),e(a)]),s(".")]),h,f,_,q,n("ul",null,[n("li",null,[s("Créez un projet sur "),n("a",y,[s("start.ktor.io"),e(a)]),s(" avec les plugins suivants : Content Negotiation, kotlinx.serialization, et Routing.")]),x]),S,n("div",w,[C,n("p",null,[n("a",j,[s("Ce code exécute un autre exemple"),e(a)]),s(".")])]),I,n("p",null,[n("a",P,[s("Cette page contient des étapes détaillées"),e(a)])]),T,A,n("p",null,[s("On peut même importer des librairies npm à condition de déclarer les API JS que l'on va utiliser en Kotlin. C'est ce qu'on appelle une "),R,s(" (vous pouvez la considérer comme un équivalent des définitions de type de TypeScript) qui déclare les symboles auxquels nous voulons accéder en Kotlin grâce aux annotations "),n("a",E,[s("@JsModule"),e(a)]),s(" et "),n("a",z,[s("@JsNonModule"),e(a)]),s(". Définir de telles déclarations externes peut s'avérer fastidieux et il ne semble pas y avoir de générateur automatique officiel et stable ("),n("a",G,[s("dukat"),e(a)]),s(" a été supprimé dans kotlin 1.8.20). Dans ce cas, nous avons deux options, soit écrire la déclaration externe nous-même, soit l'importer en tant que dépendance si elle est disponible.")]),D,K,n("ul",null,[B,n("li",null,[s("Une fois le projet chargé, éditer "),J,s(" comme suit : "),n("ul",null,[L,n("li",null,[s("Ajoutez ces deux dépendances: "),n("ul",null,[n("li",null,[s("La première est la bibliothèque "),n("a",O,[V,e(a)]),s(",")]),n("li",null,[s("et la seconde est la définition externe fournie par "),n("a",M,[s("chrisnkrueger/kotlin-express"),e(a)]),s(".")])])]),n("li",null,[s("ajouter une ligne "),N,s(" à l'intérieur du bloc "),H,s(". Ceci "),n("a",X,[s("est nécessaire"),e(a)]),s(" pour pouvoir utiliser "),n("a",W,[s("chrisnkrueger/ kotlin-express"),e(a)]),s(" dans notre code.")])])])]),Z,n("ul",null,[U,Y,n("li",null,[s("En ce qui concerne le corps du POST, Express positionne "),F,s(" à "),Q,s(" à moins que nous ne spécifions un "),$,s(". "),n("ul",null,[nn,n("li",null,[n("a",sn,[en,e(a)]),s(" est une bibliothèque npm et malheureusement, "),n("a",an,[s("chrisnkrueger/kotlin-express"),e(a)]),s(" ne fournit pas de définition externe pour "),tn,s(" au moment de l'écriture de ces lignes (chrisnkrueger/kotlin-express en version 1.2.0).")]),n("li",null,[s("Pouvez-vous essayer de la définir vous-même en lisant le "),n("a",on,[s("code de la bibliothèque"),e(a)]),s(" ?")]),n("li",null,[s("Vous pouvez trouver une solution "),n("a",ln,[s("ici"),e(a)])])])])]),pn,cn,un,n("ul",null,[n("li",null,[s("Créez un projet sur "),n("a",rn,[s("start.spring.io (aussi appelé Spring initializr)"),e(a)]),s(" avec les dépendances suivantes : Spring Web et Spring Boot DevTools.")]),dn,kn,n("li",null,[s("Cliquez sur "),vn,s(". Téléchargez l'archive, décompressez-la et ouvrez le projet avec IntelliJ (de préférence) ou VSCode. "),n("ul",null,[n("li",null,[s("Pour VSCode, installez une "),n("a",mn,[s("extension Kotlin"),e(a)]),s(" et "),n("a",gn,[s("Spring Boot Extension Pack"),e(a)]),s(" ( ⚠️ l'extension Spring ne semble pas supporter kotlin).")])])]),bn]),hn,n("ul",null,[fn,n("li",null,[s("Veuillez tester les routes avec un client REST. Vous pouvez trouver des fichiers "),_n,s(" ici au "),n("a",qn,[s("format JetBrains"),e(a)]),s(" ou "),n("a",yn,[s(" au format de l'extension REST Client de VSCode"),e(a)])])]),xn,n("ul",null,[n("li",null,[s("Créez un nouveau projet Spring en utilisant "),n("a",Sn,[s("Spring initializr"),e(a)]),s(" avec Kotlin et les dépendances suivantes : Spring Data JPA, H2 Database, Spring Boot DevTools, Spring Web.")]),wn]),Cn,e(p,null,{default:i(()=>[e(l,{title:"Sans DSL (Test Get All)"},{default:i(()=>[jn]),_:1}),e(l,{title:"Avec DSL (Test Get Single)"},{default:i(()=>[In]),_:1})]),_:1}),Pn,n("ul",null,[n("li",null,[n("a",Tn,[s("Projet Ktor"),e(a)])]),n("li",null,[n("a",An,[s("Projet nodejs"),e(a)])]),n("li",null,[n("a",Rn,[s("Projet Spring boot"),e(a)])])]),En,zn,n("ul",null,[n("li",null,[n("a",Gn,[s("Ce tutoriel de kotlinlang"),e(a)]),s(" montre comment créer un service web RESTful avec une base de données en utilisant Spring Boot.")]),n("li",null,[n("a",Dn,[s("Ce tutoriel de spring.io"),e(a)]),s(" montre comment construire une application web avec Spring Boot et Kotlin.")]),n("li",null,[n("a",Kn,[s("Rest APIs with Spring"),e(a)])]),n("li",null,[n("a",Bn,[s("Quarkus et Kotlin"),e(a)])])]),Jn,n("ul",null,[n("li",null,[n("a",Ln,[s("JS et Kotlin/JS"),e(a)])]),n("li",null,[n("a",On,[s("mockmvc kotlin dsl"),e(a)])]),n("li",null,[n("a",Vn,[s("spring-boot-kotlin tutorial"),e(a)])]),n("li",null,[n("a",Mn,[s("Kotlin et JPA"),e(a)])]),n("li",null,[n("a",Nn,[s("Spring Data JPA Comment utiliser les nulls Kotlin au lieu de Optional"),e(a)])])])])}const Un=c(d,[["render",Hn],["__file","index.html.vue"]]);export{Un as default}; diff --git a/assets/index.html-a449e056.js b/assets/index.html-a449e056.js new file mode 100644 index 00000000..0ac04260 --- /dev/null +++ b/assets/index.html-a449e056.js @@ -0,0 +1 @@ +import{_ as i,a as l,b as a,c as s,d as n}from"./fs-kmp-webcanvas-architecture.drawio-2659deec.js";import{_ as u,r as c,o as d,c as p,a as e,d as r,b as o,e as m}from"./app-a89e3102.js";const g={},h=e("h1",{id:"application-multiplateforme-et-fullstack-codelab",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#application-multiplateforme-et-fullstack-codelab","aria-hidden":"true"},"#"),o(" Application multiplateforme et Fullstack Codelab")],-1),f=e("h2",{id:"tp-application-multiplateforme-kmm-kmp-pour-android-ios-et-ordinateur-de-bureau",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#tp-application-multiplateforme-kmm-kmp-pour-android-ios-et-ordinateur-de-bureau","aria-hidden":"true"},"#"),o(" TP : Application multiplateforme + KMM + KMP pour Android, iOS et ordinateur de bureau")],-1),b=e("p",null,"En combinant KMP, KMM et Compose, il est possible de développer des applications mobiles et de bureau multiplateformes en utilisant uniquement Kotlin.",-1),v={href:"https://worldline.github.io/learning-kotlin-multiplatform/",target:"_blank",rel:"noopener noreferrer"},k=e("img",{src:i,alt:"kmp codelab",loading:"lazy"},null,-1),_={href:"https://worldline.github.io/learning-kotlin-multiplatform/",target:"_blank",rel:"noopener noreferrer"},q=m('

    PW : Ajouter une application serveur Ktor

    Nous allons étendre l'application précédente avec un serveur Ktor et un client web React. Le projet aura l'architecture suivante (❗ Ce choix d'architecture peut être sujet à discussion, mais nous nous en tiendrons à cela pour l'instant)

    architecture

    • Ajouter un module dans le projet appelé sharedFullStack qui contiendra :
      • Dans commonMain : Du code partagé qui sera utilisé par le projet shared.
      • Dans jvmMain : Un serveur Ktor qui sert une API Rest pour fournir les questions et héberge quelques fichiers HTML. L'un des fichiers HTML chargera une application react qui sera développée en Kotlin/JS.
      • Dans jsMain : Un client web react. Cette cible ne générera que le code JS, la page HTML qui le charge sera fournie par le serveur Ktor comme expliqué plus haut.
      • 💡 Avec IntelliJ vous pouvez faire un clic droit sur les dossiers xxxMain/kotlin et xxxMain/resources et utiliser Mark Directory as pour obtenir plus de support de la part de l'IDE.
    • Mettez à jour le fichier de construction de ce nouveau module comme suit :
      • plugins : multiplatform, serialilzation et application. Ce dernier sera utilisé pour spécifier le fichier principal du serveur qui sera exécuté avec la tâche run.
      • Ajoutez le plugin kotlin("multiplatform") et ciblez toutes les plateformes possibles (web, desktop, jvm et mobile) pour être complet.
      • Les dépendances devraient être les suivantes :
        • commonMain : client kotr (puisque nous voulons ajouter le client API dans le code partagé)
        • jvmMain : serveur ktor + sérialisation json + cors (pour que le html puisse charger le JS)
        • jsMain : Kotlin React
      • Nous devons ajouter deux tâches, la première produit l'application JS React et l'autre copie dans les ressources du serveur Ktor.
      • Définir la classe principale du plugin application.
      • Le fichier devrait [ressembler à ce qui suit] (https://github.com/worldline/learning-kotlin/blob/main/material/kmm-fullstack-demo/sharedFullStack/build.gradle.kts)
    • Déplacer le modèle API et les fichiers clients de shared vers sharedFullStack (Anwser, Quiz, Question, QuizAPI et QuizRepository)
    • ⚠️ Quelques points à noter :
      • Dans le fichier de construction d'android, ajoutez io.netty.versions.properties et INDEX.LIST au fichier de construction d'android.
      • Notre tâche globale de nettoyage peut entrer en conflit avec celle de Kotlin/JS, si c'est le cas, nous pouvons corriger cela en renommant notre tâche de nettoyage dans la racine build.gradle.kts packagingOptions exclues.
    • Ecrivez le code nécessaire pour le serveur et le client. Le serveur doit fournir ces points de terminaison :
      • Un GET sur / fournit un fichier html qui charge sharedFullStack.js parce que c'est le nom du JS qui est généré.
      • Un GET sur /quiz fournit un JSON de Quiz généré par le serveur
      • Un GET sur /quiz.html sert une page HTML générée par le serveur en utilisant le HTML DSL.
    • Changez la classe QuizAPI pour qu'elle appelle notre serveur local http://localhost:8081/quiz et supprimez les arguments de la méthode json ci-dessus puisque le serveur met en place les bons headers.
    • Lancer la tâche gradle "application -> run" du module sharedFullStack, qui copiera le JS généré dans le dossier ressources du serveur Ktor.
    • Ouvrez http://localhost:8081 pour exécuter l'application react

    kmm-fs-react-demo

    • Exécutez l'application de bureau qui récupère le quiz sur le serveur local.

    • Le test sur mobile est un peu plus complexe parce que localhost peut être mappé à une autre adresse et que le HTTP non sécurisé est bloqué par défaut.

    Le projet final est [disponible ici] (https://github.com/worldline/learning-kotlin/tree/main/material/kmm-fullstack-demo) dans le module sharedFullStack.

    PW : Ajouter une cible Compose for Web Canvas (expérimental)

    Compose for Web Canvas permet d'utiliser la même surface d'API que Compose Desktop et Android. Ajoutons un autre module pour l'expérimenter.

    architecture web canvas

    • Dans la racine settings.gradle.kts, ajoutez ce dépôt maven maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") qui a les dépendances de Compose for Web Canvas.
    • Dans gradle.properties, ajoutez cette ligne org.jetbrains.compose.experimental.jscanvas.enabled=true.
    • Dans le fichier de construction du module shared, ajoutez une cible js(IR) { browser() } et un sourceSet jsMain avec ces dépendances : compose.web.core, compose.ui et compose.material3.
      • Implémentez le fichier Platform et fournissez un composable pour l' App. Voici un [exemple d'implémentation] (https://github.com/worldline/learning-kotlin/tree/main/material/kmm-fullstack-demo/shared/src/jsMain/kotlin/com/devoxxfr2023/km)
    • Ajoutez un module nommé composeWebCanvasApp et définissez
    ',13);function j(x,z){const t=c("ExternalLinkIcon");return d(),p("div",null,[h,f,b,e("p",null,[e("a",v,[k,r(t)])]),e("p",null,[o("Ce labo à un codelab dédié "),e("a",_,[o("qui accessible depuis ce lien"),r(t)])]),q])}const S=u(g,[["render",j],["__file","index.html.vue"]]);export{S as default}; diff --git a/assets/index.html-aa00c7ec.js b/assets/index.html-aa00c7ec.js new file mode 100644 index 00000000..5e816133 --- /dev/null +++ b/assets/index.html-aa00c7ec.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-094bf77a","path":"/en/backend-development/","title":"Backend development","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Ktor","slug":"ktor","link":"#ktor","children":[{"level":3,"title":"PW: develop an API with Ktor","slug":"pw-develop-an-api-with-ktor","link":"#pw-develop-an-api-with-ktor","children":[]}]},{"level":2,"title":"nodejs","slug":"nodejs","link":"#nodejs","children":[{"level":3,"title":"PW: Rest API with Kotlin/JS and Express","slug":"pw-rest-api-with-kotlin-js-and-express","link":"#pw-rest-api-with-kotlin-js-and-express","children":[]}]},{"level":2,"title":"Spring framework","slug":"spring-framework","link":"#spring-framework","children":[{"level":3,"title":"PW: Spring boot part 1 - develop the same API with Spring Boot","slug":"pw-spring-boot-part-1-develop-the-same-api-with-spring-boot","link":"#pw-spring-boot-part-1-develop-the-same-api-with-spring-boot","children":[]},{"level":3,"title":"PW: Spring boot part 2 - adding a database","slug":"pw-spring-boot-part-2-adding-a-database","link":"#pw-spring-boot-part-2-adding-a-database","children":[]},{"level":3,"title":"PW: Spring boot part 2 - adding tests","slug":"pw-spring-boot-part-2-adding-tests","link":"#pw-spring-boot-part-2-adding-tests","children":[]},{"level":3,"title":"Completed projects","slug":"completed-projects","link":"#completed-projects","children":[]}]},{"level":2,"title":"Going further","slug":"going-further","link":"#going-further","children":[]},{"level":2,"title":"Links and references","slug":"links-and-references","link":"#links-and-references","children":[]}],"git":{"updatedTime":1689674019000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":18},{"name":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":3},{"name":"Tobias Preuss","email":"tobias.preuss@googlemail.com","commits":2},{"name":"Yassine Benabbas @ Worldline","email":"86733850+wlybe@users.noreply.github.com","commits":2}]},"filePathRelative":"en/backend-development/README.md"}');export{e as data}; diff --git a/assets/index.html-adc29353.js b/assets/index.html-adc29353.js new file mode 100644 index 00000000..150176c0 --- /dev/null +++ b/assets/index.html-adc29353.js @@ -0,0 +1 @@ +import{_ as l}from"./kotlin-used-for-492dbcd9.js";import{_ as r,r as i,o as a,c as s,a as e,b as n,d as t,e as d}from"./app-a89e3102.js";const h={},u=e("h1",{id:"presentation-of-kotlin",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#presentation-of-kotlin","aria-hidden":"true"},"#"),n(" Presentation of Kotlin")],-1),c=e("p",null,"Kotlin is a modern programming language developed by JetBrains.",-1),p=e("h2",{id:"some-features",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#some-features","aria-hidden":"true"},"#"),n(" Some features")],-1),m=e("li",null,"Many server frameworks officially support Kotlin such as Spring and Quarkus.",-1),_=e("li",null,"It is the first-class language for writing Android.",-1),g={href:"https://www.graalvm.org/",target:"_blank",rel:"noopener noreferrer"},f=e("li",null,"KMP and KMM allow to share code between different platforms.",-1),b=e("li",null,[n("Kotlin can be considered as both "),e("em",null,"fullstack"),n(" and "),e("em",null,"corss-platform"),n(" language.")],-1),w=e("li",null,"Inter-operable with Java.",-1),k=e("li",null,"Provides modern features such as compile-time null safety and data classes.",-1),K=e("li",null,"Supports Object oriented programming and functional programming.",-1),v={href:"https://github.com/Kotlin/KEEP",target:"_blank",rel:"noopener noreferrer"},y=e("h2",{id:"history",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#history","aria-hidden":"true"},"#"),n(" History")],-1),S=e("ul",null,[e("li",null,"February 15, 2016: Kotlin 1.0 was released."),e("li",null,"January 04, 2017: Spring introduced Kotlin support in Spring 5."),e("li",null,"At Google I/O 2017, Google announced first-class support for Kotlin on Android."),e("li",null,"On 7 May 2019, Google announced that Kotlin the preferred language for Android app developers."),e("li",null,"June 2022: Kotlin 1.7 was released with the version of the new K2 compiler.")],-1),x=e("h2",{id:"some-numbers-and-facts",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#some-numbers-and-facts","aria-hidden":"true"},"#"),n(" Some numbers and facts")],-1),J={href:"https://medium.com/predict/8-stats-and-fact-you-should-know-about-kotlin-in-2021-b41133a1834",target:"_blank",rel:"noopener noreferrer"},A=e("ul",null,[e("li",null,"As of 2022, Kotlin is used by 7.8% of the industry experts."),e("li",null,"According to StackOverflow, Kotlin was the 4th most beloved language in 2020 with 62.9% votes."),e("li",null,"Kotlin is now listed among the top 20 programming languages by Redmonk."),e("li",null,"Kotlin is among the top 3 languages that most businesses are planning to migrate their apps to in 2022."),e("li",null,"Kotlin is used by global companies like Google, NetFlix, Amazon, Trello, and more."),e("li",null,"Pinterest and Uber are among the companies that migrated their apps to Kotlin from Java.")],-1),I=e("p",null,[e("img",{src:l,alt:"kotlin used for what?",loading:"lazy"})],-1),P=e("p",null,"Please find more statics here:",-1),E={href:"https://www.jetbrains.com/lp/kotlin-census-2020/",target:"_blank",rel:"noopener noreferrer"},M={href:"https://www.jetbrains.com/lp/devecosystem-2021/kotlin/",target:"_blank",rel:"noopener noreferrer"},O=d('

    Why switch from Java to Kotlin

    Here are some arguments that motivate switching from Java (version 17 LTS at the time of writing) to Kotlin.

    • Kotlin supports more targets than Java.
    • Kotlin has compile time null-safety (Java Optionals are runtime wrappers for nullable values and null annotations have less features).
    • Kotlin strings support interpolation.
    • Casting in Kotlin is smart.
    • Kotlin functional programming features are better. It even allows to define Type-Safe builders and DSLs.
    • Kotlin can be mixed with Java code, thus helping the migration process.

    You can read more arguments in these articles:

    ',4),V={href:"https://codersera.com/blog/java-vs-kotlin/",target:"_blank",rel:"noopener noreferrer"},j={href:"https://www.geeksforgeeks.org/8-reasons-why-you-should-switch-to-kotlin-from-java",target:"_blank",rel:"noopener noreferrer"},B=e("h2",{id:"prerequisites",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#prerequisites","aria-hidden":"true"},"#"),n(" Prerequisites")],-1),G=e("li",null,[e("em",null,"Recommended"),n(": IntelliJ IDEA (Both community or ultimate are OK),")],-1),T=e("em",null,"or",-1),W={href:"https://gitpod.io/#https://github.com/worldline/learning-kotlin",target:"_blank",rel:"noopener noreferrer"},D=e("em",null,"material",-1),L=e("li",null,[e("em",null,"or"),n(" VSCode (with Kotlin and Java plugins) + JDK 17 (install via scoop.sh on windows or SDK man on Unix) + gradle")],-1),N=e("h2",{id:"sources-and-more-reading",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#sources-and-more-reading","aria-hidden":"true"},"#"),n(" Sources and more reading")],-1),C={href:"https://en.wikipedia.org/wiki/Kotlin_(programming_language)",target:"_blank",rel:"noopener noreferrer"},F={href:"https://spring.io/blog/2017/01/04/introducing-kotlin-support-in-spring-framework-5-0",target:"_blank",rel:"noopener noreferrer"},q={href:"https://medium.com/predict/8-stats-and-fact-you-should-know-about-kotlin-in-2021-b41133a1834",target:"_blank",rel:"noopener noreferrer"},R={href:"https://dev.to/aashiya123/why-should-you-learn-kotlin-in-2021-57e2",target:"_blank",rel:"noopener noreferrer"},z={href:"https://kotlin.link/",target:"_blank",rel:"noopener noreferrer"},H={href:"https://kotlin.libhunt.com/",target:"_blank",rel:"noopener noreferrer"};function U(Y,Q){const o=i("ExternalLinkIcon");return a(),s("div",null,[u,c,p,e("ul",null,[e("li",null,[n("Kotlin compiles to many targets: the JVM, JS, WASM, Android, iOS, Desktop, native code, etc. "),e("ul",null,[m,_,e("li",null,[n("Kotlin can compile to native with Kotlin native or with "),e("a",g,[n("GraalVM"),t(o)]),n(".")]),f])]),b,w,k,K,e("li",null,[e("a",v,[n("Kotlin KEEP"),t(o)]),n(" is its open source evolution process.")])]),y,S,x,e("p",null,[e("a",J,[n("Source: Amyra Sheldon"),t(o)])]),A,I,P,e("ul",null,[e("li",null,[e("a",E,[n("Kotlin Census 2020"),t(o)])]),e("li",null,[e("a",M,[n("JetBrains' Kotlin state in 2021"),t(o)])])]),O,e("ul",null,[e("li",null,[e("a",V,[n("Java Vs Kotlin: Which One Is Better To Learn In 2022?"),t(o)])]),e("li",null,[e("a",j,[n("8 Reasons Why You Should Switch To Kotlin From Java"),t(o)])])]),B,e("ul",null,[G,e("li",null,[T,n(" GitPod by opening "),e("a",W,[n("https://gitpod.io/#https://github.com/worldline/learning-kotlin"),t(o)]),n(" to create a workspace and then browser to the "),D,n(" folder,")]),L]),N,e("ul",null,[e("li",null,[e("a",C,[n("Kotlin on Wikipedia"),t(o)])]),e("li",null,[e("a",F,[n("Introducing Kotlin support in Spring Framework 5.0"),t(o)])]),e("li",null,[e("a",q,[n("8 stats and facts you should know about Kotlin in 2022"),t(o)])]),e("li",null,[e("a",R,[n("Why should you learn Kotlin in 2022?"),t(o)])]),e("li",null,[e("a",z,[n("Kotlin is awesome"),t(o)])]),e("li",null,[e("a",H,[n("Awesome Kotlin"),t(o)])])])])}const $=r(h,[["render",U],["__file","index.html.vue"]]);export{$ as default}; diff --git a/assets/index.html-b303a607.js b/assets/index.html-b303a607.js new file mode 100644 index 00000000..eaff5796 --- /dev/null +++ b/assets/index.html-b303a607.js @@ -0,0 +1 @@ +import{_ as o,r,o as i,c as l,a as e,b as n,d as a,e as s}from"./app-a89e3102.js";const c={},d={class:"custom-container tip"},h=e("p",{class:"custom-container-title"},"TIP",-1),_={href:"/",target:"_blank",rel:"noopener noreferrer"},u={href:"/",target:"_blank",rel:"noopener noreferrer"},m=s('

    Prerequisites

    • Connaissance de base en language de programmation orienté object comme Java
    • Préparez votre environnement de développement et installez des éléments avant la session (voir la section Outillage)

    Liens utiles

    ',3),p={href:"https://kotlinlang.org/docs/home.html",target:"_blank",rel:"noopener noreferrer"},f={href:"https://github.com/worldline/learning-kotlin",target:"_blank",rel:"noopener noreferrer"};function g(b,v){const t=r("ExternalLinkIcon");return i(),l("div",null,[e("div",d,[h,e("p",null,[n("This training is also available in "),e("a",_,[n("English"),a(t)]),n(" / Cette formation est aussi disponible en "),e("a",u,[n("Anglais"),a(t)])])]),m,e("ul",null,[e("li",null,[e("a",p,[n("Documentation officielle Kotlin"),a(t)])]),e("li",null,[e("a",f,[n("Dépôt Github de la formation"),a(t)])])])])}const x=o(c,[["render",g],["__file","index.html.vue"]]);export{x as default}; diff --git a/assets/index.html-b3bd56ea.js b/assets/index.html-b3bd56ea.js new file mode 100644 index 00000000..e29a4c05 --- /dev/null +++ b/assets/index.html-b3bd56ea.js @@ -0,0 +1,35 @@ +import{_ as o,a as l,b as i,c as p,d as r,e as c}from"./compose-multiplaform-e9e5bce8.js";import{_ as u,r as d,o as h,c as m,a as n,b as e,d as a,e as t}from"./app-a89e3102.js";const k={},b=n("h1",{id:"frontend-development",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#frontend-development","aria-hidden":"true"},"#"),e(" Frontend development")],-1),f=n("p",null,"Kotlin supports a wide selection of frontend frameworks across all platforms: mobile, desktop and web.",-1),g=n("p",null,"Please find below a glimpse of the possibilities that you can do right from IntelliJ:",-1),_={href:"https://openjfx.io/",target:"_blank",rel:"noopener noreferrer"},v={href:"https://tornadofx.io/",target:"_blank",rel:"noopener noreferrer"},w={href:"https://www.jetbrains.com/lp/compose-mpp/",target:"_blank",rel:"noopener noreferrer"},y={href:"https://ktor.io/docs/creating-interactive-website.html",target:"_blank",rel:"noopener noreferrer"},M={href:"https://freemarker.apache.org/",target:"_blank",rel:"noopener noreferrer"},K=n("li",null,"With KotlinJS, developers can create React, nodsjs, or vanilla JS Apps using Kotlin.",-1),x=n("li",null,"Kotlin WASM compiles into Web Assembly. It can complement KotlinJS for computation intensive tasks.",-1),S={href:"https://developer.android.com/jetpack/compose",target:"_blank",rel:"noopener noreferrer"},C=n("strong",null,"xml layouts",-1),W=n("p",null,[e("Kotlin supports cross platform frontend development thanks to "),n("strong",null,"KMP and KMM")],-1),A=n("h2",{id:"kmp-kmm",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#kmp-kmm","aria-hidden":"true"},"#"),e(" KMP & KMM")],-1),J=n("p",null,"KMP (Kotlin Multiplatform) and KMM (Kotlin Multiplatform Mobile) are the two Kotlin technologies that allow to share a single codebase across multiple targets.",-1),j={href:"https://blog.jetbrains.com/kotlin/2021/08/compose-multiplatform-goes-alpha/",target:"_blank",rel:"noopener noreferrer"},I=n("p",null,[n("img",{src:"https://kotlinlang.org/docs/images/kotlin-multiplatform.png",alt:"KMP",loading:"lazy"})],-1),T=n("p",null,"Many combinations of targets and use cases are possible:",-1),q={href:"https://kotlinlang.org/docs/multiplatform-full-stack-app.html",target:"_blank",rel:"noopener noreferrer"},P={href:"https://kotlinlang.org/docs/multiplatform-library.html",target:"_blank",rel:"noopener noreferrer"},D={href:"https://kotlinlang.org/lp/mobile/",target:"_blank",rel:"noopener noreferrer"},z=n("p",null,"KMM is based on KMP and focuses on helping mobile developers create Cross-Platform SDK for common code.",-1),O=n("p",null,[n("img",{src:"https://kotlinlang.org/lp/mobile/static/sdk-313e52f7d9d3b3e3e48471ef06e8e3aa.svg",alt:"KMM",loading:"lazy"})],-1),B=n("h2",{id:"kotlin-js-and-kotlin-wasm",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#kotlin-js-and-kotlin-wasm","aria-hidden":"true"},"#"),e(" Kotlin/JS and Kotlin/WASM")],-1),F=n("li",null,"Kotlin/JS can also target the web and even use web frameworks (such as react) in Kolitn.",-1),E=n("li",null,[e("Kotlin WASM is another possibility to target the web but this will generate WASM instead of pure JS code. "),n("ul",null,[n("li",null,"It can be used for example to develop computation intensive libraries.")])],-1),N={href:"https://wasi.dev/",target:"_blank",rel:"noopener noreferrer"},R=n("li",null,"Let's keep watching 😄.",-1),V=n("h3",{id:"pw-kotlin-wasm-web-app",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#pw-kotlin-wasm-web-app","aria-hidden":"true"},"#"),e(" PW: Kotlin/WASM web app")],-1),L=t("
  • Both Kotlin/WASM and Kotlin/JS wizards on IntelliJ work similarly.
    • The IDE generates a Kotlin file that will compile later WASM and / or JS. Kotlin/JS generated only JS while Kotin/WASM generates both JS and WASM.
    • In both cases, the entry point of the generated code is a JS file called module_name.js.
    • The IDE also generates an index.html in the resources folder which loads the generated JS explained above (the one named module_name.js).
    • The task wasmBrowserDevelopmentRun or jsWasmBrowserDevelopmentRun will run a local server that hosts both the index.html files and the generated JS and WASM files.
  • ",1),H=n("strong",null,"kotlin.wasm.wizard",-1),U={href:"https://github.com/worldline/learning-kotlin/tree/main/material/kotlin-wasm-starter",target:"_blank",rel:"noopener noreferrer"},G=t('

    • Check that kotlin is set to at least 1.8.20 in build.gradle.kts (the wizard may set it to a previous version).
    • Open src/wasmMain/kotlin/sample.kt and click on the run button that appears next to the main function.
    • If the build fails because the IDE used the wrong gradle task (the one that corresponds to a KotlinJS project), please change it to wasmBrowserDevelopmentRun and try to run again.

    ',3),X={href:"http://localhost:8080/",target:"_blank",rel:"noopener noreferrer"},Y=n("li",null,"⚠️ You may need to activate some flags on your browser for the app to work. If you see a blank page, please read the browser logs to check for the instructions.",-1),$=n("p",null,[n("img",{src:p,alt:"",loading:"lazy"})],-1),Q=n("li",null,[e("The generated wasm file is available in "),n("strong",null,"build/js/packages/project_name/kotlin")],-1),Z={href:"https://github.com/WebAssembly/wabt",target:"_blank",rel:"noopener noreferrer"},nn=n("em",null,"wasm2wattool",-1),en=n("code",null,"wasm2wat --enable-all -v .\\kotlin-wasm-demo-wasm.wasm -o wasm.wat",-1),sn={href:"https://webassembly.github.io/wabt/demo/wasm2wat/",target:"_blank",rel:"noopener noreferrer"},an=n("li",null,"❗ However, I couldn't get it to work",-1),tn=n("h3",{id:"pw-kotlinjs-web-app",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#pw-kotlinjs-web-app","aria-hidden":"true"},"#"),e(" PW: KotlinJS web app")],-1),on=n("p",null,"The Kotlin/JS wizard creates a very similar app to the Kotlin/WASM. in a later PW, we'll create a fullstack app with Ktor and Kotlin/JS.",-1),ln=n("h2",{id:"compose",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#compose","aria-hidden":"true"},"#"),e(" Compose")],-1),pn={href:"https://blog.jetbrains.com/kotlin/2021/08/compose-multiplatform-goes-alpha/",target:"_blank",rel:"noopener noreferrer"},rn={class:"custom-container warning"},cn=n("p",{class:"custom-container-title"},"Compose multiplatform vs Jetpack Compose",-1),un={href:"https://developer.android.com/jetpack/compose/tutorial",target:"_blank",rel:"noopener noreferrer"},dn=t(`

    Compose Web vs Compose for Web Canvas

    • Compose Web's API surface is different that other Compose targets because it works directly with the DOM.
    • Compose for Web Canvas has the same API surface as the Desktop and Android because it draws on a Canvas and does not manipulate on the DOM.

    This means that the first one has better web support and the second one has more reusable code.

    PW: Compose web

    • Create a new IntelliJ project -> Compose Multiplaform.
    • Choose "Single platform" -> "Web" and fill the other fields.
    • Choose Finish
    • IntelliJ may take some time to prepare the project and may request to install additional plugins.
    • Launch the development server of the web app sing this command ./gradlew jsBrowserRun --continuous.
    • Modify Main.kt as follows and run the app.
    • Open this address: localhost:8080.
    fun main() {
    +    renderComposable(rootElementId = "root") {
    +        Div({ style { padding(25.px) } }) {
    +            var expanded by remember { mutableStateOf(false) }
    +            Button(
    +                attrs = {
    +                    onClick { expanded = !expanded }
    +                }
    +            ) { Text("Click me") }
    +            Div({ style { display(if (expanded) DisplayStyle.Block else DisplayStyle.None) } }) {
    +                Text("Click me !")
    +            }
    +        }
    +    }
    +}
    +

    compose multiplatform demo

    PW: Compose desktop + Android app

    • Create a new project on IntelliJ -> Compose Multiplatform.
    • Choose "multiple platforms" and fill the other fields. Then choose Finish.
    • IntelliJ starts preparing the project and may request to install plugins.
    • Once ready, run the android app using the green run button.
    • Run the Desktop app by running the main function on the desktop project (should be in Main.kt).
    • Modify App.kt in the main project as follows and run the app.
    @Composable
    +fun App() {
    +    val platformName = getPlatformName()
    +    Card {
    +        var expanded by remember { mutableStateOf(false) }
    +        Column(Modifier.clickable { expanded = !expanded }) {
    +            Text(
    +                text="Click me !",
    +                style = MaterialTheme.typography.h2
    +            )
    +            AnimatedVisibility(expanded){
    +                Text(
    +                    text = "Hello, \${platformName} 🎊",
    +                    style = MaterialTheme.typography.h1
    +                )
    +            }
    +        }
    +    }
    +}
    +

    compose multiplatform demo

    Further reading

    ',10),hn={href:"https://seb.deleuze.fr/the-huge-potential-of-kotlin-wasm/",target:"_blank",rel:"noopener noreferrer"};function mn(kn,bn){const s=d("ExternalLinkIcon");return h(),m("div",null,[b,f,g,n("ul",null,[n("li",null,[e("On the desktop side "),n("ul",null,[n("li",null,[e("Thanks to JVM support, Kotlin supports "),n("a",_,[e("JavaFX"),a(s)]),e(". "),n("ul",null,[n("li",null,[e("💡 There is even a Kotlin counterpart called "),n("a",v,[e("tornadofx"),a(s)]),e(".")])])]),n("li",null,[n("a",w,[e("Compose Multiplatform"),a(s)]),e(" brings Jetpack Compose to the desktop, the web and mobile.")])])]),n("li",null,[e("On the web "),n("ul",null,[n("li",null,[n("a",y,[e("Ktor"),a(s)]),e(" can use templates engines "),n("a",M,[e("such as FreeMarker"),a(s)]),e(" to create server pages.")]),K,x])]),n("li",null,[e("On mobiles "),n("ul",null,[n("li",null,[e("Android developers use the "),n("a",S,[e("Jetpack Compose"),a(s)]),e(" UI Framework or the legacy "),C,e(". It is experimental on iOS.")])])])]),W,A,J,n("p",null,[n("a",j,[e("KMP"),a(s)]),e(" relies on Kotlin native and other Kotlin features to help developers create projects that target multiple platforms using a common Kotlin code-base.")]),I,T,n("ul",null,[n("li",null,[n("a",q,[e("Full-Stack web apps"),a(s)]),e(": A project that contains a backend and a web app while sharing common logic.")]),n("li",null,[n("a",P,[e("Multiplatform libraries"),a(s)])]),n("li",null,[n("a",D,[e("KMM"),a(s)]),e(": a special denomination for KMP when used for iOS and Android projects.")])]),z,O,B,n("ul",null,[F,E,n("li",null,[e("Maybe we can do even more in the future with as all these technologies (Kotlin, WASM and Kotlin/WASM) evolve. - For example, "),n("a",N,[e("WASI"),a(s)]),e(" allows WASM to communicate with the operating system. - This means that me may see Kotlin/WASM project projects in the future that can target both the browser and the OS.")]),R]),V,n("ul",null,[L,n("li",null,[e("Let's create a Kotlin/WASM app. First, Enable the kotlin wasm wizard by enabling "),H,e(` in IntelliJ's registry (open the registry by double tapping shift and typing "registry" in the search box) or clone `),n("a",U,[e("this project"),a(s)]),e(".")])]),G,n("ul",null,[n("li",null,[e("The development server should start and you can open your WASM powered webapp on "),n("a",X,[e("http://localhost:8080/"),a(s)])]),Y]),$,n("ul",null,[Q,n("li",null,[e("WASM being a binary format, we need to convert it first to text format. "),n("ul",null,[n("li",null,[e("We can either install "),n("a",Z,[e("WABT (The WebAssembly Binary Toolkit or wabbit)"),a(s)]),e(" and use the "),nn,e(),en,e(",")]),n("li",null,[e("or use an online converter "),n("a",sn,[e("such as this one"),a(s)])]),an])])]),tn,on,ln,n("p",null,[n("a",pn,[e("Compose multiplatform"),a(s)]),e(" is a family of declarative UI frameworks for Android (Jetpack Compose), the desktop (Compose Desktop), and the web (Compose Web). It has experimental support for iOS and Web Canvas.")]),n("div",rn,[cn,n("p",null,[e("While very similar, Compose multiplatform is different from Jetpack Compose as the latter is only compatible with Android. Google provides a "),n("a",un,[e("JetPack compose tutorial"),a(s)]),e(" for Android development.")])]),dn,n("ul",null,[n("li",null,[n("a",hn,[e("The huge potential of Kotlin/Wasm"),a(s)])])])])}const _n=u(k,[["render",mn],["__file","index.html.vue"]]);export{_n as default}; diff --git a/assets/index.html-b4a36fa2.js b/assets/index.html-b4a36fa2.js new file mode 100644 index 00000000..10889830 --- /dev/null +++ b/assets/index.html-b4a36fa2.js @@ -0,0 +1 @@ +import{_ as d,a as i}from"./Androidmakers2023Kotlinshortlink-943614c6.js";import{_ as s,r as l,o as p,c,a as e,b as o,d as t,w as a,e as h}from"./app-a89e3102.js";const m={},_=h('

    Workshops

    Android makers 2023: Kotlin Beyond Android

    am2023 logo

    Liens

    ',4),u={href:"https://awl.li/am23-kt",target:"_blank",rel:"noopener noreferrer"},f=e("p",null,[e("img",{src:i,alt:"qr code",loading:"lazy"})],-1),k=e("h3",{id:"agenda",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#agenda","aria-hidden":"true"},"#"),o(" Agenda")],-1),w={href:"https://worldline.github.io/learning-kotlin-multiplatform/",target:"_blank",rel:"noopener noreferrer"};function v(b,g){const r=l("ExternalLinkIcon"),n=l("RouterLink");return p(),c("div",null,[_,e("p",null,[o("Lien du workshop: "),e("a",u,[o("awl.li/am23-kt"),t(r)])]),f,k,e("ul",null,[e("li",null,[t(n,{to:"/fr/backend-development/#ktor"},{default:a(()=>[o("Backend development: Rest API with Ktor")]),_:1})]),e("li",null,[o("Optional: "),t(n,{to:"/fr/backend-development/#ktor"},{default:a(()=>[o("Backend development: Rest API with nodeJS and Kotlin/JS")]),_:1})]),e("li",null,[t(n,{to:"/fr/front-development/#kotlin-js-and-kotlin-wasm"},{default:a(()=>[o("Front-end development: Kotlin/WASM and Kotlin/JS webapp")]),_:1})]),e("li",null,[t(n,{to:"/fr/front-development/#compose"},{default:a(()=>[o("Front-end development: cross-platform Hello world App with Compose multiplatform")]),_:1})]),e("li",null,[e("a",w,[o("Front-end development: Cross-platform Quiz App with Compose multiplatform"),t(r)])]),e("li",null,[t(n,{to:"/fr/other-technologies/#pw-add-a-ktor-server-app"},{default:a(()=>[o("Full-stack development: Quiz App with Compose multiplatform and Ktor server")]),_:1})])])])}const B=s(m,[["render",v],["__file","index.html.vue"]]);export{B as default}; diff --git a/assets/index.html-ba31557a.js b/assets/index.html-ba31557a.js new file mode 100644 index 00000000..7fc7eb2c --- /dev/null +++ b/assets/index.html-ba31557a.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-582b1945","path":"/en/front-development/","title":"Frontend development","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"KMP & KMM","slug":"kmp-kmm","link":"#kmp-kmm","children":[]},{"level":2,"title":"Kotlin/JS and Kotlin/WASM","slug":"kotlin-js-and-kotlin-wasm","link":"#kotlin-js-and-kotlin-wasm","children":[{"level":3,"title":"PW: Kotlin/WASM web app","slug":"pw-kotlin-wasm-web-app","link":"#pw-kotlin-wasm-web-app","children":[]},{"level":3,"title":"PW: KotlinJS web app","slug":"pw-kotlinjs-web-app","link":"#pw-kotlinjs-web-app","children":[]}]},{"level":2,"title":"Compose","slug":"compose","link":"#compose","children":[{"level":3,"title":"PW: Compose web","slug":"pw-compose-web","link":"#pw-compose-web","children":[]},{"level":3,"title":"PW: Compose desktop + Android app","slug":"pw-compose-desktop-android-app","link":"#pw-compose-desktop-android-app","children":[]}]},{"level":2,"title":"Further reading","slug":"further-reading","link":"#further-reading","children":[]}],"git":{"updatedTime":1686068618000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":14},{"name":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":1}]},"filePathRelative":"en/front-development/README.md"}');export{e as data}; diff --git a/assets/index.html-c4e1d1bc.js b/assets/index.html-c4e1d1bc.js new file mode 100644 index 00000000..8cb8383f --- /dev/null +++ b/assets/index.html-c4e1d1bc.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-644cf33e","path":"/fr/other-technologies/","title":"Application multiplateforme et Fullstack Codelab","lang":"fr-FR","frontmatter":{},"headers":[{"level":2,"title":"TP : Application multiplateforme + KMM + KMP pour Android, iOS et ordinateur de bureau","slug":"tp-application-multiplateforme-kmm-kmp-pour-android-ios-et-ordinateur-de-bureau","link":"#tp-application-multiplateforme-kmm-kmp-pour-android-ios-et-ordinateur-de-bureau","children":[]},{"level":2,"title":"PW : Ajouter une application serveur Ktor","slug":"pw-ajouter-une-application-serveur-ktor","link":"#pw-ajouter-une-application-serveur-ktor","children":[]},{"level":2,"title":"PW : Ajouter une cible Compose for Web Canvas (expérimental)","slug":"pw-ajouter-une-cible-compose-for-web-canvas-experimental","link":"#pw-ajouter-une-cible-compose-for-web-canvas-experimental","children":[]}],"git":{"updatedTime":1686068618000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":4},{"name":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":2}]},"filePathRelative":"fr/other-technologies/README.md"}');export{e as data}; diff --git a/assets/index.html-cd45fdc2.js b/assets/index.html-cd45fdc2.js new file mode 100644 index 00000000..a4094db4 --- /dev/null +++ b/assets/index.html-cd45fdc2.js @@ -0,0 +1 @@ +import{_ as o}from"./logo_worldline-35dfdc75.js";import{_ as i,r as s,o as l,c,a as e,b as n,d as t,e as a}from"./app-a89e3102.js";const h={},d=a('

    Welcome

    Who we are

    avatar

    We design payments technology that powers the growth of millions​ of businesses around the world. Engineering the next frontiers​ in payments technology​

    • Leader in payment and secured transactions
    • Over 50bn transactions/year​
    • 7000+ engineers​ in over 40 countries
    • A huge & diverse​ tech-stack
    ',5),u={class:"custom-container tip"},f=e("p",{class:"custom-container-title"},"TIP",-1),_={href:"/fr/",target:"_blank",rel:"noopener noreferrer"},p={href:"/fr/",target:"_blank",rel:"noopener noreferrer"},m=a('

    Prerequisites

    • Basic knowledge of object-oriented language like Java
    • Prepare your dev environment and install stuff before the session (see Tooling section)
    ',3),g={href:"https://kotlinlang.org/docs/home.html",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/worldline/learning-kotlin",target:"_blank",rel:"noopener noreferrer"};function k(x,v){const r=s("ExternalLinkIcon");return l(),c("div",null,[d,e("div",u,[f,e("p",null,[n("This training is also available in "),e("a",_,[n("French"),t(r)]),n(" / Cette formation est aussi disponible en "),e("a",p,[n("Français"),t(r)])])]),m,e("ul",null,[e("li",null,[e("a",g,[n("Official Kotlin documentation"),t(r)])]),e("li",null,[e("a",b,[n("Github repository for this training"),t(r)])])])])}const B=i(h,[["render",k],["__file","index.html.vue"]]);export{B as default}; diff --git a/assets/index.html-cf1cb754.js b/assets/index.html-cf1cb754.js new file mode 100644 index 00000000..992c1494 --- /dev/null +++ b/assets/index.html-cf1cb754.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-6a3222ff","path":"/fr/kotlin-features-advanced/","title":"Fonctionnalités avancées de Kotlin","lang":"fr-FR","frontmatter":{},"headers":[{"level":2,"title":"Propriétés déléguées","slug":"proprietes-deleguees","link":"#proprietes-deleguees","children":[]},{"level":2,"title":"Concurrence et coroutines","slug":"concurrence-et-coroutines","link":"#concurrence-et-coroutines","children":[]},{"level":2,"title":"Littéral de fonction avec récepteur et constructeurs de type sécurisé","slug":"litteral-de-fonction-avec-recepteur-et-constructeurs-de-type-securise","link":"#litteral-de-fonction-avec-recepteur-et-constructeurs-de-type-securise","children":[]},{"level":2,"title":"Exercises","slug":"exercises","link":"#exercises","children":[{"level":3,"title":"Exercise 1","slug":"exercise-1","link":"#exercise-1","children":[]}]}],"git":{"updatedTime":1680621539000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":2}]},"filePathRelative":"fr/kotlin-features-advanced/README.md"}');export{e as data}; diff --git a/assets/index.html-d08806ac.js b/assets/index.html-d08806ac.js new file mode 100644 index 00000000..139215bf --- /dev/null +++ b/assets/index.html-d08806ac.js @@ -0,0 +1 @@ +import{_ as s,a,b as r,c as i,d}from"./fs-kmp-webcanvas-architecture.drawio-2659deec.js";import{_ as c,r as h,o as p,c as u,a as e,d as l,b as o,e as n}from"./app-a89e3102.js";const m="/learning-kotlin/assets/compose-web-demo-d50aa5c6.png",f={},_=e("h1",{id:"cross-plaform-and-fullstack-app-codelab",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#cross-plaform-and-fullstack-app-codelab","aria-hidden":"true"},"#"),o(" Cross-plaform and Fullstack app Codelab")],-1),g=e("h2",{id:"pw-cross-platform-app-kmm-kmp-for-android-ios-and-desktop",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#pw-cross-platform-app-kmm-kmp-for-android-ios-and-desktop","aria-hidden":"true"},"#"),o(" PW : Cross-platform app + KMM + KMP for Android, iOS and Desktop")],-1),b=e("p",null,"By combining KMP, KMM and Compose, it is possible to fully develop cross-platform mobile and desktop apps using only Kotlin.",-1),k={href:"https://worldline.github.io/learning-kotlin-multiplatform/",target:"_blank",rel:"noopener noreferrer"},w=e("img",{src:s,alt:"kmp codelab",loading:"lazy"},null,-1),v=e("br",null,null,-1),A={href:"https://worldline.github.io/learning-kotlin-multiplatform/",target:"_blank",rel:"noopener noreferrer"},x=e("h2",{id:"pw-add-a-ktor-server-app",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#pw-add-a-ktor-server-app","aria-hidden":"true"},"#"),o(" PW : Add a Ktor server App")],-1),j=e("p",null,"We'll extend the previous app with a Ktor server and a React web client. The project will have the following architecture. This architecture choice may be subject to discussion, but we'll stick with this for now.",-1),y=e("p",null,[e("img",{src:a,alt:"architecture",loading:"lazy"})],-1),M=n("
  • Add a module into the project called sharedFullStack which will contain:
    • In commonMain: Some shared code that will by used by the shared project.
    • In jvmMain: A Ktor server that serves a Rest API to provide the questions and hosts some html files. One of the HTML files will load a react app that will be developed in Kotlin/JS.
    • In jsMain: A react web client. This target will only generate the JS code, the HTML page that loads this will be provided by Ktor server as explained above.
    • 💡 With IntelliJ you can right click on xxxMain/kotlin and xxxMain/resources folders and use Mark Directory as to get more support from the IDE.
  • ",1),S=n("
  • plugins: multiplatform, serialilzation and application. The latter will be used to specify the main file the server which will be run with the run task.
  • Add the kotlin("multiplatform") plugin and target all possible platforms (web, desktop, jvm ans mobile) for completeness.
  • The depdencies should be as follows:
    • commonMain: kotr client (since we want to add the API client into the shared code)
    • jvmMain: ktor server + json sertialzation + cors (so that the html can load the JS)
    • jsMain: Kotlin React
  • We need to add two tasks, the first one produces the JS react app and the other one copies into the resources of the Ktor server
  • Set the main class of the application plugin.
  • ",5),C={href:"https://github.com/worldline/learning-kotlin/blob/main/material/kmm-fullstack-demo/sharedFullStack/build.gradle.kts",target:"_blank",rel:"noopener noreferrer"},T=n("
  • Move the API model and client files from shared to sharedFullStack (Anwser, Quiz, Question, QuizAPI and QuizRepository)
  • ⚠️ Some things to take note of:
    • In the android build file, add io.netty.versions.properties and INDEX.LIST to
    • Our global clean task may conflict with Kotlin/JS's one, if that the case, we can fix this by renaming our clean task in the root build.gradle.kts packagingOptions excludes.
  • Write the necessary code for both the server and the client. The server should provide these endpoints:
    • A GET on / provides an html file that loads sharedFullStack.js because this is the name of the JS that is generated.
    • A GET on /quiz provides a JSON of server generated Quiz
    • A GET on /quiz.html servers a server generated HTML page using the HTML DSL
  • Change the QuizAPI class so that it calls our local server http://localhost:8081/quiz and remove the arguments of the json method above since the server sets the correct headers.
  • Launch the gradle task "application -> run" of the sharedFullStack module, which will copy the generated JS into the Ktor server ressources folder.
  • Open http://localhost:8081 to run the react App
  • ",6),W=e("p",null,[e("img",{src:r,alt:"kmm-fs-react-demo",loading:"lazy"})],-1),I=e("ul",null,[e("li",null,"Run the desktop app which fetches the quiz from the local server.")],-1),K=e("p",null,[e("img",{src:i,alt:"",loading:"lazy"})],-1),J=e("ul",null,[e("li",null,"Testing on mobile is a little bit more complex because localhost may be mapped to another address non secure HTTP is blocked by default.")],-1),z={href:"https://github.com/worldline/learning-kotlin/tree/main/material/kmm-fullstack-demo",target:"_blank",rel:"noopener noreferrer"},L=e("strong",null,"sharedFullStack",-1),P=e("h2",{id:"pw-add-a-compose-for-web-canvas-target-experimental",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#pw-add-a-compose-for-web-canvas-target-experimental","aria-hidden":"true"},"#"),o(" PW: Add a Compose for Web Canvas target (experimental)")],-1),B=e("p",null,"Compose for Web Canvas allows to use the same API surface as Compose Desktop and Android. Let's add another module to try this out.",-1),D=e("p",null,[e("img",{src:d,alt:"architecture web canvas",loading:"lazy"})],-1),q=e("li",null,[o("In the root "),e("strong",null,"settings.gradle.kts"),o(", add this maven repository "),e("code",null,'maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")'),o(" that has Compose for Web Canvas dependencies.")],-1),E=e("li",null,[o("In "),e("strong",null,"gradle.properties"),o(" add this line "),e("code",null,"org.jetbrains.compose.experimental.jscanvas.enabled=true"),o(".")],-1),R=e("strong",null,"shared",-1),F=e("code",null,"js(IR) { browser() }",-1),H=e("strong",null,"jsMain",-1),O=e("code",null,"compose.web.core",-1),V=e("code",null,"compose.ui",-1),N=e("code",null,"compose.material3",-1),Q=e("code",null,"Platform",-1),G=e("code",null,"App",-1),U={href:"https://github.com/worldline/learning-kotlin/tree/main/material/kmm-fullstack-demo/shared/src/jsMain/kotlin/com/devoxxfr2023/km",target:"_blank",rel:"noopener noreferrer"},X=e("li",null,[o("Add a module named "),e("strong",null,"composeWebCanvasApp"),o(" and define it as a Kotlin/JS web app. "),e("ul",null,[e("li",null,[o("add "),e("code",null,"src/jsMain/kotlin"),o(" folder and "),e("code",null,"src/jsMain/resources"),o(" folder")]),e("li",null,[o("💡 With IntelliJ you can right click on these folders and use "),e("strong",null,"Mark Directory as"),o(" to get more help later from the IDE.")])])],-1),Y=e("strong",null,"js",-1),Z={href:"https://github.com/worldline/learning-kotlin/blob/main/material/kmm-fullstack-demo/composeWebCanvasApp/build.gradle.kts",target:"_blank",rel:"noopener noreferrer"},$=e("li",null,[o("The one that is generated by Kotlin/JS and should be named "),e("strong",null,"composeWebCanvasApp.js"),o(".")],-1),ee=e("li",null,[e("strong",null,"skiko.js"),o(" which is dependency of Compose for Web Canvas.")],-1),oe={href:"https://github.com/worldline/learning-kotlin/blob/main/material/kmm-fullstack-demo/composeWebCanvasApp/src/jsMain/resources/index.html",target:"_blank",rel:"noopener noreferrer"},te=e("code",null,"App()",-1),le=e("code",null,"Text",-1),ne={href:"https://github.com/worldline/learning-kotlin/blob/main/material/kmm-fullstack-demo/composeWebCanvasApp/src/jsMain/kotlin/tech/worldline/demo/BrowserViewportWindow.kt",target:"_blank",rel:"noopener noreferrer"},se=e("code",null,"BrowserViewportWindow",-1),ae={href:"https://github.com/worldline/learning-kotlin/blob/main/material/kmm-fullstack-demo/composeWebCanvasApp/src/jsMain/kotlin/tech/worldline/demo/AppTheme.kt",target:"_blank",rel:"noopener noreferrer"},re={href:"https://github.com/worldline/learning-kotlin/blob/main/material/kmm-fullstack-demo/composeWebCanvasApp/src/jsMain/kotlin/tech/worldline/demo/MainWeb.kt",target:"_blank",rel:"noopener noreferrer"},ie=e("li",null,[o("Run the app by launching the "),e("code",null,"jsBrowserDevelopmentRun"),o(" gradle task of the "),e("strong",null,"composeWebCanvasApp"),o(" module.")],-1),de=e("p",null,[e("img",{src:m,alt:"",loading:"lazy"})],-1),ce={href:"https://github.com/worldline/learning-kotlin/tree/main/material/kmm-fullstack-demo",target:"_blank",rel:"noopener noreferrer"},he=e("strong",null,"composeWebCanvasApp",-1),pe=e("h2",{id:"going-futher",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#going-futher","aria-hidden":"true"},"#"),o(" Going futher")],-1),ue=e("ul",null,[e("li",null,"Add a Compose Web target to the project")],-1),me=e("h2",{id:"sources-and-references",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#sources-and-references","aria-hidden":"true"},"#"),o(" Sources and references")],-1),fe={href:"https://github.com/kotlin-hands-on/jvm-js-fullstack",target:"_blank",rel:"noopener noreferrer"},_e={href:"https://kotlinlang.org/docs/multiplatform-full-stack-app.html",target:"_blank",rel:"noopener noreferrer"},ge={href:"https://kotlinlang.org/docs/js-react.htm",target:"_blank",rel:"noopener noreferrer"},be={href:"https://github.com/JetBrains/skiko",target:"_blank",rel:"noopener noreferrer"},ke={href:"https://github.com/burnoo/DemoListApp",target:"_blank",rel:"noopener noreferrer"};function we(ve,Ae){const t=h("ExternalLinkIcon");return p(),u("div",null,[_,g,b,e("p",null,[e("a",k,[w,l(t)]),v,e("em",null,[o("This pw is so huge "),e("a",A,[o("that it has its own codelab"),l(t)])])]),x,j,y,e("ul",null,[M,e("li",null,[o("Update the build file of this new module as follows: "),e("ul",null,[S,e("li",null,[o("The file should "),e("a",C,[o("look as follows"),l(t)])])])]),T]),W,I,K,J,e("p",null,[o("The final project is "),e("a",z,[o("available here"),l(t)]),o(" in the "),L,o(" module.")]),P,B,D,e("ul",null,[q,E,e("li",null,[o("In the "),R,o(" module's build file, add a "),F,o(" target and a "),H,o(" sourceSet with these dependencies: "),O,o(", "),V,o(" and "),N,e("ul",null,[e("li",null,[o("Implement the "),Q,o(" file and provide a composable for the "),G,o(". Here is an "),e("a",U,[o("example implementation"),l(t)])])])]),X,e("li",null,[o("Set the "),Y,o(" target in the build file with Compose for Web Canvas dependencies "),e("ul",null,[e("li",null,[o("The build file should be similar "),e("a",Z,[o("to this one"),l(t)])])])]),e("li",null,[o("In the resources folder, create an index.html file that loads the JS files: "),e("ul",null,[$,ee,e("li",null,[o("Here is an example "),e("a",oe,[o("of such file"),l(t)])])])]),e("li",null,[o("⚠️ The current "),te,o(" imported from main crashes on this target because we are not using precompose for the web. In the current correction we just place a "),le,o(" while we look for a fix. "),e("ul",null,[e("li",null,[o("Add this "),e("a",ne,[o("Kotlin file"),l(t)]),o(" which defines a "),se,o(" that allows to render a composable into a Canvas.")]),e("li",null,[o("Add this "),e("a",ae,[o("Kotlin file"),l(t)]),o(" which defines a default theme for the App")]),e("li",null,[o("The main Kotlin file has "),e("a",re,[o("the following code"),l(t)])])])]),ie]),de,e("p",null,[o("The final project is "),e("a",ce,[o("available here"),l(t)]),o(" in the "),he,o(" module.")]),pe,ue,me,e("ul",null,[e("li",null,[e("a",fe,[o("Full Stack JVM & JS App Hands-On Lab"),l(t)])]),e("li",null,[e("a",_e,[o("Build a full-stack web app with Kotlin Multiplatform"),l(t)])]),e("li",null,[e("a",ge,[o("Build a web application with React and Kotlin/JS — tutorial"),l(t)])]),e("li",null,[e("a",be,[o("JetBrains/skiko"),l(t)])]),e("li",null,[e("a",ke,[o("burnoo/DemoListApp"),l(t)])])])])}const ye=c(f,[["render",we],["__file","index.html.vue"]]);export{ye as default}; diff --git a/assets/index.html-d6c6bffa.js b/assets/index.html-d6c6bffa.js new file mode 100644 index 00000000..d43091c1 --- /dev/null +++ b/assets/index.html-d6c6bffa.js @@ -0,0 +1,193 @@ +import{_ as r,r as o,o as c,c as u,a as n,b as s,d as a,w as i,e}from"./app-a89e3102.js";const d={},k=n("h1",{id:"backend-development",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#backend-development","aria-hidden":"true"},"#"),s(" Backend development")],-1),m={href:"https://spring.io/blog/2017/01/04/introducing-kotlin-support-in-spring-framework-5-0",target:"_blank",rel:"noopener noreferrer"},v={href:"https://quarkus.io/guides/kotlin",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/ktorio/ktor",target:"_blank",rel:"noopener noreferrer"},h={href:"https://kotlinlang.org/docs/server-overview.html#deploying-kotlin-server-side-applications",target:"_blank",rel:"noopener noreferrer"},b={href:"https://medium.com/@touskar/une-application-nodejs-avec-kotlin-1969994fb1d2",target:"_blank",rel:"noopener noreferrer"},f=n("h2",{id:"ktor",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#ktor","aria-hidden":"true"},"#"),s(" Ktor")],-1),y=n("p",null,"Ktor is a cross-platform Kotlin library for building both HTTP clients and servers. This makes Ktor a useful library to learn for both front-end developers for its HTTP client capabilities and backend-development for its HTTP server capabilities. In the following, we'll create a REST API with Ktor server.",-1),_=n("h3",{id:"pw-develop-an-api-with-ktor",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#pw-develop-an-api-with-ktor","aria-hidden":"true"},"#"),s(" PW: develop an API with Ktor")],-1),w={href:"https://start.ktor.io/",target:"_blank",rel:"noopener noreferrer"},q=e("
  • Click on "Generate project".
  • Download the archive, unzip it, and open the project with IntelliJ.
  • Create a models package and add to it a Customer data class with these immutable properties id: String, firstName: String, lastName: String, email: String.
  • Annotate the class with @Serializable.
  • Create a new package named routes and add to it a file CustomerRoutes.kt that will contain the code for the /customer endpoint.
  • The code below provides the implementation of some endpoints. Please implement the remaining ones.
  • To enable the route call customerRouting() in the routing configuration file located in plugins/Routing.kt.
  • For simplicity, use a global in-memory list of customers val store = mutableListOf<Customer>().
  • Run the server by running the main method.
  • Test the api on the IDE by using an http file or using any other client.
  • ",10),S=e(`
    CustomerRoutes.kt
    val store = mutableListOf<Customer>()
    +
    +fun Route.customerRouting() {
    +    route("/customer") {
    +        get {
    +            call.respond(store)
    +        }
    +        get("{id?}") {
    +            val id = call.parameters["id"] ?: return@get call.respondText(
    +                "Missing id",
    +                status = HttpStatusCode.BadRequest
    +            )
    +            val customer =
    +                store.find { it.id == id } ?: return@get call.respondText(
    +                    "No customer with id $id",
    +                    status = HttpStatusCode.NotFound
    +                )
    +            call.respond(customer)
    +        }
    +        post {
    +            val customer = call.receive<Customer>()
    +            store.add(customer)
    +            call.respondText("Customer stored correctly", status = HttpStatusCode.Created)
    +        }
    +        delete("{id?}") {
    +
    +        }
    +    }
    +}
    +
    plugins/Routing.kt
    fun Application.configureRouting() {
    +    routing {
    +        customerRouting()
    +    }
    +}
    +
    `,2),I={class:"custom-container tip"},x=e(`

    return@label

    You can specify which level you want to return with an explicit label using return@lambda.

    lambdaA {
    +    lambdaB {
    +        lambdaC {
    +            val randomInt = Random.nextInt(0, 100)
    +            if (randomInt > 50) return@lambdaC else return@lambdaB
    +        }
    +        printf("In lambdaB")
    +    }
    +}
    +
    `,3),C={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbi5yYW5kb20uUmFuZG9tXG5cbi8vIHJldHVybiB3aXRoIGltcGxpY2l0IGxhYmVsc1xuXG5mdW4gbWFpbigpIHtcbiAgIHZhbCBrb3RsaW4gPSBcIvCfmYJcIlxuICAga290bGluLmxldCB7XG4gICAgICAgaXQuYXBwbHkge1xuXHRcdFx0dmFsIHJhbmRvbUludCA9IFJhbmRvbS5uZXh0SW50KDAsIDEwMClcbiAgICAgICAgICAgIHByaW50bG4ocmFuZG9tSW50KVxuICAgICAgICAgICAgaWYgKHJhbmRvbUludCA+IDUwKSByZXR1cm5AYXBwbHkgZWxzZSByZXR1cm5AbGV0XG4gICAgICAgfVxuICAgICAgIHByaW50bG4oXCJpbnQgbGV0IGFmdGVyIGFwcGx5XCIpXG4gICB9XG59In0=",target:"_blank",rel:"noopener noreferrer"},T=e(`
    CustomerTest.http
    POST http://127.0.0.1:8080/customer
    +Content-Type: application/json
    +
    +{
    +  "id": "100",
    +  "firstName": "Jane",
    +  "lastName": "Smith",
    +  "email": "jane.smith@company.com"
    +}
    +
    +
    +###
    +POST http://127.0.0.1:8080/customer
    +Content-Type: application/json
    +
    +{
    +  "id": "200",
    +  "firstName": "John",
    +  "lastName": "Smith",
    +  "email": "john.smith@company.com"
    +}
    +
    +###
    +POST http://127.0.0.1:8080/customer
    +Content-Type: application/json
    +
    +{
    +  "id": "300",
    +  "firstName": "Mary",
    +  "lastName": "Smith",
    +  "email": "mary.smith@company.com"
    +}
    +
    +
    +###
    +GET http://127.0.0.1:8080/customer
    +Accept: application/json
    +
    +###
    +GET http://127.0.0.1:8080/customer/200
    +Accept: application/json
    +
    +###
    +GET http://127.0.0.1:8080/customer/500
    +Accept: application/json
    +
    +###
    +DELETE http://127.0.0.1:8080/customer/100
    +
    +###
    +DELETE http://127.0.0.1:8080/customer/500
    +
    `,1),P={href:"https://ktor.io/docs/creating-http-apis.html",target:"_blank",rel:"noopener noreferrer"},A=n("h2",{id:"nodejs",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#nodejs","aria-hidden":"true"},"#"),s(" nodejs")],-1),j=n("p",null,"Thanks to Kotlin/JS, we can write apps that targets nodejs using Kotlin.",-1),R=n("strong",null,"external declaration",-1),E={href:"https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/-js-module/",target:"_blank",rel:"noopener noreferrer"},G={href:"https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/-js-non-module/",target:"_blank",rel:"noopener noreferrer"},J={href:"https://github.com/Kotlin/dukat",target:"_blank",rel:"noopener noreferrer"},B=n("p",null,"Fortunately for us, the next PW uses Express for which we can find an external type declaration.",-1),K=n("h3",{id:"pw-rest-api-with-kotlin-js-and-express",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#pw-rest-api-with-kotlin-js-and-express","aria-hidden":"true"},"#"),s(" PW: Rest API with Kotlin/JS and Express")],-1),M=n("li",null,"In IntelliJ, create a new nodejs project",-1),O=n("strong",null,"build.gradle.ts",-1),D=n("li",null,[s("Set the kotlin version to the latest one in the "),n("code",null,'kotlin("js")'),s(" line")],-1),L={href:"https://expressjs.com/",target:"_blank",rel:"noopener noreferrer"},N=n("strong",null,"Express",-1),W={href:"https://github.com/chrisnkrueger/kotlin-express",target:"_blank",rel:"noopener noreferrer"},V=n("code",null,"useCommonJs()",-1),H=n("code",null,"js",-1),X={href:"https://github.com/Kotlin/dukat/issues/106",target:"_blank",rel:"noopener noreferrer"},Y={href:"https://github.com/chrisnkrueger/kotlin-express",target:"_blank",rel:"noopener noreferrer"},F=e(`
    implementation(npm("express", "> 4.0.0 < 5.0.0"));
    +implementation("dev.chriskrueger:kotlin-express:1.2.0");
    +
    • Modify main.kt as follows. This created a REST API server that listens to port 3000 and provides a GET /hello endpoint
    data class Message(val id: Int, val message: String)
    +
    +fun main() {
    +    val messages = listOf(Message(0, "I love Kotlin/JS"))
    +    val app = express.Express()
    +    app.get("/hello") { req, res ->
    +        res.send(messages)
    +    }
    +
    +    app.listen(3000) {
    +        console.log("server start at port 3000")
    +    }
    +}
    +
    `,3),Z=n("li",null,[s("Run the task "),n("code",null,"nodeRun"),s(" from IntelliJ of from the command line (if you have Gradle installed) "),n("ul",null,[n("li",null,[s("If you encounter an error with Yarn lock, please run the task "),n("code",null,"kotlinUpgradeYarnLock"),s(" and try again")])])],-1),U=n("li",null,"Add POST, PUT and DELETE endpoints",-1),z=n("code",null,"req.body",-1),Q=n("strong",null,"body parser",-1),$=n("li",null,[s("For a JSON body, we need to call "),n("code",null,"app.use(bodyParser.json())"),s(".")],-1),nn={href:"https://www.npmjs.com/package/body-parser",target:"_blank",rel:"noopener noreferrer"},sn=n("strong",null,"bodyParser",-1),an={href:"https://github.com/chrisnkrueger/kotlin-express",target:"_blank",rel:"noopener noreferrer"},tn=n("strong",null,"bodyParser",-1),en={href:"https://www.npmjs.com/package/body-parser?activeTab=code",target:"_blank",rel:"noopener noreferrer"},on={href:"https://github.com/worldline/learning-kotlin/blob/main/material/kotlin-nodejs-demo/src/main/kotlin/BodyParser.kt",target:"_blank",rel:"noopener noreferrer"},ln=n("h2",{id:"spring-framework",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#spring-framework","aria-hidden":"true"},"#"),s(" Spring framework")],-1),pn=n("p",null,"Spring is a famous framework for developing server-side applications: APIs, server generated web pages, microservices, etc. It relies on the the Java ecosystem to build and run, thus making it compatible with Kotlin. Even better, Spring officially supports Kotlin. It even allows in start a new project with Kotlin and Gradle-Kotlin. In the next section, we'll use this starter to recreate our above REST API with Spring.",-1),rn=n("h3",{id:"pw-spring-boot-part-1-develop-the-same-api-with-spring-boot",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#pw-spring-boot-part-1-develop-the-same-api-with-spring-boot","aria-hidden":"true"},"#"),s(" PW: Spring boot part 1 - develop the same API with Spring Boot")],-1),cn={href:"https://start.spring.io/",target:"_blank",rel:"noopener noreferrer"},un=n("li",null,"Choose Kotlin as the language and Kotlin-Grade as the project manager.",-1),dn=n("li",null,[s("Add these dependencies: "),n("strong",null,"Spring Web"),s(" and "),n("strong",null,"Spring Boot DevTools"),s(".")],-1),kn={href:"https://marketplace.visualstudio.com/search?term=kotlin&target=VSCode&category=All%20categories&sortBy=Relevance",target:"_blank",rel:"noopener noreferrer"},mn={href:"https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack",target:"_blank",rel:"noopener noreferrer"},vn=n("li",null,[s("Check that plugins part "),n("code",null,"build.gradle.kts"),s(" uses the latest version of Kotlin. Here is what is should look like with with Kotlin "),n("em",null,"1.8.10"),s(":")],-1),gn=e(`
    plugins {
    +	id("org.springframework.boot") version "3.0.4"
    +	id("io.spring.dependency-management") version "1.1.0"
    +	kotlin("jvm") version "1.8.10"
    +	kotlin("plugin.spring") version "1.8.10"
    +}
    +
    `,1),hn=e("
  • Create the same Customer data class in the model package withotut the @Serializable annotation.
  • Create a controller package that contains a CustomerController class which provides a CRUD using a global list. You can find a skeleton below.
    • 💡 In Spring, Rest controllers serve the purpose of Ktor routes, where a controller defines a REST resource.
  • Define the same endpoints as in the previous PW.
  • Start the REST API server by running:
    • On Powershell: .\\gradlew.bat bootRun
    • Any Unix shell: .\\gradlew bootRun
    • IntelliJ already provides run configurations for spring boot projects.
  • ",4),bn={href:"https://github.com/worldline/learning-kotlin/blob/main/material/spring-boot-kt-api/customer.jetbrains.http",target:"_blank",rel:"noopener noreferrer"},fn={href:"https://github.com/worldline/learning-kotlin/blob/main/material/spring-boot-kt-api/customer.vscode-resclient.http",target:"_blank",rel:"noopener noreferrer"},yn=e(`
    CustomerController.kt
    val store = mutableListOf<Customer>()
    +
    +@RestController
    +@RequestMapping("/customer")
    +class CustomerController {
    +    @GetMapping
    +    fun getAll() = store
    +
    +    @GetMapping("{id}")
    +    fun getById(@PathVariable id: String) { /* TODO: implement */ }
    +
    +    @PostMapping
    +    fun addOne(@RequestBody customer: Customer) { /* TODO: implement */ }
    +
    +    @DeleteMapping("{id}")
    +    fun deleteOne(@PathVariable id: String) { /* TODO: implement */ }
    +}
    +

    Models or model package ? plural or not ?

    Both are ok as long as you follow the same convention in the project.

    PW: Spring boot part 2 - adding a database

    Let's go a little bit further by storing data in a database and writing some tests.

    We'll use the H2 in-memory database for the sake of simplicity, since it does not require a server to run. Classes will mapped to database tables with JPA annotations. The database API we'll be using is called JPARepository. It is a lightweight API that provides common CRUD features by just defining an interface.

    On the testing side, we'll see two different syntaxes. The default one that is more familiar with Java style and the DSL one which is more readable and more familiar with Kotlin developers.

    `,6),_n={href:"https://start.spring.io/",target:"_blank",rel:"noopener noreferrer"},wn=e("
  • Open the project and add this class in the model package @Entity class Product(@Id @GeneratedValue var id: Long? = null, var name: String, var price: Int). This single defines the class as well as the minimal JPA annotations (@Entity, @Id and @GeneratedValue) to generate the corresponding table.
  • In the repository package, declare the ProductRepository interface as follows interface ProductRepository: JpaRepository<Product, Long>. This is enough for Spring to generate an implementation with common features as we'll see later.
  • Next, create a ProductService class which will contain the business logic. In terms of architecture, the controller calls a service which in turn rely on other services or repositories.
  • ",3),qn=e(`
    ProductService.kt
    @Service
    +class ProductService(@Autowired val productRepository: ProductRepository) {
    +    fun getAll() = productRepository.findAll()
    +
    +    // use findByIdOrNull instad of findById because the latter returns an optional<Product> instead of Product?
    +    fun getById(id: Long) = productRepository.findByIdOrNull(id)
    +}
    +
    • In the controller package, create a ProductController class that is mapped to /product and injects the with @Autowired. Reply to @Get as follows.
    ProductController.kt
    @RestController
    +@RequestMapping("/product")
    +class ProductController(@Autowired val productService: ProductService) {
    +    @GetMapping fun getAll() = productService.getAll()
    +
    +    @GetMapping("{id}")
    +    fun getById(@PathVariable id: Long) =
    +        productService.getById(id) ?: throw ResponseStatusException(HttpStatus.NOT_FOUND)
    +}
    +
    `,3),Sn={class:"custom-container tip"},In=e(`

    Kotlin makes getById(@PathVariable id: Long) more concise

    The Elvis operator ?: allows to simplify the code. Here is a longer version as reference.

    @GetMapping("{id}")
    +fun getById(@PathVariable id: Long): Product {
    +    val product = productService.getById(id)
    +    if (product != null){
    +        return product
    +    }
    +    throw ResponseStatusException(HttpStatus.NOT_FOUND)
    +}
    +
    `,3),xn=n("code",null,"@ControllerAdvice",-1),Cn={href:"https://spring.io/guides/tutorials/rest/",target:"_blank",rel:"noopener noreferrer"},Tn=e(`
    • Let's run the project. Before running the project, we need to add a plugin that allows Kotlin classes to generate a default constructor id("org.jetbrains.kotlin.plugin.jpa") version "1.8.10". The plugins should look as follows:
    plugins {
    +    id("org.jetbrains.kotlin.plugin.jpa") version "1.8.10"
    +	id("org.springframework.boot") version "3.0.4"
    +	id("io.spring.dependency-management") version "1.1.0"
    +	kotlin("jvm") version "1.8.10"
    +	kotlin("plugin.spring") version "1.8.10"
    +}
    +
    • As an exercise, implement these endpoints: POST a single product, DELETE by id (/product/{id}) and GET by id (/product/{id}).
      • Hint: ProductController already provides the necessary methods.
    • Call the different endpoints with a REST client.

    PW: Spring boot part 2 - adding tests

    Spring frameworks helps perform different types of tests by providing different classes out of the box:

    • Unit testing of services, repositories and the REST API. This is done through mock utilities such as MockMVC.
    • Integration testing of the REST API using TestRestTemplate. In this situation, a full server is run and tested.

    Most, if not all classes provided by Spring provide an elegant syntax for Java developers. Some of them go further by taking advantage of Kotlin specific features. In the following, we're going to focus on parts that provide Kotlin DSLs, namely unit testing the REST API with MockMVC.

    • Create a test class ProductControllerUnitTests with this initial content. MockMvc allows to unit test the REST API. The @AutoConfigureMockMvc annotation allows spring to configure it automatically
    @SpringBootTest
    +@AutoConfigureMockMvc
    +class ProductControllerTests(
    +    @Autowired val mockMvc: MockMvc,
    +    @Autowired val productRepository: ProductRepository) {
    +
    +    @BeforeEach
    +    fun reset(){
    +        productRepository.deleteAll()
    +    }
    +}
    +
    • Add these two tests. The first one uses a classic approach while the second take advantage of Kotlin DSL capabilities. In addition to that, we name using a more readable string literal
    `,10),Pn=n("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[n("pre",{class:"language-kotlin"},[n("code",null,[n("span",{class:"token annotation builtin"},"@Test"),s(` +`),n("span",{class:"token keyword"},"fun"),s(),n("span",{class:"token function"},"testWithClassicApproach"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},"{"),s(` + mockMvc`),n("span",{class:"token punctuation"},"."),n("span",{class:"token function"},"perform"),n("span",{class:"token punctuation"},"("),n("span",{class:"token keyword"},"get"),n("span",{class:"token punctuation"},"("),n("span",{class:"token string-literal singleline"},[n("span",{class:"token string"},'"/product"')]),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},")"),s(` + `),n("span",{class:"token punctuation"},"."),n("span",{class:"token function"},"andExpect"),n("span",{class:"token punctuation"},"("),n("span",{class:"token function"},"status"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},"."),s("isOk"),n("span",{class:"token punctuation"},")"),s(` + `),n("span",{class:"token punctuation"},"."),n("span",{class:"token function"},"andExpect"),n("span",{class:"token punctuation"},"("),n("span",{class:"token function"},"content"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},"."),n("span",{class:"token function"},"string"),n("span",{class:"token punctuation"},"("),n("span",{class:"token function"},"containsString"),n("span",{class:"token punctuation"},"("),n("span",{class:"token string-literal singleline"},[n("span",{class:"token string"},'"[]"')]),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},")"),s(` +`),n("span",{class:"token punctuation"},"}"),s(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),An=n("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[n("pre",{class:"language-kotlin"},[n("code",null,[n("span",{class:"token annotation builtin"},"@Test"),s(` +`),n("span",{class:"token keyword"},"fun"),s(),n("span",{class:"token function"},"`test GET a single product`"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"{"),s(` + mockMvc`),n("span",{class:"token punctuation"},"."),n("span",{class:"token function"},"get"),n("span",{class:"token punctuation"},"("),n("span",{class:"token string-literal singleline"},[n("span",{class:"token string"},'"/product/1"')]),n("span",{class:"token punctuation"},")"),n("span",{class:"token punctuation"},"."),n("span",{class:"token function"},"andExpect"),s(),n("span",{class:"token punctuation"},"{"),s(` + status `),n("span",{class:"token punctuation"},"{"),s(),n("span",{class:"token function"},"isOk"),n("span",{class:"token punctuation"},"("),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"}"),s(` + `),n("span",{class:"token function"},"jsonPath"),n("span",{class:"token punctuation"},"("),n("span",{class:"token string-literal singleline"},[n("span",{class:"token string"},'"$.name"')]),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"{"),s(),n("span",{class:"token function"},"value"),n("span",{class:"token punctuation"},"("),n("span",{class:"token string-literal singleline"},[n("span",{class:"token string"},'"A"')]),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"}"),s(` + `),n("span",{class:"token function"},"jsonPath"),n("span",{class:"token punctuation"},"("),n("span",{class:"token string-literal singleline"},[n("span",{class:"token string"},'"$.price"')]),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"{"),s(),n("span",{class:"token function"},"value"),n("span",{class:"token punctuation"},"("),n("span",{class:"token number"},"1"),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"}"),s(` + content `),n("span",{class:"token punctuation"},"{"),s(),n("span",{class:"token function"},"contentType"),n("span",{class:"token punctuation"},"("),s("MediaType"),n("span",{class:"token punctuation"},"."),s("APPLICATION_JSON"),n("span",{class:"token punctuation"},")"),s(),n("span",{class:"token punctuation"},"}"),s(` + `),n("span",{class:"token punctuation"},"}"),s(` +`),n("span",{class:"token punctuation"},"}"),s(` +`)])]),n("div",{class:"line-numbers","aria-hidden":"true"},[n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"}),n("div",{class:"line-number"})])],-1),jn=n("ul",null,[n("li",null,"As an exercise, unit tests for the other endpoints.")],-1),Rn={class:"custom-container tip"},En=e(`

    The request builder of JpaRepository

    Spring repositories implement requests based on the name of their methods. For example, to get all products sorted by name, we can add this method to the interface.

    interface ProductRepository: JpaRepository<Product, Long> {
    +    fun findAllByOrderByNameAsc(): List<Product>;
    +}
    +
    `,3),Gn={href:"https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-creation",target:"_blank",rel:"noopener noreferrer"},Jn=n("h3",{id:"completed-projects",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#completed-projects","aria-hidden":"true"},"#"),s(" Completed projects")],-1),Bn={href:"https://github.com/worldline/learning-kotlin/tree/master/material/ktor-api",target:"_blank",rel:"noopener noreferrer"},Kn={href:"https://github.com/worldline/learning-kotlin/tree/master/material/spring-boot-kt-api",target:"_blank",rel:"noopener noreferrer"},Mn=n("h2",{id:"going-further",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#going-further","aria-hidden":"true"},"#"),s(" Going further")],-1),On=n("p",null,"These official tutorials go even further:",-1),Dn={href:"https://kotlinlang.org/docs/jvm-spring-boot-restful.html",target:"_blank",rel:"noopener noreferrer"},Ln={href:"https://spring.io/guides/tutorials/spring-boot-kotlin/",target:"_blank",rel:"noopener noreferrer"},Nn={href:"https://spring.io/guides/tutorials/rest/",target:"_blank",rel:"noopener noreferrer"},Wn={href:"https://quarkus.io/guides/kotlin",target:"_blank",rel:"noopener noreferrer"},Vn=n("h2",{id:"links-and-references",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#links-and-references","aria-hidden":"true"},"#"),s(" Links and references")],-1),Hn={href:"https://dev.to/mpetuska/js-in-kotlinjs-c4g",target:"_blank",rel:"noopener noreferrer"},Xn={href:"https://www.baeldung.com/kotlin/mockmvc-kotlin-dsl",target:"_blank",rel:"noopener noreferrer"},Yn={href:"https://spring.io/guides/tutorials/spring-boot-kotlin/",target:"_blank",rel:"noopener noreferrer"},Fn={href:"https://www.baeldung.com/kotlin/jpa",target:"_blank",rel:"noopener noreferrer"},Zn={href:"https://stackoverflow.com/questions/47143127/spring-data-jpa-how-to-use-kotlin-nulls-instead-of-optional",target:"_blank",rel:"noopener noreferrer"};function Un(zn,Qn){const t=o("ExternalLinkIcon"),l=o("CodeGroupItem"),p=o("CodeGroup");return c(),u("div",null,[k,n("p",null,[s("Many frameworks officially support Kotlin: "),n("a",m,[s("Spring"),a(t)]),s(", "),n("a",v,[s("Quarkus"),a(t)]),s(", "),n("a",g,[s("Ktor"),a(t)]),s(", among others "),n("a",h,[s("listed here"),a(t)]),s(".")]),n("p",null,[s("In addition to that, Kotlin is theoretically compatible with any framework that targets the JVM or JS. For example, this tutorial shows "),n("a",b,[s("how to use nodejs with Kotlin"),a(t)]),s(". However, frameworks that do not officially support Kotlin may require some tweaking to use it.")]),f,y,_,n("ul",null,[n("li",null,[s("Create a project on "),n("a",w,[s("start.ktor.io"),a(t)]),s(" with the following plugins: Content Negotiation, kotlinx.serialization, and Routing.")]),q]),S,n("div",I,[x,n("p",null,[n("a",C,[s("This code runs another example"),a(t)]),s(".")])]),T,n("p",null,[n("a",P,[s("This page has detailed steps"),a(t)])]),A,j,n("p",null,[s("We can even import npm libraries as long as you declare the JS API surface that you'll be using in Kotlin. This is called "),R,s(" (You can think of it as an equivalent of TypeScript's type definitions) that declares the symbols that we want to access in Kotlin thanks to "),n("a",E,[s("@JsModule"),a(t)]),s(" and "),n("a",G,[s("@JsNonModule"),a(t)]),s(" annotations. Defining such external declarations can be a hassle and there seems to be no official automatic generator ("),n("a",J,[s("dukat"),a(t)]),s(" has been removed in kotlin 1.8.20). In that case, we have two options, either write the external declaration or import it as a dependency if available.")]),B,K,n("ul",null,[M,n("li",null,[s("Once the project is loaded, edit "),O,s(" as follows: "),n("ul",null,[D,n("li",null,[s("Add these two dependencies. The first one is the "),n("a",L,[N,a(t)]),s(" library and the second one is it external definitions provided by "),n("a",W,[s("chrisnkrueger/kotlin-express"),a(t)]),s(".")]),n("li",null,[s("add a "),V,s(" line inside the the "),H,s(" block. This "),n("a",X,[s("is required"),a(t)]),s(" to be able to use "),n("a",Y,[s("chrisnkrueger/kotlin-express"),a(t)]),s(" in our code.")])])])]),F,n("ul",null,[Z,U,n("li",null,[s("Regarding the POST body, Express leaves "),z,s(" undefined unless we specify a "),Q,s(". "),n("ul",null,[$,n("li",null,[n("a",nn,[sn,a(t)]),s(" is an npm library and unfortunately, "),n("a",an,[s("chrisnkrueger/kotlin-express"),a(t)]),s(" does not provide an external definition for "),tn,s(" as of version 1.2.0.")]),n("li",null,[s("Can you try to define it yourself by reading the "),n("a",en,[s("library's code"),a(t)]),s(" ?")]),n("li",null,[s("You can find a solution "),n("a",on,[s("here"),a(t)])])])])]),ln,pn,rn,n("ul",null,[n("li",null,[s("Create a project on "),n("a",cn,[s("start.spring.io (also called Spring initializr)"),a(t)]),s(" with the following dependencies: Spring Web and Spring Boot DevTools.")]),un,dn,n("li",null,[s('Click on "Generate". Download the archive, unzip it, and open the project with IntelliJ (preferably) or VSCode. '),n("ul",null,[n("li",null,[s("For VSCode, install a "),n("a",kn,[s("Kotlin extension"),a(t)]),s(" and "),n("a",mn,[s("Spring Boot Extension Pack"),a(t)]),s(" ( ⚠️ Spring extension do not seem to support kotlin).")])])]),vn]),gn,n("ul",null,[hn,n("li",null,[s("Please test the endpoints with a REST client. You can find http files here in "),n("a",bn,[s("JetBrains format"),a(t)]),s(" or "),n("a",fn,[s("VSCode's REST Client extension"),a(t)])])]),yn,n("ul",null,[n("li",null,[s("Create a new Spring project using "),n("a",_n,[s("Spring initializr"),a(t)]),s(" with Kotlin and the following dependencies: Spring Data JPA, H2 Database, Spring Boot DevTools, Spring Web")]),wn]),qn,n("div",Sn,[In,n("p",null,[s("In addition to that, Spring provides "),xn,s(" to change the exception message. You can see an "),n("a",Cn,[s("example here"),a(t)]),s(".")])]),Tn,a(p,null,{default:i(()=>[a(l,{title:"Without DSL (Test Get All)"},{default:i(()=>[Pn]),_:1}),a(l,{title:"With DSL (Test Get Single)"},{default:i(()=>[An]),_:1})]),_:1}),jn,n("div",Rn,[En,n("p",null,[n("a",Gn,[s("The official documentation"),a(t)]),s(" provides more detailed explanations and examples.")])]),Jn,n("ul",null,[n("li",null,[n("a",Bn,[s("ktor Rest API"),a(t)])]),n("li",null,[n("a",Kn,[s("Spring boot Rest API"),a(t)])])]),Mn,On,n("ul",null,[n("li",null,[n("a",Dn,[s("This tutorial from kotlinlang"),a(t)]),s(" shows how to create a RESTful web service with a database using Spring Boot.")]),n("li",null,[n("a",Ln,[s("This one from spring.io"),a(t)]),s(" show how to build a web application with Spring Boot and Kotlin.")]),n("li",null,[n("a",Nn,[s("Rest ÄPIs with Spring"),a(t)])]),n("li",null,[n("a",Wn,[s("Quarkus and kotlin"),a(t)])])]),Vn,n("ul",null,[n("li",null,[n("a",Hn,[s("JS in Kotlin/JS"),a(t)])]),n("li",null,[n("a",Xn,[s("mockmvc kotlin dsl"),a(t)])]),n("li",null,[n("a",Yn,[s("spring-boot-kotlin tutorial"),a(t)])]),n("li",null,[n("a",Fn,[s("Working with Kotlin and JPA"),a(t)])]),n("li",null,[n("a",Zn,[s("Spring Data JPA How to use Kotlin nulls instead of Optional"),a(t)])])])])}const ns=r(d,[["render",Un],["__file","index.html.vue"]]);export{ns as default}; diff --git a/assets/index.html-e4fee572.js b/assets/index.html-e4fee572.js new file mode 100644 index 00000000..3ee70913 --- /dev/null +++ b/assets/index.html-e4fee572.js @@ -0,0 +1 @@ +const e=JSON.parse(`{"key":"v-2d0a870d","path":"/en/","title":"Welcome","lang":"en-US","frontmatter":{"home":true,"heroImage":"./kotlin_logo.png","tagline":"A beginner's guide to a modern programming language","actions":[{"text":"Get started →","link":"/en/presentation/","type":"primary"}],"features":[{"title":"Language features","details":"null safetry, extenesions, …"},{"title":"Backend development","details":"ktor, spring, …"},{"title":"Frontend development","details":"compose, KMP, …"}],"footer":"Worldline, 2023"},"headers":[{"level":2,"title":"Who we are","slug":"who-we-are","link":"#who-we-are","children":[]},{"level":2,"title":"Prerequisites","slug":"prerequisites","link":"#prerequisites","children":[]},{"level":2,"title":"Useful links","slug":"useful-links","link":"#useful-links","children":[]}],"git":{"updatedTime":1680904850000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":4}]},"filePathRelative":"en/index.md"}`);export{e as data}; diff --git a/assets/index.html-f290d974.js b/assets/index.html-f290d974.js new file mode 100644 index 00000000..eb2a2a4e --- /dev/null +++ b/assets/index.html-f290d974.js @@ -0,0 +1,13 @@ +import{_ as c,r as o,o as l,c as i,a as e,b as n,d as t,e as a}from"./app-a89e3102.js";const u={},p=e("h1",{id:"fonctionnalites-avancees-de-kotlin",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#fonctionnalites-avancees-de-kotlin","aria-hidden":"true"},"#"),n(" Fonctionnalités avancées de Kotlin")],-1),r=e("h2",{id:"proprietes-deleguees",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#proprietes-deleguees","aria-hidden":"true"},"#"),n(" Propriétés déléguées")],-1),d=e("p",null,[n("Kotlin permet de déléguer le getter et le setter d'une propriété à un autre objet, appelé délégué. C'est une classe qui définit les méthodes "),e("code",null,"getValue"),n(" et "),e("code",null,"setValue"),n(".")],-1),g=e("p",null,"Kotlin fournit des délégués standard tels que des propriétés paresseuses et des propriétés observables.",-1),I={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbi5yYW5kb20uUmFuZG9tXG5pbXBvcnQga290bGluLnByb3BlcnRpZXMuRGVsZWdhdGVzXG5pbXBvcnQga290bGluLnJlZmxlY3QuS1Byb3BlcnR5XG5cbmNsYXNzIFN1cGVySGVybyB7XG4gICAgdmFsIHJhbmRvbVN0cmVuZ3RoOiBJbnQgYnkgbGF6eSB7XG4gICAgICAgIHByaW50bG4oXCJjb21wdXRlZFwiKVxuICAgICAgICBSYW5kb20ubmV4dEludCg1MCwgMTAwKVxuICAgIH1cbiAgICBcbiAgICB2YXIgcG93ZXJOYW1lOiBTdHJpbmcgYnkgRGVsZWdhdGVzLm9ic2VydmFibGUoXCJMYXNlclwiKSB7IF8sIG9sZCwgbmV3IC0+XG4gICAgICAgIHByaW50bG4oXCJDaGFuZ2VkIHBvd2VyIGZyb20gJG9sZCB0byAkbmV3XCIpXG4gICAgfVxuICAgIFxuICAgIHZhciBjb2RlTmFtZTogU3RyaW5nIGJ5IENhcGl0YWxpemVEZWxlZ2F0ZSgpXG59XG5cbmNsYXNzIENhcGl0YWxpemVEZWxlZ2F0ZXtcbiAgICB2YXIgdXBwZXJjYXNlZCA9IFwiXCJcbiAgICBvcGVyYXRvciBmdW4gZ2V0VmFsdWUodGhpc1JlZjogQW55PywgcHJvcGVydHk6IEtQcm9wZXJ0eTwqPik6IFN0cmluZyB7XG4gICAgICAgIHByaW50bG4oXCIkdGhpc1JlZiwgdGhhbmsgeW91IGZvciBkZWxlZ2F0aW5nICcke3Byb3BlcnR5Lm5hbWV9JyB0byBtZSFcIilcbiAgICAgICAgcmV0dXJuIHVwcGVyY2FzZWRcbiAgICB9XG5cbiAgICBvcGVyYXRvciBmdW4gc2V0VmFsdWUodGhpc1JlZjogQW55PywgcHJvcGVydHk6IEtQcm9wZXJ0eTwqPiwgdmFsdWU6IFN0cmluZykge1xuICAgICAgICBwcmludGxuKFwiJyR2YWx1ZScgaGFzIGJlZW4gYXNzaWduZWQgdG8gJyR7cHJvcGVydHkubmFtZX0nIGluICR0aGlzUmVmLlwiKVxuICAgICAgICB1cHBlcmNhc2VkID0gdmFsdWUudXBwZXJjYXNlKClcbiAgICB9XG59XG5cbmZ1biBtYWluKCkge1xuICAgdmFsIHN1cGVyTGFuZGVyID0gU3VwZXJIZXJvKClcbiAgIHByaW50bG4oc3VwZXJMYW5kZXIucmFuZG9tU3RyZW5ndGgpXG4gICBwcmludGxuKHN1cGVyTGFuZGVyLnJhbmRvbVN0cmVuZ3RoKVxuICAgXG4gICBzdXBlckxhbmRlci5wb3dlck5hbWUgPSBcInNwZWVkXCJcbiAgICBcbiAgICBzdXBlckxhbmRlci5jb2RlTmFtZSA9IFwic3VwZXJsYW5kZXJcIlxuICAgIHByaW50bG4oc3VwZXJMYW5kZXIuY29kZU5hbWUpXG59In0=",target:"_blank",rel:"noopener noreferrer"},b=a('

    Concurrence et coroutines

    Kotlin fournit un modèle de concurrence de haut niveau appelé Coroutines. Le développeur peut déléguer la gestion des threads au compilateur et à l'exécution et utiliser des constructions de niveau supérieur aux threads pour exprimer des opérations asynchrones.

    Les coroutines de Kotlin tournent autour de ces concepts :

    • Une coroutine est une instance de calcul suspendable.
      • Kotlin a de nombreuses méthodes pour créer une coroutine telle que launch.
    • Une coroutine doit exister dans une portée de coroutine.
      • Par exemple, runBlocking crée une portée de coroutine dans laquelle les coroutines peuvent être lancées.
    • Une coroutine peut exécuter des fonctions de suspension qui peuvent suspendre la coroutine mais ne bloquent pas le thread.
      • Par exemple : le delay suspend la coroutine mais ne bloque pas le thread sur lequel elle s'exécute.
      • Les fonctions de suspension sont des opérations qui peuvent prendre du temps telles que les requêtes http et les appels au système de fichiers.
    • Le qualificateur suspend définit une fonction de suspension. Il s'exécute dans une coroutine et peut appeler d'autres fonctions de suspension.
    • Flow permet de générer une liste de valeurs asynchrones.
    • Deferred et Channel transfèrent respectivement une valeur unique et un flux de valeurs entre coroutines.
    ',4),m={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbnguY29yb3V0aW5lcy4qXG5cbnN1c3BlbmQgZnVuIHJ1blNvbWV0aGluZygpIHtcbiAgICBwcmludGxuKFwic3RhcnRpbmdcIilcbiAgICBkZWxheSg1MDApXG4gICAgcHJpbnRsbihcImZpbmlzaGVkXCIpXG59XG5cbi8vIHJ1bkJsb2NraW5nIGNyZWF0ZXMgYSBDb3JvdXRpbmVTY29wZVxuZnVuIG1haW4oKSA9IHJ1bkJsb2NraW5nIHsgXG4gICAgLy8gbGF1bmNoIGEgbmV3IGNvcm91dGluZVxuICAgIGxhdW5jaCB7IFxuICAgICAgICAvLyBTdXNwZW5kIHRoZSBjb3JvdXRpbmUgYnV0IGRvZXMgbm90IGJsb2NrIHRoZSB0aHJlYWRcbiAgICAgICAgZGVsYXkoMTAwMEwpIFxuICAgICAgICBwcmludGxuKFwiV29ybGQhXCIpIFxuICAgIH1cbiAgICAgICAgXG4gICAgLy8gbWFpbiBjb3JvdXRpbmUgY29udGludWVzIHdoaWxlIGEgcHJldmlvdXMgb25lIGlzIGRlbGF5ZWRcbiAgICBwcmludGxuKFwiSGVsbG9cIikgXG4gICAgXG4gICAgdmFsIGpvYiA9IGxhdW5jaCB7XG4gICAgICAgIHJ1blNvbWV0aGluZygpXG4gICAgfVxuICAgIGpvYi5qb2luKClcbiAgICBydW5Tb21ldGhpbmcoKVxuICAgIFxufSJ9",target:"_blank",rel:"noopener noreferrer"},C={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbnguY29yb3V0aW5lcy4qXG5pbXBvcnQga290bGlueC5jb3JvdXRpbmVzLmZsb3cuKlxuXG5mdW4gZ2VucmF0ZUFzeW5jUmFuZG9tVmFsdWVzKCk6IEZsb3c8SW50PiA9IGZsb3cgeyBcbiAgICBwcmludGxuKFwiRmxvdyBzdGFydGVkXCIpXG4gICAgZm9yIChpIGluIDAuLjEwKSB7XG4gICAgICAgIGRlbGF5KDEwMClcbiAgICAgICAgZW1pdChpKVxuICAgIH1cbn1cblxuLy8gVGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgaW4gbm90IGhhbmRsZWRlZCBjb3JyZWN0bHlcbmZ1biBnZW5yYXRlQXN5bmNSYW5kb21WYWx1ZXNJbmZpbml0ZSgpOiBGbG93PEludD4gPSBmbG93IHsgXG4gICAgcHJpbnRsbihcIkZsb3cgc3RhcnRlZFwiKVxuICAgIHZhciBpID0gMFxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGRlbGF5KDEwMClcbiAgICAgICAgZW1pdChpKVxuICAgICAgICBpICs9IDFcbiAgICB9XG59XG5cblxuXG4vLyBydW5CbG9ja2luZyBjcmVhdGVzIGEgQ29yb3V0aW5lU2NvcGVcbmZ1biBtYWluKCkgPSBydW5CbG9ja2luZzxVbml0PiB7XG4gICAgbGF1bmNoe1xuICAgICAgICBnZW5yYXRlQXN5bmNSYW5kb21WYWx1ZXMoKS5jb2xsZWN0IHtcbiAgICAgICBcdFx0cHJpbnRsbihcIjFzdCBmbG93OiBHb3QgJGl0XCIpXG4gICBcdFx0fVxuICAgIH1cbiAgIFxuICAgbGF1bmNoe1xuICAgICAgIHdpdGhUaW1lb3V0T3JOdWxsKDEwMDApe1xuICAgICAgICAgICBnZW5yYXRlQXN5bmNSYW5kb21WYWx1ZXMoKS5jb2xsZWN0IHtcbiAgICAgICAgICAgcHJpbnRsbihcIjJuZCBmbG93OiBHb3QgJGl0XCIpXG4gICAgICAgICB9XG4gICAgICAgfVxuICAgfVxufSJ9",target:"_blank",rel:"noopener noreferrer"},G={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbnguY29yb3V0aW5lcy4qXG5pbXBvcnQga290bGlueC5jb3JvdXRpbmVzLmNoYW5uZWxzLipcblxuZnVuIG1haW4oKSA9IHJ1bkJsb2NraW5nIHtcbiAgICBcbiAgICAvLyBhc3luYyBsYXVuY2hlcyBhIGNvcm91dGluZXMgYW5kIHJldHVybnMgYSBEZWZlcnJlZDxJbnQ+XG4gICAgdmFsIGRlZmVycmVkID0gYXN5bmMge1xuICAgICAgICA0MlxuICAgIH1cbiAgICBwcmludGxuKGRlZmVycmVkLmF3YWl0KCkpXG5cbiAgICB2YWwgY2hhbm5lbCA9IENoYW5uZWw8SW50PigpXG4gICAgbGF1bmNoIHtcbiAgICAgICAgLy8gdGhpcyBtaWdodCBiZSBoZWF2eSBDUFUtY29uc3VtaW5nIGNvbXB1dGF0aW9uIG9yIGFzeW5jIGxvZ2ljLCB3ZSdsbCBqdXN0IHNlbmQgZml2ZSBzcXVhcmVzXG4gICAgICAgIGZvciAoeCBpbiAxLi41KSBjaGFubmVsLnNlbmQoeCAqIHgpXG4gICAgfVxuICAgIC8vIGhlcmUgd2UgcHJpbnQgZml2ZSByZWNlaXZlZCBpbnRlZ2VyczpcbiAgICByZXBlYXQoNSkgeyBwcmludGxuKGNoYW5uZWwucmVjZWl2ZSgpKSB9XG4gICAgcHJpbnRsbihcIkRvbmUhXCIpXG5cbn0ifQ==",target:"_blank",rel:"noopener noreferrer"},h=a(`

    Littéral de fonction avec récepteur et constructeurs de type sécurisé

    Comme vu précédemment, les extensions de fonctions ajoute du comportement à des classes existantes sans utiliser l'héritage. À l'intérieur de la définition de l'extension de fonction, nous pouvons référencer implicitement le récepteur d'extension (this).

    fun String.countCharacters() = length // or this.length
    +println("hello".countCharacters()) // prints 5
    +

    Nous pouvons définir cette extension avec une fonction littérale (ou lambda) au lieu d'une fonction classique (déclarée avec fun).

    var extFn: String.() -> Int
    +extFn = { length } // extFn is a function literal
    +println("hello".extFn()) // prints 5
    +println(extFn("hello")) // prints 5
    +

    extFn est une fonction littérale (lambda) qui a accès au récepteur (this). C'est pourquoi on l'appelle une fonction littérale avec récepteur.

    extFn("hello") ou extFn("hello") appelle l'extension comme prévu par les fonctions d'extension.

    Le type d'une fonction littérale avec récepteur est funName: ReceiverType.(arg1Type, arg2Type, etc.) -> ReturnType et est appelé avec funName(receiverValue, arg1Value, etc.) ou receiverValue.funName(arg1Value, etc.) .). Cependant, ce n'est pas l'aspect le plus intéressant.

    La partie importante est extFn = { length } qui peut être placée comme argument de fonction dans une fonction d'ordre supérieur. Le développeur qui appelle la fonction d'ordre supérieur doit définir extFn, qui à son tour a accès au récepteur. Cela permet un style de programmation assez intéressant.

    `,9),Z={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiaW1wb3J0IGtvdGxpbi5yYW5kb20uUmFuZG9tXG5cbmZ1biBtYWluKCkge1xuICAgIC8vIGZuIGlzIGEgZnVuY3Rpb24gbGl0ZXJhbHMgd2l0aCByZWNlaXZlciB0aGF0IHJldHVybnMgYW4gaW50XG4gICAgZnVuIGRvU29tZXRoaW5nV2l0aFJhbmRvbUludChmbjogSW50LigpIC0+IEludCk6IEludCB7XG4gICAgXHR2YWwgcmFuZG9tSW50ID0gUmFuZG9tLm5leHRJbnQoMzIsIDk4KVxuICAgIFx0cmV0dXJuIHJhbmRvbUludC5mbigpXG5cdH1cbiAgICAgXG4gICAgdmFsIHJlc3VsdCA9IGRvU29tZXRoaW5nV2l0aFJhbmRvbUludCB7XG4gICAgICAgIC8vIFRoZSByZWNlaXZlciBpcyBpbXBsaWNpdGx5IGF2YWlsYWJsZSBpbiB0aGlzIGxhbWJkYVxuICAgICAgICBwcmludGxuKFwidGhpczogJHRoaXNcIilcbiAgICAgICAgcHJpbnRsbihcInBsdXM6ICR7cGx1cygxMDApfVwiKVxuICAgICAgICBtaW51cyg1MDApXG4gICAgfVxuICAgIHByaW50bG4oXCJyZXN1bHQgOiAkcmVzdWx0XCIpXG59In0=",target:"_blank",rel:"noopener noreferrer"},X={href:"https://kotlinlang.org/docs/type-safe-builders.htmlhttps://kotlinlang.org/docs/type-safe-builders.html",target:"_blank",rel:"noopener noreferrer"},A=e("strong",null,"Les Type-safe builders",-1),k={class:"custom-container tip"},W=e("p",{class:"custom-container-title"},"Le pattern monteur (Builder)",-1),x={href:"https://refactoring.guru/design-patterns/builder",target:"_blank",rel:"noopener noreferrer"},v=a(`
    // StirngBuilder uses the builder pattern
    +val text = StringBuilder("Temp")
    +  .append(1)
    +  .append(true)
    +  .append("friend")
    +  .toString()
    +
    `,1),B={href:"https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS43LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiY2xhc3MgTWlsa3tcbiAgICB2YXIgYnJhbmQ6IFN0cmluZyA9IFwiXCJcbiAgICB2YXIgcXVhbnRpdHk6IEludCA9IDBcbiAgICBmdW4gYnJhbmQoaGFuZGxlcjogTWlsay4oKS0+IFN0cmluZyl7XG4gICAgICAgIGJyYW5kID0gaGFuZGxlcigpXG4gICAgfVxuICAgIGZ1biBxdWFudGl0eShoYW5kbGVyOiBNaWxrLigpLT5JbnQpe1xuICAgICAgICBxdWFudGl0eSA9IGhhbmRsZXIoKVxuICAgIH1cbiAgICBvdmVycmlkZSBmdW4gdG9TdHJpbmcoKSA9IFwiJHF1YW50aXR5IEwgb2YgbWlsayBmcm9tICRicmFuZFwiXG59XG5cbi8vIHR5cGVzYWZlIGJ1aWxkZXIgZW50cnkgcG9pbnRcbmZ1biBwcm9kdWNlTWlsayhpbml0OiBNaWxrLigpIC0+IFVuaXQpOiBNaWxrIHtcbiAgICB2YWwgbWlsayA9IE1pbGsoKVxuICAgIG1pbGsuaW5pdCgpXG4gICAgcmV0dXJuIG1pbGtcbn1cblxuZnVuIG1haW4oKXtcbiAgICB2YWwgbWlsayA9IHByb2R1Y2VNaWxrIHtcbiAgICAgICAgYnJhbmQgeyBcIlN1cGVyIG1pbGtcIiB9XG4gICAgICAgIHF1YW50aXR5IHsgMTAwIH1cbiAgICB9XG4gICAgcHJpbnRsbihtaWxrKVxufSJ9",target:"_blank",rel:"noopener noreferrer"},V={href:"https://kotlinlang.org/docs/type-safe-builders.html",target:"_blank",rel:"noopener noreferrer"},J=a('

    Exercises

    Exercise 1

    1. open the java-integration-exercise projects in the materials folder.
    2. Have a look at the Java class we provided you in the src/main/java/com/worldline/learning/kotlin/java2kotlin package. (yes, that's the Pokemon class)
    3. Convert that Java class in Kotlin using IntelliJ's awesome copy-pasta tool! (just copy paste the java code in a kotlin file, one is provided at src/main/kotlin/com/worldline/learning/kotlin/java2kotlin)
    4. Have a look at the generated Kotlin code, and note the major differences you spot!
    ',3);function y(f,F){const s=o("ExternalLinkIcon");return l(),i("div",null,[p,r,d,g,e("p",null,[e("a",I,[n("▶️ this code"),t(s)]),n(" illustrates delegate properties.")]),b,e("p",null,[e("a",m,[n("▶️ this code"),t(s)]),n(" show how to create a coroutine and suspend function and how to use them.")]),e("p",null,[e("a",C,[n("▶️ this code"),t(s)]),n(" illustrated flows.")]),e("p",null,[e("a",G,[n("▶️ this code"),t(s)]),n(" illustrates channels and deferred.")]),h,e("p",null,[e("a",Z,[n("▶️ ce code"),t(s)]),n(" montre un example.")]),e("p",null,[e("a",X,[A,t(s)]),n(" combinent les monteurs bien nommées et les fonctions littérales avec récepteur pour créer des monteur avec un typage statique et sécurisé. La syntaxe particulière possible avec technique permet de définir une sorte de sous-langage aussi appelé DSL (domain specific language).")]),e("div",k,[W,e("p",null,[n("Est une technique permettant "),e("a",x,[n("de construire des objects avec une syntaxe élégante"),t(s)]),n(".")]),v]),e("p",null,[e("a",B,[n("Ce code montre"),t(s)]),n(" un type-safe builder basique.")]),e("p",null,[e("a",V,[n("Kotlin docs"),t(s)]),n(" fournit un exemple plus avancé d'un monteur de documents HTML.")]),J])}const w=c(u,[["render",y],["__file","index.html.vue"]]);export{w as default}; diff --git a/assets/index.html-f7b20576.js b/assets/index.html-f7b20576.js new file mode 100644 index 00000000..b20589ca --- /dev/null +++ b/assets/index.html-f7b20576.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-48a0fa68","path":"/en/presentation/","title":"Presentation of Kotlin","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Some features","slug":"some-features","link":"#some-features","children":[]},{"level":2,"title":"History","slug":"history","link":"#history","children":[]},{"level":2,"title":"Some numbers and facts","slug":"some-numbers-and-facts","link":"#some-numbers-and-facts","children":[]},{"level":2,"title":"Why switch from Java to Kotlin","slug":"why-switch-from-java-to-kotlin","link":"#why-switch-from-java-to-kotlin","children":[]},{"level":2,"title":"Prerequisites","slug":"prerequisites","link":"#prerequisites","children":[]},{"level":2,"title":"Sources and more reading","slug":"sources-and-more-reading","link":"#sources-and-more-reading","children":[]}],"git":{"updatedTime":1686071411000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":7}]},"filePathRelative":"en/presentation/README.md"}');export{e as data}; diff --git a/assets/index.html-f888b6f2.js b/assets/index.html-f888b6f2.js new file mode 100644 index 00000000..2d08a9ae --- /dev/null +++ b/assets/index.html-f888b6f2.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-6d947b37","path":"/fr/backend-development/","title":"Développement du backend","lang":"fr-FR","frontmatter":{},"headers":[{"level":2,"title":"Ktor","slug":"ktor","link":"#ktor","children":[{"level":3,"title":"TP : développer une API avec Ktor","slug":"tp-developper-une-api-avec-ktor","link":"#tp-developper-une-api-avec-ktor","children":[]}]},{"level":2,"title":"nodejs","slug":"nodejs","link":"#nodejs","children":[{"level":3,"title":"TP : API Rest avec Kotlin/JS et Express","slug":"tp-api-rest-avec-kotlin-js-et-express","link":"#tp-api-rest-avec-kotlin-js-et-express","children":[]}]},{"level":2,"title":"Spring framework","slug":"spring-framework","link":"#spring-framework","children":[{"level":3,"title":"TP : Spring boot part 1 - développer la même API avec Spring Boot","slug":"tp-spring-boot-part-1-developper-la-meme-api-avec-spring-boot","link":"#tp-spring-boot-part-1-developper-la-meme-api-avec-spring-boot","children":[]},{"level":3,"title":"TP : Spring boot partie 2 - ajouter une base de données","slug":"tp-spring-boot-partie-2-ajouter-une-base-de-donnees","link":"#tp-spring-boot-partie-2-ajouter-une-base-de-donnees","children":[]},{"level":3,"title":"TP : Spring boot partie 3 - ajouter des tests","slug":"tp-spring-boot-partie-3-ajouter-des-tests","link":"#tp-spring-boot-partie-3-ajouter-des-tests","children":[]},{"level":3,"title":"Projets terminés","slug":"projets-termines","link":"#projets-termines","children":[]}]},{"level":2,"title":"Aller plus loin","slug":"aller-plus-loin","link":"#aller-plus-loin","children":[]},{"level":2,"title":"Lien et références","slug":"lien-et-references","link":"#lien-et-references","children":[]}],"git":{"updatedTime":1689673988000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":4},{"name":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":2},{"name":"Tobias Preuss","email":"tobias.preuss@googlemail.com","commits":2},{"name":"Yassine Benabbas @ Worldline","email":"86733850+wlybe@users.noreply.github.com","commits":2}]},"filePathRelative":"fr/backend-development/README.md"}');export{e as data}; diff --git a/assets/index.html-fb17b9eb.js b/assets/index.html-fb17b9eb.js new file mode 100644 index 00000000..9c29ee51 --- /dev/null +++ b/assets/index.html-fb17b9eb.js @@ -0,0 +1 @@ +const e=JSON.parse(`{"key":"v-d4ec6de0","path":"/fr/kotlin-features/","title":"Fonctionnalités du langage Kotlin","lang":"fr-FR","frontmatter":{},"headers":[{"level":2,"title":"Caractéristiques de base","slug":"caracteristiques-de-base","link":"#caracteristiques-de-base","children":[{"level":3,"title":"Constructions de base (variables, flux de contrôle)","slug":"constructions-de-base-variables-flux-de-controle","link":"#constructions-de-base-variables-flux-de-controle","children":[]},{"level":3,"title":"Les fonctions","slug":"les-fonctions","link":"#les-fonctions","children":[]},{"level":3,"title":"Null safety","slug":"null-safety","link":"#null-safety","children":[]},{"level":3,"title":"Énumérations","slug":"enumerations","link":"#enumerations","children":[]},{"level":3,"title":"Exercices","slug":"exercices","link":"#exercices","children":[]}]},{"level":2,"title":"Fonctionnalités intermédiaires","slug":"fonctionnalites-intermediaires","link":"#fonctionnalites-intermediaires","children":[{"level":3,"title":"Programmation orientée objet","slug":"programmation-orientee-objet","link":"#programmation-orientee-objet","children":[]},{"level":3,"title":"Data class","slug":"data-class","link":"#data-class","children":[]},{"level":3,"title":"Programmation fonctionnelle","slug":"programmation-fonctionnelle","link":"#programmation-fonctionnelle","children":[]},{"level":3,"title":"Kotlin and Java interoperability","slug":"kotlin-and-java-interoperability","link":"#kotlin-and-java-interoperability","children":[]},{"level":3,"title":"Exercices","slug":"exercices-1","link":"#exercices-1","children":[]}]},{"level":2,"title":"Plus d'exercices et de lecture","slug":"plus-d-exercices-et-de-lecture","link":"#plus-d-exercices-et-de-lecture","children":[]}],"git":{"updatedTime":1686068618000,"contributors":[{"name":"Yassine Benabbas","email":"yassine.benabbas@worldline.com","commits":5},{"name":"Ibrahim Gharbi","email":"brah.gharbi@gmail.com","commits":1}]},"filePathRelative":"fr/kotlin-features/README.md"}`);export{e as data}; diff --git a/assets/kmm-fs-react-demo-11c681d6.png b/assets/kmm-fs-react-demo-11c681d6.png new file mode 100644 index 0000000000000000000000000000000000000000..62d0030f0420113d8926d60da892337edb22d24b GIT binary patch literal 12921 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

    V)nB2AdIJc$tgx=Or*`5lkmD^Ss+Ln@yG%`(j z>!Gb_vASc`u%@~;+}K7F9z^_EZSwTK^LOLQUO+bG*rK4^b#cOig&6IytHB@3(`hQv zRaSwkisebL!n56Ts%(VR#jX0a%@tfjaPT0sgf=?5(>;gx++CMz zMAV?&ioB1Tk16??nlEe_^U@67$#JK1f#r#i`fTz z9#$#iNxpW)r>#P&XS6$n6tae zw|SF!v6lwk4CXkO{eds^ysm0DXX(c38aLWuq<%1ym%tx9n4d0#;ezN+#%T3!e`}uo ziv7iDdoK&fB;awLB-USeUy=DyAH7z!#oo12oZWtHipKq=TI8nA+mr^LWp<9MUX0J( zMEZlpx%(qR;5cIP%=)W(%g^s0L3FZ>-pU?IR5OnfuV+8Xx&3uhm? z!y*E{zb$IMKTS;Bh}S(av=gakVYe^hTfP-t`m~8Jl@~K1iP?QUI_@A5ZlmVc+B*;2 z2DjG$ISO2YGoLTNqC-+DgMWW0NN zVBX+yp}H292||Dmrqy6$VPWfCaA85YKu6KAy+-5QA#&;2jf_htn|oD@eU_kbaV}`x z-(DtQn9Zo6s34 zIJ;BDpeG2*llehA&4QMmIj;e_)g^dsU+FC$F|csy?d#VuKhwy%KKAbiq3|!!*kJQN z^?yl4XPd0b4FD%)SaM!!j72WM!f-<8?7d3!E>csU@H=@RBBOqJTVf6}KQ}N`Ew|JA zDR|>2tuF+vO4moIXp(jRbtrf4_Js37JJk#^)j^~m&KBW-_Z~x>kAPmQreEhrR6fxu z+Tg|di=MqXHfDHrq~a6DrLWjJFE~i|5LRSV6R$eONI22bYA>Q!cjlh235lT|l^3+p z-KQfop}g>RjAzcSf;@&}q*Y4_WueB?Y-m;`W_s%Mk$&jJ_C@5Yg_&oqKDM@Rq)yM- zFz&C{Y?e6=o5&s#+?i|S2q~Et1q*utM*ZS2QTF+XxE(D`BK&T2H>TeqHzH-}@M}>- zIq6yid>%E%-o`C|IVNx0NLT4!wqr#Q>}eK+GAf+EzAsqwE*sp8J&mxUk;JW$o$!ec zolEybpiJ4dcVwV3Vb%($S{m}-ISM`=Vs4bO(p2SV{rVjOz8*H`#i4@#XH#t!{ z>UzS>+r>S1X`V4O61{BYgv(XFd9lomC;2{?hh){IzA+9^#s*keXv%IRIwl;nnS0o~ zio?<83N<(o>;S98Z)68Tb#qYY!WaFOQVB@`v|5z|6%DJssfTx-m6vy$ipfs7>0Xzc z9hX!(jzyS~5;EbGclmtvB`k3Tdf_4#jxI@x$V>WM9t({`Ox(=I~8&i;VVuVkq z!pg5fzGN0=!)>^yk()Q$n_3B428P*+P9 z7ktes>`#d>^bdV)*9m=F^Xn@&Ldn}OZk3zlVa-C;psXJcXtfvb@VBSJLx_Y2nZoS*p|TZel6F3=;=JKhoq4!tZX&4dTx z$g3sf8v_ZOS0#?Q9`+v5G%!Rd4J^=IFo+ofik1e2bOPf1aR z)IaWWOg;gDc+NH4T~5tLKgNhs)--l>ue}Tuoa=5*T+6eo7xHNEu$vtBDl4XDYb`n# zS8(w7A6iFxjc(DSCWhlpr;^xU)8#oxr;Z5Py6@Tib`ne&mqcAST%V;=9uEOAp__+; zDI0b}q-U&Pu2K`eDheUOjWJYKZw)S5TUO12>gvLa`0GNaSA$UG` zQY*L8u{^mfjWl`2;GlB5Q+oAtMsIJp!L8FrV{SKu4EOSilK#9~crjBElbNbgM>O?M zK1QKPcg_Ttah@(UzzNMn4e0<*RuYHmQwt_`vK!P!tkB^Z+o&vj%vkK49HD{FCzub8 zFgtHUtY(=BI``vA*F)psSe)toPy9AGF1?-^YKGhS;m1a_ZLUjcdUsb}zC7_0LzRjQ zfyxkjwc|@kZB(?Lt~K9JKBOqjq8Q?xKiiv(-dWXV$w++c(ArotHl+w2NwierBw8U^ z4tfS6esqqT7Q2qa*$Ik<(-#|w;y86X?FOy+%^%Z*p%eb`Sh#urw5vm%PQ1yYvj zST0XYXnc7MC?`BWSU~eb!NkkKq!P&+3l?fC^2hqrzviu8&k&3A=dfCGQ_l}f6p2EK zL>@F2tBb>m1NvAexN}rN_uOy z`}wlmg{u8dF00&2rxqcqVtW0D7tLG?8cwB~v+l5acC@+$=|OzP91B(rU{@C|IQoHx z`A39UXJKZ;3AGh7IN?>>WcbsOMJuP_sVarlQ;NkE**)IlwNd*^sRDPU zXV<81Wwdb&wZxxCfvk-9!xcr7>$cE4qtZz4BC*v1boC%YnRYPEj6vpj-QlnW*78bM z%nr`8b{LjQ*q2s+*m9l0jtF5;a>cI$y1Vt(Z}eI3N5C&mq~8Q&qrctI>ryZ=Sw`CS z$BwFcBnEw-v$xj5Flba60B0I{-g;)nMx*^1=H$7ZVSnI4Q}5fAn*XLnOsW*Lw$lD4 zw<_?17eiuj(RbV9y2t<1HD*24t7%*aGkxPm41Sy3t!+6yqnGh2%u7W-xS}u^AK2*e z2aP0vK#W4I;v)3sc1Sa>st^3IS+YIWPuX>&)|o}ajauommGbvrQ^d2?$-p%BP4%W=H}=>)l!953vOqdN zfz7@bAR~z=hs$(-RG<%uE?VOElj6D($VVG{xtQ-f9M1cjdXf8ZIA9}jW;6elsGj44 z>%~|P_x5zUmmP~ed*SJt$8pN&Mg@GSO%>xQAKT0JlxDkH({=-}6mNBMifUC-X?ZC$ z`y~%cMC-r}a|{!M;?vY$4?$kRVfhX=;78HaLDXOFI=+KGS@?m%m|s%F(7%4Bmimyt zPHYz8f4bJ{)EUrU2`+nyx`|o7_A@!bZ#ik$a_SStQW1z0=gnRd4}u?4+^}OIJzWnQ z<&*l9cvvOm-J;i-t*q5*q+GZR3$sdU?G9@dANyr_g~G!p^aw$Bw;`(T3XMjP-$8WP z#Ne1O10Trw_8KM}#zbuXMp}zJ9pd%)WTiJCjaK)z-DoF|U&H0@#EG>ZPk!h1W$8wthm)eA9$#N#C? z&E`jx!c$McI6UF`M%@nG{fNV$%ArKI9Ves94;obni&X+t-{Yvb#fS?yz6UL9@$EEcMh%#ZI#Gr&>m zpcDtqD9w8}jpFP2l!9nhsl$GU7&yMRvjP`hamT8T{Ms`Y%4AZ>#FqXzFLxdb8qK?E z^lPfe%mj2G`e$sHH(QZUJhhHll{gc~gw@-M7|}SqDMpV$`=71(weBeqS}5tYnVBs( zyl~a&Kquzjy8drw#@;U)Gg5{%`bK6O%bB7RvdBnReQn~-J#vxvMB9C`Di1&PZt?j> z)2iTrn@ld~?8z$HxdQgnwn2MLTlYTPZ_aQTz@H}Q4TRiWAyFn)CXJ14A%(C}k*K$z zR5`HoqgSU_(8E9?rY5*7-NXodb6rue;PeKf4@u&pr2Vu24_eVY$bI0g)=B=|(qrhE znfdHbLzBW8VnKuZGW&6zK4Awb`jhR@s?T~{)Tl&1mKl6Ijm4tjy>bOxch6hh8-*qE z9Xo-W)vw_5>>OwSBl)Mt%$~9VnS!4v_O8;0M>mMmGN&yrMzO)T{=86~*g0+cr;@yU zojl*!CyJ-)zsA^IkxPC)dityUo7W%?1`-dICO5axyx#^vlhn@H-7jTUeG{X2j^`#x zVygSfp-be%3~+_^`7U<)SpV*I{A*+man7xoHIOuqatKr|_uFK-!|S-4zUF3bhXrnT zXn~Sah_#cMY`(t;Q4qS5+=0Wz@quO?GFsU2pQ~dFmc;6rSsKrc*1{P6o}@l-qeU|J zfme-<#y^y~68EwQl%GL$lBae{kNHB9)Gx4r^?w%?m0n+kWQ%{oR{ehr%KrCY>VFjS z&HFC5tgWNdB0Cil*H~v&OR++uIU{YzJ3sxo%_Lpbxj3Vr*GI8&xsG*^ztntQduE=i4UQz?-x2=R17e_rm{SaVAO|mPW$T|fZB`Q@~p3+YMtxfS4 zUiX`QTiVLJzJ`>2xVxDC!Wr^L;cwV-O3yixg2ta?f8tfu88t0)sW-5P(R%me6$77; zrpuOg8%1lYd=#ltL+(Q975jKaQIY$05~8B;iWZITYppo=%%uA@990h-$)Kg-@+jpB z@AhdLaLXoCSa5bJd5i8HWu`3ZcQW(!LHadv=@sEY6mdzd{@c4vYOo)hrEsJb`tuHn ziMc4GGTLA7R>-9iTwGnVJE)`;2?X68H81UPYP9NcnQ($jM4kd(NtaSgPVT$PW-dCm zG8w;BVx@Ncc@bf8STTT&M6KQz)lHFMR=eS@4&l`*L!oFGt&VN=g&jhDf)50iXv>=pA7~M; zp@GAC@A*SmLL6HTDmkV3MCQJ*$#Cp3FuRFXUHdsD%8SDvGcjGZZcyP{(|s3qXSwGK z<JbZn&J)0`kg9_KPp*0fFaviMfXQ_c7?j%A_`XZgc8}l3)T(AtY=0}0n zxk$|P;LO3U+U}aQ*K0%mhfcxE4of&`&&a#mN^JEA)_vn6t8A&O$Ok&Xq>;F)bd)?v zY_W^2ZW2x^F1$36W2kdQ`8YA@yYGW0zqk;2o>}SYFKi!-)XSO5zfQ@*a+}GtL@42* zoWtswGpeWaU>%1Bon)RVdG_ z*i_?Dw5czV>qD0fHhajqa2}BwdvTwwEyWAWxmHxh6!^*%Y*u>i_^N*(+*_4*9#a(X zG7#p+L@wf*RKmU1gbC}rVwv6pkAi=V+BaadBoC=!tTlfhFdCW}Vdxkw!F&qqw#*@r zRkmVr72ZO4sHa|`N1E=ZreCr_VN#2fzVB~$->NQBckVpXgsp*#u1}$!E!M7fy`EIZ zq0K|u>)o-YqaUFxX+0<_m=lw&^*dxczM$Afxb7|7Bvw(aRTf&T^B(saQQB=R+Kp{R)MZv3%RQ5cy zo;SAWn)p5T)ysy{RCcJR6*p~8pP_~trgT(nKDUf7TDOaMWUwYG?RQ_Xb{Sc5J-)jw zMU{KMjyEP7)KHf-+`=nUdpn>60U5)RMCPKK$xN*=C$Mk#=4pLH!e zxhNae&mNgpaw{vligLVg2OF<8HTuOdv*7JZ%}S0z#m}@#aV?m;`|n5jDdzz#Aq6-z zB^+;M4w5C0*EI)T-|&|m(_jcg@t&gE7<`TcbZTp<4O=GXCoLqMT$|$b>4~N2*mc$U z&@1&6Rk%p^Yw8(54}u~1`z;0yxKMf_V)>lWx8oKF|J9iu?{@Fj?{)p z-J(W|lz^WE2M|#pR_Jv5*QA}IR>ni|W6l)VZ|L4{Gu^Gr9ASQ*5CG`3lD2dGg|pG6 z>oS{Zm&a*BB57^B0L)XAuF~sEsANM&Ez3y6qtTdxC=v)Jokv&!DS4hIgD-c-B!bPN zMtLPE$Gj^XtA^H8-HWz08^K4S2WIzhqsyPi`9#ngxJrWU>V9#vEt;?+=AF~(r;s|1 zKvsL5)V+pVxD5qhwBwb@u(!9@@w`=LV5szbzRPBmaSC{7wYOqYY#bad4#1o1m%>j% zi|-u?V#MhO)&T&Gcu}#GMohOiH(&YOZlb(jwyO;X=ylsq($M}^WocAt`Dza$)Ag%A zL#lp`iY+4em zzU^_&BE{Qi{UkO)dMi)J2q z0RU?Nt`Za^AM2vAj}8DtLH*lAt)g~D9nVr915*F)E^Mi>o0UsAy!7Tib}iK_n$SzA3nGKfcxg;z$d) z6m+#W{wv))J>ylcTEMWT*6v&x(bT^D%PZcll`7qAOj;RAx)%lj+5ledT$v}AoDLr8 z<6Y04O{6x=&3kaSonfMp7}z)9vOxAw=mi|eDEKx?^9F#{Jvmrd;>7v~YHMobks~+- zOU1?*&7IH{%ksZ}UA!mzRw%L)f@wn4jZOmqP(+HW%VBBJu~2|)BxFScYf`*;CBr+} ztk1N65Ah7<qXt#U%Y%<)?K#qXZ)3xJUTK4C6@ zc$-ZBN+Zbc?)7cJWvkH?w@MO=_2R$*eDE(=7aH9mw*yYc7q8Smm%V$W{(hftYInS6 zFW~I?b^ieX*e4#x*7MM!VRf5zOd=QlLm#jQocp7+t&jq7jv+Wes8(O^uQViG|GUuX z3;?+J^l!87-(*~;&#tx*xVb~6R@g0S+G^m!a%|P4Om9-0bo_3!DWJjei54i98gvHq+9I{;Q3x}N%)Hu45j0kf z`_A+^6x&ZKETRaZ?`QmGgH!giqopbSpi0lT;rnyaZCaJU;CI-pw7P3NmNQgXNoPcu zaz6yPkdk-}uFzA;=eLMu@g}N=f%7MrYJpE!yEu|?87=;J&;$*Q3I05b^{Irc6oz!o zH{1lF0L8C|Lo>y%kHh6~$F+0PqK}~x$I^g={{>y)XTRXkWWKp@rPy1)3V8J9psLwm z3qpv%^ZB$vDuMR$>PpyKA*q1d=kB0>YnS?_46MEBJL)%DGslWyWtk;5`y$=!fDMqZdnmqoxJ^ zG6SJI_acjE)z%`WS3W!u_I}hDgCX^m!O-|67dIU!|=E zIrHj{rK|<^%~gG2?iA*6Ju|u7>bn6LsdJ{7fMjiY;+(_hvjYLjqEYcu{& zw%T9gZp7~^ryg)F4jJ*^+gT;z91hZy`aKCAP3JM7L?4zz7t%5@x%P!Ku1)hz2sn$7 zren{@%11lJiE=ypU?~$@yFLCTF^z$}LC!;7t>}~*b5AMOgZr#$V=B8CH2#s7L*4d13O=U8kmS)KZ1W##t@)> z&Sbj4VdMU&!|EcGMllg{s=ly?QOp=RT1{4yV>LoJeQQOYuGJ$U3a2TnS!LOrQprXS ziE-)U{lY9-iN&pKHeSnZXH(i#qSg3Qsnw4~w5;}GGxqD%cUXOIalpzzvBo&NVG9*@ znU31(WZ+iydTcf9;i{Fq`H@Lo*AFJ4@>5%d$`?L}$9W%CmG2hwy1 zKykf{qm%;ZzO~#!``^@rl_v!FXO51g^W67_ zViis0{PR6vmA#hFt!Z#|L56;1MZL0pGgx}iEm}4aPpk4>qdgWOmFop;JDwIB{MbL? zb*mcht87Ag>@-g}SlLMwT5}Rmz-(uZMknn!8~^~9(D(j{v#`)g?GOpA;v{xK*L zFAB@x#8L%?CP9_M{Q001{j=_bUH!^;v<^9q`lMF6K56wgv67C(SvqjHr|J?Nt&;C4 zY)I$C>oK|=Of@1eX_{t${7Xr-X&ybW8;piKKcGJg_qPD{H2~CopBG^Lv5P-~Ut=cC zBf|jgJQJ6gzqwv5y$5IAZ#{8BORE=t3`9j0zlhZL4LoUmSrk^7REkw0+1IystQ8@i ztY4)XGEYVipGhPH`gV|+l3zvsksxs4I4#z^9R)b`D#BhT@7p;Gr!sOQC_fP4h-&2- zKmf>#x(PCd_`5#{X7HjJa4R#8){8PW;68*xpyVHKliI(!l8k?kV0HY=HLGjT(`nap zDYX3yGjgp80N9d3SV#%ZL5$YkanoHzg57RJd)v9+bA`Ib6_jmhb_qOT* z0Kxsp{GtHqW1NmqReP-A6t<-jD`|zlc0;VqS4QeyWfm3zFn|pJA(b2g2H|S8A;Oc? zHhT8pihm&yLk$^+i;$)mt5t+gVFy!S3!Ur$3_x$oC53l)XQ%b)s8mNs=lSmRhknWt z;-%~EvO$4uOtNBVIunnaK6`Qot3-=GEav`)s6a`8DKVBK{ zTNVYv87W}$!7<9%<$`9A}XV;>a+cmn<{@N6aMU=21` za7nRfEi1F^2}0Z6-j3pbqC%cgG9{6vB1F+~IHhN3Ei?Yd5OV#gKjJml8q_5`titm!1$r^8fGDka=!bq9soIC00*MN483%U?FJ0 ztP|TyC!?J;wP2Ia4Ak{a9y_(BK2f8@#u`24%72N~cKx~(uj1FJd`KD4G8 ztEiA&RzMVmNopIB>YfOZX8Xgyu+DI3K*NT@)lTFbGl5WibwbdGr(b9skpOQtj8r}2 z$LGf=5QJa9LFU1kI^7JEQj;r_ixAbkBy}Zb$VWR-$lHPE9b-GofZQ(F!cy;{0)H&9 zUa-~SRKc*;7V&+&YL*Wc(8(3T0{4k%0Xc$@jld-ILq1Bjs|FkSoXZ~y8RNySG{~@i zQlo=}xr|Ey(R`2Xfs{D1ZY{wHB9iBEg)Ff_ZP)^lTQpCQW%AR#I%QX#D8_dft- CaG7NQ literal 0 HcmV?d00001 diff --git a/assets/kmp-fs-desktop-local-ktor-d6440da8.png b/assets/kmp-fs-desktop-local-ktor-d6440da8.png new file mode 100644 index 0000000000000000000000000000000000000000..9783ac303cead9897939c2a6f658e15d038d8f2e GIT binary patch literal 10211 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

    T>s=j1lYEyX{n+ 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 Kb6Mw<&;$VLOU;1* literal 0 HcmV?d00001 diff --git a/assets/kotlin-wasm-flag-ee5f483f.png b/assets/kotlin-wasm-flag-ee5f483f.png new file mode 100644 index 0000000000000000000000000000000000000000..c51b253b340a28161930ab101ea7b5dc2986413b GIT binary patch literal 35048 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 X_Mt(?FGL4F?o`BuWrRuuKKlG04Trp{ literal 0 HcmV?d00001 diff --git a/assets/kotlin-wasm-webapp-5e0cad78.png b/assets/kotlin-wasm-webapp-5e0cad78.png new file mode 100644 index 0000000000000000000000000000000000000000..f8818074431248e3462e8d50e924366a29cac2b5 GIT binary patch literal 5331 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 literal 0 HcmV?d00001 diff --git a/assets/logo_worldline-09e30c15.png b/assets/logo_worldline-09e30c15.png new file mode 100644 index 0000000000000000000000000000000000000000..6981642db9edb3edd5c437d266ad3a6d0c84ba1d GIT binary patch literal 14866 zcmb`u1ymeC+a`)T!QBUkz~C-Hf=h6BcN^S25Fofa1PvD42lwFa?iyS#`E2jM=f8LN z?AbX})74c^z4lbS({;K#;){YLDiR?Q1Ox=Cw3N8=`?2i3xFNv3|7u1e%)K8F9i_Bf zARv&j{uW4x^h|sR2-r<4RZWnlyd0m2gB`Pxse`c@vxlAII~oE)K-k04$i&7BL~d+m zVP!7}IB)F)kXxAw0yH?~S>zqX%q*>>yqwKcycASTylhN(O##9}(>;f5_!~um5cZ0?7XX0oe!wME)uy*OdQ4F6Q8DM$XI3!eqk2!b;A~%WT5J z#=>FDW@={sk(`Z%jUC9s_WosJW#ePz;A7(;|JMibuF=`loKIO?;$QmS&jbOMAdn*; z5a{mi&g{<4?BHwxWaZ`M{VRiwjp-f1*{_O#>GPC@3?4KUnIsV6j|AO=|a{MnqQ1T=hv@%w{}%=COvuasN5_9_i=Ewn zRJedXyS;n-uh{*!XctvaM>C+ZnTvy~vx(Vfw|6rs0px!pz^CYJ^?qjbH-3Tu*1xfE zv(;vHut7 z`z$gw0vY`;!KNmB<_^wwM(<8p*%?`w0Uhlv0ObD(6`z=ct%LKs;&I~xZV z=fB5`JD9lsW$)kPP2a~Gaj}|k8=3Pku^OAd3t?q7Vd61k<6+|AVl!eh;^t;$Vg1ke z_b|RMHY3~rV>y49;9uJLq^w*(4$hwcS|BQBPXDUeT9N;QX+9&9f0E^5TYTF&j0^JHa8y&_rDqZC(Omc9OQ1~Y$jsy9;<&Rf-nD`@zj^1ML;?S24*${j z|H@JC-v6WNJ@Ngm{wM3cpZq6po7uld%K1GjC+;@(KtQn1ON)!BdSsqvdA3o1_Pp!t zJaVy+z=gztfproQH^qQV5{Cwy$*zzG5n>zM(VaQ1M@#fERrS*W`hB@0FV(0pb)gX$ z7#Nx$E76ry9rv;;*PkR^bEb=1A6KT`%|9jX`(-z~dzDs}`8}3e02lWNo8Vq&j8xy8 zzN-k=4H4p?V_-mw;&YD^QfWxeuE&&~q0VAxydkAaaz542!~G&JwpsNxKQe;>QEuu* z+XLH7O1BoNjd}pvYnkMuUorV_>cZ&M{?xE>R58+(KgicwBcg6-0hAfgNz5N>={H^6 zy*75vCo_*g1pDH|{&= zPDv3pY?*&Mq5eeiw+ithKllJ%hw_f&F+cCN5(o2t*X{8BC>R?}J`+uG70~4e=?HN_ zvmv+Pud%u@i~cHrSTFej_AJzMGq%V$UY`t|?t63yw{7}|573L@$ejzNz&l7kB%crW z9F7bZBjx!98Z_6IBpMFYQJ>){+YmfPzMPqhZ{82bZ8OQ|QlZ0dmG#H*Jo7bX$4Pm;E+>fS}hlGG>Gpv{T=^o;MAkd3Tw zcfbGH+ut?3oHy_B%SLDP8X00Db`$|;HAFlc0Fw+wJOl_w!g&o#$eQn?l-o8o!5C7wzA!11gEE$ZQ?8;lc; zCLc&Fq1Es98$mMj(J<%dp3i0ycW`re5m+~LZ<+5V3hk9rZ)k47g6Eo%;}2=F$*-ZY z6w1HPSJ|xmk=OR>9lUInm?v2%-WR_XD)_SptU7Fl-Hk*gr1*0lW^<=|bs)Oy{*BiT zp;p&7)nDO5WI42?Ahr+R{p>aRA$G_GZ6ML^@7uNp*{B%eCHjK;&=GFDD0;g64UbBc z#a>Q*KYMc0Or5y`kgn=ISYQjQGMnp&q@vg&hKd(0IV|R-EI`;ybQR-1c9I@kf!98C zu;lz);uwB8Gpvdg8Zk8#zs^$^+#QZc*72oEU336CFlG0v>OCXu?zCjo@!Pne@95X~ zd_tW&f-du&!NJQa(=|kawF}n`A+Z5JvmP~xk}^Q?9vz-6*r4Lq!wd3&zfKREER$Ti zV=EBCkL#j`0!>=BULUm&_shihKpZ(u8z?{b40v@aZ-OhOf}!wP>Y2x2S#iF4M~=8d zUvIc)GCAJEY%p!W_JLN!EA|G%eu+!nJTgWrOP1=*sent>Us!5Fxvdyx=9GJg>#3A@E^0$ULU~lIFOzBC4=qJqP`6Cgg>`y1qbku zggvvbk`n7aOG#k&x+9)XyL26fJ;ep-sRww4wm6R&_ya=Hal6jqGifOET_}yJ!8xW< z>zK!!^&jVVK$Kix_5qf|4}Q_069y;^(iS-$!?aIW+~{=P`ehr7R0K6H5?cqKo?iq2 z6?VOzPUJIj1~4hWlxBaO(K7Mx=g{Gh8mhiWNlui3CFT7>Pqd;XDwdIuHz7KKB^R@F zf`w5OlJPoq&lom3X~=jQ}{EYCX8AqKvfcHv%BlL%yxs*EN}EF)yA+Cu_X=RW;V`F?TXfE+k8+#$aQh_8cmUxX z(&mQj2q#yY^>7`3lwa#{v_O7_l`3((ez=G6N}x(xnI60bY+fa-Khz(dG_>H#q}Gz; zt)i-}`rT5D(P%|;OiqQ_XvSI@M3?Z@f!LKYgQ0ygT^oVt~UN2C1f z60^vWc-D$?9y`N`o1bau)?`t{lCq@!2s5k)v?}Tzshj0vKeEnUfsJY$Y_x!1aAQV&wj zZYvJro@nwXNc7%yuNM-DI?6Gt-OWyH!l2FFBM$UQrO8(wUl*;%zlErBXH7rr;V=7lQ4Ms|20_A3oMxO4e_4QAh%bB7A)BZFD zQJfAf$IXCSNPCT@Ht%V9otr<83*)1!c!hN~Q#O+ol(( zhmA>;;9S~K_+Zj=dWIguUMNDYm(L|+WEM)7CF$#9l#@bb?>`QSU^xD&;8Un})LS>3 zn=tX-N+w-d&sDy_n(H z{5Eg+W+5VAyoI#ZyAblOH0ab!h~epj*cmeOI<5EqVG!?b;TNFq^m@>r=xqL`;Jpqu z_iW#=*o3QTwk*kwB(aoHOTnJ6)VYp6T4#P;8pvD4dws9vY!|?KOuO`^{t<8NdsyCr zj>%%#NDb8N0#bB8`U@%O!27^}bMmMvE6^OeXMM|+>klNEP=Zldcg;359*aRum^*k0z*=g@7ruu} z#v7NT%maTS$WCrdqi6cXpQ1M$us>9zR$JUA%c0S)2h=X5T`M=Y zBbjTz0xXT%350Y0d>>a8jMCyd{pSqL_S^xKH@XFWbh0JEY}}kVWz*h~@bCTKnZ1J) zqSm<0L2m2B4kbTH?rIt47B}hKkd;Knuhyv=Bb!#kXx*Xz2#$|(=E^OH5LMp_J znRPy-r$gqpoa|5(`x#F}OWeeZm6{t$`U(+D1-~d2JfWRwK0=V<|M=&c^+JZcCxy< z_3tM42GvBuLmJ=@YcU#or;OgD6J%y<5@gKvg9K#8SsrJr_p4Pz9tw-(cuY#yPWY#bwv7%!~77JD%zy5Kk)`yO4gewJrc)8kb%`^nC7FzQGN`qEXg_-lnPr!KH|d6Fw@@ z4e9A{>6Ec+$)+2Ju{^rtB86ulkK}4#&*+!ydKmIzcs*Wk8Il$Kj2IL@ECo9}w#KqS z87JYepoOd}%AgK+J)w?kn*NUF(ob8$x0C?X^Jnr@G1q{|FfMRZNG8U0*oo@GUEx(b+| zLaHRYgTq<{Megmoxh;XZ(#=6dLb~#U)8T>x0oe_KKPp}a3Fo+3hPG;cv8e`5Y}tXy z;L)hMniBQZdqZ($2qQiG3H#t4Bv*zkBA89H$}NF{(LhGY2$4>W=tej&rf+-(Q}9x(Mz~t*wX7h4{@KKx#$h7H*cfem^KG* z*>p#um;|7oZzx{yUhV0#R#OT!1~SaEXM2wmv|?bz59z5le|g@~%8ptx6AJ3w$M7mx zUVHVlR>}cF;qq=3^+;0|s&@ys_wi426YUb(;Fva?_2WEm=X(`!4YDsNL|0+X(5|C42`&>B=xmG*K z#{Yer@D#DF#9~O;`{x$fabovF_2E}+^W;|+1hZ_^mA00LfNsBWj(ZQn-I-!tJHx}? zuR?;F&1~b`OAQ2%jk*sSN63VDInbAsJxlW;eyOcr!dih6cB>0y$4(km(R5@$EFNDpqI2k;;>m ze6i|9uR_i>cwj$s?B+=gV%qe@k$%wS+ZpO!UOZ}IJJwj)4BJW)TY`_>R#^@N!EO^9 z>A^h@1av?PSZc}k{hFKTztR4NN|}P~1|PgVeNgBZjA(!ml7Q5UfS*U8YrKo6cXL__ z4qSC%QNL`u(RO+DsWG0$vP6x}P3-dzdF!(@KbgIIH16_s8Ij14jhc#lE|>CHL$6Gi zW4L_#Y4##N|0|nD!R5wc!}g*W*YA^8|0?BX*d(k9vD&^lhR1qr2edcBx;>Y+(UAgO zA`8fgwu|zLX&^&Va%@f_4Vk>*GYA`-3FC zkY8_Vz3o9C#dFu_b;rtz=yWNXT_z(I8^ZO1ejJ^nW zc?b6OV5f`mjvy~1<|}-RvicE>g}g1h2X?hyQFGO29<%He8%Q(_u&Ip#LDq-1`cn5D zN8KdQIaw{j{op4bhP|O1DGipM`n3TFguRDvx)!~IyX8n*71mon4KAE-WR|o+=;MaD zI#V%d5%=b&Dchr0-#viPTp!q>Tui-1B4Lu%MmIG37Q@)_QtG2mT3xw&jz|u$T*9gK z*%jrmzO)z$z{`dgWR?nNG|?-jI^PK7Rb3N6U^BY|iPx3r=bm7;^jf(RAHKbXeA%Cs ztLzAX=P$sx4U9udaRBNn;N~R`+qCS0pyM1_>5H6<&>8Y2$ML848E^xq4c@MlUQ0D5-kD4ID|2GY%2`Yy=Z{Vmp?pu;#S!%oLS-Wsf5phXMKR?Q_=-9tXhMPNf8O(q^n0m zVT`*YiA%Si@dMYfZ_6&sfi!!o*zET(hVyPcVIu&qO_}H4YLT9#@u=;&K7#jq72of3 z1J1ckf6;`bBhy%Je#1Z5mCpJzg492sF_vE?D+{_%Mw_2#bW5`2l9ersEXTp(c;s_j z0<#iNqW(Jg=x|50U?IiHd_H69jBm^7WTC^0JVHjLa6p^C*V*0#_via*7;GX^m9F}I zUz=*-(ro#Vo*stP&izLBZh;Hq*h1fWgAHSyliM!_&7o<-ZY>((*?p^Y==uIOuFz!8 zKbc2A1AfQf_!Bg_{2EI@IbKp9idf+mfowC8TJDAiDxE0OZ%iLoQ*0S=-DknL5 z-h_oBdjk+Q!>$SKonK(?U+=g|PuMx5p?Gcy-p%$g~a&;Ar zIeeoHzy6E@wOD2A(8U7fY-ZWz@D=)NsrDY}i>v?mXgQ@hasTMRp!n`x=)k8PV@$v%wMp`8c{zmp-wXe-!$-Th?7~_P&(e$P&GX*yq`CGK z3{Lw`N!xaFUDlBX$O^<$EhpYzn=JSz01Tn^Ox%t?C!cU<#}ihk{jrE0urnLLR@xBY ztgATWI|7y#7qcw@L+lX>cB&(2T#t5?q4;GjGy78NR>h_NmW6d}ppDuv3fIT^&!Md|undG%yZvBD=qFz2u+B;yn^AD`4zjwg z{bgK(R(Zsn&$LItQ#`$-)pad(w4&y~TKnZj5G`AT_4l z8?|CfA8sk?mqCDmWp}t=pWY z)$_1&L&(+&E{VZXvOj8X)SmTqe;;mLOXK@?y3K{Z0t%cBfa{saEEAIrWs;SDxfC4f zATaM={#D3hIEp#MPDcOLm&nGaX?%_FYg1YM`nXdwfn$nWL3c{<+Fpcb)CUDEbyAoG zKa=0>=Ae!VS#{M*%cr@b>R4n>xwih=UZhNNpEH0R2OJ2@wi$a9weV%rD;eJ=5z9*m zUcZUUYIdN<0-9znwgJzgXp=mrzdCoH2w`1GE=YNd+#9=fS;*;LM6ePRqW91!+M zUD09980DYpp~;MDK;GQdQOPiZL-Ry(1xv|BFb3>p#1IYd>U2jX(o{EUZU(^9AZ z*n>53v7VawUhjeN#C~`k$%&YR%F|l5X&YbA+hl-c8R$EjTzQn!lDf{c8U_V zQjF7e+84Aa23k9zax`mxp91eP!_xbPgYfy{Wzw$Vak zp~?cqwt7=5vz^l)TM*ZSlPMfO;GdEqF6SZ;P&4?hyxtQ669!PR6O$PEw$l|p?ycqi zuJi@tL0?8a^xye01}np#BR;!Y&^T(9_;>;CJg*Mey0H{Beh0CRiDpG>G|7UT?(F~c z?HpG$TTe|0Ru5-=-E+c7U@?2-5DtU$BfFo~VBCx7C1B&X)9wjxTMLfexas^dA!X^SGb)zdw*&)YydaA|9M)Yzia6nQ z$+H)aSAUCSy}zb74RRA*0l3qEi}zh*4Y^W(gs!BhZ`4D`l1V;WueIn`<+dNBR@{;x zzA^Yr3g~NV+@1l;c-i3*2}^NoLhcmZMD1et0Xlb@NR@qp2aQJx zf(Hw7&z1W@ACeWui)m-YO$AWO1zAD2O~0Dmg%B}&C$kM!QG%eaXJhUbZg;D=hw2s9 zsCve458CADwGJ?QMuKbgmczHH&qSRlx*Z<1e4lQiy%hY~ zH|?HqS#s6O&n1^?>rwHKT6EJBFfZpx4* zAntiElqx)Tllx?BG$jzH8TuVQ69n%_pF=s_>6Q-hAh+?_7jh$w%2zZ8k@|J>B_)WkZ19`VF@5L*d@QISLSTP6!Dt( zTW6&H{gr@d-6Qu>g?e!eCamG1NpkAo$3hlymmAbUl(Xdgu-~t8H zF$I~>i3A!bQ)nXQPQ=LjS4dr$_(1+v3kzgQXdJRp5`G{Tu+P`-ORFc3MLv_FkP&L4 zN-MdKx(11qW(rZ3*nr4=tXxJ4)LVVGi?{S4ap{ZeFl8`K<|m8;J~E#B<+YGI#k zSIep$*mOGS%N;Y3pFIq7EXXlC)Zp1yrH2`qytXqWiPWcG2=8cN*hl z*vftKp;QUB4szkV<%nn;Z!8D?rtISzDL@N;3HS*sp-;g~`Gbrpt}09q-NE2X2dLL$ zg=lY|Drn7i&BRu)ttUUrY}vpRKYWP|^MgH*mB0+OO9Q?R+0ih=VkbYC%HJmUp&YUW zy&KpPnE=_*IV^!VNAQQ^+*6!*hqJqJjKe#7GR?(wJgKFgovFF;5$ykkjn6K76{MeP zK!vVHYzKlMAad=QcW~q;EJ2hAm+a;`g=rau!bE*@_<=F*MnyVR|6y)Ct4oBiWpXVm z!fCL=a~*%m9{G39t5#P9)jKDp!Z1*U!DL+yy7 zAY`oy{WYrPF8ye@AXwI}Y;@4Pe9vdY#X^{khH?@t$a> zqVe;x)gW5A-_uZ>+|O;uBt0UMT}ryMnj%yAcO%?K&sNVTIX$!lWM~`rql;H+6F5b) zPlmsYfZsCax!N>ee(SoE_MDWqBA?GC74SzcDFzszST-VJF@_)MD_jng+y2qr^NEef z-J8w2vTJcC7)@JE*8r$?7E@*PasEOZ1MTm}D>CiD=+o{^uRCwv5B5*E86_)Zuvsr8 zjTT`L@Zi^|CD2qbB&8FyVdE>`fv9TFqiBbG`+)FvSL9gsvwleg;oW8u<;p%EUo7{a zGxQq#29Ivx1>HN$JB&xYi+W?3Ywq=PFodo9@-5&YxX-vo_EA#?)}HF(*BZko*Js8E z8XU^&r`!An^b#vFCj&_W#P}pvcS}*CDJuZ08auNWrxd49t&Oxm+MF6bPiKNZ+e6kT z>BS1#udo-jn`4h{o>W--xtCl!-;90M9jz++_$2cDDWjwuN9ipV9=mN_&*+z6uViX| zU3PH%ln**xvN@z0S@)owaK+0ITSet5^=>j*lLV$vtJKd{}C`s|gsR%$Oy=m&vgj z|CEKk2p?*ZKoH$PIl0#>!AYT-XSd=YX6HH@o*Jv%Ry;5$*S)9!_ozE``T>7^n7+6j z<71u-Ollxm+)iW6ZQ41ob+>_gv@MkkjY>Hn2YDRE-Bf=G2$$YbiT>KvhP>y%c%-xI z=28bb6NuF6iV*-9yk60Eua7lqAX;ZrmK5TzERPXm>cqQ^W~+{*4VRpqO>x27OWRl- zYL)nRRX2_5K{+*67A-zB2N=OpxhdP+9Z+ewxA6wE=|fVzDgUD72gs(WesdfGn**Wt z)}~!86fyQ~j9>>`p6VZbu*J76EC!brJK^-#X|q2Gp;#Jd*2}av22g|7RU&9qyDIt5z8j1-^Al| z6vv!JG`>=7O!IMYhKSthpjp=|)Gp)E+Sb>F)RVE+KpnafYmvmQA&)wYtMrzVihqkN zwMtRkP-g+(PrvM31UqmUJYnwrZYAd4?IB`A)$D?1G5JZ zsr!#7z`)u<51+BETHmQ|?0yu07jk`FyLB-eBLDL^(c=vq#RQU2JY(sTea_oNq+nKa&Ax|yV_set>FINa zQF5?=RLwLRWxj=#Pf4QzZ_uzMn^>6PARj+&XzX;M;n@am+V%=H<1ETrs{36UKZ($T zcV4{EJebo_P0T!HtCM^ICiC$KEeV?mL63cdLFdGIDmv>(eprcnz}rEcck!TsP|()2 z(LN}d8)zF@W3g=aAn=PhR;?~g=S+umq^o+8xPG-b9bcVnnb(e|p7Wh|m2#UYy)^8y zDmD6g^CZ-&Uy_2k3`Fa4JXsbJ>%P0)Nuj1)k{>~NHFedQrKz?xjO~xJZ3BpTaERPA z0?n8zt_QE1Q68STN8Pj~CN#E{|`xSmaz zhlHBVlyy%^po5cO#U3VnO17`xt_K8>D~}%L%`1f#omefuc$Q=IjVTshq*UI#eFpc- z+&0s+TX9rDI!2S+5H@LpOK#lHW9%}})2I9@I&KLrU``-UY8ZZ8FoS>B^bcrhIYTl!~~62|)S(tGT*7B)Zo*Fib5 zIb7W;_Zg|AD z&)O@G|)WNUuLW)?8E?D^4*-bfit3|=U!4vq+ zCG_`yOxh&r+p+8CC{c5!k$L))yWK&N3$GssSH9GzXeTyxIg>iIh_0gCwyU*?#nsu8=wP93T8 zB_RfV46*9UrH`Rke@}xBRp~ZpIh->Ys$T4vPGhZAIEO{e*(D$sM5690zSYlQ#;dG8 zsaL(=1boegTWfHAypwQ;6okE}QIWq#D@2<7&dQgW>}FM0u(^OU>LU!@Ar{XxPVvJa zC$Nb>ovB;BK8~@ax^yE`!k|N}Y}PA(Qt+doY7;fHWr~!?QvdxLZirKTShfa3o2bY4 zPY;P+wB`9r?bfxQ!eU*1-j7tgIWRs!oGgwR)p`%j=lULfFIHkJ`T@H92C+_{VL6!pQ`M>JLHD<%{_lqHZXR2DhS5wx|+M z^Px3mGOYXwqjJ;x8!jOO6n028Cgl<51nr1F2y+)L5DLFu9k)bLA|2n@vkQ3-+eTpRvd~+>Q`iG-|U;4y-iiCvhlNw zuQ9sbZ^8MQiIr+!1k+cC^HI^n{<$&u6rYsNw%Y-2fP9k}>aD+va>agWy*N!=oU~zFHdkm`*ghh-`1(nvLyZB@uN8 zN1Elt>{C#cCyy!}czi98Ahnp)I0lRyL@)(%_(VzR|V39izkG_5ez$v~=pBj%Kn8o_NYU#1w$S+D_M` z3%QB*liuF13dZtY^Uz-G_y^_teY)qK!QEx3OH@eVyqMRK)24->^;qROe$qCSwr@hB zc7l85VFMiFLmj~zwQ3|ezC`=X-w$jzHq43Qwmx0#C$8i)X4|c;qudWrAaD;i$o*c@ zX*8JKdCQB@$lA3@P;Sb;J>u0-->->{~ihdp(-293~ks*WI9#sfGXI+K=P_brHe z9AJn(W|MB}1y{@v4fz(pmU-piFUhl05-8J~&$1v&z?WpQ|LBgR{5}rbKJ9TX)pad+ z(@nV1*f2g`lv)Mhd%n?HC&Q0KMy?s@A!&|yo@s5d?e;nGg<)$c7`G3<16R6LaCvo% zGU_`W^>7*S=n3Y0qCBli>ay6izxr`I>oZ+G5!73Le^;OV8V4Y#%t;&ahxKTMkTvBk zF+LJaFTu#EJLUT`Rw;;z1hwWEK((JE61*SA-LjnWxG*l0<~VHCc-B-yPSX$-ue3_B zy`D*BJKg*ImPuZQebbGXM6$)=28_Eb8SaMXd60uQpSY}A(b>x zhp_tPE-&!vqckwtqoNRxsJxE@~nIw^4kk1kzyYxVQ zQ?9c4s4iDq^-{M-G3fo>qBVL`O1!7M6wPBA?F3SDW=liR!HJOZf?D(>YKDOBi*57vm1 z8548&ofM#m)QF#6OeOVLwUtcIpEvg*PFdRZ0`_rYXc^P^(l4gtFZ$I>42T*^R0=+u z7Vf^qE6bTfS5iL-CbY}%DZZgfiBNjiUEqRWrMN3U67h05iz!$CRw%SytPmw76H-daE?b%89M;?;lh(awrztGAclU{soi0s z2rOLeE}7J`3A18onn%Rva}eXC;$*{&!`pX)clP#vby(>WAJt1U?;OYSSSL%t3d5}? zJUrn&`vs)4rD_+cDOwOVbL3kf>2YJm)XLhq-^Ljiyc+^DFM!}@`OwtUMs_3 zc*ru~jpKyr5@xjLaJU$C;(MH8)IoIDkkm&$B8-m-Q1T6Bk9E`+$9u5#07LQ8E$Xga z5~z-f$z8SeD&SLSe2(QYoAPfB5h3_;#G9t${b diff --git a/assets/style-6c5d5cd9.css b/assets/style-6c5d5cd9.css new file mode 100644 index 00000000..e5294c4f --- /dev/null +++ b/assets/style-6c5d5cd9.css @@ -0,0 +1 @@ +:root{--back-to-top-z-index: 5;--back-to-top-color: #3eaf7c;--back-to-top-color-hover: #71cda3}.back-to-top{cursor:pointer;position:fixed;bottom:2rem;right:2.5rem;width:2rem;height:1.2rem;background-color:var(--back-to-top-color);-webkit-mask:url(/learning-kotlin/assets/back-to-top-8efcbe56.svg) no-repeat;mask:url(/learning-kotlin/assets/back-to-top-8efcbe56.svg) no-repeat;z-index:var(--back-to-top-z-index)}.back-to-top:hover{background-color:var(--back-to-top-color-hover)}@media (max-width: 959px){.back-to-top{display:none}}@media print{.back-to-top{display:none}}.back-to-top-enter-active,.back-to-top-leave-active{transition:opacity .3s}.back-to-top-enter-from,.back-to-top-leave-to{opacity:0}:root{--external-link-icon-color: #aaa}.external-link-icon{position:relative;display:inline-block;color:var(--external-link-icon-color);vertical-align:middle;top:-1px}@media print{.external-link-icon{display:none}}.external-link-icon-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}:root{--nprogress-color: #29d;--nprogress-z-index: 1031}#nprogress{pointer-events:none}#nprogress .bar{background:var(--nprogress-color);position:fixed;z-index:var(--nprogress-z-index);top:0;left:0;width:100%;height:2px}:root{--c-brand: #3eaf7c;--c-brand-light: #4abf8a;--c-bg: #ffffff;--c-bg-light: #f3f4f5;--c-bg-lighter: #eeeeee;--c-bg-dark: #ebebec;--c-bg-darker: #e6e6e6;--c-bg-navbar: var(--c-bg);--c-bg-sidebar: var(--c-bg);--c-bg-arrow: #cccccc;--c-text: #2c3e50;--c-text-accent: var(--c-brand);--c-text-light: #3a5169;--c-text-lighter: #4e6e8e;--c-text-lightest: #6a8bad;--c-text-quote: #999999;--c-border: #eaecef;--c-border-dark: #dfe2e5;--c-tip: #42b983;--c-tip-bg: var(--c-bg-light);--c-tip-title: var(--c-text);--c-tip-text: var(--c-text);--c-tip-text-accent: var(--c-text-accent);--c-warning: #ffc310;--c-warning-bg: #fffae3;--c-warning-bg-light: #fff3ba;--c-warning-bg-lighter: #fff0b0;--c-warning-border-dark: #f7dc91;--c-warning-details-bg: #fff5ca;--c-warning-title: #f1b300;--c-warning-text: #746000;--c-warning-text-accent: #edb100;--c-warning-text-light: #c1971c;--c-warning-text-quote: #ccab49;--c-danger: #f11e37;--c-danger-bg: #ffe0e0;--c-danger-bg-light: #ffcfde;--c-danger-bg-lighter: #ffc9c9;--c-danger-border-dark: #f1abab;--c-danger-details-bg: #ffd4d4;--c-danger-title: #ed1e2c;--c-danger-text: #660000;--c-danger-text-accent: #bd1a1a;--c-danger-text-light: #b5474d;--c-danger-text-quote: #c15b5b;--c-details-bg: #eeeeee;--c-badge-tip: var(--c-tip);--c-badge-warning: #ecc808;--c-badge-warning-text: var(--c-bg);--c-badge-danger: #dc2626;--c-badge-danger-text: var(--c-bg);--t-color: .3s ease;--t-transform: .3s ease;--code-bg-color: #282c34;--code-hl-bg-color: rgba(0, 0, 0, .66);--code-ln-color: #9e9e9e;--code-ln-wrapper-width: 3.5rem;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-family-code: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;--navbar-height: 3.6rem;--navbar-padding-v: .7rem;--navbar-padding-h: 1.5rem;--sidebar-width: 20rem;--sidebar-width-mobile: calc(var(--sidebar-width) * .82);--content-width: 740px;--homepage-width: 960px}.back-to-top{--back-to-top-color: var(--c-brand);--back-to-top-color-hover: var(--c-brand-light)}.DocSearch{--docsearch-primary-color: var(--c-brand);--docsearch-text-color: var(--c-text);--docsearch-highlight-color: var(--c-brand);--docsearch-muted-color: var(--c-text-quote);--docsearch-container-background: rgba(9, 10, 17, .8);--docsearch-modal-background: var(--c-bg-light);--docsearch-searchbox-background: var(--c-bg-lighter);--docsearch-searchbox-focus-background: var(--c-bg);--docsearch-searchbox-shadow: inset 0 0 0 2px var(--c-brand);--docsearch-hit-color: var(--c-text-light);--docsearch-hit-active-color: var(--c-bg);--docsearch-hit-background: var(--c-bg);--docsearch-hit-shadow: 0 1px 3px 0 var(--c-border-dark);--docsearch-footer-background: var(--c-bg)}.external-link-icon{--external-link-icon-color: var(--c-text-quote)}.medium-zoom-overlay{--medium-zoom-bg-color: var(--c-bg)}#nprogress{--nprogress-color: var(--c-brand)}.pwa-popup{--pwa-popup-text-color: var(--c-text);--pwa-popup-bg-color: var(--c-bg);--pwa-popup-border-color: var(--c-brand);--pwa-popup-shadow: 0 4px 16px var(--c-brand);--pwa-popup-btn-text-color: var(--c-bg);--pwa-popup-btn-bg-color: var(--c-brand);--pwa-popup-btn-hover-bg-color: var(--c-brand-light)}.search-box{--search-bg-color: var(--c-bg);--search-accent-color: var(--c-brand);--search-text-color: var(--c-text);--search-border-color: var(--c-border);--search-item-text-color: var(--c-text-lighter);--search-item-focus-bg-color: var(--c-bg-light)}html.dark{--c-brand: #3aa675;--c-brand-light: #349469;--c-bg: #22272e;--c-bg-light: #2b313a;--c-bg-lighter: #262c34;--c-bg-dark: #343b44;--c-bg-darker: #37404c;--c-text: #adbac7;--c-text-light: #96a7b7;--c-text-lighter: #8b9eb0;--c-text-lightest: #8094a8;--c-border: #3e4c5a;--c-border-dark: #34404c;--c-tip: #318a62;--c-warning: #e0ad15;--c-warning-bg: #2d2f2d;--c-warning-bg-light: #423e2a;--c-warning-bg-lighter: #44442f;--c-warning-border-dark: #957c35;--c-warning-details-bg: #39392d;--c-warning-title: #fdca31;--c-warning-text: #d8d96d;--c-warning-text-accent: #ffbf00;--c-warning-text-light: #ddb84b;--c-warning-text-quote: #ccab49;--c-danger: #fc1e38;--c-danger-bg: #39232c;--c-danger-bg-light: #4b2b35;--c-danger-bg-lighter: #553040;--c-danger-border-dark: #a25151;--c-danger-details-bg: #482936;--c-danger-title: #fc2d3b;--c-danger-text: #ea9ca0;--c-danger-text-accent: #fd3636;--c-danger-text-light: #d9777c;--c-danger-text-quote: #d56b6b;--c-details-bg: #323843;--c-badge-warning: var(--c-warning);--c-badge-warning-text: #3c2e05;--c-badge-danger: var(--c-danger);--c-badge-danger-text: #401416;--code-hl-bg-color: #363b46}html.dark .DocSearch{--docsearch-logo-color: var(--c-text);--docsearch-modal-shadow: inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309;--docsearch-key-shadow: inset 0 -2px 0 0 #282d55, inset 0 0 1px 1px #51577d, 0 2px 2px 0 rgba(3, 4, 9, .3);--docsearch-key-gradient: linear-gradient(-225deg, #444950, #1c1e21);--docsearch-footer-shadow: inset 0 1px 0 0 rgba(73, 76, 106, .5), 0 -4px 8px 0 rgba(0, 0, 0, .2)}html,body{padding:0;margin:0;background-color:var(--c-bg);transition:background-color var(--t-color)}html.dark{color-scheme:dark}html{font-size:16px}body{font-family:var(--font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:1rem;color:var(--c-text)}a{font-weight:500;color:var(--c-text-accent);text-decoration:none;overflow-wrap:break-word}p a code{font-weight:400;color:var(--c-text-accent)}kbd{font-family:var(--font-family-code);color:var(--c-text);background:var(--c-bg-lighter);border:solid .15rem var(--c-border-dark);border-bottom:solid .25rem var(--c-border-dark);border-radius:.15rem;padding:0 .15em}code{font-family:var(--font-family-code);color:var(--c-text-lighter);padding:.25rem .5rem;margin:0;font-size:.85em;background-color:var(--c-bg-light);border-radius:3px;overflow-wrap:break-word;transition:background-color var(--t-color)}blockquote{font-size:1rem;color:var(--c-text-quote);border-left:.2rem solid var(--c-border-dark);margin:1rem 0;padding:.25rem 0 .25rem 1rem;overflow-wrap:break-word}blockquote>p{margin:0}ul,ol{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25;overflow-wrap:break-word}h1:focus-visible,h2:focus-visible,h3:focus-visible,h4:focus-visible,h5:focus-visible,h6:focus-visible{outline:none}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid var(--c-border);transition:border-color var(--t-color)}h3{font-size:1.35rem}h4{font-size:1.15rem}h5{font-size:1.05rem}h6{font-size:1rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media print{a.header-anchor{display:none}}a.header-anchor:hover{text-decoration:none}a.header-anchor:focus-visible{opacity:1}@media print{a[href^="http://"]:after,a[href^="https://"]:after{content:" (" attr(href) ") "}}p,ul,ol{line-height:1.7;overflow-wrap:break-word}hr{border:0;border-top:1px solid var(--c-border)}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto;transition:border-color var(--t-color)}tr{border-top:1px solid var(--c-border-dark);transition:border-color var(--t-color)}tr:nth-child(2n){background-color:var(--c-bg-light);transition:background-color var(--t-color)}tr:nth-child(2n) code{background-color:var(--c-bg-dark)}th,td{padding:.6em 1em;border:1px solid var(--c-border-dark);transition:border-color var(--t-color)}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:6px solid var(--c-bg-arrow)}.arrow.down{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid var(--c-bg-arrow)}.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:6px solid var(--c-bg-arrow)}.arrow.left{border-top:4px solid transparent;border-bottom:4px solid transparent;border-right:6px solid var(--c-bg-arrow)}.badge{display:inline-block;font-size:14px;font-weight:600;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:var(--c-bg);vertical-align:top;transition:color var(--t-color),background-color var(--t-color)}.badge.tip{background-color:var(--c-badge-tip)}.badge.warning{background-color:var(--c-badge-warning);color:var(--c-badge-warning-text)}.badge.danger{background-color:var(--c-badge-danger);color:var(--c-badge-danger-text)}.badge+.badge{margin-left:5px}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:var(--font-family-code);font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#ec5975}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:#3eaf7c}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.375;padding:1.3rem 1.5rem;margin:.85rem 0;border-radius:6px;overflow:auto}.theme-default-content pre code,.theme-default-content pre[class*=language-] code{color:#fff;padding:0;background-color:transparent!important;border-radius:0;overflow-wrap:unset;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.theme-default-content .line-number{font-family:var(--font-family-code)}div[class*=language-]{position:relative;background-color:var(--code-bg-color);border-radius:6px}div[class*=language-]:before{content:attr(data-ext);position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:var(--code-ln-color)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent!important;position:relative;z-index:1}div[class*=language-] .highlight-lines{-webkit-user-select:none;-moz-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.375}div[class*=language-] .highlight-lines .highlight-line{background-color:var(--code-hl-bg-color)}div[class*=language-]:not(.line-numbers-mode) .line-numbers{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlight-line{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlight-line:before{content:" ";position:absolute;z-index:2;left:0;top:0;display:block;width:var(--code-ln-wrapper-width);height:100%}div[class*=language-].line-numbers-mode pre{margin-left:var(--code-ln-wrapper-width);padding-left:1rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers{position:absolute;top:0;width:var(--code-ln-wrapper-width);text-align:center;color:var(--code-ln-color);padding-top:1.25rem;line-height:1.375;counter-reset:line-number}div[class*=language-].line-numbers-mode .line-numbers .line-number{position:relative;z-index:3;-webkit-user-select:none;-moz-user-select:none;user-select:none;height:1.375em}div[class*=language-].line-numbers-mode .line-numbers .line-number:before{counter-increment:line-number;content:counter(line-number);font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;top:0;left:0;width:var(--code-ln-wrapper-width);height:100%;border-radius:6px 0 0 6px;border-right:1px solid var(--code-hl-bg-color)}@media (max-width: 419px){.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}.code-group__nav{margin-top:.85rem;margin-bottom:calc(-1.7rem - 6px);padding-bottom:calc(1.7rem - 6px);padding-left:10px;padding-top:10px;border-top-left-radius:6px;border-top-right-radius:6px;background-color:var(--code-bg-color)}.code-group__ul{margin:auto 0;padding-left:0;display:inline-flex;list-style:none}.code-group__nav-tab{border:0;padding:5px;cursor:pointer;background-color:transparent;font-size:.85em;line-height:1.4;color:#ffffffe6;font-weight:600}.code-group__nav-tab:focus{outline:none}.code-group__nav-tab:focus-visible{outline:1px solid rgba(255,255,255,.9)}.code-group__nav-tab-active{border-bottom:var(--c-brand) 1px solid}@media (max-width: 419px){.code-group__nav{margin-left:-1.5rem;margin-right:-1.5rem;border-radius:0}}.code-group-item{display:none}.code-group-item__active{display:block}.code-group-item>pre{background-color:orange}.custom-container{transition:color var(--t-color),border-color var(--t-color),background-color var(--t-color)}.custom-container .custom-container-title{font-weight:600}.custom-container .custom-container-title:not(:only-child){margin-bottom:-.4rem}.custom-container.tip,.custom-container.warning,.custom-container.danger{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-container.tip{border-color:var(--c-tip);background-color:var(--c-tip-bg);color:var(--c-tip-text)}.custom-container.tip .custom-container-title{color:var(--c-tip-title)}.custom-container.tip a{color:var(--c-tip-text-accent)}.custom-container.tip code{background-color:var(--c-bg-dark)}.custom-container.warning{border-color:var(--c-warning);background-color:var(--c-warning-bg);color:var(--c-warning-text)}.custom-container.warning .custom-container-title{color:var(--c-warning-title)}.custom-container.warning a{color:var(--c-warning-text-accent)}.custom-container.warning blockquote{border-left-color:var(--c-warning-border-dark);color:var(--c-warning-text-quote)}.custom-container.warning code{color:var(--c-warning-text-light);background-color:var(--c-warning-bg-light)}.custom-container.warning details{background-color:var(--c-warning-details-bg)}.custom-container.warning details code{background-color:var(--c-warning-bg-lighter)}.custom-container.warning .external-link-icon{--external-link-icon-color: var(--c-warning-text-quote)}.custom-container.danger{border-color:var(--c-danger);background-color:var(--c-danger-bg);color:var(--c-danger-text)}.custom-container.danger .custom-container-title{color:var(--c-danger-title)}.custom-container.danger a{color:var(--c-danger-text-accent)}.custom-container.danger blockquote{border-left-color:var(--c-danger-border-dark);color:var(--c-danger-text-quote)}.custom-container.danger code{color:var(--c-danger-text-light);background-color:var(--c-danger-bg-light)}.custom-container.danger details{background-color:var(--c-danger-details-bg)}.custom-container.danger details code{background-color:var(--c-danger-bg-lighter)}.custom-container.danger .external-link-icon{--external-link-icon-color: var(--c-danger-text-quote)}.custom-container.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:var(--c-details-bg)}.custom-container.details code{background-color:var(--c-bg-darker)}.custom-container.details h4{margin-top:0}.custom-container.details figure:last-child,.custom-container.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-container.details summary{outline:none;cursor:pointer}.home{padding:var(--navbar-height) 2rem 0;max-width:var(--homepage-width);margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero h1,.home .hero .description,.home .hero .actions{margin:1.8rem auto}.home .hero .actions{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:var(--c-text-lightest)}.home .hero .action-button{display:inline-block;font-size:1.2rem;padding:.8rem 1.6rem;border-width:2px;border-style:solid;border-radius:4px;transition:background-color var(--t-color);box-sizing:border-box}.home .hero .action-button.primary{color:var(--c-bg);background-color:var(--c-brand);border-color:var(--c-brand)}.home .hero .action-button.primary:hover{background-color:var(--c-brand-light)}.home .hero .action-button.secondary{color:var(--c-brand);background-color:var(--c-bg);border-color:var(--c-brand)}.home .hero .action-button.secondary:hover{color:var(--c-bg);background-color:var(--c-brand-light)}.home .features{border-top:1px solid var(--c-border);transition:border-color var(--t-color);padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:var(--c-text-light)}.home .feature p{color:var(--c-text-lighter)}.home .theme-default-content{padding:0;margin:0}.home .footer{padding:2.5rem;border-top:1px solid var(--c-border);text-align:center;color:var(--c-text-lighter);transition:border-color var(--t-color)}@media (max-width: 719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width: 419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero h1,.home .hero .description,.home .hero .actions{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.page{padding-top:var(--navbar-height);padding-left:var(--sidebar-width)}.navbar{position:fixed;z-index:20;top:0;left:0;right:0;height:var(--navbar-height);box-sizing:border-box;border-bottom:1px solid var(--c-border);background-color:var(--c-bg-navbar);transition:background-color var(--t-color),border-color var(--t-color)}.sidebar{font-size:16px;width:var(--sidebar-width);position:fixed;z-index:10;margin:0;top:var(--navbar-height);left:0;bottom:0;box-sizing:border-box;border-right:1px solid var(--c-border);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--c-brand) var(--c-border);background-color:var(--c-bg-sidebar);transition:transform var(--t-transform),background-color var(--t-color),border-color var(--t-color)}.sidebar::-webkit-scrollbar{width:7px}.sidebar::-webkit-scrollbar-track{background-color:var(--c-border)}.sidebar::-webkit-scrollbar-thumb{background-color:var(--c-brand)}.sidebar-mask{position:fixed;z-index:9;top:0;left:0;width:100vw;height:100vh;display:none}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(1){transform:rotate(45deg) translate3d(5.5px,5.5px,0)}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(2){transform:scale3d(0,1,1)}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(3){transform:rotate(-45deg) translate3d(6px,-6px,0)}.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(1),.theme-container.sidebar-open .navbar>.toggle-sidebar-button .icon span:nth-child(3){transform-origin:center}.theme-container.no-navbar .theme-default-content h1,.theme-container.no-navbar .theme-default-content h2,.theme-container.no-navbar .theme-default-content h3,.theme-container.no-navbar .theme-default-content h4,.theme-container.no-navbar .theme-default-content h5,.theme-container.no-navbar .theme-default-content h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .page{padding-top:0}.theme-container.no-navbar .sidebar{top:0}.theme-container.no-sidebar .sidebar{display:none}@media (max-width: 719px){.theme-container.no-sidebar .sidebar{display:block}}.theme-container.no-sidebar .page{padding-left:0}.theme-default-content a:hover{text-decoration:underline}.theme-default-content img{max-width:100%}.theme-default-content h1,.theme-default-content h2,.theme-default-content h3,.theme-default-content h4,.theme-default-content h5,.theme-default-content h6{margin-top:calc(.5rem - var(--navbar-height));padding-top:calc(1rem + var(--navbar-height));margin-bottom:0}.theme-default-content h1:first-child,.theme-default-content h2:first-child,.theme-default-content h3:first-child,.theme-default-content h4:first-child,.theme-default-content h5:first-child,.theme-default-content h6:first-child{margin-bottom:1rem}.theme-default-content h1:first-child+p,.theme-default-content h1:first-child+pre,.theme-default-content h1:first-child+.custom-container,.theme-default-content h2:first-child+p,.theme-default-content h2:first-child+pre,.theme-default-content h2:first-child+.custom-container,.theme-default-content h3:first-child+p,.theme-default-content h3:first-child+pre,.theme-default-content h3:first-child+.custom-container,.theme-default-content h4:first-child+p,.theme-default-content h4:first-child+pre,.theme-default-content h4:first-child+.custom-container,.theme-default-content h5:first-child+p,.theme-default-content h5:first-child+pre,.theme-default-content h5:first-child+.custom-container,.theme-default-content h6:first-child+p,.theme-default-content h6:first-child+pre,.theme-default-content h6:first-child+.custom-container{margin-top:2rem}@media (max-width: 959px){.sidebar{font-size:15px;width:var(--sidebar-width-mobile)}.page{padding-left:var(--sidebar-width-mobile)}}@media (max-width: 719px){.sidebar{top:0;padding-top:var(--navbar-height);transform:translate(-100%)}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translate(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width: 419px){h1{font-size:1.9rem}}.navbar{--navbar-line-height: calc( var(--navbar-height) - 2 * var(--navbar-padding-v) );padding:var(--navbar-padding-v) var(--navbar-padding-h);line-height:var(--navbar-line-height)}.navbar .logo{height:var(--navbar-line-height);margin-right:var(--navbar-padding-v);vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:var(--c-text);position:relative}.navbar .navbar-items-wrapper{display:flex;position:absolute;box-sizing:border-box;top:var(--navbar-padding-v);right:var(--navbar-padding-h);height:var(--navbar-line-height);padding-left:var(--navbar-padding-h);white-space:nowrap;font-size:.9rem}.navbar .navbar-items-wrapper .search-box{flex:0 0 auto;vertical-align:top}@media screen and (max-width: 719px){.navbar{padding-left:4rem}.navbar .site-name{display:block;width:calc(100vw - 11rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.navbar .can-hide{display:none}}.navbar-items{display:inline-block}@media print{.navbar-items{display:none}}.navbar-items a{display:inline-block;line-height:1.4rem;color:inherit}.navbar-items a:hover,.navbar-items a.router-link-active{color:var(--c-text)}.navbar-items .navbar-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:var(--navbar-line-height)}.navbar-items .navbar-item:first-child{margin-left:0}.navbar-items .navbar-item>a:hover,.navbar-items .navbar-item>a.router-link-active{margin-bottom:-2px;border-bottom:2px solid var(--c-text-accent)}@media (max-width: 719px){.navbar-items .navbar-item{margin-left:0}.navbar-items .navbar-item>a:hover,.navbar-items .navbar-item>a.router-link-active{margin-bottom:0;border-bottom:none}.navbar-items a:hover,.navbar-items a.router-link-active{color:var(--c-text-accent)}}.toggle-sidebar-button{position:absolute;top:.6rem;left:1rem;display:none;padding:.6rem;cursor:pointer}.toggle-sidebar-button .icon{display:flex;flex-direction:column;justify-content:center;align-items:center;width:1.25rem;height:1.25rem;cursor:inherit}.toggle-sidebar-button .icon span{display:inline-block;width:100%;height:2px;border-radius:2px;background-color:var(--c-text);transition:transform var(--t-transform)}.toggle-sidebar-button .icon span:nth-child(2){margin:6px 0}@media screen and (max-width: 719px){.toggle-sidebar-button{display:block}}.toggle-color-mode-button{display:flex;margin:auto;margin-left:1rem;border:0;background:none;color:var(--c-text);opacity:.8;cursor:pointer}@media print{.toggle-color-mode-button{display:none}}.toggle-color-mode-button:hover{opacity:1}.toggle-color-mode-button .icon{width:1.25rem;height:1.25rem}.DocSearch{transition:background-color var(--t-color)}.navbar-dropdown-wrapper{cursor:pointer}.navbar-dropdown-wrapper .navbar-dropdown-title,.navbar-dropdown-wrapper .navbar-dropdown-title-mobile{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:var(--c-text)}.navbar-dropdown-wrapper .navbar-dropdown-title:hover,.navbar-dropdown-wrapper .navbar-dropdown-title-mobile:hover{border-color:transparent}.navbar-dropdown-wrapper .navbar-dropdown-title .arrow,.navbar-dropdown-wrapper .navbar-dropdown-title-mobile .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.navbar-dropdown-wrapper .navbar-dropdown-title-mobile{display:none;font-weight:600;font-size:inherit}.navbar-dropdown-wrapper .navbar-dropdown-title-mobile:hover{color:var(--c-text-accent)}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item{color:inherit;line-height:1.7rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle{margin:.45rem 0 0;border-top:1px solid var(--c-border);padding:1rem 0 .45rem;font-size:.9rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle>span{padding:0 1.5rem 0 1.25rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle>a{font-weight:inherit}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle>a.router-link-active:after{display:none}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subitem-wrapper{padding:0;list-style:none}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subitem-wrapper .navbar-dropdown-subitem{font-size:.9em}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a:hover,.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a.router-link-active{color:var(--c-text-accent)}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid var(--c-text-accent);border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item:first-child .navbar-dropdown-subtitle{margin-top:0;padding-top:0;border-top:0}.navbar-dropdown-wrapper.mobile.open .navbar-dropdown-title,.navbar-dropdown-wrapper.mobile.open .navbar-dropdown-title-mobile{margin-bottom:.5rem}.navbar-dropdown-wrapper.mobile .navbar-dropdown-title,.navbar-dropdown-wrapper.mobile .navbar-dropdown-title-mobile{display:none}.navbar-dropdown-wrapper.mobile .navbar-dropdown-title-mobile{display:block}.navbar-dropdown-wrapper.mobile .navbar-dropdown{transition:height .1s ease-out;overflow:hidden}.navbar-dropdown-wrapper.mobile .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle{border-top:0;margin-top:0;padding-top:0;padding-bottom:0}.navbar-dropdown-wrapper.mobile .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subtitle,.navbar-dropdown-wrapper.mobile .navbar-dropdown .navbar-dropdown-item>a{font-size:15px;line-height:2rem}.navbar-dropdown-wrapper.mobile .navbar-dropdown .navbar-dropdown-item .navbar-dropdown-subitem{font-size:14px;padding-left:1rem}.navbar-dropdown-wrapper:not(.mobile){height:1.8rem}.navbar-dropdown-wrapper:not(.mobile):hover .navbar-dropdown,.navbar-dropdown-wrapper:not(.mobile).open .navbar-dropdown{display:block!important}.navbar-dropdown-wrapper:not(.mobile).open:blur{display:none}.navbar-dropdown-wrapper:not(.mobile) .navbar-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:var(--c-bg-navbar);padding:.6rem 0;border:1px solid var(--c-border);border-bottom-color:var(--c-border-dark);text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}.page{padding-bottom:2rem;display:block}.page .theme-default-content{max-width:var(--content-width);margin:0 auto;padding:2rem 2.5rem;padding-top:0}@media (max-width: 959px){.page .theme-default-content{padding:2rem}}@media (max-width: 419px){.page .theme-default-content{padding:1.5rem}}.page-meta{max-width:var(--content-width);margin:0 auto;padding:1rem 2.5rem;overflow:auto}@media (max-width: 959px){.page-meta{padding:2rem}}@media (max-width: 419px){.page-meta{padding:1.5rem}}.page-meta .meta-item{cursor:default;margin-top:.8rem}.page-meta .meta-item .meta-item-label{font-weight:500;color:var(--c-text-lighter)}.page-meta .meta-item .meta-item-info{font-weight:400;color:var(--c-text-quote)}.page-meta .edit-link{display:inline-block;margin-right:.25rem}@media print{.page-meta .edit-link{display:none}}.page-meta .last-updated{float:right}@media (max-width: 719px){.page-meta .last-updated{font-size:.8em;float:none}.page-meta .contributors{font-size:.8em}}.page-nav{max-width:var(--content-width);margin:0 auto;padding:1rem 2.5rem 2rem;padding-bottom:0}@media (max-width: 959px){.page-nav{padding:2rem}}@media (max-width: 419px){.page-nav{padding:1.5rem}}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid var(--c-border);transition:border-color var(--t-color);padding-top:1rem;overflow:auto}.page-nav .prev a:before{content:"←"}.page-nav .next{float:right}.page-nav .next a:after{content:"→"}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .navbar-items{display:none;border-bottom:1px solid var(--c-border);transition:border-color var(--t-color);padding:.5rem 0 .75rem}.sidebar .navbar-items a{font-weight:600}.sidebar .navbar-items .navbar-item{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar .sidebar-items{padding:1.5rem 0}@media (max-width: 719px){.sidebar .navbar-items{display:block}.sidebar .navbar-items .navbar-dropdown-wrapper .navbar-dropdown .navbar-dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar .sidebar-items{padding:1rem 0}}.sidebar-item{cursor:default;border-left:.25rem solid transparent;color:var(--c-text)}.sidebar-item:focus-visible{outline-width:1px;outline-offset:-1px}.sidebar-item.active:not(p.sidebar-heading){font-weight:600;color:var(--c-text-accent);border-left-color:var(--c-text-accent)}.sidebar-item.sidebar-heading{transition:color .15s ease;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0}.sidebar-item.sidebar-heading+.sidebar-item-children{transition:height .1s ease-out;overflow:hidden;margin-bottom:.75rem}.sidebar-item.collapsible{cursor:pointer}.sidebar-item.collapsible .arrow{position:relative;top:-.12em;left:.5em}.sidebar-item:not(.sidebar-heading){font-size:1em;font-weight:400;display:inline-block;margin:0;padding:.35rem 1rem .35rem 2rem;line-height:1.4;width:100%;box-sizing:border-box}.sidebar-item:not(.sidebar-heading)+.sidebar-item-children{padding-left:1rem;font-size:.95em}.sidebar-item-children .sidebar-item-children .sidebar-item:not(.sidebar-heading){padding:.25rem 1rem .25rem 1.75rem}.sidebar-item-children .sidebar-item-children .sidebar-item:not(.sidebar-heading).active{font-weight:500;border-left-color:transparent}a.sidebar-heading+.sidebar-item-children .sidebar-item:not(.sidebar-heading).active{border-left-color:transparent}a.sidebar-item{cursor:pointer}a.sidebar-item:hover{color:var(--c-text-accent)}.table-of-contents .badge{vertical-align:middle}.dropdown-enter-from,.dropdown-leave-to{height:0!important}.fade-slide-y-enter-active{transition:all .2s ease}.fade-slide-y-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)}.fade-slide-y-enter-from,.fade-slide-y-leave-to{transform:translateY(10px);opacity:0}:root{--c-brand: #920097;--c-brand-light: #faaffd}html.dark{--c-brand: #920097;--c-brand-light: #faaffd}iframe{width:100%}:root{--search-bg-color: #ffffff;--search-accent-color: #3eaf7c;--search-text-color: #2c3e50;--search-border-color: #eaecef;--search-item-text-color: #5d81a5;--search-item-focus-bg-color: #f3f4f5;--search-input-width: 8rem;--search-result-width: 20rem}.search-box{display:inline-block;position:relative;margin-left:1rem}@media print{.search-box{display:none}}.search-box input{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:text;width:var(--search-input-width);height:2rem;color:var(--search-text-color);display:inline-block;border:1px solid var(--search-border-color);border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all ease .3s;background:var(--search-bg-color) url(/learning-kotlin/assets/search-0782d0d1.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:var(--search-accent-color)}.search-box .suggestions{background:var(--search-bg-color);width:var(--search-result-width);position:absolute;top:2rem;right:0;border:1px solid var(--search-border-color);border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion.focus{background-color:var(--search-item-focus-bg-color)}.search-box .suggestion.focus a{color:var(--search-accent-color)}.search-box .suggestion a{white-space:normal;color:var(--search-item-text-color)}.search-box .suggestion .page-title{font-weight:600}.search-box .suggestion .page-header{font-size:.9em;margin-left:.25em}@media (max-width: 719px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (max-width: 419px){.search-box input:focus{width:8rem}.search-box .suggestions{width:calc(100vw - 4rem);right:-.5rem}}:root{--medium-zoom-z-index: 100;--medium-zoom-bg-color: #ffffff;--medium-zoom-opacity: 1}.medium-zoom-overlay{background-color:var(--medium-zoom-bg-color)!important;z-index:var(--medium-zoom-z-index)}.medium-zoom-overlay~img{z-index:calc(var(--medium-zoom-z-index) + 1)}.medium-zoom--opened .medium-zoom-overlay{opacity:var(--medium-zoom-opacity)}html.dark{--box-shadow: #0f0e0d;--card-shadow: rgba(0, 0, 0, .3);--black: #fff;--dark-grey: #999;--light-grey: #666;--white: #000;--grey3: #bbb;--grey12: #333;--grey14: #111}:root{--vp-bg: var(--c-bg, #fff);--vp-bgl: var(--c-bg-light, #f3f4f5);--vp-bglt: var(--c-bg-lighter, #eeeeee);--vp-c: var(--c-text, #2c3e50);--vp-cl: var(--c-text-light, #3a5169);--vp-clt: var(--c-text-lighter, #4e6e8e);--vp-brc: var(--c-border, #eaecef);--vp-brcd: var(--c-border-dark, #dfe2e5);--vp-tc: var(--c-brand, #3eaf7c);--vp-tcl: var(--c-brand-light, #4abf8a);--vp-ct: var(--t-color, .3s ease);--vp-tt: var(--t-transform, .3s ease);--box-shadow: #f0f1f2;--card-shadow: rgba(0, 0, 0, .15);--black: #000;--dark-grey: #666;--light-grey: #999;--white: #fff;--grey3: #333;--grey12: #bbb;--grey14: #eee} diff --git a/assets/wasm-build-conf-edit-2972b458.png b/assets/wasm-build-conf-edit-2972b458.png new file mode 100644 index 0000000000000000000000000000000000000000..56d8bffd1674fab5441667c47caac5362c67f2a7 GIT binary patch literal 8276 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 Se*Y5yN=i&#v`W~}|Gxlel>#IH literal 0 HcmV?d00001 diff --git a/assets/wasm-run-configuration-d79819b8.png b/assets/wasm-run-configuration-d79819b8.png new file mode 100644 index 0000000000000000000000000000000000000000..6ca168c9d17b6d93b214923bc6346e47812b5ec1 GIT binary patch literal 13619 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 literal 0 HcmV?d00001 diff --git a/en/backend-development/index.html b/en/backend-development/index.html new file mode 100644 index 00000000..350ed159 --- /dev/null +++ b/en/backend-development/index.html @@ -0,0 +1,225 @@ + + + + + + + + + Backend development | Learning Kotlin + + + + +

    Backend development

    Many frameworks officially support Kotlin: Springopen in new window, Quarkusopen in new window, Ktoropen in new window, among others listed hereopen in new window.

    In addition to that, Kotlin is theoretically compatible with any framework that targets the JVM or JS. For example, this tutorial shows how to use nodejs with Kotlinopen in new window. However, frameworks that do not officially support Kotlin may require some tweaking to use it.

    Ktor

    Ktor is a cross-platform Kotlin library for building both HTTP clients and servers. This makes Ktor a useful library to learn for both front-end developers for its HTTP client capabilities and backend-development for its HTTP server capabilities. In the following, we'll create a REST API with Ktor server.

    PW: develop an API with Ktor

    • Create a project on start.ktor.ioopen in new window with the following plugins: Content Negotiation, kotlinx.serialization, and Routing.
    • Click on "Generate project".
    • Download the archive, unzip it, and open the project with IntelliJ.
    • Create a models package and add to it a Customer data class with these immutable properties id: String, firstName: String, lastName: String, email: String.
    • Annotate the class with @Serializable.
    • Create a new package named routes and add to it a file CustomerRoutes.kt that will contain the code for the /customer endpoint.
    • The code below provides the implementation of some endpoints. Please implement the remaining ones.
    • To enable the route call customerRouting() in the routing configuration file located in plugins/Routing.kt.
    • For simplicity, use a global in-memory list of customers val store = mutableListOf<Customer>().
    • Run the server by running the main method.
    • Test the api on the IDE by using an http file or using any other client.
    CustomerRoutes.kt
    val store = mutableListOf<Customer>()
    +
    +fun Route.customerRouting() {
    +    route("/customer") {
    +        get {
    +            call.respond(store)
    +        }
    +        get("{id?}") {
    +            val id = call.parameters["id"] ?: return@get call.respondText(
    +                "Missing id",
    +                status = HttpStatusCode.BadRequest
    +            )
    +            val customer =
    +                store.find { it.id == id } ?: return@get call.respondText(
    +                    "No customer with id $id",
    +                    status = HttpStatusCode.NotFound
    +                )
    +            call.respond(customer)
    +        }
    +        post {
    +            val customer = call.receive<Customer>()
    +            store.add(customer)
    +            call.respondText("Customer stored correctly", status = HttpStatusCode.Created)
    +        }
    +        delete("{id?}") {
    +
    +        }
    +    }
    +}
    +
    plugins/Routing.kt
    fun Application.configureRouting() {
    +    routing {
    +        customerRouting()
    +    }
    +}
    +

    return@label

    You can specify which level you want to return with an explicit label using return@lambda.

    lambdaA {
    +    lambdaB {
    +        lambdaC {
    +            val randomInt = Random.nextInt(0, 100)
    +            if (randomInt > 50) return@lambdaC else return@lambdaB
    +        }
    +        printf("In lambdaB")
    +    }
    +}
    +

    This code runs another exampleopen in new window.

    CustomerTest.http
    POST http://127.0.0.1:8080/customer
    +Content-Type: application/json
    +
    +{
    +  "id": "100",
    +  "firstName": "Jane",
    +  "lastName": "Smith",
    +  "email": "jane.smith@company.com"
    +}
    +
    +
    +###
    +POST http://127.0.0.1:8080/customer
    +Content-Type: application/json
    +
    +{
    +  "id": "200",
    +  "firstName": "John",
    +  "lastName": "Smith",
    +  "email": "john.smith@company.com"
    +}
    +
    +###
    +POST http://127.0.0.1:8080/customer
    +Content-Type: application/json
    +
    +{
    +  "id": "300",
    +  "firstName": "Mary",
    +  "lastName": "Smith",
    +  "email": "mary.smith@company.com"
    +}
    +
    +
    +###
    +GET http://127.0.0.1:8080/customer
    +Accept: application/json
    +
    +###
    +GET http://127.0.0.1:8080/customer/200
    +Accept: application/json
    +
    +###
    +GET http://127.0.0.1:8080/customer/500
    +Accept: application/json
    +
    +###
    +DELETE http://127.0.0.1:8080/customer/100
    +
    +###
    +DELETE http://127.0.0.1:8080/customer/500
    +

    This page has detailed stepsopen in new window

    nodejs

    Thanks to Kotlin/JS, we can write apps that targets nodejs using Kotlin.

    We can even import npm libraries as long as you declare the JS API surface that you'll be using in Kotlin. This is called external declaration (You can think of it as an equivalent of TypeScript's type definitions) that declares the symbols that we want to access in Kotlin thanks to @JsModuleopen in new window and @JsNonModuleopen in new window annotations. Defining such external declarations can be a hassle and there seems to be no official automatic generator (dukatopen in new window has been removed in kotlin 1.8.20). In that case, we have two options, either write the external declaration or import it as a dependency if available.

    Fortunately for us, the next PW uses Express for which we can find an external type declaration.

    PW: Rest API with Kotlin/JS and Express

    implementation(npm("express", "> 4.0.0 < 5.0.0"));
    +implementation("dev.chriskrueger:kotlin-express:1.2.0");
    +
    • Modify main.kt as follows. This created a REST API server that listens to port 3000 and provides a GET /hello endpoint
    data class Message(val id: Int, val message: String)
    +
    +fun main() {
    +    val messages = listOf(Message(0, "I love Kotlin/JS"))
    +    val app = express.Express()
    +    app.get("/hello") { req, res ->
    +        res.send(messages)
    +    }
    +
    +    app.listen(3000) {
    +        console.log("server start at port 3000")
    +    }
    +}
    +
    • Run the task nodeRun from IntelliJ of from the command line (if you have Gradle installed)
      • If you encounter an error with Yarn lock, please run the task kotlinUpgradeYarnLock and try again
    • Add POST, PUT and DELETE endpoints
    • Regarding the POST body, Express leaves req.body undefined unless we specify a body parser.

    Spring framework

    Spring is a famous framework for developing server-side applications: APIs, server generated web pages, microservices, etc. It relies on the the Java ecosystem to build and run, thus making it compatible with Kotlin. Even better, Spring officially supports Kotlin. It even allows in start a new project with Kotlin and Gradle-Kotlin. In the next section, we'll use this starter to recreate our above REST API with Spring.

    PW: Spring boot part 1 - develop the same API with Spring Boot

    plugins {
    +	id("org.springframework.boot") version "3.0.4"
    +	id("io.spring.dependency-management") version "1.1.0"
    +	kotlin("jvm") version "1.8.10"
    +	kotlin("plugin.spring") version "1.8.10"
    +}
    +
    • Create the same Customer data class in the model package withotut the @Serializable annotation.
    • Create a controller package that contains a CustomerController class which provides a CRUD using a global list. You can find a skeleton below.
      • 💡 In Spring, Rest controllers serve the purpose of Ktor routes, where a controller defines a REST resource.
    • Define the same endpoints as in the previous PW.
    • Start the REST API server by running:
      • On Powershell: .\gradlew.bat bootRun
      • Any Unix shell: .\gradlew bootRun
      • IntelliJ already provides run configurations for spring boot projects.
    • Please test the endpoints with a REST client. You can find http files here in JetBrains formatopen in new window or VSCode's REST Client extensionopen in new window
    CustomerController.kt
    val store = mutableListOf<Customer>()
    +
    +@RestController
    +@RequestMapping("/customer")
    +class CustomerController {
    +    @GetMapping
    +    fun getAll() = store
    +
    +    @GetMapping("{id}")
    +    fun getById(@PathVariable id: String) { /* TODO: implement */ }
    +
    +    @PostMapping
    +    fun addOne(@RequestBody customer: Customer) { /* TODO: implement */ }
    +
    +    @DeleteMapping("{id}")
    +    fun deleteOne(@PathVariable id: String) { /* TODO: implement */ }
    +}
    +

    Models or model package ? plural or not ?

    Both are ok as long as you follow the same convention in the project.

    PW: Spring boot part 2 - adding a database

    Let's go a little bit further by storing data in a database and writing some tests.

    We'll use the H2 in-memory database for the sake of simplicity, since it does not require a server to run. Classes will mapped to database tables with JPA annotations. The database API we'll be using is called JPARepository. It is a lightweight API that provides common CRUD features by just defining an interface.

    On the testing side, we'll see two different syntaxes. The default one that is more familiar with Java style and the DSL one which is more readable and more familiar with Kotlin developers.

    • Create a new Spring project using Spring initializropen in new window with Kotlin and the following dependencies: Spring Data JPA, H2 Database, Spring Boot DevTools, Spring Web
    • Open the project and add this class in the model package @Entity class Product(@Id @GeneratedValue var id: Long? = null, var name: String, var price: Int). This single defines the class as well as the minimal JPA annotations (@Entity, @Id and @GeneratedValue) to generate the corresponding table.
    • In the repository package, declare the ProductRepository interface as follows interface ProductRepository: JpaRepository<Product, Long>. This is enough for Spring to generate an implementation with common features as we'll see later.
    • Next, create a ProductService class which will contain the business logic. In terms of architecture, the controller calls a service which in turn rely on other services or repositories.
    ProductService.kt
    @Service
    +class ProductService(@Autowired val productRepository: ProductRepository) {
    +    fun getAll() = productRepository.findAll()
    +
    +    // use findByIdOrNull instad of findById because the latter returns an optional<Product> instead of Product?
    +    fun getById(id: Long) = productRepository.findByIdOrNull(id)
    +}
    +
    • In the controller package, create a ProductController class that is mapped to /product and injects the with @Autowired. Reply to @Get as follows.
    ProductController.kt
    @RestController
    +@RequestMapping("/product")
    +class ProductController(@Autowired val productService: ProductService) {
    +    @GetMapping fun getAll() = productService.getAll()
    +
    +    @GetMapping("{id}")
    +    fun getById(@PathVariable id: Long) =
    +        productService.getById(id) ?: throw ResponseStatusException(HttpStatus.NOT_FOUND)
    +}
    +

    Kotlin makes getById(@PathVariable id: Long) more concise

    The Elvis operator ?: allows to simplify the code. Here is a longer version as reference.

    @GetMapping("{id}")
    +fun getById(@PathVariable id: Long): Product {
    +    val product = productService.getById(id)
    +    if (product != null){
    +        return product
    +    }
    +    throw ResponseStatusException(HttpStatus.NOT_FOUND)
    +}
    +

    In addition to that, Spring provides @ControllerAdvice to change the exception message. You can see an example hereopen in new window.

    • Let's run the project. Before running the project, we need to add a plugin that allows Kotlin classes to generate a default constructor id("org.jetbrains.kotlin.plugin.jpa") version "1.8.10". The plugins should look as follows:
    plugins {
    +    id("org.jetbrains.kotlin.plugin.jpa") version "1.8.10"
    +	id("org.springframework.boot") version "3.0.4"
    +	id("io.spring.dependency-management") version "1.1.0"
    +	kotlin("jvm") version "1.8.10"
    +	kotlin("plugin.spring") version "1.8.10"
    +}
    +
    • As an exercise, implement these endpoints: POST a single product, DELETE by id (/product/{id}) and GET by id (/product/{id}).
      • Hint: ProductController already provides the necessary methods.
    • Call the different endpoints with a REST client.

    PW: Spring boot part 2 - adding tests

    Spring frameworks helps perform different types of tests by providing different classes out of the box:

    • Unit testing of services, repositories and the REST API. This is done through mock utilities such as MockMVC.
    • Integration testing of the REST API using TestRestTemplate. In this situation, a full server is run and tested.

    Most, if not all classes provided by Spring provide an elegant syntax for Java developers. Some of them go further by taking advantage of Kotlin specific features. In the following, we're going to focus on parts that provide Kotlin DSLs, namely unit testing the REST API with MockMVC.

    • Create a test class ProductControllerUnitTests with this initial content. MockMvc allows to unit test the REST API. The @AutoConfigureMockMvc annotation allows spring to configure it automatically
    @SpringBootTest
    +@AutoConfigureMockMvc
    +class ProductControllerTests(
    +    @Autowired val mockMvc: MockMvc,
    +    @Autowired val productRepository: ProductRepository) {
    +
    +    @BeforeEach
    +    fun reset(){
    +        productRepository.deleteAll()
    +    }
    +}
    +
    • Add these two tests. The first one uses a classic approach while the second take advantage of Kotlin DSL capabilities. In addition to that, we name using a more readable string literal
    @Test
    +fun testWithClassicApproach(){
    +    mockMvc.perform(get("/product"))
    +        .andExpect(status().isOk)
    +        .andExpect(content().string(containsString("[]")))
    +}
    +
    @Test
    +fun `test GET a single product`() {
    +    mockMvc.get("/product/1").andExpect {
    +        status { isOk() }
    +        jsonPath("$.name") { value("A") }
    +        jsonPath("$.price") { value(1) }
    +        content { contentType(MediaType.APPLICATION_JSON) }
    +    }
    +}
    +
    • As an exercise, unit tests for the other endpoints.

    The request builder of JpaRepository

    Spring repositories implement requests based on the name of their methods. For example, to get all products sorted by name, we can add this method to the interface.

    interface ProductRepository: JpaRepository<Product, Long> {
    +    fun findAllByOrderByNameAsc(): List<Product>;
    +}
    +

    The official documentationopen in new window provides more detailed explanations and examples.

    Completed projects

    Going further

    These official tutorials go even further:

    Last Updated:
    Contributors: Yassine Benabbas, Ibrahim Gharbi, Tobias Preuss, Yassine Benabbas @ Worldline
    + + + diff --git a/en/front-development/index.html b/en/front-development/index.html new file mode 100644 index 00000000..531c686b --- /dev/null +++ b/en/front-development/index.html @@ -0,0 +1,67 @@ + + + + + + + + + Frontend development | Learning Kotlin + + + + +

    Frontend development

    Kotlin supports a wide selection of frontend frameworks across all platforms: mobile, desktop and web.

    Please find below a glimpse of the possibilities that you can do right from IntelliJ:

    Kotlin supports cross platform frontend development thanks to KMP and KMM

    KMP & KMM

    KMP (Kotlin Multiplatform) and KMM (Kotlin Multiplatform Mobile) are the two Kotlin technologies that allow to share a single codebase across multiple targets.

    KMPopen in new window relies on Kotlin native and other Kotlin features to help developers create projects that target multiple platforms using a common Kotlin code-base.

    KMP

    Many combinations of targets and use cases are possible:

    KMM is based on KMP and focuses on helping mobile developers create Cross-Platform SDK for common code.

    KMM

    Kotlin/JS and Kotlin/WASM

    • Kotlin/JS can also target the web and even use web frameworks (such as react) in Kolitn.
    • Kotlin WASM is another possibility to target the web but this will generate WASM instead of pure JS code.
      • It can be used for example to develop computation intensive libraries.
    • Maybe we can do even more in the future with as all these technologies (Kotlin, WASM and Kotlin/WASM) evolve. - For example, WASIopen in new window allows WASM to communicate with the operating system. - This means that me may see Kotlin/WASM project projects in the future that can target both the browser and the OS.
    • Let's keep watching 😄.

    PW: Kotlin/WASM web app

    • Both Kotlin/WASM and Kotlin/JS wizards on IntelliJ work similarly.
      • The IDE generates a Kotlin file that will compile later WASM and / or JS. Kotlin/JS generated only JS while Kotin/WASM generates both JS and WASM.
      • In both cases, the entry point of the generated code is a JS file called module_name.js.
      • The IDE also generates an index.html in the resources folder which loads the generated JS explained above (the one named module_name.js).
      • The task wasmBrowserDevelopmentRun or jsWasmBrowserDevelopmentRun will run a local server that hosts both the index.html files and the generated JS and WASM files.
    • Let's create a Kotlin/WASM app. First, Enable the kotlin wasm wizard by enabling kotlin.wasm.wizard in IntelliJ's registry (open the registry by double tapping shift and typing "registry" in the search box) or clone this projectopen in new window.

    • Check that kotlin is set to at least 1.8.20 in build.gradle.kts (the wizard may set it to a previous version).
    • Open src/wasmMain/kotlin/sample.kt and click on the run button that appears next to the main function.
    • If the build fails because the IDE used the wrong gradle task (the one that corresponds to a KotlinJS project), please change it to wasmBrowserDevelopmentRun and try to run again.

    • The development server should start and you can open your WASM powered webapp on http://localhost:8080/open in new window
    • ⚠️ You may need to activate some flags on your browser for the app to work. If you see a blank page, please read the browser logs to check for the instructions.

    PW: KotlinJS web app

    The Kotlin/JS wizard creates a very similar app to the Kotlin/WASM. in a later PW, we'll create a fullstack app with Ktor and Kotlin/JS.

    Compose

    Compose multiplatformopen in new window is a family of declarative UI frameworks for Android (Jetpack Compose), the desktop (Compose Desktop), and the web (Compose Web). It has experimental support for iOS and Web Canvas.

    Compose multiplatform vs Jetpack Compose

    While very similar, Compose multiplatform is different from Jetpack Compose as the latter is only compatible with Android. Google provides a JetPack compose tutorialopen in new window for Android development.

    Compose Web vs Compose for Web Canvas

    • Compose Web's API surface is different that other Compose targets because it works directly with the DOM.
    • Compose for Web Canvas has the same API surface as the Desktop and Android because it draws on a Canvas and does not manipulate on the DOM.

    This means that the first one has better web support and the second one has more reusable code.

    PW: Compose web

    • Create a new IntelliJ project -> Compose Multiplaform.
    • Choose "Single platform" -> "Web" and fill the other fields.
    • Choose Finish
    • IntelliJ may take some time to prepare the project and may request to install additional plugins.
    • Launch the development server of the web app sing this command ./gradlew jsBrowserRun --continuous.
    • Modify Main.kt as follows and run the app.
    • Open this address: localhost:8080.
    fun main() {
    +    renderComposable(rootElementId = "root") {
    +        Div({ style { padding(25.px) } }) {
    +            var expanded by remember { mutableStateOf(false) }
    +            Button(
    +                attrs = {
    +                    onClick { expanded = !expanded }
    +                }
    +            ) { Text("Click me") }
    +            Div({ style { display(if (expanded) DisplayStyle.Block else DisplayStyle.None) } }) {
    +                Text("Click me !")
    +            }
    +        }
    +    }
    +}
    +

    compose multiplatform demo

    PW: Compose desktop + Android app

    • Create a new project on IntelliJ -> Compose Multiplatform.
    • Choose "multiple platforms" and fill the other fields. Then choose Finish.
    • IntelliJ starts preparing the project and may request to install plugins.
    • Once ready, run the android app using the green run button.
    • Run the Desktop app by running the main function on the desktop project (should be in Main.kt).
    • Modify App.kt in the main project as follows and run the app.
    @Composable
    +fun App() {
    +    val platformName = getPlatformName()
    +    Card {
    +        var expanded by remember { mutableStateOf(false) }
    +        Column(Modifier.clickable { expanded = !expanded }) {
    +            Text(
    +                text="Click me !",
    +                style = MaterialTheme.typography.h2
    +            )
    +            AnimatedVisibility(expanded){
    +                Text(
    +                    text = "Hello, ${platformName} 🎊",
    +                    style = MaterialTheme.typography.h1
    +                )
    +            }
    +        }
    +    }
    +}
    +

    compose multiplatform demo

    Further reading

    Last Updated:
    Contributors: Yassine Benabbas, Ibrahim Gharbi
    + + + diff --git a/en/index.html b/en/index.html new file mode 100644 index 00000000..cbb4614d --- /dev/null +++ b/en/index.html @@ -0,0 +1,33 @@ + + + + + + + + + Welcome | Learning Kotlin + + + + +
    Learning Kotlin

    Learning Kotlin

    A beginner's guide to a modern programming language

    Get started →

    Language features

    null safetry, extenesions, …

    Backend development

    ktor, spring, …

    Frontend development

    compose, KMP, …

    Welcome

    Who we are

    avatar

    We design payments technology that powers the growth of millions​ of businesses around the world. Engineering the next frontiers​ in payments technology​

    • Leader in payment and secured transactions
    • Over 50bn transactions/year​
    • 7000+ engineers​ in over 40 countries
    • A huge & diverse​ tech-stack

    TIP

    This training is also available in Frenchopen in new window / Cette formation est aussi disponible en Françaisopen in new window

    Prerequisites

    • Basic knowledge of object-oriented language like Java
    • Prepare your dev environment and install stuff before the session (see Tooling section)
    + + + diff --git a/en/kotlin-features-advanced/index.html b/en/kotlin-features-advanced/index.html new file mode 100644 index 00000000..d75c0081 --- /dev/null +++ b/en/kotlin-features-advanced/index.html @@ -0,0 +1,45 @@ + + + + + + + + + Advanced and other Kotlin features | Learning Kotlin + + + + +

    Advanced and other Kotlin features

    Delegated properties

    Kotlin allows to delegate the getter and setter of a property to another object, which is called a delegate. It is a class that defines the getValue and setValue methods.

    Kotlin provides standard delegates such lazy properties and observable properties.

    ▶️ this codeopen in new window illustrates delegate properties.

    Concurrency and Coroutines

    Kotlin provides a high level concurrency model called Coroutines. The developer can delegated the management of threads to the compiler and runtime and using higher level constructs than threads to express asynchronous operations.

    Coroutines in Kotlin revolve around these concepts:

    • A coroutine is an instance of suspendable computation.
      • Kotlin has many methods for creating a coroutine such as launch.
    • A coroutine must exist within a coroutine scope.
      • For example runBlocking creates a coroutine scope whithin which coroutines can be launched.
    • A coroutine can run suspend functions which can suspend the coroutine but do not block the thread.
      • For example: the delay suspend the coroutine but does not block the thread on which it is running.
      • Suspend functions are operations that may take time such http requests and file system calls.
    • The suspend qualifier defines a suspend function. It runs within a coroutine and can call other suspend functions.
    • Flow allows to generate a list of asynchronous values.
    • Deferred and Channel transfer a single value and a stream of values, respectively, between coroutines.

    ▶️ this codeopen in new window show how to create a coroutine and suspend function and how to use them.

    ▶️ this codeopen in new window illustrated flows.

    ▶️ this codeopen in new window illustrates channels and deferred.

    Function literal with receiver and Type-safe builders

    As seen previously, function extension add behavior to existing classes. Inside the definition of the function extension, we can reference the extension receiver (or this) implicitly.

    fun String.countCharacters() = length // or this.length
    +println("hello".countCharacters()) // prints 5
    +

    We can define this extension with a function literal (or lambda) in instead of a named function (declared with fun).

    var extFn: String.() -> Int
    +extFn = { length } // extFn is a function literal
    +println("hello".extFn()) // prints 5
    +println(extFn("hello")) // prints 5
    +

    extFn is a function literal (lambda) that has access to the receiver (this). That's why it's called a function literal with receiver.

    extFn("hello") or extFn("hello") call the extension as expected from extension functions.

    The type of a function literal with receiver is funName: ReceiverType.(arg1Type, arg2Type, etc.) -> ReturnType and is called with funName(receiverValue, arg1Value, etc.) or receiverValue.funName(arg1Value, etc.). However, this is not the interesting aspect.

    The important part is extFn = { length } which can be put as a function argument in a higher order function. The developer that calls the higher order function must define extFn, which in turn has access to the receiver. This allows for a nice style of programming. ▶️ this codeopen in new window shows an example.

    Type-safe buildersopen in new window combine well-named builder functions and functions literals with receiver to create type-safe, statically typed builders in Kotlin.

    Builder pattern

    The builder patternopen in new window is a way to construct complex objects.

    // StirngBuilder uses the builder pattern
    +val text = StringBuilder("Temp")
    +  .append(1)
    +  .append(true)
    +  .append("friend")
    +  .toString()
    +

    This code showsopen in new window a basic type-safe builder.

    Kotlin docsopen in new window provides an example of an advanced type-safe builder that builds an HTML page.

    Exercises

    Exercise 1

    1. open the java-integration-exercise projects in the materials folder.
    2. Have a look at the Java class we provided you in the src/main/java/com/worldline/learning/kotlin/java2kotlin package. (yes, that's the Pokemon class)
    3. Convert that Java class in Kotlin using IntelliJ's awesome copy-pasta tool! (just copy paste the java code in a kotlin file, one is provided at src/main/kotlin/com/worldline/learning/kotlin/java2kotlin)
    4. Have a look at the generated Kotlin code, and note the major differences you spot!
    Last Updated:
    Contributors: Yassine Benabbas
    + + + diff --git a/en/kotlin-features/index.html b/en/kotlin-features/index.html new file mode 100644 index 00000000..df9a2dc9 --- /dev/null +++ b/en/kotlin-features/index.html @@ -0,0 +1,39 @@ + + + + + + + + + Kotlin language features | Learning Kotlin + + + + +

    Kotlin language features

    Kotlin is an object oriented language with functional features. This chapter covers important and relevant features of the language slit into basic and intermediate. Another chapter covers advanced features.

    Basic features

    Basic constructs (variables, control flow)

    • Kotlin is statically typed and supports implicit typing.
      • Static typing: types cannot change on runtime (it is the opposite of dynamic typing).
      • Implicit typing: the compiler can infer the type whenever possible.
    • var creates mutable variables.
    • val creates immutable variables or constants.
    • Semi-colons are optional.
    • Kotlin supports top level declaration of variables and functions (They can be declared outside of classes).
    • String interpolation is available with this syntax ${expression}.
    • if, and when statements are expressions (they can return a value).
      • when is equivalent to the switch statement of other languages
      • The ternary operator is not available but the if statement replaces-it.
    • for-each is the only type of for loop available.
    • Object oriented programming is supported as in Java with some additional features such as extensions.
    • The compiler supports Null Safety. It allows to write code free from null pointer errors with a compile time guarantee.
    • Functional programming is supported (Higher-order functions and functions as 1st class items, etc.).

    Use val by default

    Replace by var only if needed.

    ▶️ this codeopen in new window highlights the above features.

    Functions

    In the this section, the terms 'argument' and 'parameter' are used interchangeably.

    Functions in Kotlin have the following features:

    • Declaration: fun functionName(arg1: type1 = defaultvalue1, ...) : retunrType.
    • Call a function by passing the value in the declaration order.
      • Use argument labels for more clarity, however, it also allows for arbitrary ordering of arguments.
    • Optional arguments have a default value and can be omitted during the call.
    • Functions are first class items or citizen: they can be assigned to a variable, passed as a function parameter, or returned from a function.
      • 💡 A function that takes a function as an argument or returns one is a higher order function.
    • A function type can be expressed as follows: (typeOfParam1, typeOfParam2, etc) -> returnType (The empty return type is Unit).
    • Anonymous functions use the following syntax { argName1, argName2, etc. -> // code }
      • Also called or lambda functions or literal functions
    • The last function argument can be put after the closing after the closing parenthesis compute(9, 5) { x, y -> x * y }

    ▶️ this codeopen in new window highlights the above features.

    The next section talk about null safety.

    Null safety

    In a nutshell, null safety is a compiler feature that eliminates the infamous Null pointer exception or npe. The Kotlin compiler reports errors and warnings when we manipulate nullable (also called optional) values. Here is a list of null safety features provided by Kotlin:

    • All types are non-nullable by default; we cannot assign null to a variable or an argument.
      • For example, this code fails var s: String = null.
    • A type can be made nullable by suffixing it with a ?. For example: var s: String? = null.
    • Kotlin forbids calling a method or a property of a non-nullable type, unless we do one of these possibilities:
      • Use optional chaining with the ? suffix.
      • Provide a default value with the elvis ?: operator.
      • Smart-cast the nullable into a non-nullable.
      • Use the !! operator that eliminates compiler checks. This should never be used.

    Never unwrap with !!

    Use other safe techniques instead.

    ▶️ this codeopen in new window illustrates null safety and how to use optional types.

    Java `Optional` does not provide compile time null checks

    Optional wrap null values on runtime. The Java compiler (as of version 17) does not provide unwrapping features such as smart casting. It is still possible to have a npe like this: Optional<String> s = null; s.isPresent();

    Enumerations

    Enumerations allow to work with a group of values in a type-safe fashion. Unlike Java enums, Kotlin enums are classesopen in new window. Kotlin enum classes provide these features:

    • when statements support enumerations.
    • Enum constants can declare their own anonymous classes with their corresponding methods, as well as with overriding base methods.
    • An enum class can implement an interface but it cannot derive from a class
    • There are methods for listing the defined enum constants and getting an enum constant by its name.
    • Every enum constant has properties for obtaining its name and position (starting with 0).

    ▶️ this codeopen in new window illustrated the features above. For further reading please consult the official documentationopen in new window.

    Exercises

    Exercise 1

    Please click on this link to view the exerciseopen in new window

    Please open to see the solution(s)

    Solutionopen in new window

    Exercise 2

    Please click on this link to view the exerciseopen in new window

    Please open to see the solution(s)

    Solutionopen in new window

    Intermediate features

    Object oriented programming

    Kotlin allows to write concise OOP code and has the following features:

    • Available common features: classes, inheritance, interfaces, and abstract classes.
    • Native support of properties: do not define getters and setters unless needed.
      • Just add get() and set(value) functions next to the property declaration.
    • Constructor arguments are defined next to the class name class ClassName(arg1, atg2, )
    • Prefixing a constructor arguments with val or var makes it a property (val makes it read-only).
    • The constructor name is init and does not require parameters.
    • The compiler checks that all non-nullable properties are initialized by the end of the constructor.
      • ⚠️ The compiler does not check the initialization of lateinit properties. Thus, accessing them before while uninitialized causes an exception.
    • Prefix classes with open to allow inheritance.
    • Kotlin enables the public access level by default.
    • The equality operator == calls equals() (as opposed to Java which uses reference equality).
    • A companion object contains static methods and properties.
    • Extensions add function and properties to existing classes.
      • 💡 They replace inheritance in many situations.
      • For example, we can add functions to the String class instead of creating a new StringUtils class.
    • Sealed classes and interfaces cannot be extended or implemented by third parties.

    Do not define accessors unless needed

    As opposed to Java, Kotlin supports properties and allows to add accessors later without refactoring the code that calls these properties. Thus, by default, just define the name of properties without accessors and use them directly.

    ▶️ this codeopen in new window illustrates some features.

    Data class

    Data classes are final (cannot be inherited from) classes that provide standard functionalityopen in new window:

    • equals() and hashCode()
    • toString() of the form "class(field=value, ...)"
    • componentN() that correspond to the properties in their order of declaration.
    • copy()

    However, they have the following constraintsopen in new window:

    • The primary constructor needs to have at least one parameter.
    • All primary constructor parameters need to be marked as val or var.
    • They cannot be abstract, open, sealed, or inner (💡 but extensions are possible).

    ▶️ this codeopen in new window illustrates some features.

    Functional programming

    General concepts

    Functional programming revolves around these conceptsopen in new window: pure functions, recursion, referential transparency, immutable variables, functions as first-class citizens, and higher-order functions.

    Let's briefly explain these concepts:

    • Immutable variables means that we cannot change the value of a variable or its properties once it has been created. If we want to do so, we must create a new instance with the new value.
    • Pure functions are functions that do not have side effects and will thus return always the same output given the same input.
    • Functions are first class citizens: they can be assigned to a variable or used in higher-order functions (passed as a function parameter to another function or returned from a function).
    • Referential transparencyopen in new window: means that an expression can be replaced by its result without changing the behavior of the program. Transparency refers to the fact that the implementation of the expression is irrelevant.

    💡 Pure functional languages provide these features natively and enforces them (at build time).

    Kotlin and functional programming

    Kotlin is not a pure functional languages but it supports some features. For example, Kotlin does not have compile time verification of pure functions, but it provides immutable collections through the kotlinx.collections.immutableopen in new window library.

    listOf generates read-only lists, which are not immutable

    A read-only listopen in new window cannot add or remove elements, but it can change the underlying data.

    @Test
    +fun givenReadOnlyList_whenCastToMutableList_checkNewElementsAdded(){
    +    val list: List<String> = listOf("This", "Is", "Totally", "Immutable")
    +    (list as MutableList<String>)[2] = "Not"
    +    assertEquals(listOf("This", "Is", "Not", "Immutable"), list)
    +}
    +

    The Arrow-ktopen in new window library add more functional programming features.

    Declarative programming

    Declarative programming is a famous style within functional programming. It consists of writing code as a chaining of function calls in this style val result = f(x).g(y). .... Higher order functions replace many situation where we would use loops. This favors readable code which is easy to debug an maintain.

    ▶️ this codeopen in new window show an example of list manipulation using declarative programming.

    Kotlin and Java interoperability

    • Kotlin is designed with Java interoperability in mind.
    • Kotlin code may require some annotations to be called from Java.
    • It is possible to mix Java and Kotlin in the same project.
    • JetBrain's IntelliJ and Android Studio can convert to Kotlin when pasting java code.
    • Kotlin generates Java records by annotating a data class with @JvmRecord and targeting JVM 16, among other requirement listed hereopen in new window.
    • It is much more easier and natural to call Java from Kotlin.
      • For example: Java accessors are converted to Kotlin properties.

    ▶️ this codeopen in new window shows how to convert a Kotlin List to a Java ArrayList.

    The official documentation provides exhaustive documentation on Kotlin and JVM integrationopen in new window

    Exercises

    Exercise 3

    Please click on this link to view the exerciseopen in new window

    Please open to see the solution(s)

    Solutionopen in new window

    Exercise 4

    Please click on this link to view the exerciseopen in new window

    Please open to see the solution(s)

    Solutionopen in new window

    Exercise 5

    Please click on this link to view the exerciseopen in new window

    Please open to see the solution(s)

    Solutionopen in new window

    Exercise 6

    Please click on this link to view the exerciseopen in new window

    Please open to see the solution(s)

    Solutionopen in new window

    Exercise 7

    Please click on this link to view the exerciseopen in new window

    Please open to see the solution(s)

    Solutionopen in new window

    More Exercises and reading

    Last Updated:
    Contributors: Yassine Benabbas, Ibrahim Gharbi
    + + + diff --git a/en/other-technologies/index.html b/en/other-technologies/index.html new file mode 100644 index 00000000..86706ffe --- /dev/null +++ b/en/other-technologies/index.html @@ -0,0 +1,33 @@ + + + + + + + + + Cross-plaform and Fullstack app Codelab | Learning Kotlin + + + + +

    Cross-plaform and Fullstack app Codelab

    PW : Cross-platform app + KMM + KMP for Android, iOS and Desktop

    By combining KMP, KMM and Compose, it is possible to fully develop cross-platform mobile and desktop apps using only Kotlin.

    kmp codelabopen in new window
    This pw is so huge that it has its own codelabopen in new window

    PW : Add a Ktor server App

    We'll extend the previous app with a Ktor server and a React web client. The project will have the following architecture. This architecture choice may be subject to discussion, but we'll stick with this for now.

    architecture

    • Add a module into the project called sharedFullStack which will contain:
      • In commonMain: Some shared code that will by used by the shared project.
      • In jvmMain: A Ktor server that serves a Rest API to provide the questions and hosts some html files. One of the HTML files will load a react app that will be developed in Kotlin/JS.
      • In jsMain: A react web client. This target will only generate the JS code, the HTML page that loads this will be provided by Ktor server as explained above.
      • 💡 With IntelliJ you can right click on xxxMain/kotlin and xxxMain/resources folders and use Mark Directory as to get more support from the IDE.
    • Update the build file of this new module as follows:
      • plugins: multiplatform, serialilzation and application. The latter will be used to specify the main file the server which will be run with the run task.
      • Add the kotlin("multiplatform") plugin and target all possible platforms (web, desktop, jvm ans mobile) for completeness.
      • The depdencies should be as follows:
        • commonMain: kotr client (since we want to add the API client into the shared code)
        • jvmMain: ktor server + json sertialzation + cors (so that the html can load the JS)
        • jsMain: Kotlin React
      • We need to add two tasks, the first one produces the JS react app and the other one copies into the resources of the Ktor server
      • Set the main class of the application plugin.
      • The file should look as followsopen in new window
    • Move the API model and client files from shared to sharedFullStack (Anwser, Quiz, Question, QuizAPI and QuizRepository)
    • ⚠️ Some things to take note of:
      • In the android build file, add io.netty.versions.properties and INDEX.LIST to
      • Our global clean task may conflict with Kotlin/JS's one, if that the case, we can fix this by renaming our clean task in the root build.gradle.kts packagingOptions excludes.
    • Write the necessary code for both the server and the client. The server should provide these endpoints:
      • A GET on / provides an html file that loads sharedFullStack.js because this is the name of the JS that is generated.
      • A GET on /quiz provides a JSON of server generated Quiz
      • A GET on /quiz.html servers a server generated HTML page using the HTML DSL
    • Change the QuizAPI class so that it calls our local server http://localhost:8081/quiz and remove the arguments of the json method above since the server sets the correct headers.
    • Launch the gradle task "application -> run" of the sharedFullStack module, which will copy the generated JS into the Ktor server ressources folder.
    • Open http://localhost:8081 to run the react App

    kmm-fs-react-demo

    • Run the desktop app which fetches the quiz from the local server.

    • Testing on mobile is a little bit more complex because localhost may be mapped to another address non secure HTTP is blocked by default.

    The final project is available hereopen in new window in the sharedFullStack module.

    PW: Add a Compose for Web Canvas target (experimental)

    Compose for Web Canvas allows to use the same API surface as Compose Desktop and Android. Let's add another module to try this out.

    architecture web canvas

    • In the root settings.gradle.kts, add this maven repository maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") that has Compose for Web Canvas dependencies.
    • In gradle.properties add this line org.jetbrains.compose.experimental.jscanvas.enabled=true.
    • In the shared module's build file, add a js(IR) { browser() } target and a jsMain sourceSet with these dependencies: compose.web.core, compose.ui and compose.material3
    • Add a module named composeWebCanvasApp and define it as a Kotlin/JS web app.
      • add src/jsMain/kotlin folder and src/jsMain/resources folder
      • 💡 With IntelliJ you can right click on these folders and use Mark Directory as to get more help later from the IDE.
    • Set the js target in the build file with Compose for Web Canvas dependencies
    • In the resources folder, create an index.html file that loads the JS files:
      • The one that is generated by Kotlin/JS and should be named composeWebCanvasApp.js.
      • skiko.js which is dependency of Compose for Web Canvas.
      • Here is an example of such fileopen in new window
    • ⚠️ The current App() imported from main crashes on this target because we are not using precompose for the web. In the current correction we just place a Text while we look for a fix.
    • Run the app by launching the jsBrowserDevelopmentRun gradle task of the composeWebCanvasApp module.

    The final project is available hereopen in new window in the composeWebCanvasApp module.

    Going futher

    • Add a Compose Web target to the project

    Sources and references

    Last Updated:
    Contributors: Yassine Benabbas, Ibrahim Gharbi
    + + + diff --git a/en/presentation/index.html b/en/presentation/index.html new file mode 100644 index 00000000..09a53ae3 --- /dev/null +++ b/en/presentation/index.html @@ -0,0 +1,33 @@ + + + + + + + + + Presentation of Kotlin | Learning Kotlin + + + + +

    Presentation of Kotlin

    Kotlin is a modern programming language developed by JetBrains.

    Some features

    • Kotlin compiles to many targets: the JVM, JS, WASM, Android, iOS, Desktop, native code, etc.
      • Many server frameworks officially support Kotlin such as Spring and Quarkus.
      • It is the first-class language for writing Android.
      • Kotlin can compile to native with Kotlin native or with GraalVMopen in new window.
      • KMP and KMM allow to share code between different platforms.
    • Kotlin can be considered as both fullstack and corss-platform language.
    • Inter-operable with Java.
    • Provides modern features such as compile-time null safety and data classes.
    • Supports Object oriented programming and functional programming.
    • Kotlin KEEPopen in new window is its open source evolution process.

    History

    • February 15, 2016: Kotlin 1.0 was released.
    • January 04, 2017: Spring introduced Kotlin support in Spring 5.
    • At Google I/O 2017, Google announced first-class support for Kotlin on Android.
    • On 7 May 2019, Google announced that Kotlin the preferred language for Android app developers.
    • June 2022: Kotlin 1.7 was released with the version of the new K2 compiler.

    Some numbers and facts

    Source: Amyra Sheldonopen in new window

    • As of 2022, Kotlin is used by 7.8% of the industry experts.
    • According to StackOverflow, Kotlin was the 4th most beloved language in 2020 with 62.9% votes.
    • Kotlin is now listed among the top 20 programming languages by Redmonk.
    • Kotlin is among the top 3 languages that most businesses are planning to migrate their apps to in 2022.
    • Kotlin is used by global companies like Google, NetFlix, Amazon, Trello, and more.
    • Pinterest and Uber are among the companies that migrated their apps to Kotlin from Java.

    kotlin used for what?

    Please find more statics here:

    Why switch from Java to Kotlin

    Here are some arguments that motivate switching from Java (version 17 LTS at the time of writing) to Kotlin.

    • Kotlin supports more targets than Java.
    • Kotlin has compile time null-safety (Java Optionals are runtime wrappers for nullable values and null annotations have less features).
    • Kotlin strings support interpolation.
    • Casting in Kotlin is smart.
    • Kotlin functional programming features are better. It even allows to define Type-Safe builders and DSLs.
    • Kotlin can be mixed with Java code, thus helping the migration process.

    You can read more arguments in these articles:

    Prerequisites

    Sources and more reading

    Last Updated:
    Contributors: Yassine Benabbas
    + + + diff --git a/en/workshops/index.html b/en/workshops/index.html new file mode 100644 index 00000000..11841393 --- /dev/null +++ b/en/workshops/index.html @@ -0,0 +1,33 @@ + + + + + + + + + Workshops | Learning Kotlin + + + + +
    Last Updated:
    Contributors: Yassine Benabbas, yostane
    + + + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0e4322cb5e42b4c99f056c3b4a7933ce4efe77c8 GIT binary patch literal 89808 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

    o;!Q(n*YMjrK_k*_>Bb6YP1YFlB)*e^Np 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 aY>E8;{{h|+eP8$kV1e_Jx!F#_*#8IO9Dkkw literal 0 HcmV?d00001 diff --git a/fr/backend-development/index.html b/fr/backend-development/index.html new file mode 100644 index 00000000..6e54c5f3 --- /dev/null +++ b/fr/backend-development/index.html @@ -0,0 +1,227 @@ + + + + + + + + + Développement du backend | Apprendre Kotlin + + + + +

    Développement du backend

    De nombreux frameworks supportent officiellement Kotlin comme Springopen in new window, Quarkusopen in new window et Ktoropen in new window, parmi d'autres listés iciopen in new window.

    En outre, Kotlin est théoriquement compatible avec tout framework qui cible la JVM ou JS. Cependant, les frameworks qui ne supportent pas officiellement Kotlin peuvent nécessiter quelques ajustements pour l'utiliser.

    Ktor

    Ktor est une bibliothèque Kotlin multiplateforme permettant de développer des clients et des serveurs HTTP. Cela fait de Ktor une bibliothèque utile à la fois aux développeurs frontend, pour la partie client HTTP, ainsi qu'aux développeurs backend, pour la partie serveur HTTP. Dans ce qui suit, nous allons créer une API REST avec le serveur Ktor.

    TP : développer une API avec Ktor

    • Créez un projet sur start.ktor.ioopen in new window avec les plugins suivants : Content Negotiation, kotlinx.serialization, et Routing.
    • Cliquez sur "Generate project".
    • Téléchargez l'archive, décompressez-la et ouvrez le projet avec votre IDE préféré.
    • Créez un package models et ajoutez-y une classe de données Customer avec ces propriétés immuables id : String, firstName : String, lastName : Chaîne, email : Chaîne.
    • Annotez la classe avec @Serializable.
    • Créez un nouveau package nommé routes et ajoutez-y un fichier CustomerRoutes.kt qui contiendra le code pour l'endpoint /customer.
    • Le code ci-dessous fournit l'implémentation de certains endpoints. Veuillez implémenter les autres.
    • Pour activer la route, appelez customerRouting() dans le fichier de configuration du routage situé dans plugins/Routing.kt.
    • Pour plus de simplicité, utilisez une liste globale de clients en mémoire val store = mutableListOf<Customer>().
    • Lancer le serveur en exécutant la méthode main.
    • Tester l'API sur l'IDE en utilisant un fichier http ou en utilisant n'importe quel autre client.
    CustomerRoutes.kt
    val store = mutableListOf<Customer>()
    +
    +fun Route.customerRouting() {
    +  route("/customer") {
    +    get {
    +      call.respond(store)
    +    }
    +    get("{id?}") {
    +      val id = call.parameters["id"] ? : return@get call.respondText(
    +        "Missing id",
    +        status = HttpStatusCode.BadRequest
    +      )
    +      val customer =
    +        store.find { it.id == id } ? : return@get call.respondText(
    +          "Pas de client avec l'id $id",
    +          status = HttpStatusCode.NotFound
    +        )
    +      call.respond(customer)
    +    }
    +    post {
    +      val customer = call.receive<Customer>()
    +      store.add(customer)
    +      call.respondText("Customer stored correctly", status = HttpStatusCode.Created)
    +    }
    +    delete("{id?}") {
    +      // TODO
    +    }
    +  }
    +}
    +
    +
    plugins/Routing.kt
    fun Application.configureRouting() {
    +    routing {
    +        customerRouting()
    +    }
    +}
    +

    return@label

    Vous pouvez spécifier le niveau que vous voulez retourner avec un label explicite en utilisant return@lambda.

    lambdaA {
    +    lambdaB {
    +        lambdaC {
    +            val randomInt = Random.nextInt(0, 100)
    +            if (randomInt > 50) return@lambdaC else return@lambdaB
    +        }
    +        printf("In lambdaB")
    +    }
    +}
    +

    Ce code exécute un autre exempleopen in new window.

    CustomerTest.http
    POST http://127.0.0.1:8080/customer
    +Content-Type : application/json
    +
    +{
    +  "id" : "100",
    +  "firstName" : "Jane",
    +  "lastName" : "Smith",
    +  "email" : "jane.smith@company.com"
    +}
    +
    +
    +###
    +POST http://127.0.0.1:8080/customer
    +Content-Type : application/json
    +
    +{
    +  "id" : "200",
    +  "firstName" : "John",
    +  "lastName" : "Smith",
    +  "email" : "john.smith@company.com"
    +}
    +
    +###
    +POST http://127.0.0.1:8080/customer
    +Content-Type : application/json
    +
    +{
    +  "id" : "300",
    +  "firstName" : "Mary",
    +  "lastName" : "Smith",
    +  "email" : "mary.smith@company.com"
    +}
    +
    +
    +###
    +GET http://127.0.0.1:8080/customer
    +Accept : application/json
    +
    +###
    +GET http://127.0.0.1:8080/customer/200
    +Accepte : application/json
    +
    +###
    +GET http://127.0.0.1:8080/customer/500
    +Accepte : application/json
    +
    +###
    +DELETE http://127.0.0.1:8080/customer/100
    +
    +###
    +DELETE http://127.0.0.1:8080/customer/500
    +

    Cette page contient des étapes détailléesopen in new window

    nodejs

    Grâce à Kotlin/JS, nous pouvons écrire des applications qui ciblent nodejs en utilisant Kotlin.

    On peut même importer des librairies npm à condition de déclarer les API JS que l'on va utiliser en Kotlin. C'est ce qu'on appelle une déclaration externe (vous pouvez la considérer comme un équivalent des définitions de type de TypeScript) qui déclare les symboles auxquels nous voulons accéder en Kotlin grâce aux annotations @JsModuleopen in new window et @JsNonModuleopen in new window. Définir de telles déclarations externes peut s'avérer fastidieux et il ne semble pas y avoir de générateur automatique officiel et stable (dukatopen in new window a été supprimé dans kotlin 1.8.20). Dans ce cas, nous avons deux options, soit écrire la déclaration externe nous-même, soit l'importer en tant que dépendance si elle est disponible.

    Heureusement pour nous, le prochain TP utilise la librairie Express pour laquelle nous pouvons trouver une déclaration de type externe.

    TP : API Rest avec Kotlin/JS et Express

    implementation(npm("express", "> 4.0.0 < 5.0.0"));
    +implementation("dev.chriskrueger:kotlin-express:1.2.0");
    +
    • Modifiez main.kt comme suit. Cela crée un serveur API REST qui écoute le port 3000 et fournit une route GET /hello.
    data class Message(val id : Int, val message : String)
    +
    +fun main() {
    +    val messages = listOf(Message(0, "I love Kotlin/JS"))
    +    val app = express.Express()
    +    app.get("/hello") { req, res ->
    +        res.send(messages)
    +    }
    +
    +    app.listen(3000) {
    +        console.log("server start at port 3000")
    +    }
    +}
    +
    • Exécutez la tâche nodeRun depuis votre IDE ou depuis la ligne de commande (si vous avez installé Gradle).
      • Si vous rencontrez une erreur avec Yarn lock, exécutez la tâche kotlinUpgradeYarnLock puis réessayez.
    • Ajouter des routes en POST, PUT et DELETE
    • En ce qui concerne le corps du POST, Express positionne req.body à undefined à moins que nous ne spécifions un body parser.

    Spring framework

    Spring est un framework célèbre pour le développement d'applications côté serveur : API REST, pages web générées par le serveur, microservices, etc. Il s'appuie sur l'écosystème Java pour la compilation et l'exécution, ce qui le rend compatible avec Kotlin. Mieux encore, Spring supporte officiellement Kotlin. On peut même démarrer un nouveau projet avec Kotlin et Gradle-Kotlin. Dans la prochaine section, nous utiliserons ce projet pour recréer notre API REST plus haut avec Spring.

    TP : Spring boot part 1 - développer la même API avec Spring Boot

    • Créez un projet sur start.spring.io (aussi appelé Spring initializr)open in new window avec les dépendances suivantes : Spring Web et Spring Boot DevTools.
    • Choisissez Kotlin comme langage et Kotlin-Grade comme gestionnaire de projet.
    • Ajoutez les dépendances suivantes : Spring Web et Spring Boot DevTools.
    • Cliquez sur Generate. Téléchargez l'archive, décompressez-la et ouvrez le projet avec IntelliJ (de préférence) ou VSCode.
    • Vérifiez que la partie plugins build.gradle.kts utilise la dernière version de Kotlin. Voici à quoi cela devrait ressembler avec Kotlin 1.8.10 :
    plugins {
    +  id("org.springframework.boot") version "3.0.4"
    +  id("io.spring.dependency-management") version "1.1.0"
    +  kotlin("jvm") version "1.8.10"
    +  kotlin("plugin.spring") version "1.8.10"
    +}
    +
    • Créez la data class Customer dans le package model (sans l'annotation @Serializable).
    • Créez un paquetage controller qui contient une classe CustomerController qui fournit un CRUD en utilisant une liste globale.
      • Vous pouvez trouver un squelette ci-dessous.
      • 💡 Dans Spring, les contrôleurs Rest servent de routes Ktor, où un contrôleur définit une ressource REST.
    • Définissez les mêmes routes que dans le TP précédent.
    • Démarrez le serveur de l'API REST en exécutant :
      • Sur Powershell : .\gradlew.bat bootRun
      • Tout shell Unix : .\gradlew bootRun
      • Ou bien, vérifiez si votre IDE fournit déjà des configurations d'exécution pour les projets Spring Boot.
    • Veuillez tester les routes avec un client REST. Vous pouvez trouver des fichiers http ici au format JetBrainsopen in new window ou au format de l'extension REST Client de VSCodeopen in new window
    CustomerController.kt
    val store = mutableListOf<Customer>()
    +
    +@RestController
    +@RequestMapping("/customer")
    +class CustomerController {
    +    @GetMapping
    +    fun getAll() = store
    +
    +    @GetMapping("{id}")
    +    fun getById(@PathVariable id : String) { /* TODO : implement */ }
    +
    +    @PostMapping
    +    fun addOne(@RequestBody customer : Customer) { /* TODO : implement */ }
    +
    +    @DeleteMapping("{id}")
    +    fun deleteOne(@PathVariable id : String) { /* TODO : implement */ }
    +}
    +

    TP : Spring boot partie 2 - ajouter une base de données

    Allons un peu plus loin en stockant des données dans une base de données et en écrivant quelques tests.

    Nous utiliserons la base de données en mémoire H2 pour des raisons de simplicité, puisqu'elle ne nécessite pas de serveur pour fonctionner. Les classes seront mappées aux tables de la base de données avec des annotations JPA. L'API de base de données que nous utiliserons s'appelle JPARepository. C'est une API légère qui fournit des fonctionnalités CRUD communes à partir d'une simple une interface.

    • Créez un nouveau projet Spring en utilisant Spring initializropen in new window avec Kotlin et les dépendances suivantes : Spring Data JPA, H2 Database, Spring Boot DevTools, Spring Web.
    • Ouvrez le projet et ajoutez cette classe dans le package model @Entity class Product(@Id @GeneratedValue var id : Long ? = null, var name : String, var price : Int). Ceci définit la classe ainsi que les annotations JPA minimales (@Entity, @Id et @GeneratedValue) pour générer la table correspondante.
    • Dans le package repository, déclarez l'interface ProductRepository comme suit interface ProductRepository : JpaRepository<Produit, Long>. C'est suffisant pour que Spring génère une implémentation avec des caractéristiques communes comme nous le verrons plus tard.
    • Ensuite, créez une classe ProductService qui contiendra la logique métier. En termes d'architecture, le contrôleur appelle un service qui, à son tour, s'appuie sur d'autres services ou référentiels.
    ProductService.kt
    @Service
    +class ProductService(@Autowired val productRepository: ProductRepository) {
    +    fun getAll() = productRepository.findAll()
    +
    +    // use findByIdOrNull instad of findById because the latter returns an optional<Product> instead of Product?
    +    fun getById(id: Long) = productRepository.findByIdOrNull(id)
    +}
    +
    • Dans le package controller, créez une classe ProductController qui est mappée à /product et injectée avec @Autowired. Répondez à @Get comme suit.
    ProductController.kt
    @RestController
    +@RequestMapping("/product")
    +class ProductController(@Autowired val productService : ProductService) {
    +    @GetMapping fun getAll() = productService.getAll()
    +
    +    @GetMapping("{id}")
    +    fun getById(@PathVariable id : Long) =
    +        productService.getById(id) ? : throw ResponseStatusException(HttpStatus.NOT_FOUND)
    +}
    +

    Kotlin rend getById(@PathVariable id : Long) plus concis

    L'opérateur Elvis ?: permet de simplifier le code. Voici une version plus longue en guise de référence.

    @GetMapping("{id}")
    +fun getById(@PathVariable id : Long) : Produit {
    +    val product = productService.getById(id)
    +    if (product != null){
    +        return product
    +    }
    +    throw ResponseStatusException(HttpStatus.NOT_FOUND)
    +}
    +

    En outre, Spring fournit @ControllerAdvice pour modifier le message d'exception. Vous pouvez voir un [exemple ici] (https://spring.io/guides/tutorials/rest/).

    • Exécutons le projet. Avant de lancer le projet, nous devons ajouter un plugin qui permet aux classes Kotlin de générer un constructeur par défaut id("org.jetbrains.kotlin.plugin.jpa") version "1.8.10". Les plugins devraient ressembler à ce qui suit :
    plugins {
    +  id("org.jetbrains.kotlin.plugin.jpa") version "1.8.10"
    +  id("org.springframework.boot") version "3.0.4"
    +  id("io.spring.dependency-management") version "1.1.0"
    +  kotlin("jvm") version "1.8.10"
    +  kotlin("plugin.spring") version "1.8.10"
    +}
    +
    +
    • En guise d'exercice, implémentez ces routes : POST d'un seul produit, DELETE par id (/produit/{id}) et GET par id (/produit/{id}).
      • Indice : ProductController fournit déjà les méthodes nécessaires.
    • Appelez les différents points de terminaison avec un client REST.
    • Tester votre API Rest avec un client HTTP

    TP : Spring boot partie 3 - ajouter des tests

    Les frameworks Spring permettent d'effectuer différents types de tests en fournissant différentes classes dès le départ :

    • Tests unitaires/de composants des services et de l'API REST. Cela se fait par le biais d'utilitaires de bouchonnage tels que MockMVC.
    • Tests d'intégration de l'API REST en utilisant TestRestTemplate. Dans ce cas, un serveur complet est exécuté et testé.

    La plupart des classes fournies par Spring, si ce n'est toutes, offrent une syntaxe élégante pour les développeurs Java. Certaines d'entre elles vont plus loin en tirant parti des caractéristiques spécifiques de Kotlin. Dans ce qui suit, nous allons nous concentrer sur les parties qui fournissent des DSLs Kotlin, à savoir le test unitaire de l'API REST avec MockMVC.

    • Créer une classe de test ProductControllerUnitTests avec le contenu initial ci-dessous. MockMvc permet de tester unitairement l'API REST. L'annotation @AutoConfigureMockMvc permet à Spring de la configurer automatiquement.
    @SpringBootTest
    +@AutoConfigureMockMvc
    +classe ProductControllerTests(
    +    @Autowired val mockMvc : MockMvc,
    +    @Autowired val productRepository : ProductRepository) {
    +
    +    @BeforeEach
    +    fun reset(){
    +        productRepository.deleteAll()
    +    }
    +}
    +
    • Ajoutez les deux tests ci-dessous. Le premier utilise une approche classique tandis que le second tire parti des capacités du DSL de Kotlin. De plus, nous utilisons une chaîne littérale plus lisible.
    @Test
    +fun testWithClassicApproach(){
    +    mockMvc.perform(get("/product"))
    +        .andExpect(status().isOk)
    +        .andExpect(content().string(containsString("[]")))
    +}
    +
    @Test
    +fun `test GET a single product`() {
    +    mockMvc.get("/product/1").andExpect {
    +        status { isOk() }
    +        jsonPath("$.name") { value("A") }
    +        jsonPath("$.price") { value(1) }
    +        content { contentType(MediaType.APPLICATION_JSON) }
    +    }
    +}
    +
    • En guise d'exercice, écrire des tests pour les autres points d'accès.

    Le constructeur de requêtes de JpaRepository

    Les repository Spring implémentent des requêtes basées sur le nom de leurs méthodes. Par exemple, pour obtenir tous les produits triés par nom, nous pouvons ajouter cette méthode à l'interface.

    interface ProductRepository : JpaRepository<Produit, Long> {
    +    fun findAllByOrderByNameAsc() : List<Produit> ;
    +}
    +

    La [documentation officielle] (https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods.query-creation) fournit des explications et des exemples plus détaillés.

    Projets terminés

    Aller plus loin

    Ces tutoriels officiels vont encore plus loin :

    Lien et références

    Last Updated:
    Contributors: Yassine Benabbas, Ibrahim Gharbi, Tobias Preuss, Yassine Benabbas @ Worldline
    + + + diff --git a/fr/front-development/index.html b/fr/front-development/index.html new file mode 100644 index 00000000..482d5200 --- /dev/null +++ b/fr/front-development/index.html @@ -0,0 +1,67 @@ + + + + + + + + + Développement frontend | Apprendre Kotlin + + + + +

    Développement frontend

    Kotlin supporte une large sélection de frameworks frontaux sur toutes les plateformes : mobile, desktop et web. Vous trouverez ci-dessous un aperçu des possibilités que vous pouvez faire directement à partir d'IntelliJ :

    Comme nous pouvons le voir, Kotlin propose plusieurs options. L'option la plus séduisante en terme de partage de code est Compose Multiplatform. Ceci est possible notamment grâce à KMP et KMM

    KMP & KMM

    • KMP (Kotlin Multiplatform) et KMM (Kotlin Multiplatform Mobile) sont les deux technologies Kotlin qui permettent de partager une base de code unique sur plusieurs cibles.
    • KMPopen in new window s'appuie sur Kotlin native et d'autres fonctionnalités de Kotlin pour aider les développeurs à créer des projets destinés à plusieurs plates-formes en utilisant une base de code Kotlin commune.

    KMP

    KMM

    Dans la suite de ce chapitre, nous explorerons les différentes possibilités individuellement et on fera un projet KMP dans le chapitre suivant.

    Kotlin/JS et Kotlin/WASM

    • Kotlin/JS peut également cibler le web et même utiliser des frameworks web (tels que react) dans Kolitn.
    • Kotlin WASM est une autre possibilité de cibler le web, mais il génère WASM au lieu de code JS pur.
      • Il peut être utilisé par exemple pour développer des bibliothèques à forte intensité de calcul.
    • Nous pourrons peut-être faire encore plus à l'avenir grâce à l'évolution de toutes ces technologies (Kotlin, WASM et Kotlin/WASM). - Par exemple, [WASI] (https://wasi.dev/) permet à WASM de communiquer avec le système d'exploitation. - Cela signifie que je pourrais voir des projets Kotlin/WASM à l'avenir qui peuvent cibler à la fois le navigateur et le système d'exploitation.
    • Continuons à observer 😄.

    TP : Application web Kotlin/WASM

    • Les assistants de création de projet Kotlin/WASM et Kotlin/JS sur IntelliJ fonctionnent de manière similaire:
      • L'IDE génère un fichier Kotlin qui sera compilé par la suite en WASM et/ou JS. Kotlin/JS ne génère que du JS tandis que Kotin/WASM génère à la fois du JS et du WASM.
      • Dans les deux cas, le point d'entrée du code généré est un fichier JS appelé nom_du_module.js.
      • L'IDE génère également dans le dossier des ressources un fichier index.html dont le but est de charger le JS généré (le fichier nom_du_module.js).
      • La tâche wasmBrowserDevelopmentRun ou jsWasmBrowserDevelopmentRun lancera un serveur local qui hébergera à la fois les fichiers index.html et les fichiers JS et WASM générés.
    • Créons une application Kotlin/WASM. Tout d'abord, activez l'assistant Kotlin/WASM en activant kotlin.wasm.wizard dans le registre d'IntelliJ (ouvrez le registre en appuyant deux fois sur shift et en tapant "registry" dans la boîte de recherche). Alternativement, clonez ce projetopen in new window.

    • Vérifiez qu'on est sur la dernière version de Kotlin dans build.gradle.kts (l'assistant peut le configurer à une version antérieure).
    • Ouvrez src/wasmMain/kotlin/sample.kt et cliquez sur le bouton lancer qui apparaît à côté de la fonction main.
    • Si la compilation échoue parce que l'IDE a utilisé la mauvaise tâche gradle, veuillez la changer en wasmBrowserDevelopmentRun et essayez de l'exécuter à nouveau.

    • Le serveur de développement devrait démarrer et vous pouvez ouvrir votre application web sur http://localhost:8080/open in new window
    • ⚠️ Il se peut que vous deviez activer certains drapeaux sur votre navigateur pour que l'application fonctionne. Si vous voyez une page blanche, veuillez lire les journaux du navigateur pour vérifier les instructions.

    • Le fichier wasm généré est disponible dans build/js/packages/nom_du_projet/kotlin
    • WASM étant un format binaire, nous devons d'abord le convertir au format texte.
      • Nous pouvons soit installer [WABT (The WebAssembly Binary Toolkit ou wabbit)] (https://github.com/WebAssembly/wabt) et utiliser l'outil wasm2wattool wasm2wat --enable-all -v .\kotlin-wasm-demo-wasm.wasm -o wasm.wat,
      • ou utiliser un convertisseur en ligne comme celui-ciopen in new window
      • ❗ Cependant, je n'ai pas réussi à le faire fonctionner

    PW : Application web KotlinJS

    L'assistant Kotlin/JS crée une application très similaire à celle de Kotlin/WASM. Dans un prochain PW, nous créerons une application complète avec Ktor et Kotlin/JS.

    Compose

    Compose multiplatformopen in new window est une famille de frameworks d'interface utilisateur déclaratifs pour Android (Jetpack Compose), le bureau (Compose Desktop) et le web (Compose Web). Il dispose d'un support expérimental pour iOS et Web Canvas.

    Compose multiplatform vs Jetpack Compose

    Bien que très similaire, Compose multiplatform est différent de Jetpack Compose car ce dernier n'est compatible qu'avec Android. Google fournit un JetPack compose tutorialopen in new window pour le développement Android.

    Compose Web vs Compose for Web Canvas

    • La surface de l'API de Compose Web est différente des autres cibles de Compose car elle travaille directement avec le DOM.
    • Compose for Web Canvas a la même surface d'API que celle du Desktop, Android et iOS car il dessine sur un Canvas et ne manipule pas le DOM.

    Cela signifie que le premier a un meilleur support web et que le second a plus de code réutilisable.

    TP : Compose Web

    • Créez un nouveau projet IntelliJ -> Compose Multiplaform.
    • Choisissez "Single platform" -> "Web" et remplissez les autres champs.
    • Choisissez Finish
    • IntelliJ peut prendre un certain temps pour préparer le projet et peut demander d'installer des plugins supplémentaires.
    • Lancez le serveur de développement de l'application web à l'aide de la commande ./gradlew jsBrowserRun --continuous.
    • Modifiez Main.kt comme suit et lancez l'application.
    • Ouvrez cette adresse : localhost:8080.
    fun main() {
    +    renderComposable(rootElementId = "root") {
    +        Div({ style { padding(25.px) } }) {
    +            var expanded by remember { mutableStateOf(false) }
    +            Button(
    +                attrs = {
    +                    onClick { expanded = !expanded }
    +                }
    +            ) { Text("Cliquez sur moi") }
    +            Div({ style { display(if (expanded) DisplayStyle.Block else DisplayStyle.None) } }) {
    +                Text("Cliquez sur moi !")
    +            }
    +        }
    +    }
    +}
    +

    compose multiplatform demo

    TP : Compose desktop + Android app

    • Créez un nouveau projet sur IntelliJ -> Compose Multiplatform.
    • Choisissez "multiple platforms" et remplissez les autres champs. Choisissez ensuite Finish.
    • IntelliJ commence à préparer le projet et peut demander l'installation de plugins.
    • Une fois le projet prêt, lancez l'application Android en utilisant le bouton vert run.
    • Lancez l'application desktop en exécutant la fonction principale du projet desktop (qui devrait se trouver dans Main.kt).
    • Modifiez App.kt dans le projet principal comme suit et lancez l'application.
    @Composable
    +fun App() {
    +    val platformName = getPlatformName()
    +    Card {
    +        var expanded by remember { mutableStateOf(false) }
    +        Column(Modifier.clickable { expanded = !expanded }) {
    +            Texte(
    +                text="Cliquez sur moi !",
    +                style = MaterialTheme.typography.h2
    +            )
    +            AnimatedVisibility(expanded){
    +                Texte(
    +                    text = "Bonjour, ${platformName} 🎊",
    +                    style = MaterialTheme.typography.h1
    +                )
    +            }
    +        }
    +    }
    +}
    +

    compose multiplatform demo

    Pour aller plus loin

    Last Updated:
    Contributors: Yassine Benabbas, Ibrahim Gharbi
    + + + diff --git a/fr/index.html b/fr/index.html new file mode 100644 index 00000000..11cefde6 --- /dev/null +++ b/fr/index.html @@ -0,0 +1,33 @@ + + + + + + + + + Apprendre Kotlin + + + + +
    Apprendre Kotlin

    Apprendre Kotlin

    A beginner's guide to a modern programming language

    Débuter →

    Bien commencer avec Kotlin

    lorem

    Syntaxe de base

    lorem

    Exemples

    lorem

    TIP

    This training is also available in Englishopen in new window / Cette formation est aussi disponible en Anglaisopen in new window

    Prerequisites

    • Connaissance de base en language de programmation orienté object comme Java
    • Préparez votre environnement de développement et installez des éléments avant la session (voir la section Outillage)

    Liens utiles

    + + + diff --git a/fr/kotlin-features-advanced/index.html b/fr/kotlin-features-advanced/index.html new file mode 100644 index 00000000..6d9e52b4 --- /dev/null +++ b/fr/kotlin-features-advanced/index.html @@ -0,0 +1,45 @@ + + + + + + + + + Fonctionnalités avancées de Kotlin | Apprendre Kotlin + + + + +

    Fonctionnalités avancées de Kotlin

    Propriétés déléguées

    Kotlin permet de déléguer le getter et le setter d'une propriété à un autre objet, appelé délégué. C'est une classe qui définit les méthodes getValue et setValue.

    Kotlin fournit des délégués standard tels que des propriétés paresseuses et des propriétés observables.

    ▶️ this codeopen in new window illustrates delegate properties.

    Concurrence et coroutines

    Kotlin fournit un modèle de concurrence de haut niveau appelé Coroutines. Le développeur peut déléguer la gestion des threads au compilateur et à l'exécution et utiliser des constructions de niveau supérieur aux threads pour exprimer des opérations asynchrones.

    Les coroutines de Kotlin tournent autour de ces concepts :

    • Une coroutine est une instance de calcul suspendable.
      • Kotlin a de nombreuses méthodes pour créer une coroutine telle que launch.
    • Une coroutine doit exister dans une portée de coroutine.
      • Par exemple, runBlocking crée une portée de coroutine dans laquelle les coroutines peuvent être lancées.
    • Une coroutine peut exécuter des fonctions de suspension qui peuvent suspendre la coroutine mais ne bloquent pas le thread.
      • Par exemple : le delay suspend la coroutine mais ne bloque pas le thread sur lequel elle s'exécute.
      • Les fonctions de suspension sont des opérations qui peuvent prendre du temps telles que les requêtes http et les appels au système de fichiers.
    • Le qualificateur suspend définit une fonction de suspension. Il s'exécute dans une coroutine et peut appeler d'autres fonctions de suspension.
    • Flow permet de générer une liste de valeurs asynchrones.
    • Deferred et Channel transfèrent respectivement une valeur unique et un flux de valeurs entre coroutines.

    ▶️ this codeopen in new window show how to create a coroutine and suspend function and how to use them.

    ▶️ this codeopen in new window illustrated flows.

    ▶️ this codeopen in new window illustrates channels and deferred.

    Littéral de fonction avec récepteur et constructeurs de type sécurisé

    Comme vu précédemment, les extensions de fonctions ajoute du comportement à des classes existantes sans utiliser l'héritage. À l'intérieur de la définition de l'extension de fonction, nous pouvons référencer implicitement le récepteur d'extension (this).

    fun String.countCharacters() = length // or this.length
    +println("hello".countCharacters()) // prints 5
    +

    Nous pouvons définir cette extension avec une fonction littérale (ou lambda) au lieu d'une fonction classique (déclarée avec fun).

    var extFn: String.() -> Int
    +extFn = { length } // extFn is a function literal
    +println("hello".extFn()) // prints 5
    +println(extFn("hello")) // prints 5
    +

    extFn est une fonction littérale (lambda) qui a accès au récepteur (this). C'est pourquoi on l'appelle une fonction littérale avec récepteur.

    extFn("hello") ou extFn("hello") appelle l'extension comme prévu par les fonctions d'extension.

    Le type d'une fonction littérale avec récepteur est funName: ReceiverType.(arg1Type, arg2Type, etc.) -> ReturnType et est appelé avec funName(receiverValue, arg1Value, etc.) ou receiverValue.funName(arg1Value, etc.) .). Cependant, ce n'est pas l'aspect le plus intéressant.

    La partie importante est extFn = { length } qui peut être placée comme argument de fonction dans une fonction d'ordre supérieur. Le développeur qui appelle la fonction d'ordre supérieur doit définir extFn, qui à son tour a accès au récepteur. Cela permet un style de programmation assez intéressant.

    ▶️ ce codeopen in new window montre un example.

    Les Type-safe buildersopen in new window combinent les monteurs bien nommées et les fonctions littérales avec récepteur pour créer des monteur avec un typage statique et sécurisé. La syntaxe particulière possible avec technique permet de définir une sorte de sous-langage aussi appelé DSL (domain specific language).

    Le pattern monteur (Builder)

    Est une technique permettant de construire des objects avec une syntaxe éléganteopen in new window.

    // StirngBuilder uses the builder pattern
    +val text = StringBuilder("Temp")
    +  .append(1)
    +  .append(true)
    +  .append("friend")
    +  .toString()
    +

    Ce code montreopen in new window un type-safe builder basique.

    Kotlin docsopen in new window fournit un exemple plus avancé d'un monteur de documents HTML.

    Exercises

    Exercise 1

    1. open the java-integration-exercise projects in the materials folder.
    2. Have a look at the Java class we provided you in the src/main/java/com/worldline/learning/kotlin/java2kotlin package. (yes, that's the Pokemon class)
    3. Convert that Java class in Kotlin using IntelliJ's awesome copy-pasta tool! (just copy paste the java code in a kotlin file, one is provided at src/main/kotlin/com/worldline/learning/kotlin/java2kotlin)
    4. Have a look at the generated Kotlin code, and note the major differences you spot!
    Last Updated:
    Contributors: Yassine Benabbas
    + + + diff --git a/fr/kotlin-features/index.html b/fr/kotlin-features/index.html new file mode 100644 index 00000000..a0220b63 --- /dev/null +++ b/fr/kotlin-features/index.html @@ -0,0 +1,39 @@ + + + + + + + + + Fonctionnalités du langage Kotlin | Apprendre Kotlin + + + + +

    Fonctionnalités du langage Kotlin

    Kotlin est un langage qui support les paradigmes orienté objet et fonctionnel. Ce chapitre couvre les caractéristiques basiques et intermédiaires. Le chapitre suivant couvrira les fonctionnalités avancées.

    Caractéristiques de base

    Constructions de base (variables, flux de contrôle)

    • Kotlin est typé statiquement et prend en charge le typage implicite.
      • Typage statique : les types ne peuvent pas changer à l'exécution (c'est l'inverse du typage dynamique).
      • Typage implicite : le compilateur peut inférer le type tant que c'est possible.
    • var crée des variables ré-assignables.
    • val crée des variables qu'on ne peut plus ré-assigner.
    • Les points-virgules sont facultatifs.
    • Kotlin prend en charge la déclaration de haut niveau des variables et des fonctions (elles peuvent être déclarées en dehors des classes).
    • L'interpolation de chaîne de caractères est disponible avec cette syntaxe ${expression}.
    • if et when sont des expressions (elles peuvent renvoyer une valeur).
      • when est équivalent à l'instruction switch des autres langages
      • L'opérateur ternaire n'est pas disponible. L'expression if le remplace.
    • for-each est le seul type de boucle for disponible.
    • La programmation orientée objet est prise en charge comme en Java avec quelques fonctionnalités supplémentaires telles que les extensions.
    • Le compilateur prend en charge la Null Safety. Il permet d'écrire du code sans erreur de pointeur nulle vérifié à la compilation.
    • La programmation fonctionnelle est prise en charge (fonctions d'ordre supérieur et fonctions en tant qu'éléments de 1ère classe, etc.).

    Utiliser val par défaut

    Utiliser var uniquement si vous réassignez une variable ou argument.

    ▶️ this codeopen in new window highlights the above features.

    Les fonctions

    Dans cette section, les termes 'argument' et 'paramètre' sont utilisés de manière interchangeable.

    Les fonctions de Kotlin ont les caractéristiques suivantes :

    • Déclaration : fun functionName(arg1 : type1 = defaultvalue1, ...) : retunrType.
    • Appeler une fonction en passant la valeur dans l'ordre de déclaration.
      • Utilisez des étiquettes d'argument pour plus de clarté, cependant, cela permet également un classement arbitraire des arguments.
    • Les arguments optionnels ont une valeur par défaut et peuvent être omis lors de l'appel.
    • Les fonctions sont des éléments de première classe ou citoyens : elles peuvent être affectées à une variable, passées en tant que paramètre de fonction ou renvoyées par une fonction.
      • 💡 Une fonction qui prend une fonction comme argument ou en renvoie une est une fonction d'ordre supérieur.
    • Un type de fonction peut être exprimé comme suit : (typeOfParam1, typeOfParam2, etc) -> returnType (Le type de retour vide est Unit).
    • Les fonctions anonymes utilisent la syntaxe suivante { argName1, argName2, etc. -> // code }
      • Aussi appelées fonctions lambda ou fonctions littérales
    • Le dernier argument de la fonction peut être mis après la fermeture après la parenthèse fermante compute(9, 5) { x, y -> x * y }

    ▶️ Ce codeopen in new window illustre les fonctions en Kotlin.

    La prochaine section abordera le null safety.

    Null safety

    null safety est une fonctionnalité du compilateur qui élimine la fameuse Null pointer exception ou npe. En effet, le compilateur signale des erreurs et des avertissements lorsque nous manipulons des types nullables (également appelées types optionnels) dès qu'il y a un risque de npe à l'exécution. Ainsi, afin de mettre Voici une liste des fonctionnalités de sécurité null fournies par Kotlin :

    • Tous les types ne sont pas nullables par défaut ; nous ne pouvons pas affecter null à une variable ou à un argument.
      • Par exemple, ce code échoue var s: String = null.
    • Un type peut être rendu nullable en le suffixant avec un ?. Par exemple : var s : chaîne ? = nul.
    • Kotlin interdit d'appeler une méthode ou une propriété de type non nullable, sauf si l'on fait l'une de ces possibilités :
      • Utilisez le chaînage optionnel avec le suffixe ?.
      • Fournissez une valeur par défaut avec l'opérateur elvis ?:.
      • Smart-cast le nullable dans un non-nullable.
      • Utilisez l'opérateur !! qui élimine les vérifications du compilateur. Cela ne devrait jamais être utilisé.

    Ne jamais déballer avec !!

    Car cela équivaut à désactiver la null safety. Utilisez les autres possibilités à la place.

    ▶️ ce codeopen in new window illustrate la null safety et les types optionnels.

    La classe `Optional` de Java ne fournit aucun protection à la compilation

    Ce code lance une npe en Java: Optional<String> s = null; s.isPresent();. Le compilateur Java (au moins à la version version 17) ne propose pas d'équivalent à ce que propose Kotlin comme le smart casting.

    Énumérations

    Les énumérations permettent de travailler avec un groupe de valeurs de façon cadrée. Contrairement aux énumérations Java, les énumérations Kotlin sont des classesopen in new window. Les enum class de Kotlin fournissent ces fonctionnalités :

    • Les expressions when prennent en charge les énumérations.
    • Une enum class peut définir des méthodes et implémenter des interfaces mais elle ne peut pas dériver d'une classe.
    • Il existe des méthodes pour lister les constantes d'une enum class.
    • Chaque constante d'une énumération a des propriétés pour obtenir son nom et sa position (en commençant par 0).

    ▶️ ce codeopen in new window illustres les enum en Kotlin de façon succincte. Veuillez consulter la documentation officielle pour aller plus loinopen in new window.

    Exercices

    Exercice 1

    Veuillez cliquer sur le lien pour consulter l'énoncéopen in new window

    Déplier pour consulter la solution

    Solutionopen in new window

    Exercise 2

    Veuillez cliquer sur le lien pour consulter l'énoncéopen in new window

    Déplier pour consulter la solution

    Solutionopen in new window

    Fonctionnalités intermédiaires

    Programmation orientée objet

    Kotlin permet d'écrire du code Orienté Object concis grâce aux caractéristiques suivantes :

    • Concepts disponibles : classes, héritage, interfaces et classes abstraites.
    • Prise en charge possée des propriétés : les getters et les setters sont automatiquement implémentés.
      • On peut les personnaliser les accesseurs en définissant les fonctions get() et set(value) à côté de la déclaration de la propriété.
    • Les arguments du constructeur sont définis à côté du nom de la classe class ClassName(arg1, atg2, )
    • Préfixer les arguments d'un constructeur avec val ou var en fait une propriété (val la rend non ré-assignable).
    • Le nom du constructeur est init et ne nécessite pas de paramètres.
    • Le compilateur vérifie que toutes les propriétés non nullables sont initialisées à la fin du constructeur.
      • ⚠️ Le compilateur ne vérifie pas l'initialisation des propriétés lateinit. Ainsi, y accéder avant alors qu'elles ne sont pas initialisés provoque une exception.
    • Une classe doit être préfixée avec open pour permettre l'héritage.
    • Kotlin utilise le niveau d'accès public par défaut.
    • L'opérateur d'égalité == appelle implicitement la méthode equals() (contrairement à Java qui utilise l'égalité de référence).
    • Un objet compagnon contient des méthodes et des propriétés statiques.
    • Les extensions ajoutent des fonctions et des propriétés aux classes existantes.
      • 💡 Ils remplacent l'héritage dans de nombreuses situations.
      • Par exemple, nous pouvons ajouter des fonctions à la classe String au lieu de créer une nouvelle classe StringUtils.
    • Les classes et interfaces scellées ne peuvent pas être étendues ou implémentées par des tiers.

    Ne définir les accesseurs que si vous avez un comportement personnalisé

    Kotlin prend en charge les propriétés de façon plus poussée que Java et permet d'ajouter des accesseurs ultérieurement sans refactoriser le code qui appelle ces propriétés. Ainsi, par défaut, il suffit de définir le nom des propriétés sans accesseurs et on peut les utiliser directement.

    ▶️ ce codeopen in new window illustre la POO en Kotlin.

    Data class

    Ce sont des classes qui implémentent des méthodes communesopen in new window:

    • equals(), hashCode(), copy() et toString()
    • componentN() qui est une syntaxe alternative pour récupérer les propriétés.

    Cependant, les data class ont des restrictionsopen in new window:

    • Le constructeur principal doit avoir au moins un paramètre.
    • Tous les paramètres du constructeur principal doivent être marqués comme val ou var.
    • Une Data class ne peut pas être abstraite, ouverte à l'héritage, scellée ou interne (💡 mais des extensions sont possibles).

    ▶️ ce codeopen in new window illustrate les data class.

    Programmation fonctionnelle

    Concepts généraux

    La programmation fonctionnelle s'articule autour de ces conceptsopen in new window : fonctions pures, récursivité, transparence référentielle, variables immuables, fonctions en tant que citoyens de première classe et fonctions d'ordre supérieur.

    Expliquons brièvement ces concepts :

    • Les variables immuables signifient qu'on ne peut pas changer la valeur d'une variable ou ses propriétés une fois qu'elle a été créée. Si nous voulons le faire, nous devons créer une nouvelle instance avec la nouvelle valeur.
    • Les fonctions pures sont des fonctions qui n'ont pas d'effets secondaires et renverront donc toujours la même sortie étant donné la même entrée.
    • Les fonctions sont des citoyennes de première classe : elles peuvent être affectées à une variable ou utilisées dans des fonctions d'ordre supérieur (passées en tant qu'un argument de fonction ou retournées dans un fonction).
    • Transparence référentielleopen in new window : signifie qu'une expression peut être remplacée par son résultat sans modifier le comportement du programme.

    💡 Les langages fonctionnels purs fournissent ces fonctionnalités de manière native et les appliquent (au moment de la construction).

    Kotlin et programmation fonctionnelle

    Kotlin n'est pas un langage fonctionnel pur mais il prend en charge certaines fonctionnalités. En effet, Kotlin ne sait pas dire si une fonction est pures ou non, mais il fournit des collections immuables via la bibliothèque kotlinx.collections.immutableopen in new window pour nous aider à manipuler des données immuables.

    `listOf` génère des listes en lecture seule, mais qui sont mutables

    Une liste en lecture seuleopen in new window ne peut pas ajouter ou supprimer des éléments, mais elle peut modifier les données sous-jacentes.

    @Test
    +fun givenReadOnlyList_whenCastToMutableList_checkNewElementsAdded(){
    +    val list: List<String> = listOf("This", "Is", "Totally", "Immutable")
    +    (list as MutableList<String>)[2] = "Not"
    +    assertEquals(listOf("This", "Is", "Not", "Immutable"), list)
    +}
    +

    La librairie Arrow-ktopen in new window permet d'aller encore plus loin en développement fonctionnel.

    Programmation déclarative

    La programmation déclarative est un style célèbre dans la programmation fonctionnelle. Il consiste à écrire du code sous la forme d'un enchaînement d'appels de fonction dans ce style val result = f(x).g(y). .... Les fonctions d'ordre supérieur remplacent de nombreuses situations où nous utiliserions des boucles. Cela favorise le code lisible qui est facile à déboguer et à maintenir.

    ▶️ ce codeopen in new window montre comment manipuler une liste avec la programmation déclarative.

    Kotlin and Java interoperability

    • Kotlin is designed with Java interoperability in mind.
    • Kotlin code may require some annotations to be called from Java.
    • It is possible to mix Java and Kotlin in the same project.
    • JetBrain's IntelliJ and Android Studio can convert to Kotlin when pasting java code.
    • Kotlin generates Java records by annotating a data class with @JvmRecord and targeting JVM 16, among other requirement listed hereopen in new window.
    • It is much more easier and natural to call Java from Kotlin.
      • For example: Java accessors are converted to Kotlin properties.

    ▶️ this codeopen in new window shows how to convert a Kotlin List to a Java ArrayList.

    The official documentation provides exhaustive documentation on Kotlin and JVM integrationopen in new window

    Exercices

    Exercice 3

    Voir l'exerciceopen in new window

    Solution(s)

    Solutionopen in new window

    Exercice 4

    Exerciceopen in new window

    Solutions(s)

    Solutionopen in new window

    Exercice 5

    Exerciceopen in new window

    Solution(s)

    Solutionopen in new window

    Exercice 6

    Exerciceopen in new window

    solution(s)

    Solutionopen in new window

    Exercice 7

    Exerciceopen in new window

    Solution(s)

    Solutionopen in new window

    Plus d'exercices et de lecture

    Last Updated:
    Contributors: Yassine Benabbas, Ibrahim Gharbi
    + + + diff --git a/fr/other-technologies/index.html b/fr/other-technologies/index.html new file mode 100644 index 00000000..94ad8943 --- /dev/null +++ b/fr/other-technologies/index.html @@ -0,0 +1,33 @@ + + + + + + + + + Application multiplateforme et Fullstack Codelab | Apprendre Kotlin + + + + +

    Application multiplateforme et Fullstack Codelab

    TP : Application multiplateforme + KMM + KMP pour Android, iOS et ordinateur de bureau

    En combinant KMP, KMM et Compose, il est possible de développer des applications mobiles et de bureau multiplateformes en utilisant uniquement Kotlin.

    kmp codelabopen in new window

    Ce labo à un codelab dédié qui accessible depuis ce lienopen in new window

    PW : Ajouter une application serveur Ktor

    Nous allons étendre l'application précédente avec un serveur Ktor et un client web React. Le projet aura l'architecture suivante (❗ Ce choix d'architecture peut être sujet à discussion, mais nous nous en tiendrons à cela pour l'instant)

    architecture

    • Ajouter un module dans le projet appelé sharedFullStack qui contiendra :
      • Dans commonMain : Du code partagé qui sera utilisé par le projet shared.
      • Dans jvmMain : Un serveur Ktor qui sert une API Rest pour fournir les questions et héberge quelques fichiers HTML. L'un des fichiers HTML chargera une application react qui sera développée en Kotlin/JS.
      • Dans jsMain : Un client web react. Cette cible ne générera que le code JS, la page HTML qui le charge sera fournie par le serveur Ktor comme expliqué plus haut.
      • 💡 Avec IntelliJ vous pouvez faire un clic droit sur les dossiers xxxMain/kotlin et xxxMain/resources et utiliser Mark Directory as pour obtenir plus de support de la part de l'IDE.
    • Mettez à jour le fichier de construction de ce nouveau module comme suit :
      • plugins : multiplatform, serialilzation et application. Ce dernier sera utilisé pour spécifier le fichier principal du serveur qui sera exécuté avec la tâche run.
      • Ajoutez le plugin kotlin("multiplatform") et ciblez toutes les plateformes possibles (web, desktop, jvm et mobile) pour être complet.
      • Les dépendances devraient être les suivantes :
        • commonMain : client kotr (puisque nous voulons ajouter le client API dans le code partagé)
        • jvmMain : serveur ktor + sérialisation json + cors (pour que le html puisse charger le JS)
        • jsMain : Kotlin React
      • Nous devons ajouter deux tâches, la première produit l'application JS React et l'autre copie dans les ressources du serveur Ktor.
      • Définir la classe principale du plugin application.
      • Le fichier devrait [ressembler à ce qui suit] (https://github.com/worldline/learning-kotlin/blob/main/material/kmm-fullstack-demo/sharedFullStack/build.gradle.kts)
    • Déplacer le modèle API et les fichiers clients de shared vers sharedFullStack (Anwser, Quiz, Question, QuizAPI et QuizRepository)
    • ⚠️ Quelques points à noter :
      • Dans le fichier de construction d'android, ajoutez io.netty.versions.properties et INDEX.LIST au fichier de construction d'android.
      • Notre tâche globale de nettoyage peut entrer en conflit avec celle de Kotlin/JS, si c'est le cas, nous pouvons corriger cela en renommant notre tâche de nettoyage dans la racine build.gradle.kts packagingOptions exclues.
    • Ecrivez le code nécessaire pour le serveur et le client. Le serveur doit fournir ces points de terminaison :
      • Un GET sur / fournit un fichier html qui charge sharedFullStack.js parce que c'est le nom du JS qui est généré.
      • Un GET sur /quiz fournit un JSON de Quiz généré par le serveur
      • Un GET sur /quiz.html sert une page HTML générée par le serveur en utilisant le HTML DSL.
    • Changez la classe QuizAPI pour qu'elle appelle notre serveur local http://localhost:8081/quiz et supprimez les arguments de la méthode json ci-dessus puisque le serveur met en place les bons headers.
    • Lancer la tâche gradle "application -> run" du module sharedFullStack, qui copiera le JS généré dans le dossier ressources du serveur Ktor.
    • Ouvrez http://localhost:8081 pour exécuter l'application react

    kmm-fs-react-demo

    • Exécutez l'application de bureau qui récupère le quiz sur le serveur local.

    • Le test sur mobile est un peu plus complexe parce que localhost peut être mappé à une autre adresse et que le HTTP non sécurisé est bloqué par défaut.

    Le projet final est [disponible ici] (https://github.com/worldline/learning-kotlin/tree/main/material/kmm-fullstack-demo) dans le module sharedFullStack.

    PW : Ajouter une cible Compose for Web Canvas (expérimental)

    Compose for Web Canvas permet d'utiliser la même surface d'API que Compose Desktop et Android. Ajoutons un autre module pour l'expérimenter.

    architecture web canvas

    • Dans la racine settings.gradle.kts, ajoutez ce dépôt maven maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") qui a les dépendances de Compose for Web Canvas.
    • Dans gradle.properties, ajoutez cette ligne org.jetbrains.compose.experimental.jscanvas.enabled=true.
    • Dans le fichier de construction du module shared, ajoutez une cible js(IR) { browser() } et un sourceSet jsMain avec ces dépendances : compose.web.core, compose.ui et compose.material3.
      • Implémentez le fichier Platform et fournissez un composable pour l' App. Voici un [exemple d'implémentation] (https://github.com/worldline/learning-kotlin/tree/main/material/kmm-fullstack-demo/shared/src/jsMain/kotlin/com/devoxxfr2023/km)
    • Ajoutez un module nommé composeWebCanvasApp et définissez
    Last Updated:
    Contributors: Yassine Benabbas, Ibrahim Gharbi
    + + + diff --git a/fr/presentation/index.html b/fr/presentation/index.html new file mode 100644 index 00000000..104245ce --- /dev/null +++ b/fr/presentation/index.html @@ -0,0 +1,33 @@ + + + + + + + + + Présentation de Kotlin | Apprendre Kotlin + + + + +

    Présentation de Kotlin

    Kotlin est un langage de programmation moderne développé par JetBrains.

    Certaines fonctionnalités

    • Kotlin est capable de compiler vers différentes cibles : la JVM, JS, Android, iOS, Les OS de bureau, etc.
      • Pris en charge officiellement par de grands frameworks back-end, tels que Spring et Quarkus,
      • Langage préféré pour le développement Android,
      • Kotlin Native compile en code natif,
      • Kotlin peut être considéré comme un langage fullstack
    • Interopérable avec Java.
    • Fournit des fonctionnalités modernes telles que la null safety à la compilation.
    • Prend en charge la programmation orientée objet et la programmation fonctionnelle.
    • Processus d'évolution open source: Kotlin KEEPopen in new window.

    Histoire

    • 15 février 2016 : sortie de Kotlin 1.0.
    • 4 janvier 2017 : Spring a introduit le support de Kotlin dans Spring 5.
    • Lors de Google I/O 2017, Google a annoncé une prise en charge officielle de Kotlin sur Android.
    • Le 7 mai 2019, Google a annoncé que Kotlin était le langage préféré des développeurs d'applications Android.
    • Juin 2022 : Kotlin 1.7 est sorti avec la version du nouveau compilateur K2.

    Quelques chiffres et faits

    Source : Amyra Sheldonopen in new window

    • En 2022, Kotlin est utilisé par 7,8 % des experts de l'industrie.
    • Selon StackOverflow, Kotlin était le 4ème langage le plus apprécié en 2020 avec 62,9 % des votes.
    • Kotlin est désormais répertorié parmi les 20 meilleurs langages de programmation par Redmonk.
    • Kotlin fait partie des 3 principaux langages vers lesquels la plupart des entreprises prévoient de migrer leurs applications en 2022.
    • Kotlin est utilisé par des entreprises mondiales telles que Google, Netflix, Amazon, Trello, etc.
    • Plusieurs entreprises dont Googleopen in new window, Pinterest et Uber ont migré leurs applications de Java vers Kotlin.

    kotlin utilisé pour quoi ?

    Veuillez trouver plus de statiques ici :

    Pourquoi passer de Java à Kotlin

    Voici quelques arguments qui motivent le passage de Java (version 17 LTS au moment de la rédaction) à Kotlin.

    • Kotlin prend en charge plus de cibles que Java.
    • Kotlin protège des références null à la compilation (les Optional Java sont ne sont pas de protections à la compilation).
    • Les chaînes de caractères Kotlin prennent en charge l'interpolation.
    • Les fonctionnalités de programmation fonctionnelle de Kotlin sont meilleures. Il permet même de définir des constructeurs et des DSL (Domain Specific Language) dont le typage est sécurisé (type-safe).
    • Kotlin peut être mélangé avec du code Java, facilitant ainsi le processus de migration.

    Vous pouvez lire plus d'arguments dans ces articles :

    Sources et plus de lecture

    Last Updated:
    Contributors: Yassine Benabbas
    + + + diff --git a/fr/workshops/index.html b/fr/workshops/index.html new file mode 100644 index 00000000..765ac05f --- /dev/null +++ b/fr/workshops/index.html @@ -0,0 +1,33 @@ + + + + + + + + + Workshops | Apprendre Kotlin + + + + + + + + diff --git a/icon-192x192.png b/icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..45057eb680b8aad2e3233824315d1536a93acf57 GIT binary patch literal 28392 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 P00000NkvXXu0mjf+`e79 literal 0 HcmV?d00001 diff --git a/icon-256x256.png b/icon-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..2053f3a2d01e01c2212c85ba126323176cbd14fb GIT binary patch literal 44303 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 00000000..6ed6cbdd --- /dev/null +++ b/index.html @@ -0,0 +1,33 @@ + + + + + + + + + Welcome + + + + +

    Hello

    Hello

    A beginner's guide to a modern programming language

    Get started →

    Language features

    null safetry, extenesions, …

    Backend development

    ktor, spring, …

    Frontend development

    compose, KMP, …

    Welcome

    Who we are

    avatar

    We design payments technology that powers the growth of millions​ of businesses around the world. Engineering the next frontiers​ in payments technology​

    • Leader in payment and secured transactions
    • Over 50bn transactions/year​
    • 7000+ engineers​ in over 40 countries
    • A huge & diverse​ tech-stack

    TIP

    This training is also available in Frenchopen in new window / Cette formation est aussi disponible en Françaisopen in new window

    Prerequisites

    • Basic knowledge of object-oriented language like Java
    • Prepare your dev environment and install stuff before the session (see Tooling section)
    + + + diff --git a/kotlin_logo.png b/kotlin_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..22d7a18dbd96517e25d9d3d45302bc8ba4534b48 GIT binary patch literal 88422 zcmbTd2Rz%~*EmjTY1OJ#L}QN{F-z>d_b9beBSou5%xXlb8ETJKX;6wPK2@WtqSV%+ z_G}2LRU-%y>z97M;4c|3py^SVR5eEih-w_Doyd3`+9`0W+Uq|E|!px!=)5iqDt zgt@Ip!~+koC%=X|uWGn58Nownup4jqLtnoj<#09rzws)Q-~Tj&_<8>Z34Wl)uk~j_ zUI#NvULAiJlou=|E$JaGEyJq_mhzC6m6msx^@QG&;FXn@l>|=!-ai=K-2Fp>)%eNO{)3H&0sltp7xd4iA}<;!+${hk zBPIQZt-k?1J^l?B5CZf4dvZ??5Y!j?5b75kM2405H*A2nf3Sa$xBveI^}oCS+XUq0 zH8cD79RDLN4`1>02E{m4e}3xc|i3-$z%%ri<@Add;hhZ z|84Z2p8rM{G~DO^0{W-t-=G1?IxwhPFjSZPsPX?1t)#S^q^y!HS+vrM$_mor(&QKE zKLi9QoB4bC+ur^U%!; z3JUP^;^+PMS}W`L`})Jk6O*Zv`F+_t@n5ro z-N<7U<)M=Iw2_R!BGB|HS%-Do-*- zPfw_lypr54Nd?(^3X<|rX?aOEH#bE|Pfs_6Tk>w6@?Zr|e%?RAQzoM!ljQbi$E)$n z{Il`THt-Gk(`M)ALtY|Te%?RgQ?~R8hx$6``jEK@`o{oi1+tL-tMAT#^eHIa`e&D2 z5EQ24|L_m*YWy}HFerIAdDH(hCG-5Bn@>quT1Ht;?q56VA7DZL_kzRRU{Ecuzv=(S zab@{0rR9~Cmy+WZHFNXu@%y93V*jGf!`scz3rapHLHwZq-|YPFw%7lgo&Qlm{*8D<5Hi05qnws|Vb0&VbUD-atOk#&%X1QqZ0wpUO zvu&&@Q@Dn(6~07NR5XUGTU3XaF`Y@9mhWp}xg5%-P2*G5ddqFQkVAE^?VzpU4aC;; zF@UYK9pnTMUo9;)+Uk- z^%VC-hW`oUNYTLJO>XKiI~mnQOO@!xzp;#s zT=3Qe67ga8?C0=>(;_4)_R}r8yA%%3xr&X@F2Sdi*X8IQ(6HM=W+8ZrH}QmHH)#&6 zjlD*%(Q(r%iAwr;oSqq6!gS3bp5CUtrkZiAv)nDR&VYUUFGR(!O&Qk!G@322F;#}< z0UbEs05iJF(pJbFzflIASo`powA9Z_L1ydC+rsuz%2r$x18Z{6LkP|vLfy-y2fAt- zU5PGLLsOnD-KWLH^UxFJngr9<-ILJ3Z+$X9DSWq4br;HIm3R_YTI}Ak5gl`xwMb8#Ox+x|up{3hWw-Jhqc`3s1hvgwu zpd1#2t?6HP(8H5_n2fX_M6^}!#sy6FSvheK?F%nxRXFiIxpw0D7>E4|SGMd4BfZ>t zMt~xha{J>fJi;}hh&w|LT+go&?2fc+xj$Zm4V<~9yfp|#Mi~32n~-|ZQ;gM$2h5I; z4hWT9+DSz+mUF4~?~Nv`kjy);n_g%n;<%k&`Ey1U z!WDlWv)sw+n_3i=d#@-W(4ANJmGaBhk5TjHwKyhl1MNO*?03x?()~{li+Oo5j^F~yGNdLrb za|&9TvNPcmSO+Wo^}Z7nmBwiCnRc`0NL}3$@6)T;xk8LSdXpm3(^Go%GfIc_a@UNw zdG!hq_r#s)k|J;h_NAO8+{?hik#qLbD2~Gb^Qu#wRRxtMe5YQ+=$mgEmx^$ zkBC#f7#}#($FrS|5op}k&Wc(@Op;DA9^ynk?WV2zcXzx!yMJ}|`{`WW>&vLASMjU~ zO12E;$6GmGKexL-VDN9s<=JLqGg(BPmX>Ip82m;?n7k(UZ++t|!p9u-?mS~QtWVuu zxpcG7aO~5i`iq$AN1s(+G_`t=G3p?8*+ zO<UmrF;i^M|_HQs1<6xOueufz5P!35 zpG0Z89#YrPhIqI|DnH00nGBnpMvwpCn5-GWOre60e;ip=YVct=g=TDeDBq%ldtuE) zmM>d&E3ZzQKb)4c$PH(eoGy2~v2d>(It_!hJZP^+o7W8L6aLvYs$}{L%l(s?8#cBX2wnR`Az|#=PFDT$Q-ZPlpeW z2~FM#);O6XVt!%%r_9nLm{fKCL_UPv8vAvWVMVpw1sX zpiw_J)uvKK4vmQiS)0G$vPzt24|b;x#`;YsnCl5m>Ug7tF zCRfA`sG`AH$jsCDj{o60jmE-~*XK2b$?-8~X@$XPu4e`EnChQnyjCv-;;=0k1^A6# z9!vmb*CG3*i-?6_lh1;fjRD?#V??3{7oO=nQHMx>WCe#OTs!^N1hHU3FC`R@a7faW z{52>t@29P(@8TYE(buPmZP$HyA<;cETV!*|y)PQRXFd=s2y1sg zoJr7F7AS8!v#Zr)6hl!-O778Bf4lO95nu)@NcDd}Y$hpyEu+)diOc2=fz5+u#NM58 zO&$Tk8?ZKf~hy=R5LTzvdkqAP*G-DePQVK2&sm&6zD+rpot zkQUhj4;?U!PjX3Oe94^)LxKB=-Gz)b^MyAKySi*}Mf;ERA8<#DTIS|~t=A8&&3YTa z%L_DaQeC0NDJ>%g2X_v7HokY(rWhFD1whz29^J=fOJ049imAO{>d^XN&**I0zUI^! ztCL`j3=)!yWzq=~287+P<@sb+X9F8W{h$`}JSp?njS(4;Ky z!%qfk*wgaXUnKkDp6sFM^#bM;ptmyx7oVsodRvm7XvTbPww&2ok=a(vU?+(7N(eqM zS*j;t7sW1BxZ}f0PsbgbA2D7HicB!MB8VxnVvz4r?Bu}Pz{4(#<1`h>#%O8u$@bC` z(XBHlQBuFiH9M}iOvd8(8{6L{iEr)sU;Ik!2$Wo|G4Mf|YhP?0K}U2trQTkjqb-Bs zgQ6sI?jiUQ6-g+gF3^~XfNLsByT}t|bzoG+**PnUKyJFn`Qg&bT+=9Z2BT+0H(iPR zRyBJZqQ~X^FCJimn?{TKaH=6e!sgsQRcF+p@7nf%Y^&oG5ri=7@lR%VsPFd`W1q(0 z*yUq+`Ozx+RL!nyhSWI=vs~yJi-RlZGRQ6Yce<8hoh8J^)FGDW6viSL{7GH;%^v%9 z4!jk-iZ~4roo;##5Y0Z%Z>s=^o?w&^x%<%H7Wisxm9wLALc$Yo<^JfBZ+e++P%sBm zQg|OCYfw)gY&j{_ul4%3$p-xjxA8H5DfWVSMD*~`1~$Rkl~qGR5TS*tEuS6eVeBio zD~qrl>am#4OGDK>?UwnsU$bJ5{&aU0APO1WNiHmj z2VRf-k_2RWj@7~QC@i)JUD=B)mbRp!o4!%?`_A3eQL$BJ?e9BK@N<{nQBB$y#P*h=a<$)huj1@TdT)uX3y6nJnXT&Ei^kI?T`I>R&3q&;>sN*7EIdxz1VJZ}FIosZ$uHoR>t9Z?V43)4%u7uD z9R#1Tm`oH!SA8d+0?7yU1h6@FuYet!wWJayaoICglQboeXCm&wAEfmO)z0{_;n3sL z*(S}s%Cw-O-&Y?$c9?Q9jq(Y`3z~3vV_iIxk;X^0GUb zQxd^)H07nBvMQK4pV8gyXg)SxB7$3?Y93GxnDuKS-}<%@wIQNEC~j$0xPREM2K84P zA7T!Y?PBi7Kd8FBT0uGWer>(#XD~Ko@-vHx>Gy4_kd0R5*!n4eHv^v?PIEx$*}}`K zK%|A2lVn@=67ofzb0%5RIF7hV)6Xk9pcU-#1{gdyA9aG<^3&$+SwuXOlFkDpfK*KK>~ zmv8Sqq{q}wG2NE9^);-`n(U*9i3|p2BIuwNF`(ak$B}SZxG1`he14NxLGo=-kpg^b zL|uo)Eq+_1gBr4;8APZ~g~Wic9;0Vei`@8At14od+ce=>9wd8E8K=DdQWTS&mygvuheL|kSN&yiLdx15m zF%x_oGNGlzb2C+PXe#0~5EQ;;@RzAAiYmmwmZAQZ!8#!Hq--$yzB(&rdS$b3*)S3x zw`@3l0pNZ%e+v7SmoL+I7t~9L?;lkXUkKxENH<9> ziM93yc#cJPm8yN?7eCoO+$2K*#|2)k`%@73ZTp{Z>nzua>XzX2kD70e5Psrx!pyoz zR29aEp+42$2rZ;;_D(wr2^u7%oU)>n42(}a;oi(P0|}7IOGgTDed5m>scB`zkKqCE z`$RkNFe~O7X4-;EH*@F=eAE~Z>9$IH)?ARkK@$SD(*!cs~E^%OCLE@ z5A(^=Br#@uFfpZTVPx&%Xy0bnc1N&jkB~Pl1D}sNfxWm*Eb2Y2(H?hC0{bnT8z)Ly zM&!smGc67KM|Zcm<}AJ;Q3KKIfXWSvX22Rhtmuw z8|o@%DEZbt${KMcIzDpZCJtQEKkt!$-z(M$wa z8e8q>@-~W(Y@8$>yC@@AIkjU-)VRAW4u;@Sj0a%qR|j7^9Dgg}KRrOWjgDJFdzAJyi%HvWQc?XkRQgAG@;t$5Czx zM-rh#++|*7)eU>NCs_|IQ`4G6e(e@X>0*~zL({)ziI|GwNIotM z#z^{8|7ftPMqtSEuTQmoYnV_VRg|O>O@9C49qyy|6@XVRx+kpHLPYWb99W`HXVu)M zHpAGJ=(Pgz$RN@b#mM@mRbcWUjaS)+fiAL{^qWiHwBy!Le5KUMoq`G6t!+I)(&uSx zIVp9n4!1C7AI)nTl3kqg57oJle&!R24hbRX5{s~_y#opJWcw1}*9xr25`H*aZ93n% zzEloNv`YQJr;$fRj+I#SSCr46XW$}d zxvxYG&Ld+WdL)CqXwR5y<1{U=yvzPo)ff|m>zyai@o3acUdMkLm0;GWv5yPayBMb4 zcP2P%_e=9BjacW)L{!F^B_a64;e+Pq$}@AkNtf0^B2W2AcdgpJ)3Q7`V*;<_bYziQ zU-TzZ<8oDy7Qg5Qd$7;xHxN!2u8w-S6Q>5d2w^wcD<(D*FGpUchV&dBIN1KubTc`g zOWHWG*g4gGzOVuCu0iMEb&x|635Ma;!x(F_%ln^Z?;)kpolS3Hj*BA$rxmvn>=EmD z^p?6MZR;4&F4gLo?=%=u^Z`&2hgyK2e1SFm{32W8E0y47WNmg*pbpd!U$W%T*v@4W zT89<&5ydpFN0$W^4VwGOA%O&et+3qRRnH&^V9T*C3&P=Wjrp}6M(OS?CBk^y*-l8> zC!&Fpu20_p0Jr)cMJ05S-dr0@OUZon) zr$=d`hz`~5fMHLrZqN%Vv(BNgdu$qJmzJw1xYu7}=7MG(KtdL05?q2UB$kJZ57aH6 z+;%O++&mRSD^1EB*uZCwHF+?lN4dm71Q%~6{9vfBN#R5`HNy8BnsJP+_{cDPIbD-8 zYo>q;x!XW?BBGv^Q6|gYle)nfSsWP?sRg=5GVbdu$p0Lpy)@quRCE*3wf3;MXFlC{ z55mh-n~Y*}=P0BKv5$<10Is@Yy*OAj%A14{3zg>URhv=fJoT=&>k40W!U_&%FdqZH zKLyrvCn!nos#`W`Q|7Yqy^jnb8+EcTmWIe-ti`HQ?s_(?~v*x6pd&K|Iw!GAY zfk%*liiKmMJo!;V0|N!9nc|uGGm=Z5D|41Qr92 zpPO=TyqRdFcEcn4`#TWYUDF=mNo`zO{cSmPfOpfdR$Tk{S&q1$+G$hNl2+A?fHNfq zs{3$Y#dv$L_;s${NV#V4#TpOF9I&Y;u`#}O%??-L;=bAD_H$eZqQSe6y@0L$@f9LH?>Q<$Jr%v}4JJyo-e(s45&_8{w;`!4svP6o=ZwNgmqM(F-j!lQqp7`jw9k1=GWy|fZxLu2vYYvphtR}Fa}A0 zXE_u704(sT>c>0mx&0UV0Iz;~?uc;GuWG7YC@Yb_+pI||)XSHD5?N$xarMGa<(V#1 zJ!?D*o7rkYjO|HBFR;g=SKOXazpK^g#L&TVh3?G~Q-i$}&H7x)C zk?OlM|HAl6N$7!8Tqqq)rRI9Si7cWWl93kQzsB{!!+R-SW$XOBb)zIjAVGpq#+VR) zC3yoju3g2mL4;~;5OayEPtsr^quKs(WzpNdX84SS*(>Pkg_iN$msBOh;rkLj<>@_m zqn(ErHIR%DMP77Md5nLOe-b&{%LeBG{>qyuUn(byG7*&miQisg(F08lWJs!f#F6e| zm1gVGoZ9ISRUolQ--_e}sE-z~f6C#GCY)ehShU;bOG6u3GCw73saBW#Er*m(7Fgwj zEZY<9tjk%Mn|erJ%lAdZiy0D5J>=kZtO{#z`audY=La|KPQxxOanRfZY8*kRlY3?z zTSp+6n;npGV9d{X9jC^Vg@6LpXdS%zFhKilfAnoW!SCCwd@^lf+E|Q>o*@#_4SpvI zMj#ox4mY7+k+NL|cQ6p<)pWAgr;RU+Ogh$#i~4zf@s}n&z6-0IL#3DQZOBfT_7-9o zJ}lzSeNk!mXsv1}dSbaqqVp|kQ?4JaM6+%<RV!&V3a!Z?&WgJ zRf@jDxEU^V)%NXM#r~b}woi1YotbCyz)b(OFfy+k2TYjnecC9!93yTNtytQ5-ztET{d42!p$9t5Hi&h z(hDc*3dROj9PSKdCk`97d`4}(++ftQR7RBj6h%leG~l16ptuu*Pk1%Hey;yQOj1uz z2D(U!RURPRe%w$-%x&A96tt?Q4mbI>WVGp>=;9(;->AMN`Rq&{@pUGJ3WT&6m}?xp z3Bnv5TYPad?Yo?vK@P=8cfHY04Hf1$DCqHKN{^g9BG7Urlx?y!Z;$Th%oGB=c{Dm@ zv{fBq0NzN&lUCY4Ok$Ik1=#{Py2MZvNojIO_?DOW4F z$~O^j@`xs1;C^o0b!Nxj0#M$7oih7RLWnfRJG zp1lxMnCYTR3|$($$qbja)NL3OpEaDWnl(e(M1aj@)dQof%%leC-kO}c9&kk2c^@L> zw!@ad+u@@&0ncsJY5J4-8e*6q+%SQ>b81>u$iV)scsje)Ir;CFUdL?z{?JKQF{gHe zi)|-2oQna5$n8zOb4~GE{uUP@Jv8oJ9D5Jrw+R<*w~j3T1_NG3L($)R5{{JB$1L{n zeR$5+*zP8%&hf!*Pw=ZjzJXAf#$L4L%#;<9CNl4WA&UN%;Mg$b2BE(&yI<<%h(TiP z5I3|jeZ9u_36>)v4en{HgCAJ0N`#0dfBLX*v-aU_YYDNro8wgXplP_~1tQa1QElSA z=no6)2r>1#`E1u88mC%(M*Ht7P`^mP4K|*fR<=zq$J@jd9iCeSP+|Y--9)FX2hwW2$4h_VYqZ@O=P$b9rbK*lxlpXrVP)sqg(?}z{WE?4X#AOX98_Z;KipxxnK1w0M!=Rv!BOtyXKBtS zU(?xNQAwKI!g4znKY2M7k3ljj|2kTnyBwNJx~n6_*B91S0lYJkRwo`Ct=gUj3(wsz zBc{VeFyEUyZj@mR%HN@|vv1%|-95v)2D>~XF)A_z=eBLRz!~|@Ke^CjVg<3VaM!me- z=o^j!_c3|qSj5HIIm(g;6n0)YP*$0ZQk=S;3_rOBR%O}0)4AEbq`pD7lx)_Swtqw{ zn|XHfZoG=bVZEt;8hiYxR54Gk>4%WhGv!mE`(Zx?VdobX*W;4zD~><>j4(WHnN%mn zq@nO{>|GKB63L4}_T=q6IF(RK!SI}~&H?1Sl64^!8(h&+pLU!({g(~sjx$5;h4v4T z2^V6#jo8pS=1-oan-HW95#IZk zMt>EAAr$Nxbl(-tv@kI1gLP7qua{oIRKg2g4<-{mekUGGMlzlbDMvkA6`0!|J&o(! zkfO@;zp}#{hC@zmxgPJ(X~5bPKku?-Bz`T(pQl+*z0+f|Bc@SQyFo{`n6G2fo^RJy zKTwa6@|T@!I0FD>Fx6Z6yOMY*<+}AM|>KW<= zISf^ZbS4m&0V~#Zf9o=4mcw^E(z-KksT&`9$?-s^Q9OiiH=7em&%G}+W_?nv*=}s6 z4SLPKRiqVZjrvgMJIiEg<8B44vm->Qd&?UjpBU$aXbMVS~vUmM4mjgmdv$)bUVbdU_i22qth& z)SqO^z9KobEB`(E6N>B&VpZ;Ua3n{G6NJL_9*^>O-gB{YoNgIPSGn3lU9toDc%yc; z@U-$e4I4-I65=MnO?pvhef`# zD3Q}Q{bs*eoiEhsI9h`@598@&uc}=Jua52M z`jjfQTRh)5%3d;^1Rde5Q-k2lm=}%=&KEl_?>-H~C1qjB7avvIOt!T_MP)jEsg<~6 z;$Ldb02#bh56G#rr<@OR@iwM>b%UGt=(mN2Ozx&6af18Z67Z6Q$=QZ;K7oo?;3uyU zPVf#&gWe?Ra%67*FBtN2E)wr9N!X6kHle_NdO{#YZntC?SjNUy5EBD;~^QeeS3N`u9xn330Dt? z^WccGJshfxY=s~7;U;hnyx1^&WjA(D^*szkPAE2ZVIhJ6X1` z%sYPJ*Yw#n_dd&+ajO<25z^`^L#-E4yg$;%_dRvSY+q+SdJ1x25DwU( zSkd}ze-woIC2~5q4WK8R&kU-N2NgS=d`aoZ0k+HPe7vqaZ-_>*IXZ@1TE*X^8^Oa| z>LInFH0w)C;)x*##aAc0mbqS$EwZ-O7$$emtAia#M2uG}0F} z*nIK*6(1Ek>e#?jP@HqG1xH{YuDfurhC9t8#Gn|+4~E|{?+GVN-AI7f(PZHUGe#M~ zyt1l3BmuNW(=+2_Bv(b$i+->1(!AXm;LMpY&sE<8TTa-g9M;|Vd~W>qc|e8Q7>+*g z>mJ_P#Rapnb`l6SFC2A`oY=^zm|LUAM_*@II1!BeX;Ege+Q16bpF>CWfFXxMrk1%_ zuSgxFEk9Eahc)Uji;&rNrpjUue76pI6g3KV*-RUKnfh8KGV9Di%-+L8lI)81Sdpr` z#kYXMV@-b@r$+r6f<$$IPCIA;^_@}hAZr^V+p2s9dvr1v zF#-YF=6YgXVFWIIA`>~gn+O{`ojd)QdbP`H$EC#@a3>0h@=X9-Fspz1+Y5=(s~{h} zAg1;Kz^keoO6q>Xz2;l%f|So-;qk1uajs9TdesCb6c~WF5MS&PEvN2k0=4}m`AhxS z_H#d^YtZmNr6^NeEB}y(y{6_dvAi#gHHlQJnj8+H0eanmyfV^d?hj3-++s}Gs`Pr% zYg}5x%X$Vg;$mb0JN!_udn`6f z=pO_pmE`R^XWHZX=uU+&*C4Dm@R!)9@V=daZ5iIdomR(z!CoaNwjNuRWuoEE!+6FO z6`{O7*)QLnk+*~y~YIsu|@g(g0bTa0)j)^>@jb(|Kvi+_oH3EubJ@*KEDbC3vN$w3U2ob z7zTGMb~5tDVV4k&Pz$m%FDXrPKXK^57N-eTKMAt}tI9rezw~zH`C{JSqSX<#Ba;Qf zYWH(%T+wx{>rcp~1tMXA_x9K4JDK^lZSB>Q5^>GM4BSn`?IWiu`BK=OY_nFYj=qi0kpb z*A249!f(HX)mxJNl=;iwXvGIxd+{ncEme!7_sbUs02QL!%5The281%Am$M8qYw7VO z;_mW`G*ru!Rd4U3*&oi;nd8L{u#Z!>sa^$Z3~@kh@JUw(H{1}`=A1n@)nS3=H!S_S zHj9qkY%w>{+`f{!QTv#IE97`CDBKO5vIWw6u?MqeiActphfP1(QnilI1FV{Ceuy-3 z{Xws0uxhpfhr%g!5A$NM?GXgcw3N2-W|axL5jtB9mdWmj*3LSFaQVxF1p4<_xpByK zzR4q-!l%!c9%j#FV=B+qvscfa4|L^59Tx6qdZ~pBWC4#a0=mYI0p9g0V|{c~FP1@( z3}eSVhUc42j7pvvUyX*22TB`2g(ljQ*p)#^DKZeTGs`LoV$$8 zR>c^|p7O1~d=buFeYMZMk4~Uj%Dy`QQ`tr;sJaCS>C5w|G~mF6EnYzIGPE3B4b-`t ze9?F{o3eN$B2M_HB?Lb}sqsy+lbpNea$+IJBbo53BmLdiBq0=U-8kHIgk>c)kP{s^NH&kak1Uh7caAdOH7ui4I(OyZQGOys#G)0oaA$%fKe~*ROEh<6 zQBT9g44sW;*uvq=CYw086djSW-}>3r3qm=cAdgE+!oJ_+kXYMeiQa8ZH#xW*DfO-2 zbwuRE{;a>LE|wS`l|!N47Uw!?-;a2w_&(8n7+)6pp6S#{pivs~*rd`~(_I-+A8$%p zs^!g2yy5p5xqmatnuTi?S8J-&bH~s7!J{+k<{!%io3)N@yR(F>g7b@;DyJk4RliX- zjwl{UC{u-jpr77lE_zdW%gbn|Q$2Vme6sijO4m>j^y0BxNt0nD53i^VsR!P4e}a5_ zNJCp$G4aHIuFn|$`lu!sdko_R2hY)h>YDGhdqujMlbxo+yvc>7=gVK?^vLCWacYBY zWFI&!7(NvW=D(?XS3CN``##Ek3-p3Z=@wI(<+Wl@0+;426UM^3S(b2FA0kPe)qTgpSB%qRs63-u$&1qSEpv}8Q3dQ2#if(bPHS}*|w!;SCh=XOK>_(0k<3O z?`aoshsh5aHeYVgwqIsy=Do6U`&r9tWwrgu$nx_EkcRsbl=0M6d&A1;2q4Qz#a2|iS;g;z15y^8gIZbvzXqn8pow^<>_kRFbM(xs)@fyp7< z$lMd)VBT2d%M{C!9CX%d=3nuf6A>BX$y}{J+dLV})^TSW$Cbd998~U716aO5y(OdJxhZ2}JDoW?IZicKDGcIVLce+txZ6o^Gk z4hE)h~zP<*XFgxy&i?cpOOTYYTb3$7jpJBB#uPoa$gi}(0 z(2tP^J<1wzyRSY1*EzAa$lUHKgB8RN{$h<0At$dZSN1yeR*3M&I9LHEIeJ@zNXIa; zv>l>0gWz17f-&~+!MDBoR4o3Ckm+c*~A3n~C3z?N$Ox9jse3r$S7h=sm(}G3(dz=q~ z75He^B=&NfYzndC)g`hg35tOU3$S_%k5n#F$6nUHWf90Pb*=u1ltrEBYfHD>D}uu~3c{;boy z^+%6VlniSh&?vNrKW62RQE3Z`$Z4}OS1jg`-=%3au6chGfxEM=tY2!MDD=dB;*d6n z5Fh#t$N&0(d4;MYM^xy`t^HZ69#Rg^(ZSW-LK1qh{qZ3DYpwHN2Yf4AnkLM4%bN3P zfD5oPaiXfFPi!eOD=X&k6&E#bAH=G~iGA52Rg4imE^#UGdtY(N__bj9b-sTQHfwQo znoU6TKtn>c6dg~l%#mTfss4<89AAmoz;a``W5q8>sdJ*!EWWd`U|i8(<0%cF$-85* z=36w~(z|*V{fnd$i=2(9rvawVcC>1Rd;}F~gFG(BW$d`mbkzNijhdnfyokvtFfbp5^tTX%(+)8%P;< zZ5zt3iRb@tzl%ev42GXJFgomgkvsJHA<1T&MWxsLwC2BzB{k83Tj6AVfDuT{5@;xtr}NmxChjiVHswpd;=j2 z6Oml(nLGB!)w7`Ks9unvPKcB|F3QR|cW*c7wAURTFu&eH7OKKZjr#UJ_#wiCoI#+{ zyQdeWyP|2vG^|9!75^UkJzDwb4mD8tryzz2CDP%`!1}h;`RGsDVY6?C-j;m51O!?} zF`UHlYU^8<#0)#lXwwQ^eO~-(+e2HeP;RX6f~EPY+4M{8lI}Z9tlhnF8bWTOc?g52Av_)G3(m@+7B>% zcI%-0q-yXr98k6pER_kH%W!38Ki3=ja7*+iqltk-O|`c{@LLQ|jgN(Ys*03wD8(1z zP9S&NVbS?9DS6mhVBL*jESo;~l2pc^rG;O6rz{970#l0- z<0v?R5Qd@ZALOWST>}OSmF0>WLs>+PHO4eFV5h z*s@8^UN_?0MzKZXBC7eO!-$h5D}z#_;VbAdAz4b!t9NGYD*Me}fYZ zMJV;voxqBcm+2nEz~;IB=>`sLWV=^(!^a}_1tAi-X2bTW!oJ=Sb-2Z&GnYJdS<#C$uN}GmiUV8fy5Cr)78(P>s}?> z80Kb1B>}kBph;*HSMtdRpNHDD-p@tL$yMp*95MNG8l21TU02dlfC5e#0^@=5OnJc{ zwnyLXBBDW8uh6Ne^os?})w@dN?GLa8kcvrZiVic|>f_W^*01{+=scv+*!rcm z(02MZywXE=lkqWC8m{V9m$f;h>mKvoqoTv{XTPKFQ0FhI9MNf2;I5hP*nrK`DU$~S zN7kM89=UHxCveP|;ERb{VJzssL{ilK7IsOx@a)r{uL{m9k{E5_pFYqjMz}Q>7goLj z%&{2q>qXF%(;*EqrvdqlskPfK@1M*G^^-JNoQ!L0*|?t2OflI8__T4xNw6MTe9E*^ z@_qE`zQ*U`cKycUe&FB{Qc2kbU|=Zt%h?EbcUpa-EGR|4KacWB(M}fj`euJwqosDo zte?^=E!ckNLM;48R727`uIrFT6Go7a=cv}*`}JcoP*~AL-1gp8s%Hy%RCesqK4?eg z=4j;^A;-M01NebdYt)kXQO7GJKxEHq!V6I^+kkaW+7S3|(M^*C5FvlP;!5-#1g94t zg!t#i(im~Q$^)J3C##MGos^%wIpsJIrCwWlef&T#DpkU(xtOP*gox0Vx@&h#(-SE+ zd1KM!uUQmN_UwnZuSParU0o*Ro(hbJW7(d*Om!H*w@1zEH)crQr$iqkv7keT{@zye2>uamFMQQ`BTUjjd@dC2)6%CNyZG8A%b1`<5N=<3B55_|Aj+488rc7+kz zNvE868}B2*LU>4phRnyap@tdDG`gC^(8tCEG4=LW+2^;A9-W7fKi@6tJ^w3l;o@a^ zNZz=4_tkkxV+bomQMgNHB5SJ_!EZ|N%H_cg2M@}ozw}lu*`vQb0h$$v0=|A=753#y zD^rBdT*#J01nN!J&B3a4mi@0)4!qeb4#u@RG*+o{`+arsX>!MAp+YB%ek0SzS}H^B z5s!nw(98!PHVtW2kmaM|9WS>uO4LG}2VlmC-;njI!T1KxG#<#~AJagM!^4_LK1WAZ zArZ^TtmN?uLJtz*p`AdZ`I@4dpL_Q-Y4f%p(?FXxilAn?!x2+pO?Et}kuD}w1|r;x{&-`!Jf|o2*euL zYiFP7x;_g_+I_-VntdvmO#9HsUP%P0ql&%FXVpL7*S#C@fobYvQuXhuSY4OvLa>sz zm-->%zFUJ?NmF5p@AanD1>5Qz>p*!+DIqUDR@+`T+t<61MLXMEGb`T-*}i4oCAF+= zXW9zKHD(CYhQU>)@B|LjdHaVRSE6-&z4yAw4T89|cRtF^2{r*3?JrJlNqdq>&0n?VSnLE-7pE>SNwTxYo^9@vb2!#K;sG$7cU7N0 zW^c@-Em@qUzi75m?#!UljbLGmEO@Z&_#;mTx?Ou9&S&3gbDT8}-0u$!mSO*%pI1xB zI%gkY5Q7wG1x6uf!{A?q7{mQl9)+gWfh|oYX*v`_zSP=`_y2sG(`sj^;QUG!VRjpN z_>$Tfk3$;ObaX*+=Hw(m$BouZI+2DQ%VVuA>)*f?JIOC2L62^oWIAsQ>QD8}S& zs-TYo86#FW+X%nyH!2$I1NxUWDY-_NZ>!?M6qje;oYc`WTBcV;o@?cK5=!1NW5}Uy z^+~(ftsVOV6saM*e7T%BbFNIbDr`WLgVGZ(FYB`h=&PEY<<4>gjLn*_ET0NeVULrf z+lPKya64Z6OG?P$dsy2;aE4`+{M)vp`A_6(A`HFm)<=W&+~qZwlD96Dy~iRtkzRil zzosCVC=RQfQ(wJFfJI{5z=M2#X4^W1Jl|#|qtui4?==Dk)3L?NWvE5275;fIL3_3z zhy*GLRD|w}Dgr(@(27(BsXQwlE1Tq=cCK($Dz)@iN9XlOg)jF$=ji976An*17B!+$Ufgo8LG8&EzWml|H$D%-Z=L_Fi@itcoUl_hSe$=qdu8*HGma`rT5E^|QpWe6<6nA^3 znG3lqmhUjSknGxs4tZnYK0Cj+d#KZ=$S5iF&ZW^TRCkjq-pyb6l+EJws{_m= zxon^M=IuAoo-lDKZmzev{z<^j_#BpN@Q=|M#9LoENL)KzR}^?f+e&m}{se>}fb=l5lr#t^A>A!GFyzqENOyP35CiW#|KIy@=F>g*?0xQDd#|+) z2WKP(`dZ_&JOalf7H2luQvR4K2o6>1ZoUlGLzB|iywmz88eLK~adyP>R!ZAUHvso} z2u!X!euKaX&4=?yR$h|6Ma|N;K zkip`S=f!AqCE3=HOaZ*VuLQlRZjvlm6NSokH@50h;C0%n!n^j^Bu8br6nG_VsMZvN z)Wwk_QLjf~`alF%r^hV*LFw-q{Ety`#IJm3qA}!EFRTJ%YxV1Kpt>|KLXnC=jq|F_ z$hxs$QSk-D&fPNxrt zTn zA4g2u8F+6}3F2s-$Tx}6>6Tgyv1ilH^a)ax)5eIC+#4kC7?hJ1X&qy93Us#|abw{v z|2EU!Jc@T!oJJuT#xQQ8^7RLNj{YTsRDF<%&Zv3#$8UNb^91oMuwcGMvl5o!PQCq7 zne>f^w{f||!#FDgvF#j+tnS(JBMwYD?6_mjzfWkj(4?8tJ!(a<#n=Sw_{bfD-qQw3 zrh05~Tz!5n@RZz2ho80u3Vl7Wi}T1!3bI#WX6HOfs1d;c+KkSqjR!3^a!5bdF$|SC zmj!%r+Wrr8jH~?Mzvhx5lSdoO!B~?&IPxGcd_aQJ9VE?a%)Jd&8>xIscYjk3D}-K# zV@v^bW!?1ye{PDk*#275XpEF(_nG9Dkq^4+L=t`aslxxRt7ht=qPizq>izI=)^2_% zL`~%CYfzMW(akvcME8io^hP&u6Y{jTC^p3-yOm|-q@rvNh0?b-c8A0YMOMl4TcFX&^jHh6Mp9B{FafSfy+ zlSuS<{QBx|(o0*iJH6l{hpYdnAHV)T8h10Z)+sZaOm?97Fy9UKGbjN5Lhs43 z8e8t-gG2dF>{Fdw-&ri)r#N_zbesTJyb^#K6MtAKJJ!H|dke?xTQPm!SGzCf!RlY_ zzLX*PG^71j;i>^yL{hG{;fFGn z-@&v_l!IHe41IFrJVGQiEV^I1ZtwL0y8j`FcY0T}9ND8>(33=l9dQlt8yTsL!bcNO z4lO7kJnJP9{K+TAjl7e#EBR(6k(LWALB!iJD^TW~ zU(2rSIn{w3U^87AyA01Hb z^S-4->e18bgIbv<#$hQbhPh$lqh-9oRp8AFY@>OD5Z`&38e~-`(zh1^PQsoY7ziiD zjb6@Tpi`Ie0CCI)am7-VKrLynSam=#1>;P0^kdDz@Tj|3g?m>_dI!nqZSpn5*af~} zmM|#BPVREl=e?7C368cGeM?g+!~k7qu&7tFmDZ7(&0YG3fJO<%p&|!BK{3>jJE3~4tu$V@`x=fam-a|SvAK6$G&)#MrKwQT!$mw9-IV# ztYdxLRPAhV*R%qtp6A_HC3v0=W6d_>$mk8Or2T*uGt1L{m)*Kp9`OPJCqjv}LGReB$GGjaylZPe-=Qb554r4h(*L(A3_Q(9BGi*=390uzCa||ktmWCaVi^%X9^qE_w_M4kYvUh#%W$)dw*0% z(_xsgtQIisztH?+FJF`dG$8dZ&k~`mdz`W+1|$UA<1L9)8Y%n+2K1~DN?UFm^D0by`xf^*nfMjH&EG%dHhp<`$3+= z1Z}y6%U=mMj~i+Ps{1MCS=4ic7ZxD&f}3OiM>GQeXXNW_*?1b6_hYa5>fyIx!#W%- zZ?IxhEopXZ_6<3A{KF0ZzV_^UZNlj3{$wC!B;F2mDrS%mnjn@o8#IJ4(a&e=8Zxq6p;A~+d1NB_&0 z@#Q0)d}$2-^^otw#-E=>aCTA^VvbYv{v*@DlxX>azl?e%8gTkehr0~wxG-^PeVUJ0 zei>ZNJff{5rYEId;1r3CFr)hdt3f`#AyCcF+Ua|Kot=oo#TL}4`B25-rkddI%_AMggc$0t`WbYX&qUC7c9@wgtPQBZVF;aCpLj} zEA_+t0}cAtPheeglg5!W9j^GFvVq~&F%^SU>>f$#of!g1{dFU`C`(WvW9sq@TFBku zW3zP-6(Nu3Zncrey=YIoXBXgEHAuabmln(Ds3)L<@^jtp{w@T8-;rr;rZaH`* zX|B)Z&Nknf%9TJq9i3u%5%1sdO%+Gw+{pvQAt^{W;9Tp<44$N~_9a!+IjiuhQfc_U zRkD-n{TYH33k-X*hWvw@mF1{})#c2irM3OC-S{)ut}`8NfbMTkF(~$lp(R&CQOhQ= zjg7LgNLDnj=!S*dm43BPu+;ZMw$YQuTO;qmH=mo#x>Np9qF>k0 zw(c$0RXNrKPLw^6m|K{$mm{SeV`X=i3VvM)2H?sjaJzeYmtwVHWfLh#{^zNFe#>*B z$=7h*omB0A>FB;7S;+jh>!AHB4D1VX3?@x@0JI5AasogtkD@N8|Bd@F_1aM z|7aYN<`y*hbOkqfGD;K(kaft{Alonrl)jrE!hM%NPUCQGViN{T8L-ERRT(rfGZwHRCNh7*p9WXDM=mKrk|%EI9e8ZbQ=j^R5&cg=rG<>Gps zRmXEu*AY*Y)lC?<=>}F~+It6bYg^4}*k-FP)}rET(*V;Z;kzc16!^#Ck#%)t-v_)M zwiUFw8KtRB&eBw5ej$M_~?Y>SW|@VNi#p zWQ*w}lV+j)UWE`bKQb<_5y^T}M6g)vq$o%>EEUH);tMt6ffPULXU+|PgxI6X*Hb1K z#~0SZ-8wvz&#sAOTV7pR^$iZnTYp8iRdhk-R4OMMcjXh|=vg=UqsIq+IQZsl z45M=_71XxM>X{XD2IhC7K(db_zRk;W)NCtU(J=cXWjYU^+cbQV8I~K*cZ)ZprpDTM zu*MSNkvaIW>TyM_^B+Qp?A^+NRf~Od^jf@ry0E?W;A9(tZK#!t$92JPB__#3duwQl z^Puh=t#YhRCR3P_`_NACG~~T#zRs@iv`y3_p*ve+6qkhZj;A{|nZDM6Rd=x5R1q;3 z#-R+pfSCVfagFRY`kahZS$&bhSEM|?8ZTXgIde-N!c07tm*}Z+zLG@tpE`HogBp-~ zU?I_Mg+GV$*EKN^uJgz_Fm!K!`X}h>isipth} zA-*9#S4lAubeKhAR*0Of`$H5o*>_W(nFdN;%uhWBccIx%fW+Q8Y;iv7M>*w14Mmy_ zjl+`ew6-|!qrWL2`+}adm<%&#a-=r3LJRyn_qfnS9ZVxvnHCq@wt5{LX{Ba zjO0o$-d5K*bSojPr{P96|pI~UsPv8%7OjUj^-oUV}We1 zDF>m3e5sr7nZp3-6}Fa5ZoV{eCfS9SV{=2s^mUz{72`5bc!d6QS2cqgZU?&gUkJ#+ z?$Ne^Ch0u-JjT07MmIN{5o(gQ4!IFyV+@tL9Jt_39KLYxfnC9HQ{gh$tBN*8bZc08 zn3BHglh`4u`!*bwv|I!d@y0Nuc?P5MIv3Eze9@hC}0@hE$w0L0hmxqURDpP^}OprWT#VD=G3 zN$C07+=X#Dc*0P&kiQi^45q{gug)Fw@|4QjCpgZu@O+BS{lGEa8#{$P^Ni|oJL?rl zQKs^OZWlSR(y8*fREnB5X)GqCdvL(EH&jeI8R2%d!D>&&w)g@eLeDM6-YEj=z$c z;J(29Y!7O*J$z;d6IN7iJ)ZQ@<53DXKfUD$+6--$zRGkusLkI6=(eDeM?X-aQ~9vM znv;QFwhiMG*^#{tZfJ%si`)8(bJp1GH-{OV6znr!0FBg*ZK|O)9vNC&uRUQl%wz!N z@(uQ$DE{jR@vryVxx7UeimH#7KOc@x=0K+=-#w>=QaJgOB2kmkRQ__=nZ>`X`S@n1 zM2R`Qe9OMbUo1+(K)Sy9ZC-k>2~lD9on_(hEara~-|E zlgelJ1oaJU66+=FI2!E%w3|~Mo_k95V|80?c!)U{YKS=-vCPzXu8G`+_7(oGi0+x(Uo1CY0|JGUkR(RwE5hXQbGLM9+-A$yj4sODE(+BQWw>jAl8CTJnW@It+FzfDX=Z{dJ|o<44b!6hcJNm{4< z`z9}(F|Yrtdw;q{-w>kd*s*$r3^;(g(~tir;kwm356qHJv)BvSK2CHF)=eR@&d{wC zOWdl)x-4A&1}=Dc)d_kW)Jv{dTB#_TbOR(tZS4p`FUpCT}X_WP7n~Vu^ zAFn@U))$oJOssb8j*R)=wz{?4lOqGONRwdZ^O-S^fA-dE$*<;<7LECYQLj8q|EoGk zwT1YDhP;#7F1;X%G?zb_OE?G0*s0OEfamzH8YSCECJm$_f&_uyG`$R~2`B{HoLQhH z9WstXHLEo?`eT>mUL7r$Rf?QHtqI}}DXnss+2w}-d3rpV2+P9Q^fxX{kYF!jX^p=7 zontP~Na_%stinekR&@3LTe?p3@e z_@Uec)@Uw~#hHS>)2+#`5W?BIU94#I=OZ+E%ai-ZIFGc1pf9EE$g(2Q#V7n+EUyq< z^4y@w`NZvjKpZ6Q64mn$=YEXLMM=hfwS!Z`7iht~e%ESQ=cVCNc-Q8l96vt9q&aAb zr2BcHXUCGlU~_6remr*)+COyIAz+%e>YQcO*1CKkZq9>kp2yczQnH9oB8j^mUQAfd zO5Me04P<-xBPM^?E{Ck4S4(t+YdZ@c6lB#731hqo8Day&XljF;Sc>mW-nF?=`Wv4% z3sYw0_Lpa7n+i9O9+jN+4?d!9L{Yk$qG!uiFO+X-xca@F(cUR>mgO0XEX}8%+y-f1 zdYwMZSByRPHUMwnbNNNRIhSsB?hHeg#8umVML^Kdm0wS#yrPtzlVTxpN^>g(wrER= za_MXSv@KRlFGwb$TCbJ+uUoSXE35G>*?_*(5EE2zxW z$OfYrAPQQ1U}f`yAhhCp6+IPC2O>{ISjI6hnvR8|cm1uYWFSL)c02yh;?pl7d^eI7 z*|RoA%mehnruDotf;pzM%k&@$tR6V&m!sv%a?;~W$_l4xoq;XJP>?<%E z^>M?cVzYJ(Co#JeP&Ghxufa6UF z06sCufutRP!u1p?c@e{@aMurGk1nU$7l?OG?d_XBm}@OC#czfR09`;6&v|d(QEb!> z#Nrn#a#U;EGt}3u(+=IZaxdR9fJAK0?nppGlaJQc@58MTr`nEw3o;^w#c#5mes6z& zyZWkwW|no^fIxQ-_ip(^wJdES_C$=;V8GWm8~;T2?COKq+SIUKyjc%$rjOGy@Y(!^ zc#c5T?1f3d_cU2!rAd5}o&Fh?F7-r38~sUpGW}@lh5o~7W#YuFe_3tZ_xz@$6Fzxn z2{JU7NaYj`F>jUU5BO#pGOfObFLeWeCXe%oQFm1s!w+anPQD@CoxF zyl@z6@Rd0;CV-8|ehEIjFKUd45i*M0P4_m1-MSaz^evbVM7lN`R;Pjg8{o6}0K9h? zl~0nfzkMs&t?(5aOS`u$Xi&R#tJu`NL>}MtjWVCB84gx{fNgB#(>ABmJ|ilfIDI05 zm)^kNE~ttws$h#uxkar02B(^6hthpOU_Mu;-S%czj4AVf7&up(7i%HjJAS}59$(%| zc!2NY{8`|-*Mwj1g}4z?wVYQjU)CNCl=mL-aMwx0k_>V@CpB~+yPLOs%ox0M`7J^DZZAecs8(G2=FDusWQ zHQqHkK|Ed;#GsP0OS5@}p_{g}MIK@iA*S?;4;MG2c$JWQso9_}cZ5qrddQNCKTAUH zSA<{4_~A~+j}XvOI_dY(xC^vjiB-89xV*93Tun&F#RPBI$G2Z1*jss;te+G9E;HQ5 z<&c?8;{7~V<=q)=iWP+-p=u0z3H01% zTy_VO@IiHepc$FD>}JHq`(P}V%IEZ*|CCIeP}A6q|Bc^~5+Sm+q2FIpbw3c19^ZoW zqQ0m74P7?!m-CSG$ciL)w}r-5ib($P;WhvXjgK_rKz(>ASK@BN4kz3{qz4!VNBV~} zSinMV_Qm1iYSPREdJt8^^wYJeu;5)&Q*QcWyc^=v<`_!&{(SB7I@ZGaCZ=4oo0AE= zNu!i-W$7TD!%#lxB8WZ^{?r!x-R08${&Z2J*7+R6=9h#K`p_BjKxFx<7Zu(?<`G%Hi1C>?^1h}=6R1%# zVZAQdR?!(|+Qx_!Qq1xgRAm{|P9z;Vq7Jp(KSjDf250bxcmi&D`y|;)+^c8oiK=6*na3X-Y+Ur_fPq zpW)T9y+$PFd!&63Z7wH?wo6bj)cB&6QL9C8skpO5aSA1u&xF9~UY~_3YwgDDvTBoN zPaZJXHf6(y9{K0WZ@tk8EbCMb#fzhMe)~qL;?lBRiRO(HA-UVaOhmSJcEF*wO^T8b zLFk!c$z~t@s}pA3+RqXaM6HJe`=^I%JO}XdkFyQ#MG?jVF&dD+18VBC00|oMNpD5; z7Q%>X%4>ApR@teuk9dezSXh5Iv5x4&51xqW+Sy9Zs=y-j?GL#VZjOqTcYOp1)kXz1 zs7cF}Dc1LUh5@19K7R3L7o?8uo5>tm=fCk}mUw{{5?{Dt<$g+2y+Ad)#t@uD`MD{~ zJQXz*$BCybp>5%6QcCzT8RC}*2M5n#H=4yybA#_?RGJ_ZkQ}pIWN#sZnih85#aR5} ztH87@w)4x~hkI1h>+$h|@i99mZ|Yv*Y08|;p7Y}`0)w}t0AgzS%Q2l&-(e503q!;- z!dmxPROWPZp(TI((5m3gJej;%QbFvl%B0vvArHd(v$8Dz>ln+*sT$1%>2|8->VWlp zSG@yvt(%&@PZbO?4gUfoAi7ZoJvvxQTaG)-bZ+JJ5&gPW;hv9`&w&eD@j+95!2PC9 zUb-Jh=McZH--)ClXQi(6q4G{BUi`uQ3%KD(p}_s`ros@OQ7Vs<19syhZ8BDP5r;>_ zkIeyyD(0F_CHC#sNIKfc0ISY_6XnIOLxI)QaZ{FQ6|g4ULu)g0 zKbPKb<_7pNhym*~7q#xr-2|3>MruFh2PnXpfX;>1R1>s#+ae_F@uq=~P`7K}N2ilJ z@tJ+-hJpL?dX=ek1G-#Ct}a+&>d7C#N1xBYoE545)Y^H|63Oro-r#0ltH4X=Z5Srk ztDfVN`HGD!*PADXT*6n>diaIYa?Sb!Y8H_a2^E$5KMlWdA~SFd@SX$idPBve2`ib@ zXI{kZOF=TMr^87)WM^_uirKZREv?3=W?YZc>l-Z1wD4crJnvJ}Qkua#f>IP%GH9v0 ztBsE8yg>|aXqUsD?)-eiEKS98P75Z4zbjkq`_Wf$2-kGAAmbVse092`D`v~Qc=9jNZgtK}N?b_y?XLWdD||9r5a zmr&hUh8k&#+bZ$5SX+ttfnh&uJA+t^$4}R>DGDiw>iyJlWgf1ihlw?^m1oE05@2c zHAwo%mh!B=o8#1JkMqc?UJ=)}xwe|Ac0`#*SD3GJFxV+tgiW|Sqnw&GV`3>AZ)6}O z1q8%2@InQszdr2|GR5sHJge_~>%O=|=JE0X9=EmXwP)z-YLvH<3#*3^@;vSDBhs0J zM)4lCwl9(fD-LG?vE~ai`$_LLoZ!DXe%$r4< z&}t_Zvc)*u5nYFnmzdkecvYGvT}C@$;(lg?>3r119)}6WDBuFzX-Pq(*F)k-xz@n> zW5y)$fg!`bvI#L6k(d+bgl_$bkfbz925Ok#gZH~Xec)lLpX*9wSe*P@Pe(k;(!|_3 z%0qA45Rc2{i3t@0!SV1(He@sN@w}?Z=W=;GYFH~#kHA=h-6N|^OW`k?aG(M_7oV^P zzRpd{_uF}2e6)Zt(3?OmiWGP=x5rJixxwjUkzjP<^m;-}NC4dZldp5_Yh?Bpo%Cg= z1A)TF2RQ^`gv+ak!YrpEU}TnWk_XrFiZN6oBlP2Q@r#2UB>ITPF>4hG*kBK&1WM19PMM9f)tK4^LZm4^MEmta& zfS{%;K`cA!4{{4n;Lxt9ALH^O8So)&SEg1Ffq_>$n#gbKkaiD+&;6Xx*&cO7bx_2e z9O!GW%V*ACo_TrsH&17DtHBm?YtM_R? zgyzJ8Pn?_IwSHK=-dJrMAZwirloS+^JV|<=AwZt*6ID5h$RRUXduAmQT<|>rpMH;? z@#0Q=7qk88wI$bU`Hnx#6o)bXdvZK{{HALZZFbkBWH?Y zm=fnPs}`#ZlkAM2_MhB9%Vy4FD^hb7Zsrn}oMCc!!#jzF#_<%8sKj82QS`w5YW?`- zY|}-iW3)b3%byz$sMYbnADqV5p@p_06I!t_KAWW^m8zO(Rg@rjq~Ry&&QA6Hgw47e7a-_9b|nlY-j_ z+axcZjok%reZYCV?;rWVrs^+%Fy&^>VSLwHgwW7*F6doP3hpNb+^A8mNhW~vh z0IIX-TF11K<|b;I78vA_<(hm!!+B2>n#)O^YceMCYsdI0qJ0LDA2Uu$@IiBhaQLq5 zT{g`GtE~7aDR)maFQ;6Afc8@DxvqbE_Uh@OW!d~});IKlj$eT3Na>2d&I*KF)C}~n z|57Io%NuC~Y*o(Bj+Pw-X{&mZFdx|N@?JJ=vx@L@9!D`PMjrkm7AVH0cU9T2lz;g=2 zs`G<|gcMh_9Bl0v@eAKu@GsKL3vySjo4UiA?-Z;X0i_J7hoBO-=>X7;I~YW$IDqXk z6m7pDKe98s%P%I4B4G|B&M&%=I=`Jd0NQGl4|I(AE+fl4>u+vLxf;r&B9#ddT; z5UnDdKbdbwGf@S99r#KP@BPw%V*a(N-Dx1ayW)__tQ3cN#G83k5JcFueMXYqr{o|@~#1WILQgPP(4uXL7(HyffoDH4Z*5VjzHJU z1h&J2aDu8#--o^O8~DX;iU2@FzaKC0LWtX%P4;krHmDqrpe?52`<8P!6tDj6HBb+| zUe=kWWgKt-qSp)Bz4CcJmjL-(p(hLuk#c^=QKC(xsK#8|1ukN{s(l5B;yi zSUUebQOh!R{~UT&VR5%cX9sSg9jf0hXGfFaW&^*2l#C89?10d*AS+{`Q zHu+~V?RLvv8lk&975gTD@Lq%#b_h*A4;2i)|>(7*rovCU(ToHnnhcFGvUv6LrO zXYR1_4NkUZ!jUt4bunzsJWffas3QRCXz)l(V_AwWEQph~23rw_u5~K}o!aKBC}a;knJ}c%^v(5UqDHDqYo&us z4JCRqeout5e348u>uX$W#_b$^ka9-UNuD^oWdUO?kb{Mi>yDZ%hscdLazHpT$=?jT!WIZELvd;e!C96}2{sv(sf@L4H8-N|_jf(*6=Se&o6Rw#WewF#TO!4vU z$%mKVmW|iPRA!w~rF38s=dX(2S`hi?{`KOgG1E`mk8{$O_iVzy6_Al-Lq-$!N`qgi zPNBJoPw)QIYunac0_7rR%H37reFFGhSKJ1H*#(ANg;%RZ^C@^jpmvapMrL5|Mg1`% z=P4bBRQRfD`vG~M5^j#}2RcSvGoyiz$a8KeAt$Z^NjFxcTsa$Z*8{Ea{YCQ(L@e&J zd_^`CKJR_qLKX$qv=BGRQIMP~48w43&1=bLG1scM_zaJ&RXP5O+Uwr$*W>12hrehI zfno5C{)W$=oi_L-WG%}EL-d~$ToZX^;O7^zL7lQvXS0MsH_0?hR8|E<)|K-HAO%voJ#h_bw7g_tw7QSshhL?89WxbwsR72c z8D7D}j2C86CRIS8QeJM|g4B5u6&_KteR!PJw4*n4e)|T~r)kc3B5grfe>GE`$bLQe z)BN)>ymbW6%c_Hs-qtvz_mb$k-RW2ySSlC2agOf}u~$A=s32qL3tLyCPOIEY@fH4X z9ndh9o5bE6|9$p*kyftkH8w!W7d2!)7%}VC^u<^*b&&xX zdF*riVn27%AXN=-IT_9OaelYV*6#~(WPQJv zpBpyCGaYflD=DHNj5mQTK3h$NaQr( z*q?jfq0e&zormq%e;f}KQHC^*yKV-XUnl7Xjvv}xG&FL2Is8Yg=1EB;cv-b`-+`(f zu-eKmy%l8jx%bkv<()Z{;-);YMEO$i`rmO}UX#to*OU4#-(Ig!?D7C& z$I>K*chob-x855Oq;8Ur+7zNB+3^f>ZJXY{O5!AN!Gg^WbQj)5Tb4O@7T|{nomkbq zKmz^E`3}iiR}iozG_ga!2O%05!5D}s*H}{_PsFu(w7KJdK6b-l^Dyk~;w7>qh8;Xc zs8A=;g#h0@I_o^|T&;Gxyx_}fYh-b$*YGgsE<+0us`pR`!^b9db-@9hQ~!A3i+HVf zJ9`N)OyV9A>>qLmwHo`7I?8>c0*5n_g4?2nX(BD-N%K<`;-U#<51)fHKaMjjd=I$-b#}*XVyoVjCaC`@SogaQDB*Wn?mbwSdKSaB zNgj8>idnC*LM(OUqzQkOl0Op6e~HL7X7X{4MeQ6PW4K5FRTOj-RMZ98lgF<>=x7K| zc?sUM5mL`c8$O7(@uyas3w+C8_|oKt()>x{rnFtF2$@AFukUS;e1Z2s*`p!~7inai z2HLisSYTA0C1-_MB~R^Do2pNAFqYTr-S6Ilm9*P9S3o10xOA-jS_VJHq3bU zpZrY(qi*%-HRbMfI9E>gi1)o^=_VfQi2LyI-#^R?4%n%=mfOQd%>MRBc%^o+kN(c( zVV9*C!BX-0oiAJbN;4e|;W6sO204m6JinX!6mOP75M{kdP>v3{)b94As~8R>=ulM12 z!!SRKy;1TIbPt_a63YrletxbO<5=QPTLbo0mp&~1!MXm&H~bN2L8GNT)M4A`$r}_h zgZ6O;wR_wyRd{O0#jMs_jE}@y0LaMC7$jRNpQsj?we{`%XLB!H)?9lNNApyS#Z0!Y z|6+8N@UY)L(v-~jRaY^YOTz_oq5b5poFpTXCI8p8XO+Cd{qZ!Q&ek7IPGW5Nd5ecJ z#NpxI{h>Hzm?EV4H;Q@3@{2E-V+YB!vEFDW61?14+(bIlw`|^_QR;w$Wrjyhz3hjP z6~Z6#zc<8WX_|El_=g;b3Y&Q%7}ex@ADkuq-c-k?J5h9Is1D&gMR-g$Zh!yiWc!)2 zna)$F>3A*L?%(O_1c&>e`XGv+k{6K|1zH^M$~&~)3x4UdyrN%4>EWS9!uu+&5 zp05V}f?*%iYsM*n4cq+B5;QudSwhjAsVXa1^fpzFf`I1Q$ImVn51gH@2KQ=;Bb7}wx>B2O528RGK%_6OE@QsB&DC}-blCEq&igLc&j(;kC5eQ{{En>$&nubn zrXlA~NOnYMZI3dpUzufM%BdJFtd+SVVCIS?5H;eW!Q!#-J^I%aNK9{?wJeQEUzK9~ z_v;A#XveL3tG`1`K`anb&>XlZWcHT#)l)_RJmhkv@T5ZQ-SeP2ZL^Q0u@1c^^W?!3 z>T#5V)OkPTeyO)KnFiX2#FyhZyuHGuz#+bd+PHQkI5h6?u@{n3}L}S^%}q|Fat= z1LA@OCQQ6Qsj5OSA0ds1Z--x6-=$ZiY#6kQP+oJcNQ^f^f6bnS#&5c&(bDnrsx)Qq zE&WpYO^9-<{QbMRgyskI7@X_RB?CTsf5rYggY&-vCPbJ$9$$x&$wNXiqH+~8+_iO% zQG_ltn;F5rwYpk-zhAu-s^^pWAw@H1zM&;#vgj-3`UR75R_1~nW#H2p=BF|mdz9-N z)WBkKtoxC1D6~FzvJBuDQbzU8^}@MXhAd@&tSvNB908(uA6OJyZ_Zo}B{XDPUS1QY zpe9PneTTi$60NIk745ip*)@JcHJL`5tVMA7<@H6Si5-=@(Y87l#o|zd`-)WG_q&RT zmtsX`>f8gd$Ey7!<-Td@i3Psy)<}W7?BvovzZPDl8K8D}petG-4l$<;l6(J)Q%nq~ z86)i3b$v`*>_GU=+Z9dN^Fa{ciLy1lgo;;5xfm?U6W`l!#PRNgQ$P^?o6fX(o3N1h zsM~w0rI=WhtSL74D-`G=G7PxNeMyq!1@<2oTC$mSgM)KYc41e?ZvpB)rT>PM!Mj!C zX}Az%5}5QA90V575jN@r&yF3I~!z^B`(LQBUBwT4SbQ& z+_n8uKp0PRRLj*LTgQ z`RBBEdsIeq?6~{-7*%upG~pUKpV{ogr`Q^`V@SZt^~a9~cH%s6;B^FMj~5k7&4;c8QDD?Y(7{U`NZu66*zH^At((`R08XyH!+rH#HNFf-lH3B8hK$P1#69Mc#YJ>%`J>H zZwY-53VC`1K-bh9f9LNlTkJ^q?xVM?12UW(P8kWb&$_m+UH{vR?NMt@&9k1qYwgj| zI6DsqHvsYJjnijWutRi#o)%WgX>TWZuMyt8k_+>szY`O8`19&mVt$gdYdoHAqNx25;i^T+4`tk~>M`qstL zCg`=we${YV4Dh%0#MDe+fz2vwp_=<2=730hHL|%R@vP2Q^-DM+IS9Fu~nJnhixv|#$p_|)W!4%rxXYQ=k*pm^w$it4 z9gZ^`a{uW;nZ}A{eFCP30vpn#wQICPv>l&pj$?lQ^tK^4S9<15NsZg%0w zONU(oTMq{gc1MDD9u8vtB|f$v9T?aHb3RiPI}T{Dnm(TGzMo_X`KR?rdG?%8aXwrD zjZahPg1>xsSW$Jt%-Q8u$rjzC_u~-BxqE|57q`tLf*+NZd+**sN zc)7uSD47*_U`J!sDv&FvpGG;VRoPvQv9_?muFVjMaal0@vb~7baQi#bWO2NI_5ww^ z-Fg7O%<{wA$Z6yaVaziSIhdlU_E!Y^vb>-qP!sG*lJ%3HeP99b?%BR>;k~VYvr2@4 zu%w{0SoB319oTNPZ_!RaTvyNU!^xsS0Z$5^EnecCj|Zu?X5PR$WP6Uh&z3rHSv}=P$67q!qbQh;dB7Zp5p&zp z+e_*{)x0+@w&%;RvLX*Z{o`k+8%Y?m{K<)m{0nRAbEB;)5Yac42g z?v1w&Wh`n|DHjR=L)o~seRkAz>EQR0Es!&Obfd8zW{iyH-v zsa9rXiz;s`0;dBWIhy=9`S*)2H3`(BKxL9uo{`f!s#|duU_anm;ZND(xRc2?-gReJy zjX?VyTYGF)>fc*vVgcwq0V^&Q8As&N%2ZdHks5#3&yakl$4I7UFL9R2_AH#7*kmcw z-LSz4udz`A=JY3at3eNG>9x%|_RN)&AwSz6A#AGQK1NR#}H|YAOot?s_ z0|l93(O0iW5BmppTN@6)^21iHmHeu*2E-K)H*V0=<2?8Bw745HHC?DM5mmPQPh@N|7`U0Fs~zG8 z^S{YRVtd^d`uGdn`fwsYh6i)1PCQU^6sKJUu?#n4FO0yZ$~pbEd^9sAL?|M<)4F4m8G- z!s-pLK>VIFI9}NJC=wo=9P-aX_OdSJi+VKt?a}-GWSeIko90`n-R>Bxfv5ZK2bWBXpSpW-)G1Gt~eOf&=UTU7S1y_{6cd`5edE*-ocqca$kDx zLqV8!4&8M>YCMA&Siq^h&}XMC75|D8a$Rlz{=YaOr`yPX04TP~)Crbnw4o&6wkQ@> zAjYJ7halZ|6OW$MX6LCLMB%41CJqfjz}HfRaVg#kDLN7-_2LPZ7}SAT@!e9rtd2}wN|aj zPvXtr|K+vs!X`~D5sR|2Wa-f)?DNmqtvK5C!uV%`^=%Pr0fyRzSvKNpLy@em2jY?vS+RQBzFvi#9ImHQbSe$VfBmlFg`_Y zb}A3x$+&A-eaA{5tw_G-XnQGQ<$>Ori~WNy4f1Q{(Swfe^TBV6%26LZ9U zBpI-rL;jnpi^It`F0=0!*9Jv1R(Tk3Ekn>%8@mLk3wPQSN9!H)I~KxKfuuC(_UFwl zT(^IRWZMCvJOZViS%>@j@noivWfK@`V-N0J!mGKI^IgN3z<9|byvxrUUKjopO1`4daS z9df8QlmS46te@Iqw6{bJ)P{amCzz<^w^q* zmMQe<3T;;&v`x@NUsk{SUJZYDqtN#AbooAK@q(FIK;R-ay2qd5NsoVrJ-Ty{HY-9! z9*hJVeMblA&+sF{7uPe&lcqzKrz2CL?%VcPFV7Q)tnT`@YvyI=CF|iMzu$xV+9_G% zwyczz&7Y8&(^oO|)RK)~?&rB>9W_j32oeVU3UKKQw`5SrHJC>2RQ zXh?wvws?`0jf3A^9Q_Ct2I~!y(mYbdw2G97WZn?wq*t~NR@+j;Q(F?RpfAp;hdd5p zzc$oa$;e0&>bQQ$JdZG4J1DK_Ln7R&z`2OJN@P^u_)|UBrD2*8ILy+F!Rmb;&d$#6 z$Lh5&bC=eBPhz!HhuQ3Wtoi1W(cHkDXJ=-SQ#AMpk++VZ9aYaVxpxfYYMN|Zrz-l( z)05X!{fU{=Cc)5f2GOp3I{Ym}jAbS?TSTW~C+{w9XrG=_2F%qs!4dsyM864;fdc!8 zl>4Z%zslsp%k*-6=UB+FuHBi=` zQMW}_aIotaX~9Mjw{z#>{ON8IFFXu3Y|2p~Y3GoL>R3(s&&p=gG-)A0$i7)ecOOl5 z7fU6EznW%walc%!zP^1ur+D=%W!vyrTqE@+sMFeYqWgDMsCU>8DAG zXIy0Dw+kuc6A#yi=l|;42o$_8;?FOV+evw#o|kcZPM-xla2zhhAF_k~vHF3@0F-*t z1z{ig?YTr)cVFo03caD{J&fo~ABemUWn;R31HwbzG7#nwyjAy1@WiVt7=SRLkR#rk zhafv9;oTK$w`S*?r*Cc@JcNq%G5D06+-|uVId2A`HRX`ffia!I%}Ak}{#(BmNvmtr zp@fT{P%IvNz2b#Rnd`N#iX;Wz{BL}}X$8Y(wNme;o)~lG0?oCE}e{Q=jvt4gGEbsP!KCV(v^Kp8B@HihUO^h&2 zO2f&O@%HAwwIFw(dr-QQuJ}aR$Y9cI_Ja|Lch@{aWAdiK0z$or`8t| zNtKje90!Q}30wEX?|`=)0o(d_qtGY0bdQrpbP=<|e`VeAnOC2lvR*HJ&NeAtiG0op zef)w2uW|$`n>cyb1MtqSD}1~bXcP)=TXqFp4}ULbL`cDGSJq|*qYE^ocjTy~t6yE_XOig;W(_0~>=CX9i1 zNuO?gUU|lZUZ0F7vvSp257b=enpbN-HNlEdcV~)+L)r<^4Z#UW|1pZkr5>tlbs zq<99LqH8`5GK2H1fR{g_THt`<*b=oTrj0n%X|?K4l25_$UqdSY#4KBv;ug(Y%iKjc zZ(4XgQ3#U5#q|#?OGt4&VW1{#+9s09yta@cg3nouZD=3Ht&6rnY?vqC>faH)*HZsc zKIiyyzq^U9dj~HF1f4Yis1F+3b_Gt|?r!SaBM&Ru+jg5$q6BWfFS~9=ez}=9OjfnU zbKjTI4RdLKT#?DO1gf(KS?ek;89ixgz$H};_hgK%_5{H;uAlLZ11m0-Yg*>|$&c{VD6_X7ysFY^KQYu?P^UM`iqdhng|~k{1IJbAQ#Rg> zyt#QNl-Mc~MSm>aFSpC)^^^;-@?i+JDk8HwCeiqVBoXw_^j_w_IUNt?)%!6Q1Eb$d zBqXKgyQfs+|{3O&H*cTA7etZr!ki?pk!&#SpsfARoAM~-F!^M6z$vqBV5 z^Xnk4JqxIwS5;ZxMUxNN7Q<1ytT(Yv#yfYBA_v=tL9sd$fG%OITZzpoA5ffyeEvH= zKw5yK?iX@hk@f~xJrw`grpf0&+~xf}l)v#|D`2G#a?3ty-IhTAtZFaQ+uJ4dIp@SH z7a|+F$+)qxa<$a#`5P0&X*+4U%WissolyVoJ9~|%`q0bK_zOn+Luq@H)dSpG7-M+{ zPun@B)k+hA?(>1VN5QTk#pC?X)5E95xwfG8m&5kH7P2y4d6JOMplODmy!#xt?>5-cG9&b`CbvvKT%gjz5}p-=o2QG5a~UHBtm z$>!vhx57U{qu>VWE#ECvAKa&FYSBL;DJ3W9)ZkpDZm*oa`NiFJO;9(2CFAf_7yx*6 zNAZPuo6$n#x_4cKXTT`SXfG-ncZm5fe~lkCtnLcEy79l9NB2{apQE;HlAU(UwcXSn zZJ~jH{GzK+@S475i<-3)iBQW|z5QXf;k0e+bo6z;Uogn&@Sl@b1-;zZky3c?r!vIK zDpQG1K>U6HjB%_Jj~*NqBumcUTg-Pt3SrOq6~Gr=32>`XROGAD80(e@7>W|GoV}Us zd}i}w3`*}kAO{&saH<~FX>s9CM!$xJo*Msr4y+MRxQu&iUuz_jnC|J>n$98HCZ{FV z(t@K)MtBBw`{BX52hr|&F7$bzed=O;>WVuo%Z-i21!g3xBT-#vL9OveomFSn%YK%# zs_E%!tLu5VZba5&V^%k8I$5MnZ;qGFgMIFTT{{rSeX)J+y2)l&YRvI~mC^K^R4xoF z>iG))<+ESwqg`eLNiM&y4}zU_w3?Tl70F9oKd+{R)Gu0GzX{@xMhFtzxmsUl_E{9W z{}OO;z;icNSdk3EEv1P39jgZ|{^V~hO`gT&l^aBx`1M5X^YizoILwV2(!8wz=b~nK z${1rgPZiX5EWfcIdaia{5060%!%p$5kE^#EC8gyDVSj)KfC5CO+p|21XVlHjP3_ow z?AJ4F*9m{}83GN^87w?As+U`7z3imf_H~orumJ&J#jWt7^>#I!uw@O&wU<$6QmGY~ z^Ly7GD)LDJlFxFZN1}3bh+$(bpJ4G#3u!G4#Bx|w!Z)GQB=EavW9Lh77s&7rw0q+_ zOY$zKsge!br5I&0I?`6WJ4g&Xa*;f29~AdVa!WNf$#BgfJ#bYkYFgM93*x54IHWdU z|4q{vMfu#`JK(z{q#?atsJqa0zVCcntEhT>TdNdzuLTMDQC;6mkBg?j+-H(aE14E>D|+=P;}PwktwkH9xHuby)m$`45ka@<}39P$e-3wHaEgq z`_$C61Mw92s|?9RMMdvs3Izi>$N2$_3U3xT{fW-ffv$7*vv0foDxY;7*yrDCR`FXe zGfsP8(_a1^WbZFzrRwKY4wz;cn)+3mlZY~ zT&W8xN0M z1L8^Rru+2twClLXs{d{4sTVB7WH52^@rCo9w&1y}y3yLS-J3i?Umty{EM^(_uZtCW zhjniLM#avc(Wd*hKQFcS;$_|SL>(KuA6x1!H5`@IuZHyty_^gD;wO8a)qN&FMnO5x z!RGRCTA@zX`YFTOiVw?mC)N09Om4C}{r~!s%LD8FTo}Xy+B?DQcWW}SB5A7?YXTPj z;8JX_S3m+^I0Ser{7?>|vDtgA%z=GB;HaXAM$l$5!%A|=qrmj7y}P--gSZ^a=L`}W zuzbN3;l=?H5}1MIgUuCB7)h_fFx;TMQ$pZiddc+^DEkIh3?n>K5s~lRSYjFi@cd93 zb?A8!pVjj}9BSDhSQzA#M8P8MkQBVY)$%;=ZMa#qTin>hKkR`;>Ce2EQQUGJK&Apo0h5b&r= zptivLH2zmBs~-xhYg1Dn>A`+sq$b_z?2T0~u3)AfZkOiET?&p8Ki$Tyv%S z^#Rhp=jvr<@C)*-1*n5j=lspG_v118R5gzKsHM)d>wl2zS#_6Z0yDg6zLmfnUQMW6 zD*#*z^WQv?gl%md6R-BGtoL3Re&?41Y}0i+e6GF`-Q7B02yMS^AGdVW=vf9vwD9|{ zUjyg^*bQV8&~M^NA*)nV`0&>|bX#THIB&1r#g^g8ji}J1q`|x_ot}QGUY`)w5}G|6 z&M$8Q5#%7*q6i&Q*tW(RwH5@cKrP74A|xOX*$>p_+CClk3O)}iurl4;^ZqRz`Ri@d zT&vB052+^{ZQDsd?7A^|n56m*_JBm(Qq{)JuJW+rds^m7bR&4l2>y78Cbz2WOPwbm z+=H%6OjT2DkSA8wYG>3+gtK4NBkb^%-=g+Q1t74Xh zd%*TS^CwC4x-QjSi9NEJ1fr*!=Q_Hsnd%Kt>YtRH>^J(Sr2MkF;9nM}ng9}VYTwgb z9$V$&TnaeXqj~O`_Su|#q5;w~tK@M(kBEqHOc3=LbI6>YE`$TS?{H>?+Inu1L=ItLVy?=(qk!p~CL27Vd0wY@(a(cmd(3yU@$xQmwE{{BJ6Cn#;O5i2C(6L8vb$d3 zj}K_oFW-l25gSg6A0RD~zuU@?DL*icexL}<7GtSlP*44@=q+1*3@$#$RLCTvQpD<~ zE6f{Qkw_rHp&Y|MZk%S;pg3lvyCuqZ@&<_NiSo|(^u$l$RFV4h)X>GKk zVL$lZt(8)gA)!N!af@`(rw$asiAm;n;rWF^&-*DEWo}f)Us>HJ!-;n}{S3OyMP&AE z!(h2>{v@YwG?1;Qd)+K(14W+$4xrwp%4U=45(8RjVYGFxPmU|~N_tv{9Qa>_L&c;f9{~>QqcHdO@Q2CrYlV*xV|9${olx^}w=oCe z#HA`j6adVVuX}<>SAac!mjS)ckT6ydyf@;1n2fezdK}>#w^FsqQFwpwPQ&t?_4R@^ za>)7e+VV1madlv-R|cTv&T9aM9=D?(POAp>@|`FYy=g|)% zMl3ZP-uvk#tdpR?sH-)<3mDl3%aI9aQf zS5#C?B9LN{^M|}XRJ>Yzs!j&dX&x>H7l5B|lq;;gOi4GtlAjn-pNp{WT?6QZDFC<- zI%q+kb+;X}+ECYGkGI@hm5}}VQ0dbAMTMC*bO&+3Lec-=rLUyI9P(L$_wOiyATw~+ z2>C?&3w>6KYm409_`j$Tw4Xz`1_cd3)}m|~V;abBTaqLyrAlf0GF(OZDRm_9=a$%c zo)+CRE5q2FkmBmi&f62?WbL5N&dx;$pYsv0pep(62jmnKc)aD0H_2}sB)0#RYln}f z@ysPPAJ;9}ovn3BaCm&JUv;<4gY;AQc&cB^j~`3=JX0@ER+WX=C<9I(W&nx>d~Ff# zUO`&(YMZ=;)*u#Jhsc?5(yPM!?l=Kb=DU3d)A!9qfQ4w2C1% z8~9I(W$7vDke~TVYy(x;OZj0FUryG`Rbj(^L7Ig_Iu#Yw zm&*}OOWFybbm2<1O105D;If9ckpbC3tvdS7PLl^uU(Z!}!FacTp%r5t$Q8-=q$M!h zyKbMTvY2kCh&9&?hz6u01!zgXrNKvRkVT?T@!6g|<93Z~>?{jk?2GN3== zMZ+?;aihd|_pxrMpvt+sSCjm%r-=zGcf2iLe%o&3D;LuHQlOjcO2`eTE*CW!-Cg>V3~FS*eOIHEFwO?!z;&@igoMoBPt79oafoqF!KnY0 z$ZVj&v9Wa$<3g3Os9ckh6H1RlajfxOD+sp}{d0BVdH(+C5Pn4k=o!@{YiWS-jU<1) z0r(t3kDH_Yu(93==KAHSBCUA-wVobCVBD1kyt7kk^L0ID09cb#-+5DK2v8d zFc%8Q(IU<(e}1Ihd^?bZ>Lo^qY{ zgi+qf* za$6Olhyvw8!(n-|#jy2a4Vr0&(>JQt*58lN*O$m4E^VXF`NfbbXEUvV^87Rqe@zB| zG{3YEy88B7#P~je)@|OU7M%#z*g3sqe(H|E{v>f z*vowgzLAxe=N`l3$=_co!AFw#IF;NsQ?v|=XPjeS5QKmth$QipyA>dJ%vDc*Kp)iZ z&;QCK>z^4Rl?X;=b1~Z%>4%GmwC<*0uK&P%oq4ge%O58qY{Z2c+F>eO62V5s8Yc=g zBb1HK2A%V$jakZ3%0~8p9^R$nfk$K;vpG6%-KpUthn2==_N&mqJ@HaPYEd{QY(kW0 zMWp=-gY@k@UgS1BSrVTCZ3`IvToT{w(`A+S^F#T*HXT>1X>F(i=nVP_9EKlM@SZ9< zI@EoAkl1dLJDjVq<@e+EI@X|t(QEOX&1w9RX7u~dpc5$2R0n&TcETzO?@Ds#OWvb| zS9v)Nq2{kVmD|WLh^9OZVHl+(|I)jFCc44{Pu)GQod3xA!m&=#F}Jm}V^#7Y9NwO~ zW@gcfAJxVvKDG}}@vE2)z!Q-jt%{kH^;*}jeEVTzWQ2(AwI|wK;F9Bb-b={CFxNwy z?JCtJ^gJ!Z#qju(umyzeHXurzcudo}&1_rTI@>o1eL03YYrkGC|0g?6#;?k&E^4{V47!$BUA`(VkmWk;BgZER9=lTkd*UZB%cP ze%P2loy^Fa!MuZ`Kr$)w0OxB73^)!TZEuZhf9D(LjIbg26fR8F9TbR<1z9z&=C3YAZ%&}0(oVO`PWrf(D@ntU@K-8qN zUe)`4#dt!WtnzsNMmXO`GRZ+dUjRBS2?D~3*BfQps}WN{JRp46ZUZ$H#phLRbkOU4 z)@x{*ZCj(#g2NaX6=HPe7nAWa!^F`eLIM^@J;>wrKKIzEbz& zEKYKE1JGzBc%4aHWsBIUQBMr$CeaIiFVr>TSPL42NF|{|!VxaLM#($>9rOJC?8Uzd zV}^lMkX;I7AnE{J0l){qJ05+%p?FrhR9)nn)AFBdJ#ivC+za?up&RY6bWG62q8h|K<&Bajfc4^WAaD7KjFAR${<|>8(uHyo?OlGttweMhxI$z0U ziF)gs*SqM~`PmkvK^5-cSk5=0GcFFgd=lYYBq+y)shG3axFpy?s0kNdLH3DEmg}f*T1&#ScXdz zOefNk0|`)lFHfQ!HBlGeCCYWv)Watf+u|GH}O*o`6(2^Gq{nF5hkf|7@_|J@Oo;J zPUUS67R#QOqmeuhTYKpaW1Yc5Px_uW)mhe8q`Cz#iP8JRJY#Cg!gMLx6%>x&!-|9j z*d;Ci;&%}PH~eKzQDqLy22v=oeD)Mi$fNo#?E^1=p(y`hm9*;<_+zjnzipb_fc+m3 zrg%B)MeszfXc8%TC|kx*0OC2kGIl1d6smPxi$Q1n8Kf(7XRV6t?FYLbHWv*ec)_*o>25G1v00k~&JYEZ@J= zKO*6=>A~b#_Wfbgh%~3`BOotuJtJ}b@bF+aNS(aK`m(`#1`ws#0AqT|TX!1`OeFp}lT$)%^x@l*U{X%EE;2hUUHoSb~u0qy2qR0;GY zb|csluVEW)$^5y<3Xa9*-#!D1I3zE*mRZd=x0O&5!>g0hSuqW!YXbPu&ErqthSd z98gp0&RJIF_hIZMaD`CoANzZlR7jRMJ}FA^pa|2O!sE`f0L+7xGEY%!E6py3W@f1U zpewHrTN`X>XN%ZLf0Yrg(whqLb zJj=dXM^&H~rq?lIYfCh;yE>ZGpQlvWfDO|gLcIB(v@@TfEP5id5V7}}igNyF7uz!oAr2m=FS4M1c{7?P|vY)1X4c`+3@ z)PT|OE0cgo1{0B1X9>N1uJR~)Yv**9xZGBLXFYAvx&r^uY7|ck0{pAeTC63%S#uhE zE?a=u*$a5P%&QXG5HgY+;82kR_OoPI%Eyq!HZQD@N3aJ5E_i+#uvE})Ww%6pbrTc? z^Y3`*nWS4W2Om`#MfI@w4%xVqjmJz-OeTbvtA|YQdywvRRLp%dBWx!Sm3D^&pb7 zPHb|WPKXK9MZ*C5(I3(9@Zo$I`OI6cE_v$n`lw&l`v~>fTZZw|J{0OY zZq(in(^)LVtNRPjDXDM|vQ;6a**hzoxr8z{U7^DzESsJ6S@g+Q)sP5+^ z@!-1lUvfhZp@GR}vu@J}N(6Z1h10v3I>cqE9UAAsxH%mxlCR!#A7n+}An+Q`q>7}l z)P0hyO}o`N9XdYjZc`&66mWy@%{8v1AUdMZuK7a>i?KZy#%4~MATx&^K zXS1?s-&%0xhwTYc@H$YbvW2!~?wd(x-H(`_RR#~X004K-K*~L)`BuC zok(^s*0=$97dK5Z2sLEH;*-SJVLO~Bs!%q1NkXbWXMAJ!-;4cmziIqOrNJsQL)~mm zw^?>`L+?=&|Lq=I|CO#;OFBO&p&rGRp>lv8;HHp(}f4lN%S za=+c0C@kxvuolu*SO5kl!sq`b-IKL7%FMF>+B-tw)5Ti!rFz?bpyqyfe5`^!uj@wW z-l^@)Rz8C}5Jmz3Hw=@eJb@QXTM;F{z-c-4I_=I+)>%~12D@*PKtrmks*EQwVeWUp zAdkWr^bcXSB3i&WRMujjF3$|{x~NYVefAWNx!>~Id+1E?t435s*&8sqd1Dr2YUef( zetS!byQ|%02Chsw+G9LF*1fA-Rc*}N>aI=E7C|nB-pf5c7W$_btn#kN<+y~Ob0)x? zVRe{+hbr+U*?kunw9mH0$nDyP+!b$fo3PC5Kc@QKL6|VGBcwJ3KFwF=Jl+UC?QF|8n!>01dJL*tj(zEAmtSlkLuSZ7l=)- z{L7@;Zrh1>fT&sjsfjnoROoSG9w6Z24!xF^R)a3bg(z%&9+%h!1y?x*U^Y4X6{op% z05tdhDrACyg9yO!7?i6;Zt-KpMP&s#;;-Sd3-HcMAoT|9;gl5!L|R{W-24al1$w`6mMj3GH6m;0778F#M}I}LwiOx?G^k$$hm zz0~&B#F;+pSj-$WNzKaYCs5a#oJL7>5qZ2h?%qz;jRK%gKq((%H!1K-f8{>W&!^p$LL_+W z@$~0AN=#3+HWipy9~s}m-?zhb%S;qZ&zh|jX(rI%;7M|~`VE_@?5QHQNFqBxthd_w zo~W0$XFQOVfa1L*g{eeID5Ti+5%R8*4wBgl6!mZt!4|CfPKi2z%VC4Zdy^+gwXh(~ zrU?xu>7U!a-q;RX1n2z^nO6>Vf?+j-f@>Gv8DJbJysLP9V3h@E-J~kO5eE}<`fXo! zY&QUMy$5huxq1RcN6(XIwM#b(wcI$l8Q^>eI+Ls(+ga`x<&Utu4ZiX<7+{51d^Fut zQtRYl*rjpF<^}f#j|7&G(hQ~j=NY9kIJhGcS;Ld4!qth9rE(34{Hw4a3LYzgsDb5a z;v*E^o37X6>K8H6Iuw8=f)Pr&KYKGThz#nPL$Xs}fW(wY_kKwItggNllTg?5Jnq1I z_{Zu`m{UWh#Nqm2_ItGnCSbWKAA+c;sN4aSQ~0>|O*JSC=#XjO_a4T2+FuOPN}jT{ z0t&j_?TX7LP~LR{gl;GT3f9#~u+7xWh|c_j0VC)S{KQe`5OeKJ%*7I0Z@J3Y-5}cJ zimsU-u$eXK3+JidG=~36mRTWugTfIGCHIr|@b}735?=*wj(V?N{!y@I>EGy*h^}hX zR><9#R_@j3^e`&d`WkxL@qD-SE9GrrF0cDx-9DHxu?5iLdo6V?{|8C}v;RxgTmhD4 zxw;=|XRnvlo4v2EuhRS3y#=VDJ4pafX`fTQEi?*NCBfW@*vwk)sVS=qM)2C0dYHb) zt#yU@dEpmxS8p2y(TYXJFa>GNpK_WWMG!QnZUwr0g3>f&H(p!19OQS$~p!ygls)SlgfNuaE8h(B~B>mv`JGV5td(IV_3D$@>5f&(ITy z`+bCMXGosF#Pz_^yCKi5ozXOVnD%}#%-Y{es2jmp(egGgZ~sc0=R`wb+1$XyCEmcx zjOT6b41%QTTsqlYPhJg4v3RF91d#A-lH zKPy)7dgJBg)o`~FZV$8WwOo#M1I&69P^{9scMqSeG@k?RP<-giP5n6_jNtIBI8Og0 zSGa9%e{3dq%XB{|c3l|O*?|r~4$JB{Xoc?4PMS{z&!Z+VNw{IN3fo^KE93W%z^l3g zOgOVu){?}L3OsEL%`M52n!F$BqlIy81{8!IlVWq||4a8I5`Oz1Z$PLj*7!44NX(gD z03{Oq%?%PG;>U8~nkKCQ`y{*sxh*!Nw{m;aH|%d~iy<7QC7XCxDq~-AY#~NmChyMm z?gEwlgw+kr>}Ef3`tiaLJGt$O+7qxDYQFV?0?t0WNpV7IH^2o;Gsb^8f;9Yc*Dn-R z-+F8v?p?bOD?-*%R9 z(z2{;UYRS|Zs-_Tf4UTXnkU*{9uC=sgraqydUbok2*PcnfmFle4q$ftVeAuN5@?%5 zLXRdr;EZH7q?nfB)8yqX=0!;z938{}9H}zp%hb|%F-H9x6T-t2uDW|sQfzy^qSQT z0V5d9F>(%@v4*QD8T(l^^>vtG+HE%@dDN7b*KQ4D(|pYRKX>$bAIbS_h4=p~f$V(E zo^IQszy6hdq1JIIC}vl+F3vAVfabpckh_eY#n}jMVy(f!8$$a1CRGnVS9+O{!J(ie zJx5Cqxp*i`;y!0faV!BYzkca3d3%G@G^B6_%1_8JBpyPMa!Ap$wWrBMJKEhEYrOq; z(VlJ+U>k#$Y??7C?mAFFpu!AiVt~>82@rUCj*j>a4!w92C@3hfm~{jsdH||J|F$e_ z+2wD}35jTH3@JBnmgJYKYzts<5E92Iau90Dr)W2`;(s921RyUFRb@+L)+#9P{n;7jJsGy{!xd!=u3t-#i|%l(4rXG0ZH8*{ZqU67D&qU+>i6KSj1Pc^a~*k3 z(2>k{A4U1vS@Cs(Zj1P}Ty%?sqnfn3A4SA7<8V!8y>jqv&xMr6I`j;Bc^CDUNi+r8 zNEm4j`Y8;335L%;=O#tTH=QL|+Kr?t$&St>BURSeKHBUT0ZbA>h@>s?2IOzl(&w7_ zM-i&u2f#^0YI526jU#8&X(}zoBZq#~n_0&A(@mo-x)CRw=^x0t<;0VaqZHEIXq<{f zZuzM4<9q+N-y%-MUq|pwP%KX9nKwVT$SP1-?C<6Jy%02PrK{^3@D4?7?F9>P7w6~2 zOyyO~kG!40z6%)(JRmiV1_GgV(crHzts?vQXf#NRciz!-qhbzqCL1Ss+Ke-9ab-A# z)NXse6Zi&PLGU+2XFYp`#^O8zJP&q$PAo&&UaC^~_e{{uCr#d_y#th1l>Q3c;NwSP zx$OF+*B=(er3s{jWwpf7NKf0V59>sk6w*t%L|r7ZknOHC)wKgN@JR(Ge9w}!@QotN z=MYR()zcOy=Lf)K--B`wFLNF`+}RG-`!=o+qPWeJ9B#*UC&ya8Z1rk4ZmX`rUPahF zy=k1z#3rOrKho~dJ9@d|E%YOu(C-QpfpXVlZuZT0>uPnUs%Et2h zcKmWhR)5l_sBWcy8;Fef2Zx4AGAXTrbtV~49yr-UCE0NoESN$ZP<)C$>yoj9TX614 zBx+l$v@QMo@9NgG|2S;WizqYGci_EYCW}kqV9Gncx|tvD^Upd_rUDz|Y=W30BV3un zuLb=kwT=nO4}kNVBLUpPmP2C^(r)uJ)WNkpAuanqJSC>-ImXxDkP?wtp^^S61-3Ai zq_-LGwwV%T_+^sY_hg!-v!-Gq@~Yl0JZjPPdKrk@(vHUtJ`<%97cyc6elQ`=8D%hQ zq@aUN#eNkzX(da}xMd{Dg6}KzYYS=|2P*hE@-%>n0NTt?q|$DGa>z;8WD>jz zDBcQ5H>a1}64B=3+S~_RHV`_Vuc)d`L?-mVIGrBy(-&|3xCa8I`BdyNLWDrqzI%m| z-@0$kS~I(+QP?@06l>$FyT9plA%z9g{~@xWxSLYGHG3YKw(lGq@8~sc!JxJIg64ts zZlHP{Mm#KuUTX3V(N_mn_qbw(4&|MV4=_jXX2$*)5S}|hcTxaB9Hh0zo>_(l>ysVN zm{w*Ug%kM|ZMYr<6RYm}*de3bM)}xdTX4Z=WFm2wY5J+~2)%a$QYv8Bw*iI)RvSr`coNFSoMc>IzE}}i%$n{RxSANWpeD`1PRKmdi z@(Zcy=#;UIA|2kD47CMoKe=hoMuu5D0XVM1Acm6YA-i+-Wqj_)D@VWM-B1Ra)W_Ms zsWrk2Dj%VWQCo^ihQq_%AFJqxd%fAB0!t3t3LFaTSM2t=lQ}aE*0&afc)}Amn|o}` zB;i9f(K&_Yq;>)ewWj5>gK@8KG4+eYegZF-eWo3rO7!sgbP^ai+2VIkibdbVZjuS; zE=~I^(HY)4Wf005Vd@n|oPmMZ`NsAA{l@g-#^2W`Py1{5>{8ZQ%UYVNzA9@oU5#mF zh2jg12Hzq5B*_af{{;1zuP{1g{D3~q5L(Y64i1%)NVanOU&(C|fz0XgjTFmPfyD=pabkB)_P%jc^(!zH%5D~lhzi$!n! z;B9!TLrGV=RtdwTu#!cEqdEiLE^vE@z%D$F7y2LxCj7Q5yY7&4pwTpTQj{(+|E7_9 z@K=eP7|=ef+JDye^gBiw5fsyK7ryJto?+>0O`$l{^OoJMh#fNU+lasxc<-GLpl;WGeutZL5<3Q%Mw7iFo!);i@=sT-saxgGVB@ zMk4(Kh|Y(GhEPb(8+~^@(**uNw&L_N#SbHNC{oGJZd~LzGzt}4DLl08jC1Gr)8Ch- zW$N?rJSK&BNRD_IbYjkfxroxsvV<{xTQ@rv`ZFU7`L_`6w&rwa&@ZvwI6%O3B;U6= ziObvRS^px@3XJWPBO=q(m5;Cl_A?w~5RZYG9=`u`Df_%GCGaGI7&i!jrBhg!y|ED~ zU3^dCUtj#%5x=4!I?zMr7Eq_c|Mwu|z*VefS2s92%}{dib_{y5Xy`J27vg#!Dq0hS z9?=5nuWS;+2ie;tstLrds}QARl>v5dHM`_rohj9jh{nVj9F`f~9odrtD*DkyAh zocliLk9hXi>chwU$R>pr6d%msj(AbEykB*JW~4e#m!oqoOM%pRFKsy&fA=&a5=acS zyzLy#1c0@4FUQf1(2JZ(AWBkY;EMV1@Xeso7T+I%YP)o`%ZF#-KGrK33(DW@lmH0{=nf%XKQG) zG$guC#iC`=G-avuic-l&e#fO6iE`eaijS~*rQAXGa2OuyIKmGq>_;zk-NsqDeb1tF znHZR}Kez}O$Wt;9Zb%W!+s+c_TXw8GFAiCISI;SKdkT3u3b6g389iC-T(cY042t-i0WcD%{je4n1(kN1yV{|--}ao!I4G6b3KZgoplfIg8*^xe|+l*c&dW-MbH z`sMtxmz{Taw34;&e!O|^5LIY@Q)ttM^m^Y~zj0XKj{QjMQ%Ct2zLLwxJ};yx8{ltQ zmAg#F%h5p27#!WH_sS*_#BJbcClG|JPRJ((K!T$y74kz6`vgzK3*;^79s=^v={tyM zMB3fX4z+Z82I~{#DJd!N24Nm~%?l6)^0&DQ^7E1-yyX_G>qoHLAFt!%L4J(tL^yb* zJN?_jco7?nzf;|%wWxC=for^6RpmdZmC#(PC#XEcy-erN|0Z=w7*^sp4gPjxwK*~5 z&o{YiD?Zt5o$qxN)66>8>to@HM8i8Uu8IDK6!{wl!tGH;SMpiHmLVvW20LFQeD-^Hsos10$g9rSbw*q$`yyEQG)q~x<5x=+2IXMWQmhA7bp ze3((N+lVtU=wdpc>)E9xX66ynr@6KV2a*~F085h3{$Ij$vTME&9eD~{lOVO%IP1)e;Ir{Vx;ZzyP$b!ytji= zLK$L*NSaQW$>KgE>9suh;B=f^yp~@$DBQbc^Vgwt=-^8^(E4fvDBL_FQ9q+hM(vRO zH9#XC{o0oC>(&?p^m3s_YsZ@T15z<9%jR%?CjS<6d~iFUeV-Qp-0Sz)OA}G7bjiSIx3%iSN$}{+i8%uLfV%lWir-yz@ zoniB-C$@FW<^saQaMq*q#0Gen#|m6_3alTedg{oVYJFbDihsv~Z8 za~^P}?!Dj0-21+<>UJr?_U=-m82NIdZQQ=%dvagV4++1p`NjAFR9*OuL6~qD)k>GG zYpTxHW8sNNi*=a2%s9V=v!3+I4BcRLgmJQU@>Lr4IQJoQzg zAZjA*=)_0-i!gZl8*1* z*L)cDBqU-|YoZ^8_>66jPZ6L-#$G^LuzNQ?YeUWCOh`=O9Sy-tLS?xGk&oAd(o4gE zWf;;e$7*lf=z1SP?oB_XX1yXduTP=yQ5XKM!ml!6>Kb`E!bT=U1SQi!=B+$3)E|8* zbLqAFQn3F)gpZ8z9|l~DZh|hM`Zpgj;Wwu?>KwSqkL-LyEDz%beTb&!UyE!Ddv9J} zi%CymEE+Jr_^pRoWQUsw#smE0^qwK+Zvm1joL|`T7E&1LZ<>#~Q=jeA9Kgjxk9*S< zE>|1zna)OwK*ZeN%Yq{vX&q-5FJKK}Z}Z%p#><>EW9(4XGA65%%(Lu!IuU*Wj#|OG z0oS7j`DVM@rKOL0HEnLClsq(wD{qz)oeAmwv;2hkjU(Xs?L+;i$tUuWChlB`lrWs- zlUJ3J_@swXI)!*$ zbHC=AONeT6W*@abkiXvE#xIMBUdwt87!4SMbMXxn%Nu>Sk%%$&|u z?Ld?XP@5Y19!s{G@2P8fHJ{Ot=A`x5Kj+USPoqU+OK>Uvrau_GVUh+)@+q{4FiRA- zp%CL%{M^>uP^X-(_SM|m@Jo>(%@<=AEs9O+Yw?xn40{?Kj>ss+;MdH!U#6Lr3?I#o z{sf~GXS8LQ@7PgYZ#(?j>k!eVNwRfu;@`RsJ!8re_;=)TM%Ym(-bbKyJ2huJIj}gD ztKDSNjyYb*AZtHK2a?!k+sTsy28-yA+tdBS48^2BVJB0c1>!V*xtvDs^j${$%v7(s zJ-hJ1Yia+)KYY2QsUEKw;xO-bAd|_jurqicbz&X*tk&NfwH2`c4QNEIKRUWkSO9Zp zyX6T_@Ok<{I$~YFWNa{x?M;-2!O9YV#6e)NaZ*+7%4BYhX7b&Alk8E+Gf?7pWkFA; zkh^M=h)fRlPE-e(14$fnCZcZh8Q$|6u)Wy2lHGDzBl`Qssw!;O+t}}^zSd)oP5czx zUM{8a&-Y#w!-+WQpBeJ@0eq@$WN9}$HccR5RzmohOYV;gbHgH|AB-4g=+Iwg4U$sd z^C2Sp%Oc7B^G3V%C5v97;_zi4>AV<~-l6Dp@9+G1MGSWw{C8>LV8SCpGD?7}7#I}O zne|}qd2~}-#PB7JO&h)$wV0-UY1e)0uX-QZuiQJ^j{zSLE!;i%ge)z#HK42 zrd}6jCX*|YDDpdMzLSL(Jzv=HkSnX)&Ef=h9dvM$Y&&!syIDtudgiyZc0?*RUC2Oxxy% zS%x=h?1N>GRMXq$%dLSSrL#}4a4fkrJFc-($Q7TP`TS>g8ZdQasu~v?@b;RcmbLZU zU@H4V5uf6SK*vh+GMZY~*_`JeOTXr>=xc4R4ykU#4=bieY zoyoaiz$i41Y$HG?w5a8Go4Hq8h;eO7)h8{s&(CH1q*2iY@`itYm#S|jUtyWmUkGMC3?S$4yypQ>7o!T9e#PxF@wehT^dINc9jCg=!X$qG4ewDh^${$2d* zdwQ}eJ{Qh(BIm9j(eNOmQ~UVTZA zDpXVJQ8J$?<>J(G!TG%tO`P(=5!QRkPNJSs($fuTbBEga#0Pc6_eG=hq5yiN(dIp% zl)mC;#Oqqi^c|Wh&Ch->8=!-6KHgW>Dd(_Bi?HuYC#cUmq?J0k3QQt23mgwWmM7LM z5g+fg9cwFIz^ra-0_gDhPU2VcQP;gnMXC5AZuN&sp*}K@WmL@qN&iH~=YGC8F*ZI{ zBaxjFSxy@tnS`MG@1h9Rx zJ73;7_w--p(b+P1Z()^jrj?Ch_kvWvk8}9NKcZ~oh`PcO3fCyYe_K1yiyg zaRIY1SbC+UNzPB}ge>z7BO|L3&QRsHjWJ`==3#ATz2sso?0MvX_#X9dJACBjMS6N4r1?7;F=@m-ZrvFI%cbJ@!OEDBxi@40#j zqL~^9d&d%ot!O{W$fi9Oz4yq9Wi=@A^jUhG3(Qd0uUIQ5_>OguL-w_nK-+fBf`N^fLtQd+lj z+pnrG6t~+jdw(yNEj^bS#uRU)x3gVGn=UQe6~<&WF&RM5lbf_-x!Ykb6VI=%W{bKN z_67e*#>%uAO{*TR_N#`1U$g)BY;Fon!hS(|5cN^z<48HjXes@#|KbU^$PS*H=)j}? zGJ;gY)&1&axPO0tJSn9)>o3MC3T3&?!f+akzm7}v_KK)!bZ+@=>xzFkXjiuMf-?DIi75Jhe8Nt`B}c^8C8Rfm z-ePf~-kpPF;coXg(^!y^Yc(s-KNArE07P{ya`TJ@JsXy@`{&H?!oCv@LKSmLFmoJ}7ZI)yHeLNW zLcwuqcUC=yC%N%80zpsIy)8&Cxx6Uch#=mdA{C6wKOcBDOtt5TJl;&(+$)ItkAc*u z^OP7Trkj+1UDiGJe;D-J52Kg`ZlPaymfw2ErD5(mN^)C=@QX-r)4vwj^P1`XwMhukv(JWOrHTyb#?ymcFAsj+8E~VXG)*5+U>K+=0EcbT3zY+JV^AYaNXghi( zcx#JkTOo*Ui4eOId8<|5m4bf7SZpq<(CYTN`J|6dhzpAoC__ zd?)^DT+WRC@m$f~VQ-wWXNQ@{6IruHZ1B|v+3Ap=z6Cu8q%NlEr*B3;3nWX|fWr?h znqL(lvanyG_-k2xw!Yr-CyNkifbwS-xBP^VrC$b9!zX$yAEvG42_L$=(@Y)lC5R}NW!*?zKX`0?=rx-G?(1v|jQHbB zxU7;^Wr0rrokTGGj?tyrusr<;@^x!+!n(Uv-fH*qcT*Aw6Ry#h@Io9!`Yrvo)& z@(^s}ZKoh1Vknw;zu+{@EvOBCHZhvRzBt3Ga6UIt(ta@(7W6-_9^ZTPJN>DfgRtjf z8vmG^goxNg5c`GSYXE5DJz??Moex8RNpZ~>QuepzBhcX>Zkb3*EZx%jfv>rs5LCl7 zQ}W+j&7S)RsLdN~33^5ud;LArJ`*bUU_yY{?o$UAqt{?hC)2FpMrQ)}c zwga?KUuUl!yC!YQ_x6`j{i9U_V`BYW`R#n`Wi;#&*O!CmLuvF-7esknlZ(DTQ=1g?H8@$;A>^PZ50-DHc-;zw$?e02e*>=cWegsR4)mBTgfWE*DYDM+0GG1uC0Dg<8Noa3{KF0 zlS^@<{Q8hkSbRb=;`(IL@@$hUGJftwwhCu$HX#TJcp%x}2IpDeICXSkDOP>a)dJ+hoig7*@r*Q`ZIs z$>%5pvK1vC*T-A>{nt&Xi`Ba#Ao;mMb(|@5e!_H9(;6=OSJ(t6ukg;?hvR1jLQBEX z+`M#RGtCZDUzX!8m=i9`qD8@21ieCxdRLonY?!#BCSWqysoAirxY?YYg`d4!t5`)3Nj|p!%GAJ4bH*j-_8|@x=dZ}7J)>2?jNq#$ZP^vPBr32^ z4+5OL4|0%QHs`f;>hj&)$h^?i>mbeFUFTG!iVv<0tVdn0C&S?1ht)%2M#>rsiG7-o ztrLUxOTBV!Kle+^ebJZDbGlcRQkpt<+aSx51{7;+JDD*I>sl@uDh#dqkP z-%Gs)zsjv@Dx;VblsDXgwNU{|>z;D09OZH9+iP!0iz{6-dyi=M0{wxmT{6XFSL3yz zTq*AovMUU*O!BHXK|>12o5(&B83Bsl@6j_%7|fW~X|3`Zuly!A81_Uxz9C5Dif~aA ztRYW|XsSd?Lf^8tIU<9u9aH{i)~1>ED2>?X9Wwx1(9}zV=is6j9!y%aC2~n!psm)+f+>QI)^!@X&${-N^r*wJ{a}`Z&T7QVwH7^+?w&nxv9o@(?u3_0(w-_7L!cQ#^XXgu4YxJDmFyL=TgnJ(qz{-H z93KZB=ry+ex_r+hIni&=^=lV;L}NwM{;NOxgS9AA%`g%f9>+=XG-vX#T5P!F(JX6b+Mbjd;?XBENu{fi3W`{Cz3?=!sbtL@=PtPc@ z0{M=32Hosk-M{a&qdP>IlpN#i%4H(9XrYV?*5Uq2MmnWz$cbYDJx)D>b><&U78 zwi3t@`uhr|PZ5png<35xh?r%IXL7rt;EKY*UaE*ctD)oNezAMmT|J~0l=3Ph@$|`u&o&!oddRfg6?B=3a z@A2L2tVY`WaQ{GmK{Wh~g zThoX=?=YW7%CeEV8DhQd&9Z$RHZ31@Te=}>+}G|HfkpFIVT=9;fZ67i7%f9kRx{H= zj%gfArE)=vA|LH5dT%g($e>I*i=DmjyE6bq^A8}=x_xdxd#S$b&|l?CbPve-)g=97 zAfXqOF`V|66nCi@zN^$rxkNPY5SQQ}zb6G5ol#elA30uJd$9V2>Qzx1F$8z^XCO6+ z%9qytDO+yR$$h?_nu-7X$BVQ`A8<`o6K(Uy9XcM#rqr8?7IO6YFka`(=y0u9emwYN!|J9rFLOLv_8{SGxL)J{UH2 zX43z!doG#vGp0oQ^9ys^OgCszqCqHyzy}QB0(X}%Xt_^ted3rgUm;(9`Sz(_%j#H$ zg{%w;Y5i*jgeTCaEZyTr{5;du|H?5Ro8N zj=6v4ZGC?v$4U%X4ZJM@-&NvUZu#UDtKmWY~nob2ZSmZ(Qq@L$0>~WSaMr%Omb30AU(x94M#4Dt7s$cI}&z zzE!E6ly_x3Fa{CP4`+evPrj#wpP+kJ&f}EObIg!F$kk8Ji2L|-%%SUfRrUKf+V=8P znW>Iq9Zv)@lkM(<({zS=S>6K1N4y45pUC}{zLa^@k^}GUfHV-u*YuK%dsQ(ecabc= z1mdIT?tXjWW^A4!euwV|@KK1^v-6H+4gnayY)amjlbDQOVmIiX<#kr-`M_t zfOTxRo;9(rAAM!?&?OTJ4sN&l`O`(1Q&9QV&`LkFFp@1Q4Lm403gzo2Cym6;xBhS~ zRBJi`%lXa1wf#c&6rb)Pta1BX>zVAj(_M2FOmAjOQ~iFen_87%I|C9NX}CxzFLG8u z%d?9=vz;t{Yvh$9YA&6=s-^v#cILO7Hcku8zP zHLl$KvU=GIB$9@s9la7hK+0w1_7ZPi-z8bV6HqpiEb^Y_heRk`pfswmL*=dfjLfhT zVY2+FLrbJ9=j^aafxD!~sX=ZLqrq^j9&=+k@-JT9po3vDXs>zUNA?u)+45?tiqEH-8OyBF4a*6O}A? z@<7L4B7Z_`*eT}Kmwig4L3lh{NqOpFfAd%f$5+_ykZ?16zzYoRyz@mdPEEisKs7AD zhn~mAr9?WCd$pr&1;L+U=;TRP5p{43xZ_e=k;3R^Ddr|oT`Sj(Sw83>@b{Z3#% zKPhn2Z-*~pKz0W&6QU~Cd3HRPUI>S=yC>?EzQCWIkgxSRQ4n^zL#QWT|4)1g*6pqk z633F8C&#JClJlalSz$zmbp>O@S9_Sd!R6?AH6Az#?f8cwaf_H?$0O zveYSe5gXDM$W#GIRtn*O88*@q6hWi)+nIg-6ZH9~Zjji`d+qDb-?hY^8TXNH%MBXv z(;&vffH�#t`I&0Vn2>o;v-4UIbO>YISDIMqkYHO_fAwlK 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 URL(a+".js",d).href,s[a]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=a,e.onload=s,document.head.appendChild(e)}else e=a,importScripts(a),s()})).then((()=>{let e=s[a];if(!e)throw new Error(`Module ${a} didn’t register its module`);return e})));self.define=(d,i)=>{const c=e||("document"in self?document.currentScript.src:"")||location.href;if(s[c])return;let r={};const b=e=>a(e,c),f={module:{uri:c},exports:r,require:b};s[c]=Promise.all(d.map((e=>f[e]||b(e)))).then((e=>(i(...e),r)))}}define(["./workbox-2b403519"],(function(e){"use strict";self.addEventListener("message",(e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()})),e.precacheAndRoute([{url:"404.html",revision:"c8fd56f56b4eb6588ab229d197951680"},{url:"assets/404.html-58267e49.js",revision:"853e7e4a4759ca71856db5a8b5fd54a4"},{url:"assets/404.html-60b35caa.js",revision:"7465db92eeb25f209fcf2c19f59c07e9"},{url:"assets/Androidmakers2023Kotlinshortlink-943614c6.js",revision:"8d6af026c4d4631cd8fae23479967fc8"},{url:"assets/Androidmakers2023Kotlinshortlink-f547f85e.svg",revision:"d6f2cc50c4311d68a92f93e0d12b284b"},{url:"assets/app-a89e3102.js",revision:"db3d923dbbeee864f7c1c7815e28b760"},{url:"assets/back-to-top-8efcbe56.svg",revision:"cbe7b14b16686bbafd5f42b528a5360e"},{url:"assets/compose-multiplaform-6e96455d.gif",revision:"0096aecee82f87f01d81912b2339d7a2"},{url:"assets/compose-multiplaform-e9e5bce8.js",revision:"c79b9672bed67091f1fa10c94e1780ca"},{url:"assets/compose-multiplaform-web-87ee5d43.gif",revision:"c0e09040348e7453a5f3a8e07d9adb05"},{url:"assets/compose-web-demo-d50aa5c6.png",revision:"8405d5889e4f3a4116a7cf829424920b"},{url:"assets/fs-kmp-architecture.drawio-fa432d3a.svg",revision:"e6dc0a8765ec0b87abe672a19f3c2243"},{url:"assets/fs-kmp-webcanvas-architecture.drawio-2659deec.js",revision:"91fde8753360d6d83c903ad00b417478"},{url:"assets/fs-kmp-webcanvas-architecture.drawio-c195dc62.svg",revision:"80b07746fff40ae9e576892425663a85"},{url:"assets/index-e32a7948.js",revision:"46a193641571106d3b7b43f9bc2a2735"},{url:"assets/index.html-057a2bb3.js",revision:"d33ac433d1eaf18ab7dabe395839b810"},{url:"assets/index.html-0871564e.js",revision:"b67573f58f768fb8bfb12ad13b5fc392"},{url:"assets/index.html-133fa6a3.js",revision:"1536cecba7218ab79bee07cdca9bd765"},{url:"assets/index.html-1b2bb433.js",revision:"7168b1c7ebb7622a18c96d34643a949f"},{url:"assets/index.html-2616f981.js",revision:"2eb5b42c6b01ddefecf47202299c8896"},{url:"assets/index.html-272066df.js",revision:"600370d6da5cd95fc462b68cc565ed88"},{url:"assets/index.html-2bf95174.js",revision:"a568e6ba287709082ff7d6db311448a4"},{url:"assets/index.html-32146963.js",revision:"bf0a4efbebea9aedae0ef195e9804d7a"},{url:"assets/index.html-5789aaa7.js",revision:"e1cd35593b3570739e63435f5e5a7c59"},{url:"assets/index.html-5828365f.js",revision:"c7e798bbc72d3cd4fb2b2169adcfc18b"},{url:"assets/index.html-679cf9c6.js",revision:"c8cefb1b04b2e028b14ffd5e5df61af8"},{url:"assets/index.html-79bb2826.js",revision:"5dfa1bda490f470df0e4237ffaf8e98a"},{url:"assets/index.html-7c67d373.js",revision:"2bce2bfaee87b2bcd90fe336f6d5e605"},{url:"assets/index.html-7f8c050f.js",revision:"4b643b278f593796a321946ff4b794b5"},{url:"assets/index.html-84257041.js",revision:"538d682e8790944dbcf44a8d0d837b27"},{url:"assets/index.html-93be45bf.js",revision:"9fcf3b126ba584ca7952dd2398c0f4a6"},{url:"assets/index.html-99c4b89d.js",revision:"1defe3c56722056eb7cad62b4e1dd481"},{url:"assets/index.html-a449e056.js",revision:"370748bdf50c296c4f52461ca0b3beb6"},{url:"assets/index.html-aa00c7ec.js",revision:"bc364683a9cd9e3594cace806dfb3c8b"},{url:"assets/index.html-adc29353.js",revision:"24a64548f7889cb55d7fbf7c8a91e659"},{url:"assets/index.html-b303a607.js",revision:"5c3a275265108ae9379206b70f0405c8"},{url:"assets/index.html-b3bd56ea.js",revision:"d6b0644f6db6ea3b26e49c525cacebfe"},{url:"assets/index.html-b4a36fa2.js",revision:"0eacaf0295aaa1b033fbbad8ace60fdc"},{url:"assets/index.html-ba31557a.js",revision:"aa4db3341a97d08c3d93c9b898c8b981"},{url:"assets/index.html-c4e1d1bc.js",revision:"79fcf153f300bdcc2cad13eade86b1f2"},{url:"assets/index.html-cd45fdc2.js",revision:"9fcf3b126ba584ca7952dd2398c0f4a6"},{url:"assets/index.html-cf1cb754.js",revision:"e74ac0f176054e93be963a506d608191"},{url:"assets/index.html-d08806ac.js",revision:"8e4a533e03a21aba14a24982cf57e305"},{url:"assets/index.html-d6c6bffa.js",revision:"f9219eee6b1fa7b7da24efa4259bff7f"},{url:"assets/index.html-e4fee572.js",revision:"4da5bce1103079200a66cfe42c9eab6e"},{url:"assets/index.html-f290d974.js",revision:"5375e32540393f16c83458a0e24d70f2"},{url:"assets/index.html-f7b20576.js",revision:"c98c29b2d9a03043f3284696ca8c3b1d"},{url:"assets/index.html-f888b6f2.js",revision:"f18b4969ab0cf5569eee83a5d06bc4bf"},{url:"assets/index.html-fb17b9eb.js",revision:"091f3677bcd8320fdeab1abbb9003daa"},{url:"assets/kmm-fs-react-demo-11c681d6.png",revision:"db2befa5c2e03ccacda8b5ec9eaa4be6"},{url:"assets/kmp_codelab-dcc38916.png",revision:"608b21c88f8e86d5cae2de38b42a13a1"},{url:"assets/kmp-fs-desktop-local-ktor-d6440da8.png",revision:"2ca78875044dfac25832581fae65a898"},{url:"assets/Kotlin-Beyond-Android-0a0e3f7d.png",revision:"717913b985c127ae03335f0bade66f98"},{url:"assets/kotlin-used-for-492dbcd9.js",revision:"e3648427dc4f1a065dfddae73ed9fabd"},{url:"assets/kotlin-used-for-f0b674b5.png",revision:"493a71abe1f7ee99dce922b72510f123"},{url:"assets/kotlin-wasm-flag-ee5f483f.png",revision:"f9df56589ca41b1562d86e1e67f29977"},{url:"assets/kotlin-wasm-webapp-5e0cad78.png",revision:"62f47ae44ab0a9fca942570c44dcd225"},{url:"assets/logo_worldline-09e30c15.png",revision:"5b10aec67f69079b9bf37c9856904edd"},{url:"assets/logo_worldline-35dfdc75.js",revision:"13818a8ba5d1b409adca91d1e83fc66a"},{url:"assets/search-0782d0d1.svg",revision:"83621669651b9a3d4bf64d1a670ad856"},{url:"assets/style-6c5d5cd9.css",revision:"c21ebe35ead934ee7edc490980fceac0"},{url:"assets/wasm-build-conf-edit-2972b458.png",revision:"16f7983686023d1a7028569edba56f17"},{url:"assets/wasm-run-configuration-d79819b8.png",revision:"550a6a82998961b059b61b66c5a7872e"},{url:"en/backend-development/index.html",revision:"5f7eaac0ff16af12052324b6208a431c"},{url:"en/front-development/index.html",revision:"5d5671d7cd982c1bd5c1ccf29f905557"},{url:"en/index.html",revision:"95b555d323fcc7a2f01a7d3a55df050d"},{url:"en/kotlin-features-advanced/index.html",revision:"f78df14719fa3a824dd4cc288c451dd3"},{url:"en/kotlin-features/index.html",revision:"481b5f29a00d4dc088730bdb0c2f20b0"},{url:"en/other-technologies/index.html",revision:"fb1224d00eb66b222a228e48f1be4d69"},{url:"en/presentation/index.html",revision:"c4d2501e9ffe6b408659a6a15d9b0554"},{url:"en/workshops/index.html",revision:"49585bf7f3d8497b4790721ef874a490"},{url:"fr/backend-development/index.html",revision:"abe0d08763460a7174433995c8be2eae"},{url:"fr/front-development/index.html",revision:"e14b979771b0d8d6ac82df3b36b1510c"},{url:"fr/index.html",revision:"f0dd651e1061d7136a1c6b99005acb47"},{url:"fr/kotlin-features-advanced/index.html",revision:"016127e5a804a00f72d31958f4d04c72"},{url:"fr/kotlin-features/index.html",revision:"0ad378a8cc8006e543b86509c4b76c4d"},{url:"fr/other-technologies/index.html",revision:"273dc142386ac75f7d9022d6205ea8aa"},{url:"fr/presentation/index.html",revision:"d9272909f463db4f4a339913f4031959"},{url:"fr/workshops/index.html",revision:"3a7ca9ef892736084467dc761e7e193c"},{url:"icon-192x192.png",revision:"94fb10279f737c3e8e0f89c81b9e59c4"},{url:"icon-256x256.png",revision:"cbd0e54416255229dd69b25a0059403f"},{url:"icon-384x384.png",revision:"eb14ae9271fb5bc5d659cb334e954e8e"},{url:"icon-512x512.png",revision:"7ca671fcb15c02742b8cf5be999d8d50"},{url:"index.html",revision:"9f3085c1e67fd84902242c22f98cc88b"},{url:"kotlin_logo.png",revision:"bc4ebd0181be3153bbbb065045396407"},{url:"logo_worldline.png",revision:"5b10aec67f69079b9bf37c9856904edd"}],{})})); diff --git a/workbox-2b403519.js b/workbox-2b403519.js new file mode 100644 index 00000000..6dcc753c --- /dev/null +++ b/workbox-2b403519.js @@ -0,0 +1 @@ +define(["exports"],(function(t){"use strict";try{self["workbox:core:7.0.0"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:7.0.0"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super((({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)}),e,s)}}class o{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",(t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map((e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})})));t.waitUntil(s),t.ports&&t.ports[0]&&s.then((()=>t.ports[0].postMessage(!0)))}}))}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let o=r&&r.handler;const c=t.method;if(!o&&this.i.has(c)&&(o=this.i.get(c)),!o)return;let a;try{a=o.handle({url:s,request:t,event:e,params:i})}catch(t){a=Promise.reject(t)}const h=r&&r.catchHandler;return a instanceof Promise&&(this.o||h)&&(a=a.catch((async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n}))),a}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const o=r.match({url:t,sameOrigin:e,request:s,event:n});if(o)return i=o,(Array.isArray(i)&&0===i.length||o.constructor===Object&&0===Object.keys(o).length||"boolean"==typeof o)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let c;const a=()=>(c||(c=new o,c.addFetchListener(),c.addCacheListener()),c);const h={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},u=t=>[h.prefix,t,h.suffix].filter((t=>t&&t.length>0)).join("-"),l=t=>t||u(h.precache),f=t=>t||u(h.runtime);function w(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:7.0.0"]&&_()}catch(t){}function d(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class p{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class y{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.h.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.h=t}}let g;async function R(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=e?e(r):r,c=function(){if(void 0===g){const t=new Response("");if("body"in t)try{new Response(t.body),g=!0}catch(t){g=!1}g=!1}return g}()?i.body:await i.blob();return new Response(c,o)}function m(t,e){const s=new URL(t);for(const t of e)s.searchParams.delete(t);return s.href}class v{constructor(){this.promise=new Promise(((t,e)=>{this.resolve=t,this.reject=e}))}}const q=new Set;try{self["workbox:strategies:7.0.0"]&&_()}catch(t){}function U(t){return"string"==typeof t?new Request(t):t}class L{constructor(t,e){this.u={},Object.assign(this,e),this.event=e.event,this.l=t,this.p=new v,this.g=[],this.R=[...t.plugins],this.m=new Map;for(const t of this.R)this.m.set(t,{});this.event.waitUntil(this.p.promise)}async fetch(t){const{event:e}=this;let n=U(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.l.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=U(t);let s;const{cacheName:n,matchOptions:i}=this.l,r=await this.getCacheKey(e,"read"),o=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,o);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=U(t);var i;await(i=0,new Promise((t=>setTimeout(t,i))));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(o=r.url,new URL(String(o),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var o;const c=await this.v(e);if(!c)return!1;const{cacheName:a,matchOptions:h}=this.l,u=await self.caches.open(a),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=m(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),o=await t.keys(e,r);for(const e of o)if(i===m(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?c.clone():c)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of q)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:a,oldResponse:f,newResponse:c.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.u[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=U(await t({mode:e,request:n,event:this.event,params:this.params}));this.u[s]=n}return this.u[s]}hasCallback(t){for(const e of this.l.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.l.plugins)if("function"==typeof e[t]){const s=this.m.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.g.push(t),t}async doneWaiting(){let t;for(;t=this.g.shift();)await t}destroy(){this.p.resolve(null)}async v(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class b{constructor(t={}){this.cacheName=f(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new L(this,{event:e,request:s,params:n}),r=this.q(i,s,e);return[r,this.U(r,i,s,e)]}async q(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this.L(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async U(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}class C extends b{constructor(t={}){t.cacheName=l(t.cacheName),super(t),this._=!1!==t.fallbackToNetwork,this.plugins.push(C.copyRedirectedCacheableResponsesPlugin)}async L(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.C(t,e):await this.O(t,e))}async O(t,e){let n;const i=e.params||{};if(!this._)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,o=!r||r===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?r||s:void 0})),s&&o&&"no-cors"!==t.mode&&(this.N(),await e.cachePut(t,n.clone()))}return n}async C(t,e){this.N();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}N(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==C.copyRedirectedCacheableResponsesPlugin&&(n===C.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(C.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}C.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},C.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await R(t):t};class E{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.k=new Map,this.K=new Map,this.T=new Map,this.l=new C({cacheName:l(t),plugins:[...e,new y({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.l}precache(t){this.addToCacheList(t),this.W||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.W=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=d(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.k.has(i)&&this.k.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.k.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.T.has(t)&&this.T.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.T.set(t,n.integrity)}if(this.k.set(i,t),this.K.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return w(t,(async()=>{const e=new p;this.strategy.plugins.push(e);for(const[e,s]of this.k){const n=this.T.get(s),i=this.K.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(t){return w(t,(async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.k.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this.k}getCachedURLs(){return[...this.k.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.k.get(e.href)}getIntegrityForCacheKey(t){return this.T.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}let O;const x=()=>(O||(O=new E),O);class N extends i{constructor(t,e){super((({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const o=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some((t=>t.test(s)))&&t.searchParams.delete(s);return t}(r,e);if(yield o.href,s&&o.pathname.endsWith("/")){const t=new URL(o.href);t.pathname+=s,yield t.href}if(n){const t=new URL(o.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}}),t.strategy)}}function k(t){const e=x();!function(t,e,n){let o;if("string"==typeof t){const s=new URL(t,location.href);o=new i((({url:t})=>t.href===s.href),e,n)}else if(t instanceof RegExp)o=new r(t,e,n);else if("function"==typeof t)o=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});o=t}a().registerRoute(o)}(new N(e,t))}t.precacheAndRoute=function(t,e){!function(t){x().precache(t)}(t),k(e)}}));

    Kotlin language features