From 1668b07bc97305e03a1f48d0b02bb110c9a51e2d Mon Sep 17 00:00:00 2001 From: hmalphettes Date: Sat, 23 Mar 2019 13:46:47 +0800 Subject: [PATCH] Fix #6435 Switch to use an obfuscated font for passwords inputs --- ui/app/components/secret-edit.js | 11 +++++++++++ .../vault/cluster/secrets/backend/create.js | 4 ++++ .../vault/cluster/secrets/backend/edit.js | 4 ++++ .../vault/cluster/secrets/backend/show.js | 4 ++++ .../cluster/secrets/backend/secret-edit.js | 3 +++ ui/app/styles/app.scss | 11 +++++++++++ ui/app/styles/components/masked-input.scss | 6 ++++++ ui/app/templates/components/masked-input.hbs | 1 + ui/app/templates/components/secret-edit.hbs | 12 ++++++++++++ .../templates/partials/secret-form-create.hbs | 5 +++-- ui/app/templates/partials/secret-form-edit.hbs | 1 + .../secrets/backend/secret-edit-layout.hbs | 2 ++ .../write-your-password-with-this-font.eot | Bin 0 -> 16294 bytes .../write-your-password-with-this-font.otf | Bin 0 -> 8972 bytes .../write-your-password-with-this-font.ttf | Bin 0 -> 23460 bytes .../write-your-password-with-this-font.woff | Bin 0 -> 3572 bytes .../write-your-password-with-this-font.woff2 | Bin 0 -> 1984 bytes 17 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 ui/public/write-your-password-with-this-font.eot create mode 100644 ui/public/write-your-password-with-this-font.otf create mode 100644 ui/public/write-your-password-with-this-font.ttf create mode 100644 ui/public/write-your-password-with-this-font.woff create mode 100644 ui/public/write-your-password-with-this-font.woff2 diff --git a/ui/app/components/secret-edit.js b/ui/app/components/secret-edit.js index 843588dc80f8c..79c58710af52f 100644 --- a/ui/app/components/secret-edit.js +++ b/ui/app/components/secret-edit.js @@ -19,6 +19,7 @@ export default Component.extend(FocusOnInsertMixin, WithNavToNearestAncestor, { router: service(), store: service(), flashMessages: service(), + classNameBindings: ['showObfuscatedInputMode:obfuscated-input'], // a key model key: null, @@ -41,13 +42,16 @@ export default Component.extend(FocusOnInsertMixin, WithNavToNearestAncestor, { onDataChange() {}, onRefresh() {}, onToggleAdvancedEdit() {}, + onToggleObfuscatedInput() {}, // did user request advanced mode preferAdvancedEdit: false, + preferObfuscatedInput: false, // use a named action here so we don't have to pass one in // this will bubble to the route toggleAdvancedEdit: 'toggleAdvancedEdit', + toggleObfuscatedInput: 'toggleObfuscatedInput', error: null, codemirrorString: null, @@ -156,6 +160,10 @@ export default Component.extend(FocusOnInsertMixin, WithNavToNearestAncestor, { return this.secretDataIsAdvanced || this.preferAdvancedEdit; }), + showObfuscatedInputMode: computed('preferObfuscatedInput', 'lastChange', function() { + return this.preferObfuscatedInput; + }), + transitionToRoute() { return this.router.transitionTo(...arguments); }, @@ -331,6 +339,9 @@ export default Component.extend(FocusOnInsertMixin, WithNavToNearestAncestor, { toggleAdvanced(bool) { this.onToggleAdvancedEdit(bool); }, + toggleObfuscated(bool) { + this.onToggleObfuscatedInput(bool); + }, codemirrorUpdated(val, codemirror) { this.set('error', null); diff --git a/ui/app/controllers/vault/cluster/secrets/backend/create.js b/ui/app/controllers/vault/cluster/secrets/backend/create.js index abf822816ed30..c8abbd6791859 100644 --- a/ui/app/controllers/vault/cluster/secrets/backend/create.js +++ b/ui/app/controllers/vault/cluster/secrets/backend/create.js @@ -15,5 +15,9 @@ export default Controller.extend(BackendCrumbMixin, { this.set('preferAdvancedEdit', bool); this.get('backendController').set('preferAdvancedEdit', bool); }, + toggleObfuscatedInput(bool) { + this.set('preferObfuscatedInput', bool); + this.get('backendController').set('preferObfuscatedInput', bool); + }, }, }); diff --git a/ui/app/controllers/vault/cluster/secrets/backend/edit.js b/ui/app/controllers/vault/cluster/secrets/backend/edit.js index b3acca861301b..a9d461b2bdf1c 100644 --- a/ui/app/controllers/vault/cluster/secrets/backend/edit.js +++ b/ui/app/controllers/vault/cluster/secrets/backend/edit.js @@ -19,5 +19,9 @@ export default Controller.extend(BackendCrumbMixin, { this.set('preferAdvancedEdit', bool); this.get('backendController').set('preferAdvancedEdit', bool); }, + toggleObfuscatedInput(bool) { + this.set('preferObfuscatedInput', bool); + this.get('backendController').set('preferObfuscatedInput', bool); + }, }, }); diff --git a/ui/app/controllers/vault/cluster/secrets/backend/show.js b/ui/app/controllers/vault/cluster/secrets/backend/show.js index 26c00b359fdba..8617154853711 100644 --- a/ui/app/controllers/vault/cluster/secrets/backend/show.js +++ b/ui/app/controllers/vault/cluster/secrets/backend/show.js @@ -21,5 +21,9 @@ export default Controller.extend(BackendCrumbMixin, { this.set('preferAdvancedEdit', bool); this.get('backendController').set('preferAdvancedEdit', bool); }, + toggleObfuscatedInput(bool) { + this.set('preferObfuscated', bool); + this.get('backendController').set('preferObfuscated', bool); + }, }, }); diff --git a/ui/app/routes/vault/cluster/secrets/backend/secret-edit.js b/ui/app/routes/vault/cluster/secrets/backend/secret-edit.js index f8c84e34d2be8..b81b934d2d024 100644 --- a/ui/app/routes/vault/cluster/secrets/backend/secret-edit.js +++ b/ui/app/routes/vault/cluster/secrets/backend/secret-edit.js @@ -153,6 +153,8 @@ export default Route.extend(UnloadModelRoute, { let backend = this.enginePathParam(); const preferAdvancedEdit = this.controllerFor('vault.cluster.secrets.backend').get('preferAdvancedEdit') || false; + const preferObfuscatedInput = + this.controllerFor('vault.cluster.secrets.backend').get('preferObfuscatedInput') || false; const backendType = this.backendType(); model.secret.setProperties({ backend }); controller.setProperties({ @@ -166,6 +168,7 @@ export default Route.extend(UnloadModelRoute, { .replace('-root', ''), backend, preferAdvancedEdit, + preferObfuscatedInput, backendType, }); }, diff --git a/ui/app/styles/app.scss b/ui/app/styles/app.scss index 7f8fbdb710249..0d045d74d3278 100644 --- a/ui/app/styles/app.scss +++ b/ui/app/styles/app.scss @@ -1,3 +1,14 @@ @import 'ember-basic-dropdown'; @import 'ember-power-select'; @import './core'; + +@font-face { + font-family: 'ObfuscatedPasswordFont'; + src: url('/ui/write-your-password-with-this-font.eot'); /* IE9 Compat Modes */ + src: url('/ui/write-your-password-with-this-font.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('/ui/write-your-password-with-this-font.woff2') format('woff2'), /* Modern Browsers */ + url('/ui/write-your-password-with-this-font.woff') format('woff'); /* Modern Browsers */ + font-style: italic; + font-weight: normal; + text-rendering: optimizeLegibility; +} \ No newline at end of file diff --git a/ui/app/styles/components/masked-input.scss b/ui/app/styles/components/masked-input.scss index 124f2a1640e17..3c4e964f8b4ea 100644 --- a/ui/app/styles/components/masked-input.scss +++ b/ui/app/styles/components/masked-input.scss @@ -24,6 +24,12 @@ line-height: 2.5; } +.obfuscated-input .masked-input .input { + font-size: 9px; + font-family: ObfuscatedPasswordFont; + line-height: 2.5; +} + .masked-input.display-only .masked-value { order: 1; } diff --git a/ui/app/templates/components/masked-input.hbs b/ui/app/templates/components/masked-input.hbs index ab09a23913c4a..4c6d54b2fc055 100644 --- a/ui/app/templates/components/masked-input.hbs +++ b/ui/app/templates/components/masked-input.hbs @@ -6,6 +6,7 @@ class="input masked-value" rows=1 wrap="off" + spellcheck="false" placeholder={{placeholder}} onfocus={{action (mut isFocused) true}} onblur={{action (mut isFocused) false}} diff --git a/ui/app/templates/components/secret-edit.hbs b/ui/app/templates/components/secret-edit.hbs index 8237748d3dea3..77829fa577d87 100644 --- a/ui/app/templates/components/secret-edit.hbs +++ b/ui/app/templates/components/secret-edit.hbs @@ -39,6 +39,18 @@
+
+ + +
+

