All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.groupbyinc.flux.http.netty4.Netty4HttpServerTransport.class Maven / Gradle / Ivy

There is a newer version: 59
Show newest version
????4?9com/groupbyinc/flux/http/netty4/Netty4HttpServerTransport?com/groupbyinc/flux/common/component/AbstractLifecycleComponent,com/groupbyinc/flux/http/HttpServerTransportNetty4HttpServerTransport.javaLcom/groupbyinc/flux/http/netty4/Netty4HttpServerTransport$HttpChannelHandlerHttpChannelHandler7com/groupbyinc/flux/http/HttpServerTransport$Dispatcher
DispatcherFcom/groupbyinc/flux/common/util/concurrent/ThreadContext$StoredContext8com/groupbyinc/flux/common/util/concurrent/ThreadContext
StoredContext4com/groupbyinc/flux/common/settings/Setting$Property+com/groupbyinc/flux/common/settings/SettingProperty;SETTING_HTTP_WORKER_COUNT)SETTING_HTTP_NETTY_RECEIVE_PREDICTOR_SIZE^Lcom/groupbyinc/flux/common/settings/Setting;(SETTING_HTTP_NETTY_RECEIVE_PREDICTOR_MINLjava/lang/Deprecated;(SETTING_HTTP_NETTY_RECEIVE_PREDICTOR_MAXnetworkService3Lcom/groupbyinc/flux/common/network/NetworkService;	bigArrays+Lcom/groupbyinc/flux/common/util/BigArrays;maxContentLengthmaxInitialLineLength
maxHeaderSizemaxChunkSizeworkerCountI
pipeliningZpipeliningMaxEventscompressioncompressionLevelresetCookiesport1Lcom/groupbyinc/flux/common/transport/PortsRange;	bindHosts[Ljava/lang/String;publishHostsdetailedErrorsEnabled
threadPool+Lcom/groupbyinc/flux/threadpool/ThreadPool;xContentRegistry;Lcom/groupbyinc/flux/common/xcontent/NamedXContentRegistry;
tcpNoDelaytcpKeepAlivereuseAddresstcpSendBufferSizetcpReceiveBufferSizerecvByteBufAllocator?Lcom/groupbyinc/flux/common/netty/channel/RecvByteBufAllocator;readTimeoutMillismaxCompositeBufferComponents
dispatcher9Lcom/groupbyinc/flux/http/HttpServerTransport$Dispatcher;serverBootstrap;serverOpenChannels@Lcom/groupbyinc/flux/transport/netty4/Netty4OpenChannelsHandler;
corsConfig7Lcom/groupbyinc/flux/http/netty4/cors/Netty4CorsConfig;.(Lcom/groupbyinc/flux/common/settings/Settings;Lcom/groupbyinc/flux/common/network/NetworkService;Lcom/groupbyinc/flux/common/util/BigArrays;Lcom/groupbyinc/flux/threadpool/ThreadPool;Lcom/groupbyinc/flux/common/xcontent/NamedXContentRegistry;Lcom/groupbyinc/flux/http/HttpServerTransport$Dispatcher;)V1(Lcom/groupbyinc/flux/common/settings/Settings;)Vac
djava/util/ArrayListf()Vah
giZ[	k6com/groupbyinc/flux/common/util/concurrent/EsExecutorsmPROCESSORS_SETTINGo)	npgetB(Lcom/groupbyinc/flux/common/settings/Settings;)Ljava/lang/Object;rs
tjava/lang/IntegervintValue()Ixy
wz0com/groupbyinc/flux/transport/netty4/Netty4Utils|setAvailableProcessors(I)V~
}?12	?34	?GH	?IJ	?TU	?.com/groupbyinc/flux/http/HttpTransportSettings?SETTING_HTTP_MAX_CONTENT_LENGTH?)	??-com/groupbyinc/flux/common/unit/ByteSizeValue?SETTING_HTTP_MAX_CHUNK_SIZE?)	??8#	?SETTING_HTTP_MAX_HEADER_SIZE?)	??7#	?$SETTING_HTTP_MAX_INITIAL_LINE_LENGTH?)	??6#	?SETTING_HTTP_RESET_COOKIES?)	??java/lang/Boolean?booleanValue()Z??
??@<	?()	?S:	?+)	?9:	?SETTING_HTTP_PORT?)	??AB	?SETTING_HTTP_BIND_HOST?)	??java/util/List?isEmpty????1com/groupbyinc/flux/common/network/NetworkService?GLOBAL_NETWORK_BINDHOST_SETTING?)	??,com/groupbyinc/flux/common/settings/Settings?)com/groupbyinc/flux/common/util/BigArrays?)com/groupbyinc/flux/threadpool/ThreadPool?9com/groupbyinc/flux/common/xcontent/NamedXContentRegistry?"com/groupbyinc/flux/common/Strings?EMPTY_ARRAY?D	??toArray(([Ljava/lang/Object;)[Ljava/lang/Object;????DCD	?SETTING_HTTP_PUBLISH_HOST?)	??"GLOBAL_NETWORK_PUBLISHHOST_SETTING?)	??ED	?SETTING_HTTP_TCP_NO_DELAY?)	??K<	?SETTING_HTTP_TCP_KEEP_ALIVE?)	??L<	?SETTING_HTTP_TCP_REUSE_ADDRESS?)	??M<	?!SETTING_HTTP_TCP_SEND_BUFFER_SIZE?)	??N#	?$SETTING_HTTP_TCP_RECEIVE_BUFFER_SIZE?)	??O#	?$SETTING_HTTP_DETAILED_ERRORS_ENABLED?)	??F<	?SETTING_HTTP_READ_TIMEOUT)	?)com/groupbyinc/flux/common/unit/TimeValue	getMillis()J
java/lang/Math

toIntExact(J)I
R:	.)	0)	getBytes
?Bcom/groupbyinc/flux/common/netty/channel/FixedRecvByteBufAllocatora
PQ	Ecom/groupbyinc/flux/common/netty/channel/AdaptiveRecvByteBufAllocator(III)Va!
 "SETTING_HTTP_COMPRESSION$)	?%><	'SETTING_HTTP_COMPRESSION_LEVEL))	?*?:	,SETTING_PIPELINING.)	?/;<	1SETTING_PIPELINING_MAX_EVENTS3)	?4=:	6buildCorsConfigg(Lcom/groupbyinc/flux/common/settings/Settings;)Lcom/groupbyinc/flux/http/netty4/cors/Netty4CorsConfig;89
:_`	<???logger!Lorg/apache/logging/log4j/Logger;@A	B?maxContentLength[{}] set to high value, resetting it to [100mb]Dorg/apache/logging/log4j/LoggerFwarn'(Ljava/lang/String;Ljava/lang/Object;)VHIGJdeprecationLogger6Lcom/groupbyinc/flux/common/logging/DeprecationLogger;LM	Nrout of bounds max content length value [{}] will no longer be truncated to [100mb], you must enter a valid settingPjava/lang/ObjectRgetStringRep()Ljava/lang/String;TU
?V4com/groupbyinc/flux/common/logging/DeprecationLoggerX
deprecated((Ljava/lang/String;[Ljava/lang/Object;)VZ[
Y\d,com/groupbyinc/flux/common/unit/ByteSizeUnit`MB.Lcom/groupbyinc/flux/common/unit/ByteSizeUnit;bc	ad2(JLcom/groupbyinc/flux/common/unit/ByteSizeUnit;)Vaf
?g5#	i?using max_chunk_size[{}], max_header_size[{}], max_initial_line_length[{}], max_content_length[{}], receive_predictor[{}->{}], max_composite_buffer_components[{}], pipelining[{}], pipelining_max_events[{}]kvalueOf(I)Ljava/lang/Integer;mn
wo(Z)Ljava/lang/Boolean;mq
?rdebug?(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)VtuGvthis;Lcom/groupbyinc/flux/http/netty4/Netty4HttpServerTransport;settings.Lcom/groupbyinc/flux/common/settings/Settings;httpBindHost$Ljava/util/List;httpPublishHostreceivePredictorMinreceivePredictorMax0()Lcom/groupbyinc/flux/common/settings/Settings;z{	?doStart>com/groupbyinc/flux/transport/netty4/Netty4OpenChannelsHandler?$(Lorg/apache/logging/log4j/Logger;)Va?
??]^	?:com/groupbyinc/flux/common/netty/bootstrap/ServerBootstrap?
?iVW	?>com/groupbyinc/flux/common/netty/channel/nio/NioEventLoopGroup?http_server_worker?daemonThreadFactoryf(Lcom/groupbyinc/flux/common/settings/Settings;Ljava/lang/String;)Ljava/util/concurrent/ThreadFactory;??
n?((ILjava/util/concurrent/ThreadFactory;)Va?
??groupw(Lcom/groupbyinc/flux/common/netty/channel/EventLoopGroup;)Lcom/groupbyinc/flux/common/netty/bootstrap/ServerBootstrap;??
??Jcom/groupbyinc/flux/common/netty/channel/socket/nio/NioServerSocketChannel?channelQ(Ljava/lang/Class;)Lcom/groupbyinc/flux/common/netty/bootstrap/AbstractBootstrap;??
??configureServerChannelHandler;()Lcom/groupbyinc/flux/common/netty/channel/ChannelHandler;??
?childHandlerw(Lcom/groupbyinc/flux/common/netty/channel/ChannelHandler;)Lcom/groupbyinc/flux/common/netty/bootstrap/ServerBootstrap;??
??6com/groupbyinc/flux/common/netty/channel/ChannelOption?TCP_NODELAY8Lcom/groupbyinc/flux/common/netty/channel/ChannelOption;??	??childOption?(Lcom/groupbyinc/flux/common/netty/channel/ChannelOption;Ljava/lang/Object;)Lcom/groupbyinc/flux/common/netty/bootstrap/ServerBootstrap;??
??SO_KEEPALIVE??	??	SO_SNDBUF??	??	SO_RCVBUF??	??RCVBUF_ALLOCATOR??	??option?(Lcom/groupbyinc/flux/common/netty/channel/ChannelOption;Ljava/lang/Object;)Lcom/groupbyinc/flux/common/netty/bootstrap/AbstractBootstrap;??
??SO_REUSEADDR??	??createBoundHttpAddress>()Lcom/groupbyinc/flux/common/transport/BoundTransportAddress;??
?XY	?
isInfoEnabled??G?{}?info?IG?doStop?h
?java/lang/Throwable?successjava/io/IOException?java/lang/Exception?resolveBindHostAddresses,([Ljava/lang/String;)[Ljava/net/InetAddress;??
??*com/groupbyinc/flux/http/BindHttpException?java/lang/StringBuilder?
?iFailed to resolve host [?append-(Ljava/lang/String;)Ljava/lang/StringBuilder;??
??java/util/Arrays?toString'([Ljava/lang/Object;)Ljava/lang/String;??
??]??U
??*(Ljava/lang/String;Ljava/lang/Throwable;)Va?
??[Ljava/net/InetAddress;?
gbindAddressO(Ljava/net/InetAddress;)Lcom/groupbyinc/flux/common/transport/TransportAddress;
add(Ljava/lang/Object;)Z?resolvePublishHostAddresses+([Ljava/lang/String;)Ljava/net/InetAddress;

?4com/groupbyinc/flux/transport/BindTransportException!Failed to resolve publish address
?java/net/InetAddressresolvePublishPortW(Lcom/groupbyinc/flux/common/settings/Settings;Ljava/util/List;Ljava/net/InetAddress;)I
java/net/InetSocketAddress(Ljava/net/InetAddress;I)Va
:com/groupbyinc/flux/common/transport/BoundTransportAddress5com/groupbyinc/flux/common/transport/TransportAddress 8[Lcom/groupbyinc/flux/common/transport/TransportAddress;"(Ljava/net/InetSocketAddress;)Va$
!%r([Lcom/groupbyinc/flux/common/transport/TransportAddress;Lcom/groupbyinc/flux/common/transport/TransportAddress;)Va'
(
hostAddresseseLjava/io/IOException;addressLjava/net/InetAddress;publishInetAddressLjava/lang/Exception;boundAddressesILjava/util/List;publishPortpublishAddressLjava/net/InetSocketAddress;SETTING_HTTP_PUBLISH_PORT6)	?7iterator()Ljava/util/Iterator;9:?;java/util/Iterator=hasNext??>@next()Ljava/lang/Object;BC>D()Ljava/net/InetSocketAddress;-F
!G
getAddress()Ljava/net/InetAddress;IJ
KisAnyLocalAddressM?
NequalsP
QgetPortSy
!T7com/groupbyinc/flux/common/carrotsearch/hppc/IntHashSetV
Wi3com/groupbyinc/flux/common/carrotsearch/hppc/IntSetY(I)Z[Z\size^yZ_Z;>com/groupbyinc/flux/common/carrotsearch/hppc/cursors/IntCursorbvalued:	ceCFailed to auto-resolve http publish port, multiple bound addresses g-(Ljava/lang/Object;)Ljava/lang/StringBuilder;?i
?jC with distinct ports and none of them matched the publish address (l+). Please specify a unique port by setting ngetKeypU
q or s(Ljava/lang/String;)Vau
?vboundInetAddress7Lcom/groupbyinc/flux/common/transport/TransportAddress;ports5Lcom/groupbyinc/flux/common/carrotsearch/hppc/IntSet;SETTING_CORS_ENABLED|)	?}java/lang/Stringcom/groupbyinc/flux/common/netty/handler/codec/http/HttpMethod?T(Ljava/lang/String;)Lcom/groupbyinc/flux/common/netty/handler/codec/http/HttpMethod;m?
????apply()Ljava/util/function/Function;???java/util/stream/Stream?map8(Ljava/util/function/Function;)Ljava/util/stream/Stream;????(I)Ljava/lang/Object;?lambda$buildCorsConfig$4D(I)[Lcom/groupbyinc/flux/common/netty/handler/codec/http/HttpMethod;??
???"()Ljava/util/function/IntFunction;???5(Ljava/util/function/IntFunction;)[Ljava/lang/Object;????A[Lcom/groupbyinc/flux/common/netty/handler/codec/http/HttpMethod;?allowedRequestMethods?([Lcom/groupbyinc/flux/common/netty/handler/codec/http/HttpMethod;)Lcom/groupbyinc/flux/http/netty4/cors/Netty4CorsConfigBuilder;??
??SETTING_CORS_MAX_AGE?)	??maxAgeA(J)Lcom/groupbyinc/flux/http/netty4/cors/Netty4CorsConfigBuilder;??
??SETTING_CORS_ALLOW_HEADERS?)	??allowedRequestHeaders??
??shortCircuit??
??builder>Lcom/groupbyinc/flux/http/netty4/cors/Netty4CorsConfigBuilder;pLjava/util/regex/Pattern;origin
strMethodsmethods+java/util/concurrent/atomic/AtomicReference
	i[lambda$bindAddress$5t(Ljava/net/InetAddress;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;I)Z
onPortNumber?(Lcom/groupbyinc/flux/http/netty4/Netty4HttpServerTransport;Ljava/net/InetAddress;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;)Lcom/groupbyinc/flux/common/transport/PortsRange$PortCallback;iterateA(Lcom/groupbyinc/flux/common/transport/PortsRange$PortCallback;)Z
Failed to bind to [getPortRangeStringU
rC
	isDebugEnabled ?G!Bound http to address {{}}#1com/groupbyinc/flux/common/network/NetworkAddress%format0(Ljava/net/InetSocketAddress;)Ljava/lang/String;'(
&)tIG+hostAddress
lastExceptionDLjava/util/concurrent/atomic/AtomicReference;-Ljava/util/concurrent/atomic/AtomicReference;boundSocketKLjava/util/concurrent/atomic/AtomicReference;
closeChannels(Ljava/util/Collection;)V34
}5 exception while closing channels7trace9?G:clear<h?=close?h
?@configD()Lcom/groupbyinc/flux/common/netty/bootstrap/ServerBootstrapConfig;BC
?D@com/groupbyinc/flux/common/netty/bootstrap/ServerBootstrapConfigF;()Lcom/groupbyinc/flux/common/netty/channel/EventLoopGroup;?H
GIjava/util/concurrent/TimeUnitMSECONDSLjava/util/concurrent/TimeUnit;OP	NQ7com/groupbyinc/flux/common/netty/channel/EventLoopGroupSshutdownGracefully\(JJLjava/util/concurrent/TimeUnit;)Lcom/groupbyinc/flux/common/netty/util/concurrent/Future;UVTW7com/groupbyinc/flux/common/netty/util/concurrent/FutureYawaitUninterruptibly;()Lcom/groupbyinc/flux/common/netty/util/concurrent/Future;[\Z]doClose%()Lcom/groupbyinc/flux/http/HttpInfo;X?
a!com/groupbyinc/flux/http/HttpInfoc@(Lcom/groupbyinc/flux/common/transport/BoundTransportAddress;J)Vae
dfboundTransportAddressstats&()Lcom/groupbyinc/flux/http/HttpStats;"com/groupbyinc/flux/http/HttpStatsknumberOfOpenChannelsm
?n
totalChannelsp
?q(JJ)Vas
ltchannels
getCorsConfigdispatchRequestO(Lcom/groupbyinc/flux/rest/RestRequest;Lcom/groupbyinc/flux/rest/RestChannel;)VgetThreadContext<()Lcom/groupbyinc/flux/common/util/concurrent/ThreadContext;z{
?|stashContextJ()Lcom/groupbyinc/flux/common/util/concurrent/ThreadContext$StoredContext;~
??(Lcom/groupbyinc/flux/rest/RestRequest;Lcom/groupbyinc/flux/rest/RestChannel;Lcom/groupbyinc/flux/common/util/concurrent/ThreadContext;)Vx??$closeResource1(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V??
?$com/groupbyinc/flux/rest/RestRequest?$com/groupbyinc/flux/rest/RestChannel?ignoreHLcom/groupbyinc/flux/common/util/concurrent/ThreadContext$StoredContext;request&Lcom/groupbyinc/flux/rest/RestRequest;&Lcom/groupbyinc/flux/rest/RestChannel;
threadContext:Lcom/groupbyinc/flux/common/util/concurrent/ThreadContext;dispatchBadRequestd(Lcom/groupbyinc/flux/rest/RestRequest;Lcom/groupbyinc/flux/rest/RestChannel;Ljava/lang/Throwable;)V?(Lcom/groupbyinc/flux/rest/RestRequest;Lcom/groupbyinc/flux/rest/RestChannel;Lcom/groupbyinc/flux/common/util/concurrent/ThreadContext;Ljava/lang/Throwable;)V???causeLjava/lang/Throwable;exceptionCaughtX(Lcom/groupbyinc/flux/common/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)VEcom/groupbyinc/flux/common/netty/handler/timeout/ReadTimeoutException?isTraceEnabled??G?Read timeout [{}]?>com/groupbyinc/flux/common/netty/channel/ChannelHandlerContext?4()Lcom/groupbyinc/flux/common/netty/channel/Channel;????0com/groupbyinc/flux/common/netty/channel/Channel?
remoteAddress()Ljava/net/SocketAddress;????9IG?:()Lcom/groupbyinc/flux/common/netty/channel/ChannelFuture;????	lifecycle0Lcom/groupbyinc/flux/common/component/Lifecycle;??	?.com/groupbyinc/flux/common/component/Lifecycle?started??
??;com/groupbyinc/flux/common/transport/NetworkExceptionHelper?isCloseConnectionException(Ljava/lang/Throwable;)Z??
??Clambda$exceptionCaught$6T(Lcom/groupbyinc/flux/common/netty/channel/ChannelHandlerContext;)Ljava/lang/Object;??
??j(Lcom/groupbyinc/flux/common/netty/channel/ChannelHandlerContext;)Lorg/apache/logging/log4j/util/Supplier;r??@(Lorg/apache/logging/log4j/util/Supplier;Ljava/lang/Throwable;)VH?G?lambda$exceptionCaught$7??
???t?G?ctx@Lcom/groupbyinc/flux/common/netty/channel/ChannelHandlerContext;y(Lcom/groupbyinc/flux/http/netty4/Netty4HttpServerTransport;ZLcom/groupbyinc/flux/common/util/concurrent/ThreadContext;)Va?
	?5org/apache/logging/log4j/message/ParameterizedMessage?Jcaught exception while handling client http traffic, closing connection {}?aI
??bindR(Ljava/net/SocketAddress;)Lcom/groupbyinc/flux/common/netty/channel/ChannelFuture;??
??6com/groupbyinc/flux/common/netty/channel/ChannelFuture?sync??????localAddress????set(Ljava/lang/Object;)V??
	?future8Lcom/groupbyinc/flux/common/netty/channel/ChannelFuture;
portNumberlambda$static$3'(Ljava/lang/String;)Ljava/lang/Integer;http.netty.worker_count?parseInt((Ljava/lang/String;ILjava/lang/String;)I??
?slambda$static$2B(Lcom/groupbyinc/flux/common/settings/Settings;)Ljava/lang/String;numberOfProcessors1(Lcom/groupbyinc/flux/common/settings/Settings;)I
n(I)Ljava/lang/String;?
wlambda$static$1???)(Ljava/lang/String;IILjava/lang/String;)I?	

lambda$static$0"#	
round(D)J
min(JJ)J
max
(J)Ljava/lang/String;m
?maxBufferComponentsEstimateJmaxBufferComponentsjava/lang/AutoCloseable"#@
addSuppressed(Ljava/lang/Throwable;)V%&
?'x0x1Ljava/lang/AutoCloseable;
access$000>(Lcom/groupbyinc/flux/http/netty4/Netty4HttpServerTransport;)I
access$100^(Lcom/groupbyinc/flux/http/netty4/Netty4HttpServerTransport;)Lorg/apache/logging/log4j/Logger;setup1h
}2
es.net.mtu415006java/lang/System8getProperty8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;:;
9<java/lang/Long>	parseLong(Ljava/lang/String;)J@A
?B(J)VaD
?E?
GH???
LM??	NodeScope6Lcom/groupbyinc/flux/common/settings/Setting$Property;QR	S?(Ljava/lang/String;Ljava/util/function/Function;Ljava/util/function/Function;[Lcom/groupbyinc/flux/common/settings/Setting$Property;)VaU
V??
XY???
\]?!http.netty.receive_predictor_size`@KBdc	aebyteSizeSetting?(Ljava/lang/String;Lcom/groupbyinc/flux/common/unit/ByteSizeValue;[Lcom/groupbyinc/flux/common/settings/Setting$Property;)Lcom/groupbyinc/flux/common/settings/Setting;gh
i,)	k http.netty.receive_predictor_minm
DeprecatedoR	p?(Ljava/lang/String;Lcom/groupbyinc/flux/common/settings/Setting;[Lcom/groupbyinc/flux/common/settings/Setting$Property;)Lcom/groupbyinc/flux/common/settings/Setting;gr
s http.netty.receive_predictor_maxu
ConstantValue	SignatureRuntimeVisibleAnnotationsCodeLocalVariableTableLocalVariableTypeTableLineNumberTable
StackMapTable?(Lcom/groupbyinc/flux/common/settings/Settings;Ljava/util/List;Ljava/net/InetAddress;)I
ExceptionsBootstrapMethods
SourceFileInnerClasses!'"#$%w'	()x*+)x*,)x-.)ox-y/0)ox-y/12345#6#7#8#9:;<=:><?:@<ABCDEDF<GHIJK<L<M<N#O#PQR:S:TUDVWDXYZ[x\]^_`abz??*+?e*?gY?j?l?q+?u?w?{??*,??*-??*??*??*????+?u??:*??+?u????*??+?u????*??+?u????*??+?u??????*??+?u?w?{??*??+?u?w?{??*??+?u?????+?u??:*?????+?u????ӹ??صڲ?+?u??:	*	?????+?u???	?ӹ??ص?*??+?u??????*??+?u??????*??+?u??????*??+?u????*??+?u????*??+?u?????*?+?u??	???+?u??:
?+?u??:?
???*?Y?????&*? Y
??
?????#?*?&+?u?????(*?++?u?w?{?-*?0+?u?????2*?5+?u?w?{?7*+?;?=?>??6*?CE?K*?OQ?SY?WS?]??Y^?e?h:*?j*?Cl*??*??*??*?j
*???p*?2?s*?7?p?w?{z?xy?z{?12?34?GH?IJ?TUHm5#??|[??~[	?#
??#|??|}??~}	}?5??? ?%?*?0?6?<HVdr????	?
??
?,=N\j{??????? ?!?$?%&!'2(:+F,T-c/g-j0y24?7?4?8~???	????????	?????????1
?????????
?????????????"??z?z/*???{xy};?hz|g<*??Y*?C????*??Y????*????Y*??*?????????W*?????W*??*????W*??????*???u????W*??????*???u????W??*???u??M,?	??*????,???p??W??*???u??N-?	??*????-???p??W*????*???W*????*???W??*???u????6*?????s??W*?????s??W**?ε?*?C???*?C?*?й?<?*?ۧ:?*????NYY[Y{4??N#??O#FM<gxye?<}v@BDF9HDJPLhM?O?P?Q?T?U?V?Y?Z?\]^(`0a<bLdNfRgYf_gcifj~=????+??s???	????z??*??*?ڶ?L?-M??Y??Y?????*?ڸ???????,????gY+??M+N-?66?-2:,*??	W????*??*??
N?:?Y??*??,-?6?Y-?:?Y,?!???#?!Y?&?)??lx{?{p*?)+,Y
-.x/.}
+0?xy9?*?C|1[?5/.?*3:?45|C|12}>psqr9uCvYwfvl|x{}}~??????~.O??)???N??z???8*?u?w?{>?H+?<:?A?6?E?!:?H?L:?O?,?R??U>?????X?WY?X:+?<:?A??E?!:?U?]W????`??a?E?c?f>?G??Y??Y??h??+?km??,?ko????r??t??8?r????w??{R:x.0$Xy?
XydLz{?z{?1[?/.?3:|?12}N???0?:?K?Q?T?W?[?d?????????????????~*?>?0!???Z>?%??Gx89z?޲~*?u????????????????*?u??L+???????M?-+????
??M?+??N-?+????M?-??M??*?u?????,??W??*?u?????N-??????????????:,???*?u?w?{?????*?u???????????{\	8I]Q?z{)?%ey?SD?1?}b???)?0?;?E?L?Q?U?`?e?u?z?????????????????????~"????????z$??	Y?
M?	Y?
N*??*+-,??6?2??Y??Y????*?????????,??ݷ??*?C?"?*?C$-???*?,?!Y-???&?{4?xy?-..0w10"e?<|./w12}"???"?'?V?b?x?~
?V		!?hz!z*?lYL?*?l???$*?l?6?M*?C8,?;*?l?>+çN+?-?*???*???A*??*???$*???E?J	K?R?X?^W*????699<9{
+,zxy}>??????+?4?>?E?L?Q?X?t?y?~?S?
D??'_hz+?{xy}?X?z/*?а{xy}?`zi*?bL+???dY+*?j??g?{xyhY}	
~?ijz?%*??L?lY+?	?+?o+?	?+?r?u?{%xy v^}
~R????????w?z/*?=?{xy}xyzG*???}N-??::*??+,-???'???::?:?
????,?5,75{48??GxyG??G?????},5F~<?,????H??
??????z	K*???}:??::*??+,-???'???::?:?
????!0?!90;9{>:??KxyK??K??K??	B??}	 !!"0 9"J#~B?0?????H??
???????z??,???5*?C???*?C?+??????+????W?P*??????,?š"*?C+??,??+????W?*?C+??,??+????W?{ ?xy??????}2&'(**9,C.D0K1[5j7z;?>~*
%????z>?	Y**?*???}?ڰ{xy}A
??zC??Y?*????{??}898
??zC??Y?*????{??}232
z-a*?lY:?*???Y+????:*?l???	W,???????ç:???
:-????GJJOJRU?{H $??W+0axya-.a10a.0a?:}*
?? ?1?D?R?U?W?]?_?~$?J		S??B?	
??z/?Ͱ{^:}?
??z6*????p?{?%}?
??z4
*?h??{
?{}?
?z8*'??p?{?%}?
?z?0??*?u??L+???m??A >??7??{*0?{%5# *! }???*?
??zg*?+?$?M*,?(?	+?$?

?{)?*+}~M?,-z/*??{)y}y./z/*?C?{)y}y0hz?	??3??Y57?=?C?F??Y'?K?P?Y?TS?W???Y??[?_?Y?TS?W??a??Yb?f?h?Y?TS?j?ln?l?Y?TSY?qS?t?v?l?Y?TSY?qS?t??}.|??9?Z?t?z??????????\	???????????????????IJ??NO??ZJ??^O??2	

		@	 !




© 2015 - 2025 Weber Informatics LLC | Privacy Policy