/* Ġ-*- mode : java ; Ġc - basic - offset : 2 ; Ġindent - tabs - mode : nil Ġ-*- Ġ*/ Ġ/* Ċ Copyright Ġ( c ) Ġ 2 0 0 0 - 2 0 1 1 Ġy mn k , ĠJ Craft , Inc . ĠAll Ġrights Ġreserved . Ċ Ċ Red ist ribution Ġand Ġuse Ġin Ġsource Ġand Ġbinary Ġforms , Ġwith Ġor Ġwithout Ċ modification , Ġare Ġpermitted Ġprovided Ġthat Ġthe Ġfollowing Ġconditions Ġare Ġmet : ĊĊĠĠ 1 . ĠRedistributions Ġof Ġsource Ġcode Ġmust Ġretain Ġthe Ġabove Ġcopyright Ġnotice , ĊĠĠĠĠ Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer . ĊĊĠĠ 2 . ĠRedistributions Ġin Ġbinary Ġform Ġmust Ġreproduce Ġthe Ġabove Ġcopyright ĠĊĠĠĠĠ Ġnotice , Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer Ġin ĠĊĠĠĠĠ Ġthe Ġdocumentation Ġand / or Ġother Ġmaterials Ġprovided Ġwith Ġthe Ġdistribution . ĊĊĠĠ 3 . ĠThe Ġnames Ġof Ġthe Ġauthors Ġmay Ġnot Ġbe Ġused Ġto Ġendorse Ġor Ġpromote Ġproducts ĊĠĠĠĠ Ġderived Ġfrom Ġthis Ġsoftware Ġwithout Ġspecific Ġprior Ġwritten Ġpermission . Ċ Ċ THIS ĠSOFTWARE ĠIS ĠPROVIDED Ġ`` AS ĠIS '' ĠAND ĠANY ĠEX PRES SED ĠOR ĠIMPLIED ĠWARRANTIES , Ċ INCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠTHE ĠIMPLIED ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND Ċ FITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠARE ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠJ CR AFT , Ċ INC . ĠOR ĠANY ĠCONTRIBUTORS ĠTO ĠTHIS ĠSOFTWARE ĠBE ĠLIABLE ĠFOR ĠANY ĠDIRECT , ĠINDIRECT , Ċ INC IDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL ĠDAMAGES Ġ( INCLUDING , ĠBUT ĠNOT Ċ LIMIT ED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR ĠSERVICES ; ĠLOSS ĠOF ĠUSE , ĠDATA , Ċ OR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER ĠCAUSED ĠAND ĠON ĠANY ĠTHEORY ĠOF Ċ LIABILITY , ĠWHETHER ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , ĠOR ĠTORT Ġ( INCLUDING Ċ NE GLIGENCE ĠOR ĠOTHERWISE ) ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE ĠUSE ĠOF ĠTHIS ĠSOFTWARE , Ċ E VEN ĠIF ĠADVISED ĠOF ĠTHE ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ Ġ*/ Ċ /* Ċ Ġ* ĠThis Ġprogram Ġis Ġbased Ġon Ġzlib - 1 . 1 . 3 , Ġso Ġall Ġcredit Ġshould Ġgo Ġauthors Ċ Ġ* ĠJean - lo up ĠG ail ly ( j lo up @ gzip . org ) Ġand ĠMark ĠAd ler ( mad ler @ al umn i . cal tech . edu ) Ċ Ġ* Ġand Ġcontributors Ġof Ġzlib . Ċ Ġ*/ Ċ package Ġcom . j tran sc . compression . jz lib Ċ Ċ import Ġkotlin . jvm . Jvm Over loads Ċ Ċ /** Ċ Ġ* ĠZ Stream Ċ Ġ* Ċ Ġ* Ġdeprecated Ġ ĠNot Ġfor Ġpublic Ġuse Ġin Ġthe Ġfuture . Ċ Ġ*/ Ċ //@ Deprecated Ċ open Ġclass ĠZ Stream Ġ@ Jvm Over loads Ġconstructor ( ad ler : ĠCheck sum Ġ= ĠAd ler 3 2 ()) Ġ{ Ċ ĉ var Ġnext In Ġ// Ġnext Ġinput Ġbyte Ċĉ ĉ : ĠByteArray ? Ċ ĉ var Ġnext In Index Ġ= Ġ 0 Ċ ĉ var Ġavail In Ġ// Ġnumber Ġof Ġbytes Ġavailable Ġat Ġnext _ in Ċĉ ĉ = Ġ 0 Ċ ĉ var Ġtotal In Ġ// Ġtotal Ġnb Ġof Ġinput Ġbytes Ġread Ġso Ġfar Ċĉ ĉ : ĠLong Ġ= Ġ 0 Ċ ĉ var Ġnext Out Ġ// Ġnext Ġoutput Ġbyte Ġshould Ġbe Ġput Ġthere Ċĉ ĉ : ĠByteArray ? Ċ ĉ var Ġnext Out Index Ġ= Ġ 0 Ċ ĉ var Ġavail Out Ġ// Ġremaining Ġfree Ġspace Ġat Ġnext _ out Ċĉ ĉ = Ġ 0 Ċ ĉ var Ġtotal Out Ġ// Ġtotal Ġnb Ġof Ġbytes Ġoutput Ġso Ġfar Ċĉ ĉ : ĠLong Ġ= Ġ 0 Ċ ĉ var Ġmessage : ĠString ? Ġ= Ġnull Ċ ĉ var Ġd state : ĠDef late ? Ġ= Ġnull Ċ ĉ var Ġist ate : ĠInf late ? Ġ= Ġnull Ċ ĉ var Ġdata _ type Ġ// Ġbest Ġguess Ġabout Ġthe Ġdata Ġtype : Ġascii Ġor Ġbinary Ċĉ ĉ = Ġ 0 Ċ ĉ var Ġad ler : ĠCheck sum Ċ ĉ fun Ġinf late Init ( nowrap : ĠBoolean ): ĠInt Ġ{ Ċĉ ĉ return Ġinf late Init ( DEF _ W BITS , Ġnowrap ) Ċ ĉ } ĊĊ ĉ fun Ġinf late Init ( wrapper Type : ĠJ Z lib . Wrapper Type ?): ĠInt Ġ{ Ċĉ ĉ return Ġinf late Init ( DEF _ W BITS , Ġwrapper Type ) Ċ ĉ } ĊĊ ĉ fun Ġinf late Init ( w : ĠInt , Ġwrapper Type : ĠJ Z lib . Wrapper Type ): ĠInt Ġ{ Ċĉ ĉ var Ġw Ġ= Ġw Ċĉ ĉ var Ġnowrap Ġ= Ġfalse Ċĉ ĉ if Ġ( wrapper Type Ġ=== ĠJ Z lib . W _ NONE ) Ġ{ Ċĉĉ ĉ nowrap Ġ= Ġtrue Ċĉ ĉ } Ġelse Ġif Ġ( wrapper Type Ġ=== ĠJ Z lib . W _ GZIP ) Ġ{ Ċĉĉ ĉ w Ġ+= Ġ 1 6 Ċĉ ĉ } Ġelse Ġif Ġ( wrapper Type Ġ=== ĠJ Z lib . W _ ANY ) Ġ{ Ċĉĉ ĉ w Ġ= Ġw Ġor ĠInf late . IN FL ATE _ ANY Ċĉ ĉ } Ġelse Ġif Ġ( wrapper Type Ġ=== ĠJ Z lib . W _ Z LIB ) Ġ{ Ċĉ ĉ } Ċĉ ĉ return Ġinf late Init ( w , Ġnowrap ) Ċ ĉ } ĊĊ ĉ @ Jvm Over loads Ċ ĉ fun Ġinf late Init ( w : ĠInt Ġ= ĠDEF _ W BITS , Ġnowrap : ĠBoolean Ġ= Ġfalse ): ĠInt Ġ{ Ċĉ ĉ ist ate Ġ= ĠInf late ( this ) Ċĉ ĉ return Ġist ate . inflate Init ( if Ġ( nowrap ) Ġ- w Ġelse Ġw ) Ċ ĉ } ĊĊ ĉ fun Ġinf late ( f : ĠInt ): ĠInt Ġ{ Ċĉ ĉ return Ġif Ġ( ist ate Ġ== Ġnull ) ĠZ _ STREAM _ ERROR Ġelse Ġist ate . inflate ( Ċĉĉ ĉ f Ċĉ ĉ ) Ċ ĉ } ĊĊ ĉ fun Ġinf late End (): ĠInt Ġ{ Ċĉ ĉ return Ġif Ġ( ist ate Ġ== Ġnull ) ĠZ _ STREAM _ ERROR Ġelse Ġist ate . inflate End () Ċĉ ĉ // ĠĠĠ Ġist ate Ġ= Ġnull ; Ċ ĉ } ĊĊ ĉ fun Ġinf late Sync (): ĠInt Ġ{ Ċĉ ĉ return Ġif Ġ( ist ate Ġ== Ġnull ) ĠZ _ STREAM _ ERROR Ġelse Ġist ate . inflate Sync () Ċ ĉ } ĊĊ ĉ fun Ġinf late Sync Point (): ĠInt Ġ{ Ċĉ ĉ return Ġif Ġ( ist ate Ġ== Ġnull ) ĠZ _ STREAM _ ERROR Ġelse Ġist ate . inflate Sync Point () Ċ ĉ } ĊĊ ĉ fun Ġinf late Set Dictionary ( dictionary : ĠByteArray ?, Ġdict Length : ĠInt ): ĠInt Ġ{ Ċĉ ĉ return Ġif Ġ( ist ate Ġ== Ġnull ) ĠZ _ STREAM _ ERROR Ġelse Ġist ate . inflate Set Dictionary ( dictionary , Ġ 0 , Ġdict Length ) Ċ ĉ } ĊĊ ĉ fun Ġinf late Finished (): ĠBoolean Ġ{ Ċĉ ĉ return Ġist ate . mode Ġ=== Ġ 1 2 Ġ/* DONE */ Ċ ĉ } ĊĊ ĉ fun Ġdef late Init ( level : ĠInt , Ġnowrap : ĠBoolean ): ĠInt Ġ{ Ċĉ ĉ return Ġdef late Init ( level , ĠMAX _ W BITS , Ġnowrap ) Ċ ĉ } ĊĊ ĉ fun Ġdef late Init ( level : ĠInt , Ġbits : ĠInt , Ġmem level : ĠInt , Ġwrapper Type : ĠJ Z lib . Wrapper Type ): ĠInt Ġ{ Ċĉ ĉ var Ġbits Ġ= Ġbits Ċĉ ĉ if Ġ( bits Ġ< Ġ 9 Ġ|| Ġbits Ġ> Ġ 1 5 ) Ġ{ Ċĉĉ ĉ return ĠZ _ STREAM _ ERROR Ċĉ ĉ } Ċĉ ĉ if Ġ( wrapper Type Ġ=== ĠJ Z lib . W _ NONE ) Ġ{ Ċĉĉ ĉ bits Ġ*= Ġ- 1 Ċĉ ĉ } Ġelse Ġif Ġ( wrapper Type Ġ=== ĠJ Z lib . W _ GZIP ) Ġ{ Ċĉĉ ĉ bits Ġ+= Ġ 1 6 Ċĉ ĉ } Ġelse Ġif Ġ( wrapper Type Ġ=== ĠJ Z lib . W _ ANY ) Ġ{ Ċĉĉ ĉ return ĠZ _ STREAM _ ERROR Ċĉ ĉ } Ġelse Ġif Ġ( wrapper Type Ġ=== ĠJ Z lib . W _ Z LIB ) Ġ{ Ċĉ ĉ } Ċĉ ĉ return Ġthis . def late Init ( level , Ġbits , Ġmem level ) Ċ ĉ } ĊĊ ĉ fun Ġdef late Init ( level : ĠInt , Ġbits : ĠInt , Ġmem level : ĠInt ): ĠInt Ġ{ Ċĉ ĉ d state Ġ= ĠDef late ( this ) Ċĉ ĉ return Ġd state . def late Init ( level , Ġbits , Ġmem level ) Ċ ĉ } ĊĊ ĉ @ Jvm Over loads Ċ ĉ fun Ġdef late Init ( level : ĠInt , Ġbits : ĠInt Ġ= ĠMAX _ W BITS , Ġnowrap : ĠBoolean Ġ= Ġfalse ): ĠInt Ġ{ Ċĉ ĉ d state Ġ= ĠDef late ( this ) Ċĉ ĉ return Ġd state . def late Init ( level , Ġif Ġ( nowrap ) Ġ- bits Ġelse Ġbits ) Ċ ĉ } ĊĊ ĉ fun Ġdef late ( flush : ĠInt ): ĠInt Ġ{ Ċĉ ĉ return Ġif Ġ( d state Ġ== Ġnull ) Ġ{ Ċĉĉ ĉ Z _ STREAM _ ERROR Ċĉ ĉ } Ġelse Ġd state . def late ( flush ) Ċ ĉ } ĊĊ ĉ fun Ġdef late End (): ĠInt Ġ{ Ċĉ ĉ if Ġ( d state Ġ== Ġnull ) Ġreturn ĠZ _ STREAM _ ERROR Ċĉ ĉ val Ġret : ĠInt Ġ= Ġd state . def late End () Ċĉ ĉ d state Ġ= Ġnull Ċĉ ĉ return Ġret Ċ ĉ } ĊĊ ĉ fun Ġdef late Params ( level : ĠInt , Ġstrategy : ĠInt ): ĠInt Ġ{ Ċĉ ĉ return Ġif Ġ( d state Ġ== Ġnull ) ĠZ _ STREAM _ ERROR Ġelse Ġd state . def late Params ( Ċĉĉ ĉ level , Ċĉĉ ĉ strategy Ċĉ ĉ ) Ċ ĉ } ĊĊ ĉ fun Ġdef late Set Dictionary ( dictionary : ĠByteArray ?, Ġdict Index : ĠInt , Ġdict Length : ĠInt ): ĠInt Ġ{ Ċĉ ĉ return Ġif Ġ( d state Ġ== Ġnull ) ĠZ _ STREAM _ ERROR Ġelse Ġd state . def late Set Dictionary ( Ċĉĉ ĉ dictionary , Ċĉĉ ĉ dict Index , Ċĉĉ ĉ dict Length Ċĉ ĉ ) Ċ ĉ } ĊĊ ĉ // ĠFlush Ġas Ġmuch Ġpending Ġoutput Ġas Ġpossible . ĠAll Ġdef late () Ġoutput Ġgoes Ċ ĉ // Ġthrough Ġthis Ġfunction Ġso Ġsome Ġapplications Ġmay Ġwish Ġto Ġmodify Ġit Ċ ĉ // Ġto Ġavoid Ġalloc ating Ġa Ġlarge Ġstrm -> next _ out Ġbuffer Ġand Ġcopying Ġinto Ġit . Ċ ĉ // Ġ( See Ġalso Ġread _ buf ()). Ċ ĉ fun Ġflush _ pending () Ġ{ Ċĉ ĉ var Ġlen : ĠInt Ġ= Ġd state . pending Ċĉ ĉ if Ġ( len Ġ> Ġavail Out ) Ġlen Ġ= Ġavail Out Ċĉ ĉ if Ġ( len Ġ== Ġ 0 ) Ġreturn Ċĉ ĉ if Ġ( d state . pending _ buf . length Ġ<= Ġd state . pending _ out Ġ|| Ġnext Out !!. size Ġ<= Ġnext Out Index Ġ|| Ġd state . pending _ buf . length Ġ< Ġd state . pending _ out Ġ+ Ġlen Ġ|| Ġnext Out !!. size Ġ< Ġnext Out Index Ġ+ Ġlen ) Ġ{ Ċĉĉ ĉ // System . out . println ( d state . pending _ buf . length +", Ġ"+ d state . pending _ out + Ċĉĉ ĉ // ĉĉ Ġ", Ġ"+ next _ out . length +", Ġ"+ next _ out _ index +", Ġ"+ len ); Ċĉĉ ĉ // System . out . println (" avail _ out ="+ avail _ out ); Ċĉ ĉ } Ċĉ ĉ java . lang . System . arraycopy ( Ċĉĉ ĉ d state . pending _ buf , Ġd state . pending _ out , Ċĉĉ ĉ next Out , Ġnext Out Index , Ġlen Ċĉ ĉ ) Ċĉ ĉ next Out Index Ġ+= Ġlen Ċĉ ĉ d state . pending _ out Ġ+= Ġlen Ċĉ ĉ total Out Ġ+= Ġlen . to Long () Ċĉ ĉ avail Out Ġ-= Ġlen Ċĉ ĉ d state . pending Ġ-= Ġlen Ċĉ ĉ if Ġ( d state . pending Ġ=== Ġ 0 ) Ġ{ Ċĉĉ ĉ d state . pending _ out Ġ= Ġ 0 Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ // ĠRead Ġa Ġnew Ġbuffer Ġfrom Ġthe Ġcurrent Ġinput Ġstream , Ġupdate Ġthe Ġad ler 3 2 Ċ ĉ // Ġand Ġtotal Ġnumber Ġof Ġbytes Ġread . Ġ ĠAll Ġdef late () Ġinput Ġgoes Ġthrough Ċ ĉ // Ġthis Ġfunction Ġso Ġsome Ġapplications Ġmay Ġwish Ġto Ġmodify Ġit Ġto Ġavoid Ċ ĉ // Ġalloc ating Ġa Ġlarge Ġstrm -> next _ in Ġbuffer Ġand Ġcopying Ġfrom Ġit . Ċ ĉ // Ġ( See Ġalso Ġflush _ pending ()). Ċ ĉ fun Ġread _ buf ( buf : ĠByteArray ?, Ġstart : ĠInt , Ġsize : ĠInt ): ĠInt Ġ{ Ċĉ ĉ var Ġlen Ġ= Ġavail In Ċĉ ĉ if Ġ( len Ġ> Ġsize ) Ġlen Ġ= Ġsize Ċĉ ĉ if Ġ( len Ġ== Ġ 0 ) Ġreturn Ġ 0 Ċĉ ĉ avail In Ġ-= Ġlen Ċĉ ĉ if Ġ( d state . wrap Ġ!== Ġ 0 ) Ġ{ Ċĉĉ ĉ ad ler . update ( next In , Ġnext In Index , Ġlen ) Ċĉ ĉ } Ċĉ ĉ java . lang . System . arraycopy ( next In , Ġnext In Index , Ġbuf , Ġstart , Ġlen ) Ċĉ ĉ next In Index Ġ+= Ġlen Ċĉ ĉ total In Ġ+= Ġlen . to Long () Ċĉ ĉ return Ġlen Ċ ĉ } ĊĊ ĉ fun Ġget Ad ler (): ĠInt Ġ{ Ċĉ ĉ return Ġad ler . getValue () Ċ ĉ } ĊĊ ĉ fun Ġfree () Ġ{ Ċĉ ĉ next In Ġ= Ġnull Ċĉ ĉ next Out Ġ= Ġnull Ċĉ ĉ message Ġ= Ġnull Ċ ĉ } ĊĊ ĉ fun Ġset Output ( buf : ĠByteArray ) Ġ{ Ċĉ ĉ setOutput ( buf , Ġ 0 , Ġbuf . size ) Ċ ĉ } ĊĊ ĉ fun Ġset Output ( buf : ĠByteArray ?, Ġoff : ĠInt , Ġlen : ĠInt ) Ġ{ Ċĉ ĉ next Out Ġ= Ġbuf Ċĉ ĉ next Out Index Ġ= Ġoff Ċĉ ĉ avail Out Ġ= Ġlen Ċ ĉ } ĊĊ ĉ fun Ġset Input ( buf : ĠByteArray ) Ġ{ Ċĉ ĉ setInput ( buf , Ġ 0 , Ġbuf . size , Ġfalse ) Ċ ĉ } ĊĊ ĉ fun Ġset Input ( buf : ĠByteArray , Ġappend : ĠBoolean ) Ġ{ Ċĉ ĉ setInput ( buf , Ġ 0 , Ġbuf . size , Ġappend ) Ċ ĉ } ĊĊ ĉ fun Ġset Input ( buf : ĠByteArray ?, Ġoff : ĠInt , Ġlen : ĠInt , Ġappend : ĠBoolean ) Ġ{ Ċĉ ĉ if Ġ( len Ġ<= Ġ 0 Ġ&& Ġappend Ġ&& Ġnext In Ġ!= Ġnull ) Ġreturn Ċĉ ĉ if Ġ( avail In Ġ> Ġ 0 Ġ&& Ġappend ) Ġ{ Ċĉĉ ĉ val Ġtmp Ġ= ĠByteArray ( avail In Ġ+ Ġlen ) Ċĉĉ ĉ java . lang . System . arraycopy ( next In , Ġnext In Index , Ġtmp , Ġ 0 , Ġavail In ) Ċĉĉ ĉ java . lang . System . arraycopy ( buf , Ġoff , Ġtmp , Ġavail In , Ġlen ) Ċĉĉ ĉ next In Ġ= Ġtmp Ċĉĉ ĉ next In Index Ġ= Ġ 0 Ċĉĉ ĉ avail In Ġ+= Ġlen Ċĉ ĉ } Ġelse Ġ{ Ċĉĉ ĉ next In Ġ= Ġbuf Ċĉĉ ĉ next In Index Ġ= Ġoff Ċĉĉ ĉ avail In Ġ= Ġlen Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ fun Ġend (): ĠInt Ġ{ Ċĉ ĉ return ĠZ _ OK Ċ ĉ } ĊĊ ĉ fun Ġfinished (): ĠBoolean Ġ{ Ċĉ ĉ return Ġfalse Ċ ĉ } ĊĊ ĉ comp anion Ġobject Ġ{ Ċĉ ĉ private Ġconst Ġval ĠMAX _ W BITS Ġ= Ġ 1 5 Ġ// Ġ 3 2 K ĠL Z 7 7 Ġwindow Ċĉ ĉ private Ġconst Ġval ĠDEF _ W BITS Ġ= ĠMAX _ W BITS Ċĉ ĉ private Ġconst Ġval ĠZ _ NO _ FLUSH Ġ= Ġ 0 Ċĉ ĉ private Ġconst Ġval ĠZ _ PAR TIAL _ FLUSH Ġ= Ġ 1 Ċĉ ĉ private Ġconst Ġval ĠZ _ SYNC _ FLUSH Ġ= Ġ 2 Ċĉ ĉ private Ġconst Ġval ĠZ _ FULL _ FLUSH Ġ= Ġ 3 Ċĉ ĉ private Ġconst Ġval ĠZ _ FIN ISH Ġ= Ġ 4 Ċĉ ĉ private Ġconst Ġval ĠMAX _ MEM _ LEVEL Ġ= Ġ 9 Ċĉ ĉ private Ġconst Ġval ĠZ _ OK Ġ= Ġ 0 Ċĉ ĉ private Ġconst Ġval ĠZ _ STREAM _ END Ġ= Ġ 1 Ċĉ ĉ private Ġconst Ġval ĠZ _ NEED _ DICT Ġ= Ġ 2 Ċĉ ĉ private Ġconst Ġval ĠZ _ ERR NO Ġ= Ġ- 1 Ċĉ ĉ private Ġconst Ġval ĠZ _ STREAM _ ERROR Ġ= Ġ- 2 Ċĉ ĉ private Ġconst Ġval ĠZ _ DATA _ ERROR Ġ= Ġ- 3 Ċĉ ĉ private Ġconst Ġval ĠZ _ MEM _ ERROR Ġ= Ġ- 4 Ċĉ ĉ private Ġconst Ġval ĠZ _ BUF _ ERROR Ġ= Ġ- 5 Ċĉ ĉ private Ġconst Ġval ĠZ _ VERSION _ ERROR Ġ= Ġ- 6 Ċ ĉ } ĊĊ ĉ init Ġ{ Ċĉ ĉ this . ad ler Ġ= Ġad ler Ċ ĉ } Ċ }