4, 6; 6< =>? @ A BCD E F GHI J KLg M NO P KQ R STU VW SX YZ` [\ [] ^ _ `a b cdef (;g (h (ij (k 'l Bm no pq rst \u vwx 3yz ;{|} ~    \ n pq K  K  ( ( U  U    ~   C c;    J    `   p  \      e  3 v 3{         '         l v p   ~ v M   K K p       pl     p    !" # $ %&'( )*+ ,-. /0 12 3 4 5 \6 7 8 9:; l <= >? @ AB C#$%&' D E SF GHIJ K L M N O P Q R ST U VWloggerLorg/slf4j/Logger;authenticationManagerCLorg/springframework/security/authentication/AuthenticationManager;RuntimeVisibleAnnotationsLjavax/annotation/Resource;jwtTokenHandler&Lcom/artfess/base/jwt/JwtTokenHandler;userDetailsServiceBLorg/springframework/security/core/userdetails/UserDetailsService; ssoConfig!Lcom/artfess/base/conf/SsoConfig;demoModeZ4Lorg/springframework/beans/factory/annotation/Value;value${system.mode.demo:false}uCFeignService'Lcom/artfess/base/feign/UCFeignService;applicationFeignService0Lcom/artfess/base/feign/ApplicationFeignService;loginLogService*Lcom/artfess/base/service/LoginLogService;loginUserService+Lcom/artfess/base/service/LoginUserService; saasConfig"Lcom/artfess/base/conf/SaaSConfig; jwtConfig!Lcom/artfess/base/conf/JwtConfig;()VCodeLineNumberTableLocalVariableTablethis:Lcom/artfess/base/controller/AuthenticationRestController;deleteUserDetailsCache(Ljava/lang/String;)V userAccountLjava/lang/String;beandelUserDetailsCache.Lcom/artfess/base/cache/annotation/CacheEvict;bpm:uc:userAccountkey #userAccountdelUsernamesCachebpm:uc:userNameputLoginErrorNumInCacheL(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;)Ljava/lang/Integer;tenantIdaccounterrorNumLjava/lang/Integer;,Lcom/artfess/base/cache/annotation/CachePut;bpm:uc:userLoginError#account+'_'+#tenantId firstCache.Lcom/artfess/base/cache/annotation/FirstCache; expireTime,timeUnitLjava/util/concurrent/TimeUnit;SECONDSgetUserLoginErrorNumCache9(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Integer;-Lcom/artfess/base/cache/annotation/Cacheable;delUserLoginErrorNumCache'(Ljava/lang/String;Ljava/lang/String;)VcreateAuthenticationTokenZ(Lcom/artfess/base/jwt/JwtAuthenticationRequest;)Lorg/springframework/http/ResponseEntity;syJ lockedTimeLjava/time/LocalDateTime;intervalMinutesLjava/lang/Long;user Lcom/artfess/uc/api/model/IUser;autoUnlockTimece1Lcom/artfess/base/exception/CertificateException;eLjava/lang/Exception; loginTimesloginMsg lockStatusI lockTimesenableipallowdedipListLjava/util/List; machineIdListmachineService7Lcom/artfess/base/service/SecurityMachinePersonService;authenticationRequest/Lcom/artfess/base/jwt/JwtAuthenticationRequest; reqAccount reqPassworderrorMsg userDetails;Lorg/springframework/security/core/userdetails/UserDetails;service-Lcom/artfess/base/service/PwdStrategyService;json)Lcom/fasterxml/jackson/databind/JsonNode;request'Ljavax/servlet/http/HttpServletRequest;session Ljavax/servlet/http/HttpSession;IPisMobiletokenuserNameuserId loginStatus userAttrsLjava/util/Map;LocalVariableTypeTable$Ljava/util/List;5Ljava/util/Map; StackMapTable?XYI OZ[q\]^_` Exceptionsa Signature](Lcom/artfess/base/jwt/JwtAuthenticationRequest;)Lorg/springframework/http/ResponseEntity<*>;8Lorg/springframework/web/bind/annotation/RequestMapping;/authmethod7Lorg/springframework/web/bind/annotation/RequestMethod;POSTproducesapplication/json; charset=utf-8%Lio/swagger/annotations/ApiOperation; 登录系统 httpMethodnotes"RuntimeVisibleParameterAnnotations5Lorg/springframework/web/bind/annotation/RequestBody;isAdmin(Ljava/lang/String;)Z_accounttmpsplit[Ljava/lang/String;getUserNameWithCas8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;jsonNodeticket casUserDetailusername errorCodebgetUserNameWithOauth oauthCheckUrl checkResult checkJNodeheader tokenResultcode oauthTokenUrlstufixssoAuthy(Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/lang/String;)Lorg/springframework/http/ResponseEntity;Ljava/util/Optional;ssoModemode(Ljava/util/Optional;cd(Ljava/util/Optional;Ljava/util/Optional;Ljava/util/Optional;Ljava/lang/String;)Lorg/springframework/http/ResponseEntity<*>; /sso/authGET登录系统-单点登录6Lorg/springframework/web/bind/annotation/RequestParam; ssoWeixin?(Ljava/util/Optional;)Lorg/springframework/http/ResponseEntity;wxWorkId simpleUser resultJsonresult0Lcom/fasterxml/jackson/databind/node/ObjectNode;errcodeV(Ljava/util/Optional;)Lorg/springframework/http/ResponseEntity<*>; /sso/weixin.企业微信应用进入手机端-单点登录 weixinPublicnodeopenidr%Lcom/artfess/base/model/CommonResult;PLcom/artfess/base/model/CommonResult;:/sso/weixinPublic微信公众号进入手机端dingTalk dingtalkId /sso/dingTalk钉钉进入手机端 dingTalkYkzdingtalkAccountdingtalkEmployeeCode/sso/ykz愉快政单点登录dingTalkYkzBand(Lcom/artfess/base/jwt/JwtAuthenticationRequest;Ljava/util/Optional;Ljava/util/Optional;)Lorg/springframework/http/ResponseEntity;bandUserAccount userUniteykzEmployeeCode ykzAccount(Lcom/artfess/base/jwt/JwtAuthenticationRequest;Ljava/util/Optional;Ljava/util/Optional;)Lorg/springframework/http/ResponseEntity<*>; /sso/ykzBand愉快政绑定并登录dingTalkYkzEmployeeCodeemployeeCodeEncrypt employeeCode/sso/ykzEmployeeCode愉快政EmployeeCode登录isUseCasz(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)Lorg/springframework/http/ResponseEntity;response(Ljavax/servlet/http/HttpServletResponse;map(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)Lorg/springframework/http/ResponseEntity;>; /sso/info单点登录配置 refreshAndGetAuthenticationTokenR(Ljavax/servlet/http/HttpServletRequest;)Lorg/springframework/http/ResponseEntity; authTokenrefreshedTokenU(Ljavax/servlet/http/HttpServletRequest;)Lorg/springframework/http/ResponseEntity<*>;/refresh 刷新tokensignoutN(Ljavax/servlet/http/HttpServletRequest;)Lcom/artfess/base/model/CommonResult;b(Ljavax/servlet/http/HttpServletRequest;)Lcom/artfess/base/model/CommonResult;/signout 退出登录F使token的状态失效,必须设置jwt.single和jwt.stricky均为true authenticatepassword checkUser5(Lcom/artfess/uc/api/model/IUser;Ljava/lang/String;)Z currenTimesize pwdCreateTimeinitPwdpwdRule pwdLengthduration initUpdatehandleSingleLogin:(ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V userAgente handleLogout((ZLjava/lang/String;Ljava/lang/String;)V SourceFile!AuthenticationRestController.java8Lorg/springframework/web/bind/annotation/RestController;Lio/swagger/annotations/Api;tags 认证接口&Lcom/artfess/base/annotation/ApiGroup;group group_bpm group_form group_systemgroup_uc 56 fgh ij8com/artfess/base/controller/AuthenticationRestController A= F=X kl <=  !m no+com/artfess/base/service/PwdStrategyService pqr st uv wxcom/artfess/uc/api/model/IUser yz {| }~Z ~+8   x[  x /0 l  l [\-1java/lang/RuntimeExceptionjava/lang/StringBuilder"账号在锁定状态中,请于【  0分钟】后登录,或联系管理员解锁! l 5= l  \java/lang/Exception Login failed account[%s].java/lang/Object  账号或密码错误 /com/artfess/base/exception/CertificateException l;org/springframework/security/authentication/LockedException账号被禁用或离职 \   s t  |  XYjava/lang/Integer 5 HI ,还剩: 次!*,账号已锁定,请联系管理员!账号或密码错误次数: 次5com/artfess/base/service/SecurityMachinePersonService ^ !|  _  java/lang/String 用户【:】已绑定涉密机器,不能在当前机器上登录!   Yjava/util/HashMap l l loginUser%s[%s]  `   () =.com/artfess/base/jwt/JwtAuthenticationResponse 34 x 5 *com/artfess/base/constants/SystemConstantsadmin, *%s/p3/serviceValidate?ticket=%s&service=%s "# l u  vauthenticationSuccess  lauthenticationFailure 6获取cas认证信息失败: =获取cas认证信息失败: l&code=%s&redirect_uri=%s l    l l l获取oauth认证信息失败 5 !当前服务未开启单点登录  lc  ucom/artfess/base/conf/SsoConfigcas oauth jwt 0com/artfess/base/exception/ServerRejectException单点登录模式匹配异常!通过单点认证登录成功。 = 5 +, weChatWork  !企业微信登录返回结果: =.com/fasterxml/jackson/databind/node/ObjectNode0UserId )* v t  查无与您企微账号[userid:]绑定的eip账号 5*企业微信登录失败 ,eip用户账号:企业微信登录失败 : errmsg weChatOffAcc    'com/fasterxml/jackson/databind/JsonNode微信登录失败 : dingtalkuserid v 查无与您钉钉账号[userid:钉钉登录失败!eip账号: 不存在钉钉登录失败 :  accountId查无与您愉快政账号【】绑定的系统账号! 5登录失败!账号:愉快政验证失败 : message _loginTime_] 愉快政账号【6】已绑定平台其他用户,请联系管理员!     =EmployeeCode不能为空!AEKXtLARGEZENITHAES/ECB/PKCS7Padding  解码错误!  v3查无与您愉快政账号绑定的系统账号!/登录验证失败 【employeeCode】为空!  ssoUrl  l ssoLogoutUrl l l     ,-#com/artfess/base/model/CommonResult 退出成功  Oorg/springframework/security/authentication/UsernamePasswordAuthenticationToken 5   ~ ~  xmobilepc    12! "| #$ #% -.e &\ '() *+-com/artfess/base/jwt/JwtAuthenticationRequest9org/springframework/security/core/userdetails/UserDetailsjava/time/LocalDateTimejava/lang/Long%javax/servlet/http/HttpServletRequestjavax/servlet/http/HttpSessionjava/util/Listjava/util/Iterator java/util/Map9org/springframework/security/core/AuthenticationExceptionjava/io/IOExceptionjava/util/Optional.org/apache/http/client/ClientProtocolException(com/artfess/base/service/LoginLogServicegetClass()Ljava/lang/Class;com/artfess/base/util/AppUtilgetBean%(Ljava/lang/Class;)Ljava/lang/Object; getUsername()Ljava/lang/String;@org/springframework/security/core/userdetails/UserDetailsServiceloadUserByUsernameO(Ljava/lang/String;)Lorg/springframework/security/core/userdetails/UserDetails;getJsonDefault+()Lcom/fasterxml/jackson/databind/JsonNode;com/artfess/base/util/BeanUtils isNotEmpty(Ljava/lang/Object;)Zget=(Ljava/lang/String;)Lcom/fasterxml/jackson/databind/JsonNode;asLong()JgetLockedStatus()Ljava/lang/Integer;intValue()I getLockedTime()Ljava/time/LocalDateTime;nowjava/time/ZoneOffsetof*(Ljava/lang/String;)Ljava/time/ZoneOffset; toInstant+(Ljava/time/ZoneOffset;)Ljava/time/Instant;java/time/Instant toEpochMillivalueOf(J)Ljava/lang/Long; longValue getAccount)com/artfess/base/service/LoginUserService lockedUser(Ljava/lang/String;I)V getTenantIdappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;toString getPasswordcom/artfess/base/util/Base64 getFromBase64&(Ljava/lang/String;)Ljava/lang/String;format9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;org/slf4j/Loggererror*(Ljava/lang/String;Ljava/lang/Throwable;)VgetCause()Ljava/lang/Throwable; getMessagecom/artfess/base/util/HttpUtil getRequest)()Ljavax/servlet/http/HttpServletRequest; getSession"()Ljavax/servlet/http/HttpSession;com/artfess/base/util/IPUtils getIpAddr;(Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String; com/artfess/base/util/StringUtilequalsasInt(I)Ljava/lang/Integer;(I)V(I)Ljava/lang/StringBuilder;-(Ljava/lang/Object;)Ljava/lang/StringBuilder;queryPersonLimitByAccount$(Ljava/lang/String;)Ljava/util/List;queryMachineIps"(Ljava/util/List;)Ljava/util/List;iterator()Ljava/util/Iterator;hasNext()Znext()Ljava/lang/Object;*(Ljavax/servlet/http/HttpServletRequest;)Z$com/artfess/base/jwt/JwtTokenHandler generateTokenO(Lorg/springframework/security/core/userdetails/UserDetails;)Ljava/lang/String; getFullname getUserId setAttribute'(Ljava/lang/String;Ljava/lang/Object;)Vput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;com/artfess/base/util/MapUtil getString5(Ljava/util/Map;Ljava/lang/String;)Ljava/lang/String;updateLastLoginTimecom/artfess/base/conf/JwtConfiggetExpirationLongk(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;ZLjava/util/Map;)V'org/springframework/http/ResponseEntityok=(Ljava/lang/Object;)Lorg/springframework/http/ResponseEntity;'(Ljava/lang/String;)[Ljava/lang/String; getCasUrl com/artfess/base/util/FluentUtilcom/artfess/base/util/XmlUtiltoJsoncom/artfess/base/util/JsonUtil toJsonNodehasasTextprintStackTraceinfogetOauthTokenUrlgetOauthBasicHeader"org/apache/http/entity/ContentTypeAPPLICATION_FORM_URLENCODED$Lorg/apache/http/entity/ContentType;postn(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Lorg/apache/http/entity/ContentType;)Ljava/lang/String;isObjectgetOauthAccesstokenKeygetOauthCheckUrlgetOauthUsernameKeyisEnableorg/springframework/util/AssertisTrue(ZLjava/lang/String;)VgetMode isPresentgetUsernameFromTokendebugj(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/util/Map;)V.com/artfess/base/feign/ApplicationFeignServicegetUserInfoUrlsendHttpsRequestJ(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;%com/artfess/base/feign/UCFeignServicegetUserByWxWorkIdisEmptyisNullK(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)VgetUserByOpenId9(Ljava/lang/String;)Lcom/artfess/base/model/CommonResult;getState()Ljava/lang/Boolean;java/lang/Boolean booleanValuegetValuegetUserByDingtalkIdgetUserInfoForYkz((Ljava/lang/String;Ljava/lang/String;Z)V getAttribute&(Ljava/lang/String;)Ljava/lang/Object; getMapper/()Lcom/fasterxml/jackson/databind/ObjectMapper;+com/fasterxml/jackson/databind/ObjectMappercreateObjectNode2()Lcom/fasterxml/jackson/databind/node/ObjectNode;V(Ljava/lang/String;Ljava/lang/String;)Lcom/fasterxml/jackson/databind/node/ObjectNode;updateUserUniteW(Lcom/fasterxml/jackson/databind/node/ObjectNode;)Lcom/artfess/base/model/CommonResult;removeAttribute!com/artfess/base/util/EncryptUtildecryptgetUserByYkzEmployeeCode(Z)Ljava/lang/Boolean; getSsoUrlgetSsoLogoutUrl getHeader substring(I)Ljava/lang/String;getTenantIdFromToken refreshTokenjava/util/ObjectsrequireNonNull&(Ljava/lang/Object;)Ljava/lang/Object;'(Ljava/lang/Object;Ljava/lang/Object;)VAorg/springframework/security/authentication/AuthenticationManagerf(Lorg/springframework/security/core/Authentication;)Lorg/springframework/security/core/Authentication;getLastLoginTimegetPwdCreateTime toLocalDate()Ljava/time/LocalDate;java/time/LocalDate toEpochDayisSingle com/artfess/base/conf/SaaSConfig getExpirationputTokenInCache](Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;o(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;logremoveFromCache9(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Vorg/slf4j/LoggerFactory getLogger%(Ljava/lang/Class;)Lorg/slf4j/Logger;!6  !"#$% &'s()*+,-./01234567/*8O9 :;<=7`*M,+,+8p qrs9 :;>? @;A=758w9:;>?B'[sCDsEF=758{9:;>?B'[sGDsEHI7J-89*:;J?K?LM&N'[sODsPQ@RSITUeVWXY7@89 :;J?K?Z'[sODsP[\7?89 :;J?K?B'[sODsP]^7 { y+MN*, :* + :  : :*:7 7 :   :  em:   7*! "#  $,%9&,%.  e7'Y(Y)*+,-+./+01N*,-2S: 456Y,S7 89: : :; :;:  <: =>:?:  @:  A: Bf9CR*,DJ:  : 0EF6 GF6HF6 I:  $,J: &,J: KYL:  $,`IMW&,`IMW(Y)N+dOP+.:<*!,#Q:  $,% &,%(Y)R+ST++.:'Y/'Y/*,DUU:   ,V:   Ww6  X:?W5Y:Z"[\: C 6#'Y(Y)]+,+^+./ _6 *`a: b:::6cYd:[:e:":f: gh6YSYS7i*-j6k$lW* km nkm%*!opY *qrst(+38f  *3?GLYemt"(+-DH^how{#-5Pc   + . 9 Hgqtwz!#$%&'()*+,-/0.4?7M9X;9~&!_`ab jcd tef Lg` hhi -Njk lMmm?!no po qoDef gr?.qs%9ftuvu  wx Qefy:;yyzt{?q|?h}? Y~*O3F?:@;  ? % ? ?K??% 9ftv e ~ * PC @ W "C)  U%$ ;3'[s[e[s'sss76vM,wxN-:662:+C8?@ A#B,C.A4F94# ?6:;6K?3? ,7N::y6Y*z{SY+SY,S7|N-}:~::(:'Y/D:4(Y)+-+.'Y(Y)++./ {~38BKL N+O1P8RBSVT`UqV{\~XYZ[]9\ 1J?8C?jk:;???? ?+V$B@7 N*z:6Y+SY,S7:*z:(Y)++.:~:g_*z: *z: (Y) + +.:  ~:    *zN:'Y-38Jbc df'gFhMiZjkktlmnourstv9kK? tB? $?  '?Fp?Mijk:;??? ??B77*z:*z:- -\:+C*+\:T,C*,\:1, C*`+\: Y* ?:_6*  : *` a:  b: : : cYd: R :e: ": f: gh6Y SY S7ik$lW4, C*km  npY    *qrt8 | }~(9K\n &7ARc9Hef:;?s?j?%~ ? ? K? ? *C(""# 3'[s[e[s'sss7*+\M4(Y)+,+.N,~N:4-:C -:*: $'Y(Y)+++./:* ?:_6 *  : *` a:  b: : : A :e: f: $:gh6Y SYS7i4*  npY   t:'Y(Y)++./'Y(Y)+-+./7?B3de38"57?BDQ\fq~ <FReg9D jk7ef% ~ ? w? s? oJ?gjkq?~K?:;?7o\J? }B< (3'[s[e[s'sss7Tm*+\MN,~N:4--:*:öę:BpYǸt:* ?:_6 *  : *` a:  b: : : A :e: f: $:gh6Y SYS7i*  npY   tBpYǸt'Y(Y)ȶ+-+./$'38!$')6?JWbl| " 5=J9) jk7eflK?% ~ v? m? i? eJ?J?Wm:;mS?QWms'R3'[s[e[s'sss7\*+\ʸMN,~N:4-˶!-˶:*: $'Y(Y)Ͷ+++./:*  :* ?:_6 *`a: b: : : A:e: f: $: gh6Y SYS7i*   npY   t'Y(Y)ζ++϶+./'Y(Y)ж+-+./$'38~$')6 ?"J$W%g&(*+-0123456789:;>)@<B]E9) jk7ef% v? m? i? eJ? J?WK?~:;f?d '0  3'[s[e[s'sss7 *+\MN,~N:46-Ҷb-:-Ӷ:*: 84(Y)Զ++ն+.6pYָt:*  :  * ?:  _6 *` a:  b: ::cYd: A :e: f:$: gh6Y SYS7i*  n*!opY  *qrst'Y(Y)׶++϶+./'Y(Y)ض+-ٶ+./38%LMORP Q-S0T9VDWOY\Zl[\]`bcehijklmopqrst#u?xK{V}w9 jk7ef % ? ? ?J?~DT?OI?\<K?~ :;?0%~>47  3'[s[e[s'sss7y ]+::* :+01:*2T:456YS789:::;:;:<:=>:?:@:A: B9C*D  :   :  | EF6  GF6  HF6R LڹK: KYL:`IY: *!#'Y/*DUU:   V:   Wx6   X:  ? W5 Y:Z"[\: C 6  $'Y(Y)]++^+./_6 * + : *` a:  b: ::6cYd:  :e: ":f:*,\:D: bC)'Y(Y)ݶ+-\+޶+./߶:W,\W*Wgh6Y SYS7i*j6k$lW* km nڹ*!opY  *qrst%(38>O %(*BF\fmuy~ ,6BLU_do~ !%(19@IR[mr~(1<9`#fhi*Ojk;lMmno apo Uqo  r?rs% gtu ovu _wx ~5?@efm\]:;]yz]]W{? S|?I}?~? c%  T~ I? @? !<K?%8?(5%1,4gt ov ]]1, (D +  W%% c3'[s[e[s'sss7g q+ 'Y/+\MN,N:'Y6-B-*-: 46'Y/:*  :* ?:_6 *`a: b: : : cYd:A:e: f: $: gh6Y SYS7i*   n*!opY   *qrst'Y(Y)׶++϶+./'Y/"%38%   "%'36=IYcfp |"#%()*+,-/0123458;%=F?gB9' jk7ef% ? ? ? J? ~I|K?~q:;q[?X?6;%~qr %7 3'[s[e[s'sss7@cYdN-H*zlW-*zlW-*zlW-t8MNO+P;Q9*@:;@@  8  8  3'[s [e[s'sss7X+*qM,N*`-:*`-:*`-:+_6*npYt8"WXYZ)[3\9^E_9RX:;XJ?C?9J?)/K?3%?9%+'[s[e'sss7C+*qM,N*`-:*`-:+_6*Y8efgh)i/j9k9HC:;C5?.?$J?)K?/%+'[s[e'sss\7h+W,W*Y+,W8rs tu9 :;??;7U+M  N-- :.:F6F6F67 F6 HF6 +y+:  em:  *!+"#.  e7'Y(Y)*+,-+./ L ++:  *%:     e68~x z{|~ (5BO\hu $16JQS9!_`nab Icd6 bJ !o$/"b 5#?B$oO%o\&ohg` u'o qo A 3U:;UefU?A*6()7f   :*q /,*&M*`,-*qW&?:A:*`,-*qW*-   8* *-EJQh9RJQ?:;%J???q*?L B"++,-79*q 1   :,*&M*`,-8 *-894*?9:;9%9J?9K?B .67! 48P/0'123[s456[s7s8s9s: