=&org/compiere/install/ConfigurationDatajava/lang/Objectp_panel)Lorg/compiere/install/ConfigurationPanel; p_propertiesLjava/util/Properties;m_adempiereHomeLjava/io/File;logLorg/compiere/util/CLogger;IDEMPIERE_ENV_FILELjava/lang/String; ConstantValueidempiereEnv.propertiesIDEMPIERE_HOME JAVA_HOMEIDEMPIERE_JAVA_OPTIONSKEYSTORE_PASSWORD myPasswordADEMPIERE_APPS_TYPEADEMPIERE_APPS_SERVERADEMPIERE_APPS_DEPLOYADEMPIERE_JNP_PORT!ADEMPIERE_WEB_PORT#ADEMPIERE_SSL_PORT%ADEMPIERE_WEB_ALIAS'ADEMPIERE_KEYSTORE)ADEMPIERE_KEYSTOREPASS+ADEMPIERE_KEYSTORECODEALIAS-ADEMPIERE_KEYSTOREWEBALIAS/ADEMPIERE_CERT_CN1ADEMPIERE_CERT_ORG3ADEMPIERE_CERT_ORG_UNIT5ADEMPIERE_CERT_LOCATION7ADEMPIERE_CERT_STATE9ADEMPIERE_CERT_COUNTRY;ADEMPIERE_DB_TYPE=ADEMPIERE_DB_PATH?ADEMPIERE_DB_SERVERAADEMPIERE_DB_PORTCADEMPIERE_DB_NAMEEADEMPIERE_DB_URLGADEMPIERE_DB_USERIADEMPIERE_DB_PASSWORDKADEMPIERE_DB_SYSTEMMADEMPIERE_DB_EXISTSOADEMPIERE_MAIL_SERVERQADEMPIERE_MAIL_USERSADEMPIERE_MAIL_PASSWORDUADEMPIERE_ADMIN_EMAILWADEMPIERE_MAIL_UPDATEDYADEMPIERE_FTP_SERVER[ADEMPIERE_FTP_USER]ADEMPIERE_FTP_PASSWORD_ADEMPIERE_FTP_PREFIXaADEMPIERE_WEBSTORESc secretVarsLjava/util/List; Signature$Ljava/util/List; JAVATYPE_SUN JAVATYPE_MACJAVATYPE_OPENJDKJAVATYPE[Ljava/lang/String; m_javaConfigLorg/compiere/install/Config; m_appsConfig&Lorg/compiere/install/ConfigAppServer;DBTYPEm_databaseConfig([Lorg/adempiere/install/IDatabaseConfig;()VCode y{zorg/compiere/util/CLogger |} getCLogger.(Ljava/lang/Class;)Lorg/compiere/util/CLogger;  java/lang/String java/util/Arrays asList%([Ljava/lang/Object;)Ljava/util/List;  efsun  imac  jOpenJDK  k  lm  rmLineNumberTableLocalVariableTable,(Lorg/compiere/install/ConfigurationPanel;)V  v  java/util/Properties  org/compiere/install/ConfigVM +(Lorg/compiere/install/ConfigurationData;)V  no$org/compiere/install/ConfigAppServer  pq  st  vinitDatabaseConfigthis(Lorg/compiere/install/ConfigurationData;panel 2org/adempiere/base/equinox/EquinoxExtensionLocator instance6()Lorg/adempiere/base/equinox/EquinoxExtensionLocator;%org/adempiere/install/IDatabaseConfig listF(Ljava/lang/Class;)Lorg/adempiere/base/equinox/EquinoxExtensionHolder; 1org/adempiere/base/equinox/EquinoxExtensionHolder  getExtensions()Ljava/util/List; java/util/List size()I get(I)Ljava/lang/Object; getName()Ljava/lang/String; configListiILocalVariableTypeTable9Ljava/util/List; StackMapTableupdateProperty'(Ljava/lang/String;Ljava/lang/String;)V &(Ljava/lang/Object;)Ljava/lang/Object; put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; equals(Ljava/lang/Object;)Zpropertyvalue currentValue getProperty&(Ljava/lang/String;)Ljava/lang/String; load()Z #org/compiere/model/SystemProperties getIdempiereHome lengthuser.dir java/lang/System   java/io/File   separator  makeConcatWithConstants8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;  (Ljava/lang/String;)V  existsjava/io/FileInputStream  (Ljava/io/File;)V  (Ljava/io/InputStream;)V  vclose !#"java/lang/Exception $toString y& 'warning )+*java/util/logging/Level ,-INFOLjava/util/logging/Level; y/ 01 isLoggable(Ljava/util/logging/Level;)Z # y4 5info 8:9org/compiere/model/MSystem ; isSecureProps = >?iterator()Ljava/util/Iterator; ACBjava/util/Iterator DEnext()Ljava/lang/Object; G H containsKey JLKorg/compiere/util/Ini MgetVar AO PhasNextROBF: T UV startsWith(Ljava/lang/String;)Z XZY(org/eclipse/jetty/util/security/Password [ deobfuscate ] ^_putAll(Ljava/util/Map;)V a bvinitJava d e setJavaHome g hsetJavaOptions j ksetAdempiereHome m n setKeyStore p q setAppsServer s tsetAppsServerWebPort v wsetAppsServerSSLPort y z{setDatabaseType(Ljava/lang/String;)I } ~ initDatabase(Ljava/lang/String;I)V  setDatabaseDiscovered  setDatabaseServer  setDatabasePort  setDatabaseName  setDatabaseUser  setDatabasePassword  setDatabaseSystemPassword  setDatabaseExists 'org/compiere/install/ConfigurationPanel  fMailServerLjavax/swing/JTextField; javax/swing/JTextField setText   fMailUser   fMailPasswordLjavax/swing/JPasswordField; javax/swing/JPasswordField   fAdminEMail org/compiere/db/Database  DB_POSTGRESQL java/net/InetAddress  getLocalHost()Ljava/net/InetAddress;   getHostNameCannot get local host name y severeDefaults  vinitAppsServer0.0.0.0  ~  getDatabaseDiscovered  trim  resolveDatabaseName localhost adempiere   setMailServer   setMailUser  setMailPassword   setAdminEMail   setProperty8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object; anonymous user@host.commy-Xms64M -Xmx512M  getCanonicalHostName idempiere adempiereHome envLoadedZfileNameenvfisLjava/io/FileInputStream;eLjava/lang/Exception; secretVarvalobfKeystorePass keystorePassloadeds dbTypeIndexLjava/net/InetAddress;connectionName     fDatabaseTypeLjavax/swing/JComboBox;  javax/swing/JComboBox getSelectedIndex  (I)Ljava/lang/String;   getDatabaseNameindextest+(Lorg/adempiere/install/IDBConfigMonitor;)Z  testJava  ! testAdempiere # $% lAppsServerLjavax/swing/JLabel; ')(javax/swing/JLabel *getText , - setStatusBar / 0testAppsServer 2 3%lDatabaseServer 5 67 testDatabase<(Lorg/adempiere/install/IDBConfigMonitor;)Ljava/lang/String; 9 :% lMailServer < =testMailmonitor(Lorg/adempiere/install/IDBConfigMonitor;error B CgetAdempiereHome E G HIvalueOf&(Ljava/lang/Object;)Ljava/lang/String; L MNokAdempiereHomeLjavax/swing/JCheckBox;PErrorAdempiereHome R STsignalOK@(Ljavax/swing/JCheckBox;Ljava/lang/String;ZZLjava/lang/String;)V W XgetAbsolutePath Z  \^] org/compiere/install/KeyStoreMgt _getKeystoreFileName a b fKeyStore d ef getPassword()[C h i([C)V l mN okKeyStoreoKeyStorePassword \q r(Ljava/lang/String;[C)V t uf toCharArray \w x setCommonName \z {setOrganization \} ~setOrganizationUnit \  setLocation \ setState \  setCountry javax/swing/SwingUtilities getWindowAncestor'(Ljava/awt/Component;)Ljava/awt/Window;javax/swing/JFrame \ verify:(Ljavax/swing/JFrame;Ljava/lang/String;)Ljava/lang/String;passpwks"Lorg/compiere/install/KeyStoreMgt; )   getByName*(Ljava/lang/String;)Ljava/net/InetAddress; !  getMessage  N okMailServerErrorMailServer#javax/mail/internet/InternetAddress      testMailServerb(Ljava/net/InetAddress;Ljavax/mail/internet/InternetAddress;Ljava/lang/String;Ljava/lang/String;)Z  N okMailUser ErrorMail  #NoOK: EMail not configuredserver mailServermailUser mailPasswordadminEMailString adminEMail%Ljavax/mail/internet/InternetAddress;smtp.gmail.com  VequalsIgnoreCase  testPort(Ljava/net/InetAddress;IZ)ZOK: SMTP Server contacted y configSMTP Server NOT availableOK: POP3 Server contactedPOP3 Server NOT availableOK: IMAP4 Server contactedIMAP4 Server NOT availableNo active Mail Serverjava/lang/StringBuilderTest:    getProperties()Ljava/util/Properties;  accept:(Ljava/lang/StringBuilder;)Ljava/util/function/BiConsumer;  forEach"(Ljava/util/function/BiConsumer;)Vorg/compiere/util/EMailiDempiere Server Setup Test #  s(Ljava/util/Properties;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V  createAuthenticatorL(Ljava/lang/String;Ljava/lang/String;)Lorg/compiere/util/EMailAuthenticator;OK  send  ! getLocalizedMessagemail.store.protocolsmtp mail.transport.protocol  mail.host  mail.usermail.smtp.authtruemail.imaps.port993imaps ) -CONFIG$org/compiere/util/EMailAuthenticator  !#"javax/mail/Session $%getDefaultInstanceF(Ljava/util/Properties;Ljavax/mail/Authenticator;)Ljavax/mail/Session; ')(org/compiere/util/CLogMgt * isLevelFinest !, -.setDebug(Z)V1imap !3 45getStore&(Ljava/lang/String;)Ljavax/mail/Store; 89"javax/mail/NoSuchProviderException =?>javax/mail/Store @Aconnect9(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)VCStore - connected =E FGgetDefaultFolder()Ljavax/mail/Folder;IINBOX KMLjavax/mail/Folder NO getFolder'(Ljava/lang/String;)Ljavax/mail/Folder; KQ R getFullName KT UgetMessageCountW  X'(Ljava/lang/String;I)Ljava/lang/String; = [\javax/mail/MessagingExceptionisGmailsmtpOKimapOKadmailmsgLjava/lang/StringBuilder;emailLorg/compiere/util/EMail;expropssessionLjavax/mail/Session;storeLjavax/mail/Store;auth&Lorg/compiere/util/EMailAuthenticator;nsp$Ljavax/mail/NoSuchProviderException;folderLjavax/mail/Folder;inboxmexLjavax/mail/MessagingException;:(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Z w xyoutLjava/io/PrintStream;{  |K(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; ~java/io/PrintStream println java/net/URL  :(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V java/net/MalformedURLException  J(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;  openConnection()Ljava/net/URLConnection; java/net/URLConnection E getContent ) -FINE y fineprotocolportfileurlLjava/net/URL; Ljava/net/MalformedURLException;cLjava/net/URLConnection;oLjava/lang/Object;testServerPort(I)Zjava/net/ServerSocket  (I)V  getInetAddress   getLocalPortW   '(ILjava/lang/String;)Ljava/lang/String;ssLjava/net/ServerSocket;  getHostAddressWjava/net/Socket  (Ljava/net/InetAddress;I)V  9(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;  !" #java/io/IOException#host shouldBeUsed pingSocketLjava/net/Socket;Ljava/io/IOException;java/lang/ThrowablesaveADEMPIERE_MAIN_VERSION org/compiere/Adempiere  MAIN_VERSIONADEMPIERE_DATE_VERSION   DATE_VERSIONADEMPIERE_DB_VERSION   DB_VERSION ) -FINEST # y finest J . setClient$ J VloadProperties% java/io/FileOutputStream  J setVar  remove X  obfuscate  j+(Ljava/io/OutputStream;Ljava/lang/String;)V   vflush&  resLjava/util/ResourceBundle; ErrorSave java/util/ResourceBundle  getStringAdempiereServerSetup javax/swing/JOptionPane showConfirmDialog=(Ljava/awt/Component;Ljava/lang/Object;Ljava/lang/String;II)I ! "yerr ' #( )*+ + ,saveInifosLjava/io/FileOutputStream;secretProperties secretValuetLjava/lang/Throwable; Jj 5 6 DB_ORACLE 8 9getDatabaseType ; <getDatabaseServer > ?getDatabasePort A  C DgetDatabaseUser F GgetDatabasePassword IKJorg/compiere/db/CConnection Lz(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/compiere/db/CConnection; N O getAppsServer IQ R setAppsHost T UgetAppsServerWebPort IW X setWebPort Z [getAppsServerSSLPort I] ^ setSSLPort )` a-SEVEREc connection ye fC(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)Vh Connection Ij kl toStringLong(Z)Ljava/lang/String; Jn  Jp q.savePropertiesccTypeccLorg/compiere/db/CConnection; v wfAdempiereHome y  getKeyStore [Cpassword org/compiere/install/Config vinit   getJavaHome   fJavaHomejavaHomegetJavaOptions   fJavaOptions javaOptions     fAppsServer appsServer  fSSLPort java/lang/Integer {parseInt0appsServerSSLPort  . setEnabledenable  fWebPortappsServerWebPortselected,-   setSelectedIndex    discoverDatabases'(Ljava/lang/String;)[Ljava/lang/String; javax/swing/DefaultComboBoxModel  ([Ljava/lang/Object;)V   fDatabaseDiscovered   setModel(Ljavax/swing/ComboBoxModel;)V     fDatabaseName databasesmodel"Ljavax/swing/DefaultComboBoxModel;6Ljavax/swing/DefaultComboBoxModel;m./  d(Lorg/adempiere/install/IDBConfigMonitor;Lorg/compiere/install/ConfigurationData;)Ljava/lang/String;0 databaseType   EgetSelectedItem   setSelectedItem(Ljava/lang/Object;)VdatabaseDiscovered databaseName  fDatabasePassword|databasePassword   fDatabasePort databasePort  fDatabaseServerdatabaseServergetDatabaseSystemPassword  fSystemPassworddatabaseSystemPassword   N okdbExistsY javax/swing/JCheckBox . setSelecteddbExistsgetDatabaseExistsN #   isSelected   fDatabaseUser databaseUser getMailServer getMailUsergetMailPassword getAdminEMail getWebStores)(Ljava/sql/Connection;)Ljava/lang/String; 1SELECT WebContext FROM W_Store WHERE IsActive='Y'    java/sql/Connection createStatement()Ljava/sql/Statement; java/sql/Statement  executeQuery((Ljava/lang/String;)Ljava/sql/ResultSet; ,  append-(Ljava/lang/String;)Ljava/lang/StringBuilder; ! java/sql/ResultSet  # D %'&org/compiere/util/DB (+(Ljava/sql/ResultSet;Ljava/sql/Statement;)VconLjava/sql/Connection;sqlstmtLjava/sql/Statement;rsLjava/sql/ResultSet;resultkey dbChangedlambda$0@(Ljava/lang/StringBuilder;Ljava/lang/Object;Ljava/lang/Object;)V6= 8 9contains;********= kv SourceFileConfigurationData.javaBootstrapMethods DFE$java/lang/invoke/StringConcatFactory  G(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;CJidempiereEnv.propertiesLDatabaseType Index invalid: NDatabaseType Config missing: PNot found: AdempiereHome = ROK: AdempiereHome = TInvalid Key Store Password = VOK: KeyStore = XError Mail Server = Z - \Not valid:  - ^Not verified EMail = ` OK: EMail =  bdc"java/lang/invoke/LambdaMetafactory ef metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;a'(Ljava/lang/Object;Ljava/lang/Object;)Vh k 34jhoOK: Send Test Email to qCould NOT send Email to sConnecting to u Session=wStore=yMail IMAP Provider - { Mail IMAP - }OK: Mail Connect to  #Msg=Mail Connect testPort[,, , ]"No URL for Protocol=, Server=: In use=In Use= Not used=testServerPort:  : - created Port : testPort[, ]Open Socket : - : - close socket=idempiere.propertiesCannot save Properties to  - Cannot close file $DatabaseType Config class missing: Invalid DatabaseType= InnerClasses%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup!7    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh i j k lmnopq rmstGuvwNx~YLSYNSYVSYSYSYS2 i!$&&+(0+F*Iw;***Y*Y**Y***+*& Oa c. /,1P6Q:R;;vwWöL*+*=&*+S*2S+ֱ"V WX$Y)[9\IYV^ W Kf&0  K )"w7,M*+N-*+,W-, *+,W$,6*777$ w= *+ w YL+ + L=+ NY-:ֻY:*:~ %~(.~23*6=7E<:.@:*FI:*WN*,:QSW:*,WY:*\*`F*cF*f**i*,: :*,W*lF*o$F*$r&F*&u**>x6**F|FF*FBF*BDF*DFF*FJF*JLF*LNF*NPF*P*f**R**T**V**X *xW::W W~~ö3*`*+i*l**ȶo**:϶ **Ҷ**ն*׶*׶*ն****\F7*\նW*^W*`W*bW*F*W*(F*(W*.F*.W*0F*0W4MP! !m",4?HMPR]t   *8HVcgsy !"$%&'()*+-,7-E.O/]0g1u23458:;<=?BEJKL M!O*T.V7W;Y@ZF\J]Q_X`^anbxd~efgiklnrtuvwz{}~%1>JWYUA"7,- ?R  0  V1G^N$9!  A* (-*;a! M3?wQ* = ~%,*2~2%*2++ &/BO QQ F  w`*M, ~,*M, ~,%***"&+*.M, ~,%***1&+*+4M, ~,%***8&+*;M, ~,%n "$+<AELNUflpwy >?@!wX*Y*AD*D<*DFJM***KO,Q,~(.~*DFU3**DVW*DVYW*DV[N**-W*Y*`cg*,:<jM***kn,Q,*,W*\Y-*`cp\Y-sp:*2v*4y*6|*8*:*<***0*0M,<***kn,Q,~(.~-32$+9<?CEct$13AO]ky>$@r>34?NK@#'L\w\N@=w4 "***RL++=+N:+::-N=***-Q*RW-*RW***T:*Y*cg*V:***X::d\Y::  N=FN*=***-Q=V~(.~F3*XW*TW*VW*ZW_ ~-%~(. ~3*XW*TW*VW*ZW<FI! !A    !29<@FIKWY`nqtx !#&'(&)*+)01203478 9";/<1?5A@BMDTEbFeEhGkHmJqLMNOPQTUVWYZ[\ ^p "!29@<KkB " nK@!"KKK !6/w +ö666*+ Kș~̶6 ~Ѷ3*+ nș~ӶΧ ~ն3*+ ș~׶6 ~ٶ3.:***Q~%,:Y߷: * YY+ :  -W !~(.6~,F3$~,F%:~Y:WW +W -WWWW~.~+: : Y-:   :  &+~.~ F/  02: ~.>~ F6Χ+: ~ 7:%: ~ ;% +-<~B D:  HJ: ~(.~ P SV3 Y: ~ Z]NQ!SV8Sj!~[BPl mno(q1r4s7u@wVxbzk{}~ !<?NQS^`egp|"7SVXhjl|~ ^_`&@~arbc  Dde S fpsghi jk ^lm Xno l 0pq &rq st   % t!`>!=L! !=!# !=8S!FKK !=[uw v+,z}:Y+,::~+,::~F%5~F%"W~.~F!$:ps!R!$&*+58:AHM` p s t\ &fA/H(B$%!wSv}YM~.~,F,,M~,% ;>!&  7 ;!>"?$O%Q'*SS&?f7!w_v+}:Y+:e:~+F%$~.~+F ˧W: ˧W ˧W~+FF%~.~+FF˧:~κ%!!ejm`pw|r4589!:#<'=??`DeFjGn@pCrDwF|GHDFGIJLPQRTVH#Mp!!! LL Gwa*ڲܶW*W*W~.~**DVL+W*DVLMYY+MYN7P<:9@:*:-W*WN*,::*,W*,*,W7 *-\, N~+-  *"*  W  },N,#GW~+$*"*  W  }N~+-%&*"*  W  },N,#GW~+'*"*  W  }:,N,#GW~+(*"*  W  },N,#GW~+)*"*  W  }~+3**n"!lpsn nhPPVZ]jabc*eChGiWj\mlnnq~rsuvwxy{u "#3:>GPRVYhlpt "+46:=LNPRVZ^jqu~f Wn-./*0;4#12CUA+A A A!6!J26J2 2J2,wZ*DV34L*7*74*7LM+*:*=*@*B*EHM,*MP,*SV,*Y\N~_b-d7g,img,imo)Z]!Z "')*6>BJRZ]^kms~*r)ist^'5I! w/* Cwd!**u*  !Kkwg**u+ *+xzw/**`cL+Y+g*,{L++" & * , / |& nwg**`+ *,+x}bvw6*~ 67 w2*? wZ***GHJ ewg**+ *+xQRTUwZ***\]_ hwg**+ *+xfgijvw6* rs 0w2*{ Owd!***  !Kqwg**+ *+x[w0***&L+W*u!%&!" !&'.0!K!wwg**+ *&+xw.wX**Uw0***$L+W*r!%&!" !&'.0!K!twg**+ *$+xt.wX**~wH** =*>2+==*+|. +-0;?AG*HH2@ ~w ~%*2(~2%**w*FF*DF*2**L*2+NY-:**--*-2J $4;FI U a mt4<m2 28 -#9  67wV** **>x=  *2 *2+*& "#$$"%%1&8'A(H) VV>?%1 O z{wT=>2+==~+%** *>+x6 346894#<(>*?6A=BKDRF*TTR9wg$***>NOP#N $Kw]**WXYW AwX**+ӱ`abwd!***Fijk i !Kwg**+ *F+xrsuvGw:**ٶcL+ Y+g*LL++}"/ :|/ Awg**+ *L+x?w0**޶*DL+W*!%&!" !&'.0!K!wg**+ *D+x<wd!***B  !Kwg**+ *B+xw:**cL+ Y+g*NL++"/ :|/ Awg**+ *N+x.wX**wm#**+Ŷ *P+x"##w9*PL+ L+L** +Ŭ" !.89 / IDwd!***J   !Kwg**+ *J+xwd!***R  !Kwg**+ *R+x#$&'wd!***T./0 . !Kwg**+ *T+x78:;w:**cL+ Y+g*VL++BDEFG"K/L :|/ Awg**+ *V+xTUWXwd!***X_`a _ !Kwg**+ *X+xhiklwMN:Y :+ N-,:" WW"ڧ.:~ -$:N:-$:N-$:NNQ!^ljuvw x{|"}%-6D}NQS^dglntwy|H)*+,- ./{0cS '%  L!Z wM *+,W    1 2vwG*FW*DW   34w>+N,:*-5W-7*:W *W*<W&  #+.5=*>>>?81 2 .@AB,1HIHKHMHOHQHSHUHWHYH[H]H_gilmHnHpHrHtHvHxHzH|H~HHHHHHHHHHHHHHHHIHHHHHHHKHMHKHH