- {{input + {{input autocomplete="off" data-test-secret-path="true" id="kv-key" @@ -20,6 +20,7 @@

8VGV`flQ=aMk9H-SH} zw?lG)xp{;^ZcYd!oXf-B#fi%S=Ircd?_|d1hCo_!AuSQkT;`~CAk;cMW@Zfp(gyy2 zvmTFG3-08Mu(uQb&y!M4a2OJWrC~^v0d*J>qy%#UL3lwtU}0WfVTce2!UGmUZSmJa zdneQ;Zf;y=FeD6*S<2qQ!wF$wi4+F?^C!p@Y!Z zu|U7L1o|(RK)<*I`o$&CUtD?ww{Wq6IsMxR%obte@qcUPUyp0Ue{lrFCTVYP{jbRf z>VGAW@2}W^0C^OlaDf!JTXn zc5qdDXT&cOgTN4hKj$@=L4Kky7135 zKi~{^z2YH16!@E`|Ev%I>`>ggd_oX)N*ff({#hV|GGUAOeGtk6*!&{fe-}Z)0Nl|9 zc9~)*1hDv}x$sL@p}eRp!JYqN@ITM-0Vpm02k`?EmjDV#UIGC?>JkV7(w9I8kogA) z@Bj}k0T__I1Q0;(67T}@mw*p=cnSCcg-ZYh6fc1QpmYfY0p&{|1gQK21bG0}O8^Gc zE&&91bP0F?^-I79Xj}q*K=Tqn0j*0Q0BBzVK|tpc2m!kP03jYg?-GCk6DOFdH5}DA zuM~k01TaC3{?1Gx-v6%sy*7kUIdV2dAWRWXrY@I-EyNGF{8A=oQ+uaN`UpW$d52vg zq>un`SusL_fXStALV)Q%0L;S!TviR32gRo=b12eZLA-#)6~qTz78jU@A3$80g927p zkN|L5++ZF-;F7Ii9wFfJWMD84aLIo#7z|t%Bp3_<94>8wQJlVl_<&2ggTbiUyD|p_ zE{P5X3ji)x<^%!PD@X`%yF?Hk;If>-5HR3zWex&7xq|-AAN;pWgCTsVRA2E5!v9y6 zQ7ZMTTm854z!2!)Nk$@U%&tWKS6%<5=Vtb9S3-iS?%z}yjH>Nl@`>tFS5gB-38sq^ zN`OtT_zdL-Jg(>w7z#!CV{Z+&`^`%zN;cu9zexocDhQY%;7)L7R3rb#ZzzgH|Gl4G zj-qq`b%``b$<}Y$1{MGV7A^=I8@R3g?*#!CfB-i376?Zi@NLmTg zu_yGOG2Y8Dl)Au7U65Do34;H#ivP+g6h&c9FjO5nTqzAfR6F~tH~q@o@2(4?5(PIy z#pSY6!Ggca8+CF?p(}==zrt#ZQUjM?_mL|T0+(_9gII!szxo@hH#lAG1z^Fy+MXrM z=1O6sl>&Y|8E0GZ#NgYZBAng8J&gohW9 z`IjdU9zH<+Pn-OJ{GT?Vfc*coDFDd-51WF34C;pb->^VXVyOIkSRg1xRQY3Dlq{-dFx{2Mh&Ne(zKelzeLb>5d?v`KLQV zfad>l2PLVR|K1xVt-600fIt8ZOM9nF;e$X>y$9}Oi@JQ8*j(}xf)d$Z<#wg*K~Opi z`_mjsWB;c=s22H0cp#{2?*DL62!Q=YLkKTQ5H9Nw!V3mW|3yR8B^@O~zd6T?x~Bi( z94{XL|6k7W@&hPo_(OIfyifq~r%eF>@uy8e;6Jy9-|7y+D+D0^Z4-4}hhL>39~iLv zBP@In!2XYI`FH{QKepxL1ML6TQTX@))T`yy{suu^*immlf1VC?X*WZ-BCa$-2p>wu z{vaVAN}&I626cOP`NJ914c_H{Il~VDT>iZ?>N@Z7rvW~cD*i@7epCzn?a|*}p#N^U z$iLpXQLlV>|H0-6)SD3;?hZG_^Fcr2Ktn^`4)#fl!F@Cti+xZB=r&YO-uznNv72sI&k zY`gBcVNRyHkRIgW`}jlKttZfyx$r*9rzz9@Mj!Sv#j8ldw~|v1A||)Aj0C3ll#Z`g z7Z}bOvqOGRWF2qdzJ#J5jAkb*2_|cCm#7Vv%G{W=P}UJ>CT5L&k<>?vp~)bi8+05y zfzS9E@71}!H0~pEb24ZU869iQC~4+E7PqVz(WXJW)R&o_>DpzVq4X}HBqeMQVJ9UD zs6IbJK8;hE%a5~-C^4tsn-Zr_3d5q(o)CU#$dx81F~FZB?8f0r$2~upj!ov;yjUT& z@VkXRqZh-sb>$Q82l3xvF@Z(sEXF3Y-KNcnoqPf_EIbR=jeRo}k6i)6Ne;Xn>^g$X z=X{V;XVB}e?1`Ou`(`llvPD*yCO|Pa^X0J1%Ivy+R*x6+#!E`tuk5R&Dn*~K#i6AP zeUB&m_PQS^qt+ib-NBp+N!6MyENv~ZO~EibNLJI4MjEF{8$2Ixr(`!TpRD+4`*;vf zTQBlyipP=Z8RLFRfZ)jEQ6b52!K|9YY)q0F_J(aw#=9`8t{dg%kKuJ`@s#v_TB+mP zduO&AS&AoS*Glotwvu@7%(%z4ZD?Dx+-OFxK-XPGBcfNV4-vuujrVCW*A6C%J$QT8 zo%G0uh$q@RJcXgvN(U*0#0rhJ?AW?nA`@Q_W$}O~D1*^mgJt5lP{}6(PyG3jS)-BB z8yr5eBD_HIBC>|_Skqc>TnbOtG{Gl3keEhQuV)WO0|(iRiO(}UR!Nv%xO~Rrj-fAD z{pJchluZx$G}XnALryeE^|k# zaOCNqlgOJ3{waQ%%Q$N-xQY)mq7%;z*qFew#G>$Am>Uf+lJ%EL5b9+yIVC45xki?@ zH?HCDsZ<&Bj>&R#q*}`-vJeYMW!9}Pl(b83fm<9U2PDuj5gQw~X)q)ht4#23fyAY3 z%N_jL@iueM9&xmg9@dk;dy#u;jXCmhQI`(*dIFMaU08h<+s$J@bgNO1mxJL&}GC9x6a1LyeW2X^tdOvynWvaeNQrJa*7@6vrK2; zk*QK}nK8jaIx=`}p7}|Qk3Hx{1%b+=nAMBA4=(r~RBuG7UMSwR6-h56C%K?oIBq5i z;1uDI%kVo-!?=+fZ-yt6F9hC(6$mYl=cF%gUoQzn;tklPN#T{mrAoxCO>3Q% zUz7Tj>r<-k^)5h(_!|1t_U)Nz@h-(X6@w4l_6Bp{#333u-MI#}t zx^C~fORrsnjIe&^bRh%lfm_|q2nT+{KnC~WL<@snCzNl!a8eR~IBtQ%-Q3#1yKRY@(yf54w z6Hhd(^D^#!nw)j=!?*k&So9_BvlHeQbB|`yxgVN?h~alzPvaS#l;{0_L=-?NpCs|G zBl1F-SsORL+-eVE3! zVj1$qrlu~UD}PX1pa)I8<4nP^Nt@OnOK)GcHZ|mb_U_*tdu(swnt#=oD8|$ zLY__IejjOsGHMgY#MGx1!KwE@DvmvPsR9V}^a52s;wMHVJ?;pSsCTC66cZ`#a1mQQ z!5bm)8QJs07nDs^*684%Q>C%+SsD6}$atgfajj3-E=}d&lL;w%(i6H5Ptl)tUAOi@ z^C-UP4A|^$;@vHmDOTGpz2+TUVsB?@gQiqmE*CJIM?>P?^o8~(J}+J1hn^R~ywUex zx|nihQ08?$EXdi)!l`_79Vr(4Np_TOHM> znEp83*~L_R+`jcmPtIUIr!;Uurg_ln&9hCL+v+AI;fXbcmH|3^Us*+5vwa+Ms!eqU z)|n1$$=_AaPIQFRWEuo*LrbEiMy};XvSQ4PZiEdi9VYF?KCTn@BE(GvDV}}UzHYa$ zV%Bq)i}(87B;5HE>*bWRf=-9%{vQu&f~8+?SZxFddwl-%^=?SZZBAh(L0f(7^b=xv zfGu2c9A|r63~DH$o$Vc&e8^&DIib|~KKWYpz}&+DcFrR)MPFu{WTrkq>wu%H=}dq7@CMeE?NT;)(=3VG zS3z?4#`EQ8y#d<3`iqg0ftgT_Iyb(ZNb4-6CHMJs`@zS)uKB~n_xa*e>^V-0s73t8 zRIo7Q_$~6kS1~0v?%ZsjSW(AMR~}P~?^g(M;d&8Fk!F+{9 zH(s$;-O+nE9>v`CG5l41>@6Q-^r%TT8rekKc%~bokyHs^o)Wkc6&n)aLRMdF@J<31 zVKG60zH5c`hGd^6s(G<385+*hOMXu9ai+DW(am$9XKeXerZqT7TYgWpr5vYcv;Ugz z?e1Cbb+-eC?We^)rE}^^iZdvjm{HvG!d3!AmX_*08{U(KOWk9vnmzFR(ONQ^ zpn(I<1NtWR<8K%Z1`G_e9&v+O#pUv~kL%7fo-X4^6p%Nv&Az+!bKceAbeQCJsVpxy zgKF0KcT>4}Sgw|54uGqjBKb0c+s^DL&7QnVaDe~0V^pB|c0#tC+uiq!dkI_D74i_* zr~`3W2~V|fqM)FDAT=7e+e$4GtY3iU>ZGi=OQo$hiwmezd-f~jd-q{rT4c$i%ZLqnP?Vb-T z3Gn+J@K<1WLSY1g6hFyvJ@wIFEw$NzgpC+KAi(##rD6rsz+GM0%)%9?ix?k#r<9Wm zmXaw7>Aek~RA!eB)|hQ8w`H&gyW7!%7FkSNoNVxXhQNo9-TCun`5A4nX2u1fTreBvGkDJOYGa(yc@Rcn|k3k*Z5hxm3NdT@G5Vw=(9Y)^xU-8j%!<|=jN z(nwyvQ*CqYp5I5k1(?63p^YB4Y_r^dPkPVX$;9Uyj;Th|lO+9;iZte0hR}W)^+%wt zDmI*JJA=4Ne#!7xe7E+eKDjSAtWO`#g-PPb7`xKyo8?SU$?A%(K!!T48;ebRObU{^ z@*%p^4|dii@9WXPyk-w^9!0cJuX|SMISj}JHqMlMbb_iVo!dkl)}EOVN|(Fwx)7Id zB9BdQ@SC$zyToU*4OTNei$vH7PTW}++;7=kGqA>SA*F6T+X>G$3hoUldu60Mdlwvz zvBccP)uMfv$M#VqBu6YyDJ-nPC_mGm(l4tlZ^Qd}e(j4}n7*oXM6=`j`KJ4hjB%|V z_dkm#0(Wt9hVc?9nqL^JS0&t!HrLi5^;=CB>81=1FcK{(k}3z?yzMrV7fJFwv^s2h zV^8ZW#!2!Wx4?&5g8^&Kn^X7(V|nZf`FkLIpO=Z6NSMkn>oHA$^qT{EkM>43-B0+C zX`5|6uEmxGAd>=3nhVS8eEnnNjWw;Bz)@4r4BKqnL1yjB)}$6vF1nDoJD5$L-Tr+; zgZ@-cS7V+$+dhS-gAH%*s=CAk-tt@5A0V%B7>UwlH?raMjulOM>h-O9r8YWvgB&y4 z9_*UB-`><0UJQmCFR#5!*u|xhF()o~uk&&1^TD0mPjDiOs`D>m@l5508w=jW;$lp0 z%95K#t2-j6E#-#8>+jtRl~{128lwb~G@26i;-unm^UJ#OwQCcOo%Tv!#kjJUVlt<4 zu13~;>MLVvmY?}%0Q5<@qiNPTKCo9}bNAF@U?cq#U*Rh0^4M zd5;wk_<`FuXIN6l`W7+i$#oYbI2dQloln-mG6Dlmd~+6Ks~&{8KTmaX?l$|OGWj9{ zNGYJj4KMlWzxvY(Z@IxW!^cNkaD#lW4M)bnXEbEZffAp>D!E`n8*rBc6(uS%KYdKp^@UIq0YK8^^@2KS;M$rp6M_ zR;U;0U+^LW83i9V6pfO64eQ>Ql*cYP{qoJ$?Ls)@`=(f>y(B)P9FZ( zudBJJ?SS6=bU`puRjc54gcY;*PuF4Iu4#cq>;#B%j$?~;xu_WI@@S58ixV5QPBKoy z9^ys!k#3A#lXNciC=-#ovDEyjF+oV#J1ov#qL!X+uh>>AgKuA=Q^9#6{T#3WFE25Q z;4y8t--f`8;u@51q30K1`*W+cCtP)vkaCsw6(+LYA zQ<*k#5VQuTHI1)wCy4HKZ(#J$C3JrT8G4#>8uss1S4Rh~y>_IJ- z3sdt1v;B!VvBk=2p+}alcML(eD~~_<2}pRQmRG1LH>)baXdxIv+RzS3@|NBjY22x$ zq3eNc#3ndRg*VW4zvq#1orqWzry=NHl~btkyf>_!xi?+cisb&m)pP?szDo7=BmkR4 zZC&YN7AK=*fnb8VeQ&`UU!;p`!IWQOXHs`hF zH?Nv(-#jCFpIGH2|E$~qm$u!V=4`XVGh&LvpC%`rnCYu~P5PaNo@X>BJkWkUF)9WG zHnywgyW3C8uZ_N~pGc;hY@{HpX5fnW#y_pi%?$e7pgiW%$gxx3CtXgtSDco-4?cfi zPDa*qUp7|gY}Ph;OuSyeMQD^`S$JE8?9KPlTKBN$z$hy{Bf^X6Hf@&?3IA=udkt74 zK@i;!jFH(lo-$U)6tftJx>`}<%?{DjyJxa)*QHbEZIL|T3w>oZBfH%Z1=*T#x*zR@mTX(I`fljze~PwV$YchCI4oT-V?UQ`@I z7gk^M))+<8)ahWRGby0U4pes~)+(@#HLR*ix_2p*Pf`?6OUn95%gGXbI#`LeAxcRF zFD8Ckf!yggGEpC$qc_S`eaDrKb7RG%C#a;F7XMn~Xf^#aPb+~}bcs+pdEW7kRM3+* zP1+jOWc>&#k`3cWYMF`*(32-DJ22kh=*}7yIOfas4k1m_FG9xd-nQL$Rl13Wb z58hnsa_@lvooXfM$i$FDFSGb>(nwsG%jc@k#x>Tk!-HNaJA^g4@y0b%NgJHC7$gME z$LEFP-K?#>`j)XMecnkt$J4=t-N1k-A%l0lRg&e0(+i9n7XEP=C9}dstglvHnGp_= z7tg)?Zq?t%%AsDQG}wY?VN2m`qmNsb8kS5HX!g1xfOPovTRutxot6HT?maY-*bI_- zswsSH(9lBlj%sa1Q_?-&s9~o@f|z7CZ~@4V!Q@lL{qgN!nrJq;VholMak`NnlTz;wo*0+} zzzd;>GkeUG`}FJISnnKdkb671Pc`5H$P{|)d<^8b%(t2Nf-yXi=-j1vpGn^7&L2BvaQp9j;@#GvR9{;Wbptkk>SO8MNzIbQSzta)GV z;RtZz-8C7{rT)-W*N3~vOK_)-m~%`&#E3b6olAC1Yrxp_vD}J3g}O0f{#J9AF4!$Q zvh|iR8>fh$XXdFW_Gs{NidP!A)FZ! zNjUBD%RZ`0hx)fCzit)7ufkU?uZW(I*`zw=9p3eym1s3I2-RSHK3|YrCN*(9Hs4vC zE+h6b=$%lv1S2VTT9RCFzV7tXYjEzC;NA*Ygmjfq7+ z7Msh=znwK5su#~yc?Rq%oAI2O{n*2y%zt1!xK6V=n21gPQPHu)pO3!pB0yRDj=H|~ z9((Fh%Wek8#bs8{0YdVl`ymTV3h=@t|O4+qNmdS1dmR@o;O@ zcLd_Wdv-$m)SRQOC?ZYlpq&Ogy`|3LrK}S^73EWBNFwjcQ@e^+FfXB@$c;38D1>NX%O84!jK_1g0!rG?Zp{}?;ID&6G zof1NM@np}l=9P&YqaN5y^w}`CI~YHF!EREYzyT*R3rjfzu z8{WN2X9RV$#j}+1$BZnK*({10uIOdYTR){}+_)Y=>A84l2p!c{bx-9#c!J!na9IMQ zDPSCgrh2Y*uC(PGxlQWdkj^mX-Iux>y~|tEhBMD1X1X>{;VwVTfX^cc4^tidqKrJf z_;%94L26p2ER(|Jf6KC0RRSAMNVJqJP~FB(ShZS&6?9?{F{4VodP9`o*3~7HbrBazYL)?!DEpDNId~1QL4m7eU+}~kroM=?}ssIdB1{7){h-)03 z(?R%#h%m%TH%>n{vN`dw@`7F8PC|J4RNixjKVVkTblRYYOgf;+08vh z6T8Zk_~hLd?+a-!rh?CpuD?8$;FDUARr|d1Q*h&+$+)2A_Z+NN1ea!0neesv?HgI~ zf+pHS=j}2S#hUxagO0lRg-(4mH@&fOmR1XP?;j4i#80p71~piW^CUy24`nVqA6lD& z6sLBoFiBasA~+t?z)oA+tZVSR6x&=Ug70JpMpp+EH)6# z69+@~`A$4x2DCB6^7TwvI!xTR^eO14OilH3@L~Q)qf4HeikS~oRG42m0-hw1;qkH= zXUPAX!14~WodkWQjL`{uNjFywJJR;%Q1=?wC>nXu2q}ong?>R+QlY4N>}gZo+K+lZ zGgrdA)I_T6IJc(ALE}mHk}8q=Gm^W7QkWT59n5&8)~jG4n~l&E*?63!U!IM<;#9 zsR}8h<<(%pNKhbmPCt zl)JJVdt(7dY{}h^wpx-_Xst7>^K|3-;lT(~a}$)Rzo6zQPe(`0=x6x7ip24Y5G6UU zsWZXnt5PpNeGV;VA2t3Iv_@fP;$Sf!rI{qn+CESsTvKSBzpB;3I+NQMvss=9-L!9* z&_4f|b&;-*wril#tj>9o)VryHEK*AIOH4My^E;xnxfIz_Yw(%30Ey*XX8@H## ztg8;0-uT+mVliPoOLb^3X%e4ydwP6k`+0Xfj5G(~BP3+H724IOH{E~UTM_?M;RX8o zeA;XS=0SHD*}`n*m&Y%UBTt3`bD=sD-`d+a`WIiTvGC~P+!s>KPq-z>WySwIwDR+? zZlwX;Q?30pkJ$mr9kO{!Z(L}?dmdeX}EZ?#A$4p^B>!VL@p!w4}NSG zoU|QE8L!ln=f3apEq`Ud}k%v<1t<56~XmSDNIt}>L_>-vV|1Vcs9XSD#ZBx z^@=&&=}cLv(W^zT*3>?R8?WgK_wqTqEipCnL=(O5P47ivq&~h_7q<}>9d}eUe>H&} z#>zKc=i#Ap#K3jNN3f2TqL{;ewAZYW!l&ptdY0NymXUw7&ES$~n=+Up`RD+%Uv*0< z;=#}gYnF^dkWAmVxoZ!f2Dvxs($BtYZxrc$G{B}jDpxi{k8V1y;%rCs8b#<@0n%1<@2z5D3R4xn1w}*XUJQ*giyyBX^+NcgP>CN4@O zo#?D?^12>zvw_hCV-^(pZBKvH>>9;KKaX&eYAX+bA*A^A^W*pW0Lx#W{o`m+%nNU zFGd)?1Sz9z@Jt{@F(x}Ee*1c8uJ+!{b+_ECq4YD8y$ZCk;1%x@-^4+%?1diZBl^)^ z2Ws1oYh2(pGWAE2sz08N_krT018Ni4Ty%0INC=}3-3KJ-s$=o9o2S)mGCws09JB_P z)2ZFae%{G&tIABoa1WH^;tHq3VXuFoQKmMAqYR}Tc)8t0_UVVz_s=;ieRMmx0pekl zLR%~~v*;mT+iJ}m3N{eWmutiQ#nfCRZR5}Od0Cp+hWv}4ASp^Hjyf~BNS}HaIB6SZ z@;p(BhD3;9y5`W%bH4u)Ax+Q<5?vn^9(GflzR0mOXz>^gq>mWqI-d1{X!WFiAZsC? z^{F9@V3GLg%*{j;Xj96(dX`%JY)I;PML{Xq?k2mD@K16OV#(1WDsZnr=v&AKiDv;4 z28fg)s~^yfd4@#xS9*4KLxiGH^wuY9esP%F?|kl*s^Yj5J7-}FZ@nvB7I`jG_f1%@ zYLVy`e4JiA;&qWgo1)*Q9W8nCnzZO6Ge*v)iFii_yX|KxKdA2<+Ygjx)(%7?wfSOk zMsSWR0KHQ!#h21=SY=NyI8Dm57d4|9u-el#oGiT+@$X;j+}4xRyL(tZm)na6ef~I4 zIhPTt-MiJB@Rnz%0$slVH1}1UBG%f-Ooiy~H)55$Z?~ym(L#nS1bhLy2P-m;eY#@x zN~Um}fL+l32Bhj+%tjE0WFk%JTRJqCt*N_Y7zm51Yqypj>hlcyGD-@ln)x$>%QYOY zebp5rhzq_&Bwm8X=UhK76EQ;I;$$vwR885k^xOmOSiOzKBw~0t%=0Nx++2#HopWT@ zsF-x8KF^OO@!g)yjr*n(u#EglcJ^n=i_O{R62Kl!i}dPSs_y2ux$W+0UJOPD%Qx{0 zS9^+kt*MLD>g}2Xhf)Ux1ss#lb5xhq7%a*>F$Ne zb$y-|9JodDz(y1E38|b-8}Ijx+I{|}93N^m%os>Q4VeZtc+K1m>eqP_%$$=M= z&jKB`^Ow`BoBc$7F7$9AzPH`d3Kqm=-sx7)nPa|yWS^sJ3_npkRbtjN0#DVx+_jGF z4ErR{GQM3pk>o=)bPBYp*OrG448QAhp)$Zxq{ScG-*5wtn__I-L2zBG(l)Sy`OBjQbuJO+aK?mPERe|VOjD`W6WDK)9 zALYGX^54^U1G~gQ-EUEaXmnI0xpTc_xOW(ozQ66`x z&px5En)4^JJ18c6IUxw!w#)5#cz8M%oC{t15cpx{b1KOjT6^M`YmW~{Y>vQ+=*^#r z#H!eF4NGlbEDxWK^vha6qeW%~O6_+x1fpJk*Tq00(lD6)u$Gc1)N3$2L>1?f2 zz@P6-GUoi~W&MRLp_hiwOlsy=E+_W6yejDwmYK6OxenQ4HA(FQ@HoLo(gOb5<>g8+?ol zbP~#&y5=_CJYDin7nDzMuL;Z7JGDQz%~5t_o)Q{cobX+?OtF4hb&a?#cW>T0uD)&z zd2h<+8p&4?UU`=cuLQQ+7JYpZ9I?+rpTb8D7DMR^`ik;avsp8WRO1oMmL zA{_XQn#~xJFGWTV>t@vIl>B-=F}1_B7e;xL?$TF&nx>P0<_Omc18Hs_#*GCZhXReW z2hZ>brXwi(CvWdgzJKi+l0un`(sZ)@H%tTZqy6m<>JLwi%59$-$z4d5HDZNcM+$)ip-$2s`EcqnWYE7fH#5c}BI^`Ob zO)-G8!e^Udtt$(5CpDTfx2MkRrY3Txw$3C|Ptc$cVGu%e>!;`xKdCx`|{iKyVh z@^KYBnRL|0qi#)}<{4U-Jzzf(Td2>hZ3rbE-nTwQl+%kyY=}le;l6E8yo6_)@f{gO zLndbxLjDBbLD7a(i`EAc4O~d1FKP(2B)D)2>f9eUvoX{V8L;NjQ&C?)l(i%gPo^kJ z!!WY3?OAxlliU3@0d z6k<73kx9Ii4AO-=T$NBYjCRN&N)yonqMl=kvSpjRDyCIVrLklkGF18T5iHYg7pDsQKzNgl};}a%KG zl9|fs5?2O3+-gDMoe3u@quci?5Au z1m6(8vQ5fEsf4`J(m*^h*N)XiQ&z2ITM;W{rEniw;>ELOM^(xhFc-?3990P@O5)Ru z7MsFQ)(k+I)KYyEauU)kJZ(gsn(bIBV$F>=*;XQyOg6{uu+=T@a1?cgqv%WFD3akQIvS258IB?ujv^I~3O9Dspuk30YEfEl zTvZa;01acx4NkzW#M3w+EIQH1VvLWYCsiQU(^7U*ZOTIAk!W@(9BByIS6cB|*0G1h zwQ+Qo>6?OaNg72Se2(T*^0+y5X^y5+iR37cM@~QKASflZn9^6XpN`9PvI>s#tJURK z>nnc!w`p#j4y0x$5*F3KWijNkblS0{aU$1bgGVAx)a$TVWCmD{Ta$2^T*V3KP#G}_ zPbPc;LoU7udKaVhVmMgVEUcn>*pPtxe-hslM_)N6iQGs+TO7uEuxv`O`S@rAsLhA^u_Y7i3T^N!p$&G0DF}xv1`Bp& z9Gy73j!QOJp7bQ6@n(;=WTbDzaG%FHoq5GU#8n-|N^u z4EC48{#pv6PY}TmA~~gXQa-swar>x2-Vwux4KMZ72JK)Z7z(C>7#?tvE#xHU94E2l z*3*EGDVq?B$8aFa=Vrun+;S&84YMtWYU6CF5ECwN}trk>a44pLbX@M8tbfi zkwkQ^owR1hu{ay%V%@c1eW9y!Y0eo2=Uw-NvsRuI&{lwB+ftMkKJqYk4W&8GExg_8 zYYnt4tI!&3jk4CBS$If4WTw+j&wIELJrfbzIo@Nek(V^yRFH<&jenqS3URq6S z=zjV&wbNR9fF7iWXdSJmN9a-d4LwG`qm4M3KF)oRLLnr~EbfbRTZyF> z&f$cFlUEoE_t+Ifx)I$+zeO(0M1m6Sb{@{AdE5`ukLg-!b6SXVxEG(ox!i*`pk*sP zg`oB4d_I-G#RX`Y!+G2rBn zQ@6Sz@bd{SCS50H{dHfx>z^aFizwXM1Oz--EzQ|)PO z?Gkb`T3Zjc9c(iSbiF4m=~ZA}cuE2FE$F$tH~mnm%0vp~BUJ_=EsBu>qY>(f2M7j9Bm@1}=pooa5xK^wcJDVC~B_(C$PT?P_ieai4p$cD>4MJ&hZs_bS zEs^csQm-nUG2T*VjJI^SYIKHrOGm2OcU4iU3ZE*jM3eTtT zdEWg6?D=fdl@+&OA z!tyIDzryk>yZp*7zj9zeIWVB`0?M|4!V4(8fWiwXynwoPets=9Q@3PgvT}6 zad@Y~Un2FPkor(aeJG?p6jC3Gk)eN8+xz<8ktaW99{m|~@}80uzDV=YZ=B}m z|5r3W)1l}(knr8$jq5<^t=RjQ^Y!421t9ztd;{M|KjND}+&2A`Tj^)i0!FzDTfx;J z{s+J;>#zkp40?S8^uHcFBe#GJAn=VK*G-`1$MLG_3EF~9V+lP24%$Xf)3fvoY%6~N zAN`(Q#EY06V5*&XiSZJ>On(GJy#m_*6E>OG=r6Q~{!FjaUTi?O(qHKfdXqZnEo?-8 zpjEI@^kz= zZ|C2G0sp`|_(k5yFY(J@!(IFe@8&;&cgw)gP5dg(SIszk$sbO0v6w;gWY07q_v%XY#!d*Ot4 z=zWlQCmms(v#}TEa{(9f*<1`7AH`$2f-mB!d>M#5%(FQGBA?IKBA_?JO?Sc}t6}_l z7`hcky#NDV#gyLScliU*`9ZvsGexfGE&7Ad2ZV+*@ z#5H1}xJfJ(w}};El~^Ml5|4>Z;z{wG*dca_J>m`Vw)ngFNPH>|YeLJ^^0dC%X_}=C z*3Q$0YNgr*TDdk+o1#@~muodzRBO~y+B|K6wn$s7Ez@q-R%-WZ?b(q|ux}L4~()0BKy-+_}FV=_aqx7+Qg?^DfRliKXLJ#Y+^@Ki0 zpRZr5-=N>Dx9NB4ck8S5wfcH}qrO#tMt?znS$|c3U4Kh|SN}l&L_cVdVH&wcZ==64 z&=_P4F-nY)#%RNDj5j73mBtKXrZLN?H*BNDxW-s$++-{@ZZlRGtBf_qL&jsqCgVxt zIb(;h%h+SQVZ3ep-T27()HrMkGtO)#l}9jTto? z&6GLMTwpFT7n{q>+s&2cy=J?)&fH*bHn*AE&7J0MbFbN9zGJ>`?l(KlBN=*znUQ(0 z_h&U*`h9+S>w!I;lZ->}9X`KbE6x#F2lgDEWE@Bzo{Z|DJ)M))9j4Cr5B}-Oi$x!^;zlk3h0y_)9Ia6)lO%0K<7-= zTY<_E4yZHA0d__n=%I!=6UfX_Z=mw<6GQ%Ui+@dVN@PA0clo9af0p8M-cjusvr7IS jOs{=B_2r{w2L1z<|HO8GyM54|1Km0BP3M55D0%%0`l8WD literal 0 HcmV?d00001 diff --git a/ui/public/write-your-password-with-this-font.ttf b/ui/public/write-your-password-with-this-font.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7d2a2a105cf52c4a4ba10f3fc5971ed5d91de256 GIT binary patch literal 23460 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 Yp5if{FiRq0ZD~9A8A!Y`GvIyqA0xYTaR2}S literal 0 HcmV?d00001 diff --git a/ui/public/write-your-password-with-this-font.woff2 b/ui/public/write-your-password-with-this-font.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3425c97fe69a0ab38e701dc419f17cdb58e535fa GIT binary patch literal 1984 zcmV;x2S50CPew8T0RR9100+PT4FCWD09&L000(CP0RR9100000000000000000000 z0000#Mn+Uk92y`7U;u?S5eN!_hbZV93xq}h0X7081B6TjAO({R2Z|#b>PQ9L7`kEO z0E{RXlKp>7Zj2!nlG%S$OeAw6w_<7wLfO`dF4$En(%~8xO`hzrcfGfSFFKeAW`d|j zG|m5@kxa;iigx3~r>Vrg`9VC{ebwvfnGdLU_W(xcbfNHMW^`(2R1k^=9J5=AZ@>c? z=s>gjGea}ID9{3hGgwKXUNCH%`x24%SS`X2s(S9*Zh zNvfjKy|`mv#`4Sr1h)AP?gmb{SWbMEie)9ZlmW`%J_(4Upk;?fTjyMn2ulDCki)SB zo=Ew`w&#i}B;jh`@Au137L%s+prtUsQwk-0@%zotCYnSvBoawOGfyg+ zNQd3a?{N8GAC)}zxUtkKVa-@qRf`XCT`L#g`T{d>;EU$R8jCh z{rUCd)BWB5EWdJu6Yh+cWCS8gC`nNKgvmM_|D)P-^YHTV3kV7ci-?MeOGrvd%gD;f zD<~>4%9N|ngg}4@is1xF(G1J+f+)#~s_BMl*^Uc<5R9N0PLLGMupBRllB}qjZkSG& z+vD~59jxFJ5R#Ht)ud6gRxR3e=+dcMk3OEJSHA&6MhqJ@Zp^ePGiFPef{jB^(ku<+ zMCHsN1Xd{mQvn!B2LJ$!V+M|xFk$OTYuK%No1pzsa=&;o!BKosky z=>;2+{sdP6U=nY5tD5J8T*F6<92Fcf+7mfLYipm%lDcQUbu~|Ld_MM8ReV(RpX_(8 zyx&w1GULn)X_8y_sQ=U&)~`O=P!S$~+Z|R|Gs03Pt^Giz0H9%;IOi%ru=a6h--r7A zojwh~^Pd}o_(5tK;HCfwGypdM4FUa@ua6is(7;U^KY?6g>?;?^v=Tx_R=1o)xm~2V z+$T$UY0_G?g>1ealcRi^kxT2@M{ddaO&-3j6?x6yJCIM!t%3aduGSRLcHN?&jz`_{ zF)fcbL?XKf=mLpEe@s$>&Xc9TBhsqtO}1ng$}(DivgF_p)9)@Uqe7qn`P1hmfujyYvaG~Bsd;R0RvTR|g$p}=~+ zM{XL?+8>tMF4$Q!ZN^ceXk`TktQ~NTJY1|5LB*ORghxc_~Y7Tw;`PDd7=?Wya)r zD`&>Fm9@kbL=zkp9eO|xMGb))+B-}S90)fRvNT4xV8$E)>M(kOhdC; zktPCMssL;mS64YIPYE3}U4M|R0uRz)@hQ10JxQH4Gr6d^x}&3xhC?$)QD9|z-;4~w ziHv%z3|dy8Mg+%VAt#+qO(K7xMNitN;WA01pr2%b3WyAK}IaF#LuIdhu5r} z2R<=jRh?SWtaZgLoh=RP3;0PpS6jU^H3~>f#1VNxMI06Y71r-e)qw3tc{r-QpODKi2 zuz)~ea0C)E3Mv|U+Sr!SCECtP1cpFia0C)E3Mv{phByNog1`_c434m;!+o1nFeuw; S^GrUumNhFPfxr-`-T?sH6@$6} literal 0 HcmV?d00001