- Calculating dependencies   
-  * IMPORTANT: 5 news items need reading for repository 'gentoo'. 
-  * Use eselect news to read news items. 
-   
- ... done! 
-   
- >>> Verifying ebuild manifests 
-   
- >>> Emerging (1 of 1) dev-ruby/rmagick-2.13.1 
-  * RMagick-2.13.1.tar.bz2 SHA256 SHA512 WHIRLPOOL size ;-) ...           [ ok ] 
- >>> Unpacking source... 
-  * Running unpack phase for all ... 
- >>> Unpacking RMagick-2.13.1.tar.bz2 to /var/tmp/portage/dev-ruby/rmagick-2.13.1/work/all 
- >>> Source unpacked in /var/tmp/portage/dev-ruby/rmagick-2.13.1/work 
- >>> Preparing source in /var/tmp/portage/dev-ruby/rmagick-2.13.1/work ... 
-  * Running prepare phase for all ... 
-  * Running source copy phase for ruby18 ... 
- >>> Source prepared. 
- >>> Configuring source in /var/tmp/portage/dev-ruby/rmagick-2.13.1/work ... 
-  * Running configure phase for ruby18 ... 
- /var/tmp/portage/dev-ruby/rmagick-2.13.1/work/ruby18/RMagick-2.13.1/ext/RMagick /var/tmp/portage/dev-ruby/rmagick-2.13.1/work/ruby18/RMagick-2.13.1 /var/tmp/portage/dev-ruby/rmagick-2.13.1/work 
- checking for Ruby version >= 1.8.5... yes 
- checking for x86_64-pc-linux-gnu-gcc... yes 
- checking for Magick-config... yes 
- checking for ImageMagick version >= 6.4.9... yes 
- checking for HDRI disabled version of ImageMagick... yes 
- checking for stdint.h... yes 
- checking for sys/types.h... yes 
- checking for wand/MagickWand.h... yes 
- checking for InitializeMagick() in -lMagickCore... yes 
- checking for snprintf() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for AcquireImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for AffinityImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for AffinityImages() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for AutoGammaImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for AutoLevelImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for BlueShiftImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for ConstituteComponentTerminus() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for DeskewImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for EncipherImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for EqualizeImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for FloodfillPaintImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for FunctionImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for GetAuthenticIndexQueue() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for GetAuthenticPixels() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for GetImageAlphaChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for GetVirtualPixels() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for LevelImageColors() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for LevelColorsImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for LevelizeImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for LiquidRescaleImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for MagickLibAddendum() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for OpaquePaintImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for QueueAuthenticPixels() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for RemapImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for RemoveImageArtifact() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for SelectiveBlurImageChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for SetImageAlphaChannel() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for SetImageArtifact() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for SetMagickMemoryMethods() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for SparseColorImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for SyncAuthenticPixels() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for TransparentPaintImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for TransparentPaintImageChroma() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for QueryMagickColorname() new signature... yes 
- checking for Image.type in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for DrawInfo.kerning in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for DrawInfo.interline_spacing in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for DrawInfo.interword_spacing in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for DitherMethod in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for MagickFunction in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for ImageLayerMethod in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for long double in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes 
- checking for AlphaChannelType.CopyAlphaChannel... yes 
- checking for AlphaChannelType.BackgroundAlphaChannel... yes 
- checking for CompositeOperator.BlurCompositeOp... yes 
- checking for CompositeOperator.DistortCompositeOp... yes 
- checking for CompositeOperator.LinearBurnCompositeOp... yes 
- checking for CompositeOperator.LinearDodgeCompositeOp... yes 
- checking for CompositeOperator.MathematicsCompositeOp... yes 
- checking for CompositeOperator.PegtopLightCompositeOp... yes 
- checking for CompositeOperator.PinLightCompositeOp... yes 
- checking for CompositeOperator.VividLightCompositeOp... yes 
- checking for CompressionType.DXT1Compression... yes 
- checking for CompressionType.DXT3Compression... yes 
- checking for CompressionType.DXT5Compression... yes 
- checking for CompressionType.ZipSCompression... yes 
- checking for CompressionType.PizCompression... yes 
- checking for CompressionType.Pxr24Compression... yes 
- checking for CompressionType.B44Compression... yes 
- checking for CompressionType.B44ACompression... yes 
- checking for DistortImageMethod.BarrelDistortion... yes 
- checking for DistortImageMethod.BarrelInverseDistortion... yes 
- checking for DistortImageMethod.BilinearForwardDistortion... yes 
- checking for DistortImageMethod.BilinearReverseDistortion... yes 
- checking for DistortImageMethod.DePolarDistortion... yes 
- checking for DistortImageMethod.PolarDistortion... yes 
- checking for DistortImageMethod.PolynomialDistortion... yes 
- checking for DistortImageMethod.ShepardsDistortion... yes 
- checking for DitherMethod.NoDitherMethod... yes 
- checking for FilterTypes.KaiserFilter... yes 
- checking for FilterTypes.WelshFilter... yes 
- checking for FilterTypes.ParzenFilter... yes 
- checking for FilterTypes.LagrangeFilter... yes 
- checking for FilterTypes.BohmanFilter... yes 
- checking for FilterTypes.BartlettFilter... yes 
- checking for FilterTypes.SentinelFilter... yes 
- checking for MagickEvaluateOperator.PowEvaluateOperator... yes 
- checking for MagickEvaluateOperator.LogEvaluateOperator... yes 
- checking for MagickEvaluateOperator.ThresholdEvaluateOperator... yes 
- checking for MagickEvaluateOperator.ThresholdBlackEvaluateOperator... yes 
- checking for MagickEvaluateOperator.ThresholdWhiteEvaluateOperator... yes 
- checking for MagickEvaluateOperator.GaussianNoiseEvaluateOperator... yes 
- checking for MagickEvaluateOperator.ImpulseNoiseEvaluateOperator... yes 
- checking for MagickEvaluateOperator.LaplacianNoiseEvaluateOperator... yes 
- checking for MagickEvaluateOperator.MultiplicativeNoiseEvaluateOperator... yes 
- checking for MagickEvaluateOperator.PoissonNoiseEvaluateOperator... yes 
- checking for MagickEvaluateOperator.UniformNoiseEvaluateOperator... yes 
- checking for MagickEvaluateOperator.CosineEvaluateOperator... yes 
- checking for MagickEvaluateOperator.SineEvaluateOperator... yes 
- checking for MagickEvaluateOperator.AddModulusEvaluateOperator... yes 
- checking for MagickFunction.ArcsinFunction... yes 
- checking for MagickFunction.ArctanFunction... yes 
- checking for MagickFunction.PolynomialFunction... yes 
- checking for MagickFunction.SinusoidFunction... yes 
- checking for ImageLayerMethod.FlattenLayer... yes 
- checking for ImageLayerMethod.MergeLayer... yes 
- checking for ImageLayerMethod.MosaicLayer... yes 
- checking for ImageLayerMethod.TrimBoundsLayer... yes 
- checking for VirtualPixelMethod.HorizontalTileVirtualPixelMethod... yes 
- checking for VirtualPixelMethod.VerticalTileVirtualPixelMethod... yes 
- checking for VirtualPixelMethod.HorizontalTileEdgeVirtualPixelMethod... yes 
- checking for VirtualPixelMethod.VerticalTileEdgeVirtualPixelMethod... yes 
- checking for VirtualPixelMethod.CheckerTileVirtualPixelMethod... yes 
- checking for ruby/io.h... no 
- checking for rb_frame_this_func() in ruby.h,rubyio.h... yes 
- creating extconf.h 
- creating Makefile 
-   
-   
- ====================================================================== 
- Sun 11Nov12 11:00:28 
- This installation of RMagick 2.13.1 is configured for 
- Ruby 1.8.7 (x86_64-linux) and ImageMagick 6.7.8 Q64  
- ====================================================================== 
-   
-   
- /var/tmp/portage/dev-ruby/rmagick-2.13.1/work/ruby18/RMagick-2.13.1 /var/tmp/portage/dev-ruby/rmagick-2.13.1/work 
- >>> Source configured. 
- >>> Compiling source in /var/tmp/portage/dev-ruby/rmagick-2.13.1/work ... 
-  * Running compile phase for ruby18 ... 
- /var/tmp/portage/dev-ruby/rmagick-2.13.1/work/ruby18/RMagick-2.13.1/ext/RMagick /var/tmp/portage/dev-ruby/rmagick-2.13.1/work/ruby18/RMagick-2.13.1 /var/tmp/portage/dev-ruby/rmagick-2.13.1/work 
- make -j5  
- x86_64-pc-linux-gnu-gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fopenmp -I/usr/include/ImageMagick   -fPIC -O2 -pipe -march=native -fopenmp -I/usr/include/ImageMagick    -c rmutil.c 
- x86_64-pc-linux-gnu-gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fopenmp -I/usr/include/ImageMagick   -fPIC -O2 -pipe -march=native -fopenmp -I/usr/include/ImageMagick    -c rmdraw.c 
- x86_64-pc-linux-gnu-gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fopenmp -I/usr/include/ImageMagick   -fPIC -O2 -pipe -march=native -fopenmp -I/usr/include/ImageMagick    -c rmenum.c 
- x86_64-pc-linux-gnu-gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fopenmp -I/usr/include/ImageMagick   -fPIC -O2 -pipe -march=native -fopenmp -I/usr/include/ImageMagick    -c rmmain.c 
- x86_64-pc-linux-gnu-gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fopenmp -I/usr/include/ImageMagick   -fPIC -O2 -pipe -march=native -fopenmp -I/usr/include/ImageMagick    -c rmagick.c 
- rmmain.c: В функции ‘Init_RMagick2’: 
- rmmain.c:821:5: предупреждение: переполнение при неявном преобразовании константы 
- rmmain.c:822:5: предупреждение: переполнение при неявном преобразовании константы 
- rmmain.c:825:5: предупреждение: переполнение при неявном преобразовании константы 
- x86_64-pc-linux-gnu-gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fopenmp -I/usr/include/ImageMagick   -fPIC -O2 -pipe -march=native -fopenmp -I/usr/include/ImageMagick    -c rmstruct.c 
- x86_64-pc-linux-gnu-gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fopenmp -I/usr/include/ImageMagick   -fPIC -O2 -pipe -march=native -fopenmp -I/usr/include/ImageMagick    -c rmfill.c 
- x86_64-pc-linux-gnu-gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fopenmp -I/usr/include/ImageMagick   -fPIC -O2 -pipe -march=native -fopenmp -I/usr/include/ImageMagick    -c rmpixel.c 
- x86_64-pc-linux-gnu-gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fopenmp -I/usr/include/ImageMagick   -fPIC -O2 -pipe -march=native -fopenmp -I/usr/include/ImageMagick    -c rminfo.c 
- x86_64-pc-linux-gnu-gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fopenmp -I/usr/include/ImageMagick   -fPIC -O2 -pipe -march=native -fopenmp -I/usr/include/ImageMagick    -c rmilist.c 
- x86_64-pc-linux-gnu-gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fopenmp -I/usr/include/ImageMagick   -fPIC -O2 -pipe -march=native -fopenmp -I/usr/include/ImageMagick    -c rmimage.c 
- rmilist.c: В функции ‘ImageList_map’: 
- rmilist.c:448:5: предупреждение: ‘MapImages’ is deprecated (declared at /usr/include/ImageMagick/magick/deprecate.h:197) 
- rmimage.c: В функции ‘Image_map’: 
- rmimage.c:8155:5: предупреждение: ‘MapImage’ is deprecated (declared at /usr/include/ImageMagick/magick/deprecate.h:195) 
- rmimage.c: В функции ‘Image_pixel_color’: 
- rmimage.c:9818:40: ошибка: индекс массива не является целым значением 
- rmimage.c: В функции ‘Image_recolor’: 
- rmimage.c:10701:5: предупреждение: ‘RecolorImage’ is deprecated (declared at /usr/include/ImageMagick/magick/deprecate.h:139) 
- rmimage.c: В функции ‘Image_class_type_eq’: 
- rmimage.c:12648:9: предупреждение: переполнение при неявном преобразовании константы 
- x86_64-pc-linux-gnu-gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -DRUBY_EXTCONF_H=\"extconf.h\"  -fopenmp -I/usr/include/ImageMagick   -fPIC -O2 -pipe -march=native -fopenmp -I/usr/include/ImageMagick    -c rmmontage.c 
- make: *** [rmimage.o] Ошибка 1 
- make: *** Ожидание завершения заданий... 
- emake failed 
-  * ERROR: dev-ruby/rmagick-2.13.1 failed (compile phase): 
-  *   emake failed 
-  *  
-  * Call stack: 
-  *     ebuild.sh, line   85:  Called src_compile 
-  *   environment, line 4348:  Called ruby-ng_src_compile 
-  *   environment, line 4012:  Called _ruby_each_implementation 'each_ruby_compile' 
-  *   environment, line  376:  Called _ruby_invoke_environment 'ruby18' 'each_ruby_compile' 
-  *   environment, line  428:  Called each_ruby_compile 
-  *   environment, line  709:  Called die 
-  * The specific snippet of code: 
-  *       emake || die "emake failed"; 
-  *  
-  * If you need support, post the output of `emerge --info '=dev-ruby/rmagick-2.13.1'`, 
-  * the complete build log and the output of `emerge -pqv '=dev-ruby/rmagick-2.13.1'`. 
- !!! When you file a bug report, please include the following information: 
- GENTOO_VM=  CLASSPATH="" JAVA_HOME="" 
- JAVACFLAGS="" COMPILER="" 
- and of course, the output of emerge --info 
-  * The complete build log is located at '/var/tmp/portage/dev-ruby/rmagick-2.13.1/temp/build.log'. 
-  * The ebuild environment file is located at '/var/tmp/portage/dev-ruby/rmagick-2.13.1/temp/environment'. 
-  * Working directory: '/var/tmp/portage/dev-ruby/rmagick-2.13.1/work/ruby18/RMagick-2.13.1/ext/RMagick' 
-  * S: '/var/tmp/portage/dev-ruby/rmagick-2.13.1/work/ruby18/RMagick-2.13.1' 
-   
- >>> Failed to emerge dev-ruby/rmagick-2.13.1, Log file: 
-   
- >>>  '/var/tmp/portage/dev-ruby/rmagick-2.13.1/temp/build.log' 
-  * Messages for package dev-ruby/rmagick-2.13.1: 
-  * ERROR: dev-ruby/rmagick-2.13.1 failed (compile phase): 
-  *   emake failed 
-  *  
-  * Call stack: 
-  *     ebuild.sh, line   85:  Called src_compile 
-  *   environment, line 4348:  Called ruby-ng_src_compile 
-  *   environment, line 4012:  Called _ruby_each_implementation 'each_ruby_compile' 
-  *   environment, line  376:  Called _ruby_invoke_environment 'ruby18' 'each_ruby_compile' 
-  *   environment, line  428:  Called each_ruby_compile 
-  *   environment, line  709:  Called die 
-  * The specific snippet of code: 
-  *       emake || die "emake failed"; 
-  *  
-  * If you need support, post the output of `emerge --info '=dev-ruby/rmagick-2.13.1'`, 
-  * the complete build log and the output of `emerge -pqv '=dev-ruby/rmagick-2.13.1'`. 
-  * The complete build log is located at '/var/tmp/portage/dev-ruby/rmagick-2.13.1/temp/build.log'. 
-  * The ebuild environment file is located at '/var/tmp/portage/dev-ruby/rmagick-2.13.1/temp/environment'. 
-  * Working directory: '/var/tmp/portage/dev-ruby/rmagick-2.13.1/work/ruby18/RMagick-2.13.1/ext/RMagick' 
-  * S: '/var/tmp/portage/dev-ruby/rmagick-2.13.1/work/ruby18/RMagick-2.13.1' 
-   
-   
-   
				Q2FsY3VsYXRpbmcgZGVwZW5kZW5jaWVzICAKICogSU1QT1JUQU5UOiA1IG5ld3MgaXRlbXMgbmVlZCByZWFkaW5nIGZvciByZXBvc2l0b3J5ICdnZW50b28nLgogKiBVc2UgZXNlbGVjdCBuZXdzIHRvIHJlYWQgbmV3cyBpdGVtcy4KCi4uLiBkb25lIQoKPj4+IFZlcmlmeWluZyBlYnVpbGQgbWFuaWZlc3RzCgo+Pj4gRW1lcmdpbmcgKDEgb2YgMSkgZGV2LXJ1Ynkvcm1hZ2ljay0yLjEzLjEKICogUk1hZ2ljay0yLjEzLjEudGFyLmJ6MiBTSEEyNTYgU0hBNTEyIFdISVJMUE9PTCBzaXplIDstKSAuLi4gICAgICAgICAgIFsgb2sgXQo+Pj4gVW5wYWNraW5nIHNvdXJjZS4uLgogKiBSdW5uaW5nIHVucGFjayBwaGFzZSBmb3IgYWxsIC4uLgo+Pj4gVW5wYWNraW5nIFJNYWdpY2stMi4xMy4xLnRhci5iejIgdG8gL3Zhci90bXAvcG9ydGFnZS9kZXYtcnVieS9ybWFnaWNrLTIuMTMuMS93b3JrL2FsbAo+Pj4gU291cmNlIHVucGFja2VkIGluIC92YXIvdG1wL3BvcnRhZ2UvZGV2LXJ1Ynkvcm1hZ2ljay0yLjEzLjEvd29yawo+Pj4gUHJlcGFyaW5nIHNvdXJjZSBpbiAvdmFyL3RtcC9wb3J0YWdlL2Rldi1ydWJ5L3JtYWdpY2stMi4xMy4xL3dvcmsgLi4uCiAqIFJ1bm5pbmcgcHJlcGFyZSBwaGFzZSBmb3IgYWxsIC4uLgogKiBSdW5uaW5nIHNvdXJjZSBjb3B5IHBoYXNlIGZvciBydWJ5MTggLi4uCj4+PiBTb3VyY2UgcHJlcGFyZWQuCj4+PiBDb25maWd1cmluZyBzb3VyY2UgaW4gL3Zhci90bXAvcG9ydGFnZS9kZXYtcnVieS9ybWFnaWNrLTIuMTMuMS93b3JrIC4uLgogKiBSdW5uaW5nIGNvbmZpZ3VyZSBwaGFzZSBmb3IgcnVieTE4IC4uLgovdmFyL3RtcC9wb3J0YWdlL2Rldi1ydWJ5L3JtYWdpY2stMi4xMy4xL3dvcmsvcnVieTE4L1JNYWdpY2stMi4xMy4xL2V4dC9STWFnaWNrIC92YXIvdG1wL3BvcnRhZ2UvZGV2LXJ1Ynkvcm1hZ2ljay0yLjEzLjEvd29yay9ydWJ5MTgvUk1hZ2ljay0yLjEzLjEgL3Zhci90bXAvcG9ydGFnZS9kZXYtcnVieS9ybWFnaWNrLTIuMTMuMS93b3JrCmNoZWNraW5nIGZvciBSdWJ5IHZlcnNpb24gPj0gMS44LjUuLi4geWVzCmNoZWNraW5nIGZvciB4ODZfNjQtcGMtbGludXgtZ251LWdjYy4uLiB5ZXMKY2hlY2tpbmcgZm9yIE1hZ2ljay1jb25maWcuLi4geWVzCmNoZWNraW5nIGZvciBJbWFnZU1hZ2ljayB2ZXJzaW9uID49IDYuNC45Li4uIHllcwpjaGVja2luZyBmb3IgSERSSSBkaXNhYmxlZCB2ZXJzaW9uIG9mIEltYWdlTWFnaWNrLi4uIHllcwpjaGVja2luZyBmb3Igc3RkaW50LmguLi4geWVzCmNoZWNraW5nIGZvciBzeXMvdHlwZXMuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgSW5pdGlhbGl6ZU1hZ2ljaygpIGluIC1sTWFnaWNrQ29yZS4uLiB5ZXMKY2hlY2tpbmcgZm9yIHNucHJpbnRmKCkgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBBY3F1aXJlSW1hZ2UoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIEFmZmluaXR5SW1hZ2UoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIEFmZmluaXR5SW1hZ2VzKCkgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBBdXRvR2FtbWFJbWFnZUNoYW5uZWwoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIEF1dG9MZXZlbEltYWdlQ2hhbm5lbCgpIGluIGFzc2VydC5oLGN0eXBlLmgsc3RkaW8uaCxzdGRsaWIuaCxtYXRoLmgsdGltZS5oLHN0ZGludC5oLHN5cy90eXBlcy5oLHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgQmx1ZVNoaWZ0SW1hZ2UoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIENvbnN0aXR1dGVDb21wb25lbnRUZXJtaW51cygpIGluIGFzc2VydC5oLGN0eXBlLmgsc3RkaW8uaCxzdGRsaWIuaCxtYXRoLmgsdGltZS5oLHN0ZGludC5oLHN5cy90eXBlcy5oLHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgRGVza2V3SW1hZ2UoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIEVuY2lwaGVySW1hZ2UoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIEVxdWFsaXplSW1hZ2VDaGFubmVsKCkgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBGbG9vZGZpbGxQYWludEltYWdlKCkgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBGdW5jdGlvbkltYWdlQ2hhbm5lbCgpIGluIGFzc2VydC5oLGN0eXBlLmgsc3RkaW8uaCxzdGRsaWIuaCxtYXRoLmgsdGltZS5oLHN0ZGludC5oLHN5cy90eXBlcy5oLHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgR2V0QXV0aGVudGljSW5kZXhRdWV1ZSgpIGluIGFzc2VydC5oLGN0eXBlLmgsc3RkaW8uaCxzdGRsaWIuaCxtYXRoLmgsdGltZS5oLHN0ZGludC5oLHN5cy90eXBlcy5oLHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgR2V0QXV0aGVudGljUGl4ZWxzKCkgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBHZXRJbWFnZUFscGhhQ2hhbm5lbCgpIGluIGFzc2VydC5oLGN0eXBlLmgsc3RkaW8uaCxzdGRsaWIuaCxtYXRoLmgsdGltZS5oLHN0ZGludC5oLHN5cy90eXBlcy5oLHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgR2V0VmlydHVhbFBpeGVscygpIGluIGFzc2VydC5oLGN0eXBlLmgsc3RkaW8uaCxzdGRsaWIuaCxtYXRoLmgsdGltZS5oLHN0ZGludC5oLHN5cy90eXBlcy5oLHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgTGV2ZWxJbWFnZUNvbG9ycygpIGluIGFzc2VydC5oLGN0eXBlLmgsc3RkaW8uaCxzdGRsaWIuaCxtYXRoLmgsdGltZS5oLHN0ZGludC5oLHN5cy90eXBlcy5oLHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgTGV2ZWxDb2xvcnNJbWFnZUNoYW5uZWwoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIExldmVsaXplSW1hZ2VDaGFubmVsKCkgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBMaXF1aWRSZXNjYWxlSW1hZ2UoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIE1hZ2lja0xpYkFkZGVuZHVtKCkgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBPcGFxdWVQYWludEltYWdlQ2hhbm5lbCgpIGluIGFzc2VydC5oLGN0eXBlLmgsc3RkaW8uaCxzdGRsaWIuaCxtYXRoLmgsdGltZS5oLHN0ZGludC5oLHN5cy90eXBlcy5oLHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgUXVldWVBdXRoZW50aWNQaXhlbHMoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIFJlbWFwSW1hZ2UoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIFJlbW92ZUltYWdlQXJ0aWZhY3QoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIFNlbGVjdGl2ZUJsdXJJbWFnZUNoYW5uZWwoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIFNldEltYWdlQWxwaGFDaGFubmVsKCkgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBTZXRJbWFnZUFydGlmYWN0KCkgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBTZXRNYWdpY2tNZW1vcnlNZXRob2RzKCkgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBTcGFyc2VDb2xvckltYWdlKCkgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBTeW5jQXV0aGVudGljUGl4ZWxzKCkgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBUcmFuc3BhcmVudFBhaW50SW1hZ2UoKSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIFRyYW5zcGFyZW50UGFpbnRJbWFnZUNocm9tYSgpIGluIGFzc2VydC5oLGN0eXBlLmgsc3RkaW8uaCxzdGRsaWIuaCxtYXRoLmgsdGltZS5oLHN0ZGludC5oLHN5cy90eXBlcy5oLHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgUXVlcnlNYWdpY2tDb2xvcm5hbWUoKSBuZXcgc2lnbmF0dXJlLi4uIHllcwpjaGVja2luZyBmb3IgSW1hZ2UudHlwZSBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIERyYXdJbmZvLmtlcm5pbmcgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBEcmF3SW5mby5pbnRlcmxpbmVfc3BhY2luZyBpbiBhc3NlcnQuaCxjdHlwZS5oLHN0ZGlvLmgsc3RkbGliLmgsbWF0aC5oLHRpbWUuaCxzdGRpbnQuaCxzeXMvdHlwZXMuaCx3YW5kL01hZ2lja1dhbmQuaC4uLiB5ZXMKY2hlY2tpbmcgZm9yIERyYXdJbmZvLmludGVyd29yZF9zcGFjaW5nIGluIGFzc2VydC5oLGN0eXBlLmgsc3RkaW8uaCxzdGRsaWIuaCxtYXRoLmgsdGltZS5oLHN0ZGludC5oLHN5cy90eXBlcy5oLHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgRGl0aGVyTWV0aG9kIGluIGFzc2VydC5oLGN0eXBlLmgsc3RkaW8uaCxzdGRsaWIuaCxtYXRoLmgsdGltZS5oLHN0ZGludC5oLHN5cy90eXBlcy5oLHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgTWFnaWNrRnVuY3Rpb24gaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBJbWFnZUxheWVyTWV0aG9kIGluIGFzc2VydC5oLGN0eXBlLmgsc3RkaW8uaCxzdGRsaWIuaCxtYXRoLmgsdGltZS5oLHN0ZGludC5oLHN5cy90eXBlcy5oLHdhbmQvTWFnaWNrV2FuZC5oLi4uIHllcwpjaGVja2luZyBmb3IgbG9uZyBkb3VibGUgaW4gYXNzZXJ0LmgsY3R5cGUuaCxzdGRpby5oLHN0ZGxpYi5oLG1hdGguaCx0aW1lLmgsc3RkaW50Lmgsc3lzL3R5cGVzLmgsd2FuZC9NYWdpY2tXYW5kLmguLi4geWVzCmNoZWNraW5nIGZvciBBbHBoYUNoYW5uZWxUeXBlLkNvcHlBbHBoYUNoYW5uZWwuLi4geWVzCmNoZWNraW5nIGZvciBBbHBoYUNoYW5uZWxUeXBlLkJhY2tncm91bmRBbHBoYUNoYW5uZWwuLi4geWVzCmNoZWNraW5nIGZvciBDb21wb3NpdGVPcGVyYXRvci5CbHVyQ29tcG9zaXRlT3AuLi4geWVzCmNoZWNraW5nIGZvciBDb21wb3NpdGVPcGVyYXRvci5EaXN0b3J0Q29tcG9zaXRlT3AuLi4geWVzCmNoZWNraW5nIGZvciBDb21wb3NpdGVPcGVyYXRvci5MaW5lYXJCdXJuQ29tcG9zaXRlT3AuLi4geWVzCmNoZWNraW5nIGZvciBDb21wb3NpdGVPcGVyYXRvci5MaW5lYXJEb2RnZUNvbXBvc2l0ZU9wLi4uIHllcwpjaGVja2luZyBmb3IgQ29tcG9zaXRlT3BlcmF0b3IuTWF0aGVtYXRpY3NDb21wb3NpdGVPcC4uLiB5ZXMKY2hlY2tpbmcgZm9yIENvbXBvc2l0ZU9wZXJhdG9yLlBlZ3RvcExpZ2h0Q29tcG9zaXRlT3AuLi4geWVzCmNoZWNraW5nIGZvciBDb21wb3NpdGVPcGVyYXRvci5QaW5MaWdodENvbXBvc2l0ZU9wLi4uIHllcwpjaGVja2luZyBmb3IgQ29tcG9zaXRlT3BlcmF0b3IuVml2aWRMaWdodENvbXBvc2l0ZU9wLi4uIHllcwpjaGVja2luZyBmb3IgQ29tcHJlc3Npb25UeXBlLkRYVDFDb21wcmVzc2lvbi4uLiB5ZXMKY2hlY2tpbmcgZm9yIENvbXByZXNzaW9uVHlwZS5EWFQzQ29tcHJlc3Npb24uLi4geWVzCmNoZWNraW5nIGZvciBDb21wcmVzc2lvblR5cGUuRFhUNUNvbXByZXNzaW9uLi4uIHllcwpjaGVja2luZyBmb3IgQ29tcHJlc3Npb25UeXBlLlppcFNDb21wcmVzc2lvbi4uLiB5ZXMKY2hlY2tpbmcgZm9yIENvbXByZXNzaW9uVHlwZS5QaXpDb21wcmVzc2lvbi4uLiB5ZXMKY2hlY2tpbmcgZm9yIENvbXByZXNzaW9uVHlwZS5QeHIyNENvbXByZXNzaW9uLi4uIHllcwpjaGVja2luZyBmb3IgQ29tcHJlc3Npb25UeXBlLkI0NENvbXByZXNzaW9uLi4uIHllcwpjaGVja2luZyBmb3IgQ29tcHJlc3Npb25UeXBlLkI0NEFDb21wcmVzc2lvbi4uLiB5ZXMKY2hlY2tpbmcgZm9yIERpc3RvcnRJbWFnZU1ldGhvZC5CYXJyZWxEaXN0b3J0aW9uLi4uIHllcwpjaGVja2luZyBmb3IgRGlzdG9ydEltYWdlTWV0aG9kLkJhcnJlbEludmVyc2VEaXN0b3J0aW9uLi4uIHllcwpjaGVja2luZyBmb3IgRGlzdG9ydEltYWdlTWV0aG9kLkJpbGluZWFyRm9yd2FyZERpc3RvcnRpb24uLi4geWVzCmNoZWNraW5nIGZvciBEaXN0b3J0SW1hZ2VNZXRob2QuQmlsaW5lYXJSZXZlcnNlRGlzdG9ydGlvbi4uLiB5ZXMKY2hlY2tpbmcgZm9yIERpc3RvcnRJbWFnZU1ldGhvZC5EZVBvbGFyRGlzdG9ydGlvbi4uLiB5ZXMKY2hlY2tpbmcgZm9yIERpc3RvcnRJbWFnZU1ldGhvZC5Qb2xhckRpc3RvcnRpb24uLi4geWVzCmNoZWNraW5nIGZvciBEaXN0b3J0SW1hZ2VNZXRob2QuUG9seW5vbWlhbERpc3RvcnRpb24uLi4geWVzCmNoZWNraW5nIGZvciBEaXN0b3J0SW1hZ2VNZXRob2QuU2hlcGFyZHNEaXN0b3J0aW9uLi4uIHllcwpjaGVja2luZyBmb3IgRGl0aGVyTWV0aG9kLk5vRGl0aGVyTWV0aG9kLi4uIHllcwpjaGVja2luZyBmb3IgRmlsdGVyVHlwZXMuS2Fpc2VyRmlsdGVyLi4uIHllcwpjaGVja2luZyBmb3IgRmlsdGVyVHlwZXMuV2Vsc2hGaWx0ZXIuLi4geWVzCmNoZWNraW5nIGZvciBGaWx0ZXJUeXBlcy5QYXJ6ZW5GaWx0ZXIuLi4geWVzCmNoZWNraW5nIGZvciBGaWx0ZXJUeXBlcy5MYWdyYW5nZUZpbHRlci4uLiB5ZXMKY2hlY2tpbmcgZm9yIEZpbHRlclR5cGVzLkJvaG1hbkZpbHRlci4uLiB5ZXMKY2hlY2tpbmcgZm9yIEZpbHRlclR5cGVzLkJhcnRsZXR0RmlsdGVyLi4uIHllcwpjaGVja2luZyBmb3IgRmlsdGVyVHlwZXMuU2VudGluZWxGaWx0ZXIuLi4geWVzCmNoZWNraW5nIGZvciBNYWdpY2tFdmFsdWF0ZU9wZXJhdG9yLlBvd0V2YWx1YXRlT3BlcmF0b3IuLi4geWVzCmNoZWNraW5nIGZvciBNYWdpY2tFdmFsdWF0ZU9wZXJhdG9yLkxvZ0V2YWx1YXRlT3BlcmF0b3IuLi4geWVzCmNoZWNraW5nIGZvciBNYWdpY2tFdmFsdWF0ZU9wZXJhdG9yLlRocmVzaG9sZEV2YWx1YXRlT3BlcmF0b3IuLi4geWVzCmNoZWNraW5nIGZvciBNYWdpY2tFdmFsdWF0ZU9wZXJhdG9yLlRocmVzaG9sZEJsYWNrRXZhbHVhdGVPcGVyYXRvci4uLiB5ZXMKY2hlY2tpbmcgZm9yIE1hZ2lja0V2YWx1YXRlT3BlcmF0b3IuVGhyZXNob2xkV2hpdGVFdmFsdWF0ZU9wZXJhdG9yLi4uIHllcwpjaGVja2luZyBmb3IgTWFnaWNrRXZhbHVhdGVPcGVyYXRvci5HYXVzc2lhbk5vaXNlRXZhbHVhdGVPcGVyYXRvci4uLiB5ZXMKY2hlY2tpbmcgZm9yIE1hZ2lja0V2YWx1YXRlT3BlcmF0b3IuSW1wdWxzZU5vaXNlRXZhbHVhdGVPcGVyYXRvci4uLiB5ZXMKY2hlY2tpbmcgZm9yIE1hZ2lja0V2YWx1YXRlT3BlcmF0b3IuTGFwbGFjaWFuTm9pc2VFdmFsdWF0ZU9wZXJhdG9yLi4uIHllcwpjaGVja2luZyBmb3IgTWFnaWNrRXZhbHVhdGVPcGVyYXRvci5NdWx0aXBsaWNhdGl2ZU5vaXNlRXZhbHVhdGVPcGVyYXRvci4uLiB5ZXMKY2hlY2tpbmcgZm9yIE1hZ2lja0V2YWx1YXRlT3BlcmF0b3IuUG9pc3Nvbk5vaXNlRXZhbHVhdGVPcGVyYXRvci4uLiB5ZXMKY2hlY2tpbmcgZm9yIE1hZ2lja0V2YWx1YXRlT3BlcmF0b3IuVW5pZm9ybU5vaXNlRXZhbHVhdGVPcGVyYXRvci4uLiB5ZXMKY2hlY2tpbmcgZm9yIE1hZ2lja0V2YWx1YXRlT3BlcmF0b3IuQ29zaW5lRXZhbHVhdGVPcGVyYXRvci4uLiB5ZXMKY2hlY2tpbmcgZm9yIE1hZ2lja0V2YWx1YXRlT3BlcmF0b3IuU2luZUV2YWx1YXRlT3BlcmF0b3IuLi4geWVzCmNoZWNraW5nIGZvciBNYWdpY2tFdmFsdWF0ZU9wZXJhdG9yLkFkZE1vZHVsdXNFdmFsdWF0ZU9wZXJhdG9yLi4uIHllcwpjaGVja2luZyBmb3IgTWFnaWNrRnVuY3Rpb24uQXJjc2luRnVuY3Rpb24uLi4geWVzCmNoZWNraW5nIGZvciBNYWdpY2tGdW5jdGlvbi5BcmN0YW5GdW5jdGlvbi4uLiB5ZXMKY2hlY2tpbmcgZm9yIE1hZ2lja0Z1bmN0aW9uLlBvbHlub21pYWxGdW5jdGlvbi4uLiB5ZXMKY2hlY2tpbmcgZm9yIE1hZ2lja0Z1bmN0aW9uLlNpbnVzb2lkRnVuY3Rpb24uLi4geWVzCmNoZWNraW5nIGZvciBJbWFnZUxheWVyTWV0aG9kLkZsYXR0ZW5MYXllci4uLiB5ZXMKY2hlY2tpbmcgZm9yIEltYWdlTGF5ZXJNZXRob2QuTWVyZ2VMYXllci4uLiB5ZXMKY2hlY2tpbmcgZm9yIEltYWdlTGF5ZXJNZXRob2QuTW9zYWljTGF5ZXIuLi4geWVzCmNoZWNraW5nIGZvciBJbWFnZUxheWVyTWV0aG9kLlRyaW1Cb3VuZHNMYXllci4uLiB5ZXMKY2hlY2tpbmcgZm9yIFZpcnR1YWxQaXhlbE1ldGhvZC5Ib3Jpem9udGFsVGlsZVZpcnR1YWxQaXhlbE1ldGhvZC4uLiB5ZXMKY2hlY2tpbmcgZm9yIFZpcnR1YWxQaXhlbE1ldGhvZC5WZXJ0aWNhbFRpbGVWaXJ0dWFsUGl4ZWxNZXRob2QuLi4geWVzCmNoZWNraW5nIGZvciBWaXJ0dWFsUGl4ZWxNZXRob2QuSG9yaXpvbnRhbFRpbGVFZGdlVmlydHVhbFBpeGVsTWV0aG9kLi4uIHllcwpjaGVja2luZyBmb3IgVmlydHVhbFBpeGVsTWV0aG9kLlZlcnRpY2FsVGlsZUVkZ2VWaXJ0dWFsUGl4ZWxNZXRob2QuLi4geWVzCmNoZWNraW5nIGZvciBWaXJ0dWFsUGl4ZWxNZXRob2QuQ2hlY2tlclRpbGVWaXJ0dWFsUGl4ZWxNZXRob2QuLi4geWVzCmNoZWNraW5nIGZvciBydWJ5L2lvLmguLi4gbm8KY2hlY2tpbmcgZm9yIHJiX2ZyYW1lX3RoaXNfZnVuYygpIGluIHJ1YnkuaCxydWJ5aW8uaC4uLiB5ZXMKY3JlYXRpbmcgZXh0Y29uZi5oCmNyZWF0aW5nIE1ha2VmaWxlCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpTdW4gMTFOb3YxMiAxMTowMDoyOApUaGlzIGluc3RhbGxhdGlvbiBvZiBSTWFnaWNrIDIuMTMuMSBpcyBjb25maWd1cmVkIGZvcgpSdWJ5IDEuOC43ICh4ODZfNjQtbGludXgpIGFuZCBJbWFnZU1hZ2ljayA2LjcuOCBRNjQgCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCgovdmFyL3RtcC9wb3J0YWdlL2Rldi1ydWJ5L3JtYWdpY2stMi4xMy4xL3dvcmsvcnVieTE4L1JNYWdpY2stMi4xMy4xIC92YXIvdG1wL3BvcnRhZ2UvZGV2LXJ1Ynkvcm1hZ2ljay0yLjEzLjEvd29yawo+Pj4gU291cmNlIGNvbmZpZ3VyZWQuCj4+PiBDb21waWxpbmcgc291cmNlIGluIC92YXIvdG1wL3BvcnRhZ2UvZGV2LXJ1Ynkvcm1hZ2ljay0yLjEzLjEvd29yayAuLi4KICogUnVubmluZyBjb21waWxlIHBoYXNlIGZvciBydWJ5MTggLi4uCi92YXIvdG1wL3BvcnRhZ2UvZGV2LXJ1Ynkvcm1hZ2ljay0yLjEzLjEvd29yay9ydWJ5MTgvUk1hZ2ljay0yLjEzLjEvZXh0L1JNYWdpY2sgL3Zhci90bXAvcG9ydGFnZS9kZXYtcnVieS9ybWFnaWNrLTIuMTMuMS93b3JrL3J1YnkxOC9STWFnaWNrLTIuMTMuMSAvdmFyL3RtcC9wb3J0YWdlL2Rldi1ydWJ5L3JtYWdpY2stMi4xMy4xL3dvcmsKbWFrZSAtajUgCng4Nl82NC1wYy1saW51eC1nbnUtZ2NjIC1JLiAtSS4gLUkvdXNyL2xpYjY0L3J1YnkvMS44L3g4Nl82NC1saW51eCAtSS4gLURSVUJZX0VYVENPTkZfSD1cImV4dGNvbmYuaFwiICAtZm9wZW5tcCAtSS91c3IvaW5jbHVkZS9JbWFnZU1hZ2ljayAgIC1mUElDIC1PMiAtcGlwZSAtbWFyY2g9bmF0aXZlIC1mb3Blbm1wIC1JL3Vzci9pbmNsdWRlL0ltYWdlTWFnaWNrICAgIC1jIHJtdXRpbC5jCng4Nl82NC1wYy1saW51eC1nbnUtZ2NjIC1JLiAtSS4gLUkvdXNyL2xpYjY0L3J1YnkvMS44L3g4Nl82NC1saW51eCAtSS4gLURSVUJZX0VYVENPTkZfSD1cImV4dGNvbmYuaFwiICAtZm9wZW5tcCAtSS91c3IvaW5jbHVkZS9JbWFnZU1hZ2ljayAgIC1mUElDIC1PMiAtcGlwZSAtbWFyY2g9bmF0aXZlIC1mb3Blbm1wIC1JL3Vzci9pbmNsdWRlL0ltYWdlTWFnaWNrICAgIC1jIHJtZHJhdy5jCng4Nl82NC1wYy1saW51eC1nbnUtZ2NjIC1JLiAtSS4gLUkvdXNyL2xpYjY0L3J1YnkvMS44L3g4Nl82NC1saW51eCAtSS4gLURSVUJZX0VYVENPTkZfSD1cImV4dGNvbmYuaFwiICAtZm9wZW5tcCAtSS91c3IvaW5jbHVkZS9JbWFnZU1hZ2ljayAgIC1mUElDIC1PMiAtcGlwZSAtbWFyY2g9bmF0aXZlIC1mb3Blbm1wIC1JL3Vzci9pbmNsdWRlL0ltYWdlTWFnaWNrICAgIC1jIHJtZW51bS5jCng4Nl82NC1wYy1saW51eC1nbnUtZ2NjIC1JLiAtSS4gLUkvdXNyL2xpYjY0L3J1YnkvMS44L3g4Nl82NC1saW51eCAtSS4gLURSVUJZX0VYVENPTkZfSD1cImV4dGNvbmYuaFwiICAtZm9wZW5tcCAtSS91c3IvaW5jbHVkZS9JbWFnZU1hZ2ljayAgIC1mUElDIC1PMiAtcGlwZSAtbWFyY2g9bmF0aXZlIC1mb3Blbm1wIC1JL3Vzci9pbmNsdWRlL0ltYWdlTWFnaWNrICAgIC1jIHJtbWFpbi5jCng4Nl82NC1wYy1saW51eC1nbnUtZ2NjIC1JLiAtSS4gLUkvdXNyL2xpYjY0L3J1YnkvMS44L3g4Nl82NC1saW51eCAtSS4gLURSVUJZX0VYVENPTkZfSD1cImV4dGNvbmYuaFwiICAtZm9wZW5tcCAtSS91c3IvaW5jbHVkZS9JbWFnZU1hZ2ljayAgIC1mUElDIC1PMiAtcGlwZSAtbWFyY2g9bmF0aXZlIC1mb3Blbm1wIC1JL3Vzci9pbmNsdWRlL0ltYWdlTWFnaWNrICAgIC1jIHJtYWdpY2suYwpybW1haW4uYzog0JIg0YTRg9C90LrRhtC40Lgg4oCYSW5pdF9STWFnaWNrMuKAmToKcm1tYWluLmM6ODIxOjU6INC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40LU6INC/0LXRgNC10L/QvtC70L3QtdC90LjQtSDQv9GA0Lgg0L3QtdGP0LLQvdC+0Lwg0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjQuCDQutC+0L3RgdGC0LDQvdGC0YsKcm1tYWluLmM6ODIyOjU6INC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40LU6INC/0LXRgNC10L/QvtC70L3QtdC90LjQtSDQv9GA0Lgg0L3QtdGP0LLQvdC+0Lwg0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjQuCDQutC+0L3RgdGC0LDQvdGC0YsKcm1tYWluLmM6ODI1OjU6INC/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40LU6INC/0LXRgNC10L/QvtC70L3QtdC90LjQtSDQv9GA0Lgg0L3QtdGP0LLQvdC+0Lwg0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjQuCDQutC+0L3RgdGC0LDQvdGC0YsKeDg2XzY0LXBjLWxpbnV4LWdudS1nY2MgLUkuIC1JLiAtSS91c3IvbGliNjQvcnVieS8xLjgveDg2XzY0LWxpbnV4IC1JLiAtRFJVQllfRVhUQ09ORl9IPVwiZXh0Y29uZi5oXCIgIC1mb3Blbm1wIC1JL3Vzci9pbmNsdWRlL0ltYWdlTWFnaWNrICAgLWZQSUMgLU8yIC1waXBlIC1tYXJjaD1uYXRpdmUgLWZvcGVubXAgLUkvdXNyL2luY2x1ZGUvSW1hZ2VNYWdpY2sgICAgLWMgcm1zdHJ1Y3QuYwp4ODZfNjQtcGMtbGludXgtZ251LWdjYyAtSS4gLUkuIC1JL3Vzci9saWI2NC9ydWJ5LzEuOC94ODZfNjQtbGludXggLUkuIC1EUlVCWV9FWFRDT05GX0g9XCJleHRjb25mLmhcIiAgLWZvcGVubXAgLUkvdXNyL2luY2x1ZGUvSW1hZ2VNYWdpY2sgICAtZlBJQyAtTzIgLXBpcGUgLW1hcmNoPW5hdGl2ZSAtZm9wZW5tcCAtSS91c3IvaW5jbHVkZS9JbWFnZU1hZ2ljayAgICAtYyBybWZpbGwuYwp4ODZfNjQtcGMtbGludXgtZ251LWdjYyAtSS4gLUkuIC1JL3Vzci9saWI2NC9ydWJ5LzEuOC94ODZfNjQtbGludXggLUkuIC1EUlVCWV9FWFRDT05GX0g9XCJleHRjb25mLmhcIiAgLWZvcGVubXAgLUkvdXNyL2luY2x1ZGUvSW1hZ2VNYWdpY2sgICAtZlBJQyAtTzIgLXBpcGUgLW1hcmNoPW5hdGl2ZSAtZm9wZW5tcCAtSS91c3IvaW5jbHVkZS9JbWFnZU1hZ2ljayAgICAtYyBybXBpeGVsLmMKeDg2XzY0LXBjLWxpbnV4LWdudS1nY2MgLUkuIC1JLiAtSS91c3IvbGliNjQvcnVieS8xLjgveDg2XzY0LWxpbnV4IC1JLiAtRFJVQllfRVhUQ09ORl9IPVwiZXh0Y29uZi5oXCIgIC1mb3Blbm1wIC1JL3Vzci9pbmNsdWRlL0ltYWdlTWFnaWNrICAgLWZQSUMgLU8yIC1waXBlIC1tYXJjaD1uYXRpdmUgLWZvcGVubXAgLUkvdXNyL2luY2x1ZGUvSW1hZ2VNYWdpY2sgICAgLWMgcm1pbmZvLmMKeDg2XzY0LXBjLWxpbnV4LWdudS1nY2MgLUkuIC1JLiAtSS91c3IvbGliNjQvcnVieS8xLjgveDg2XzY0LWxpbnV4IC1JLiAtRFJVQllfRVhUQ09ORl9IPVwiZXh0Y29uZi5oXCIgIC1mb3Blbm1wIC1JL3Vzci9pbmNsdWRlL0ltYWdlTWFnaWNrICAgLWZQSUMgLU8yIC1waXBlIC1tYXJjaD1uYXRpdmUgLWZvcGVubXAgLUkvdXNyL2luY2x1ZGUvSW1hZ2VNYWdpY2sgICAgLWMgcm1pbGlzdC5jCng4Nl82NC1wYy1saW51eC1nbnUtZ2NjIC1JLiAtSS4gLUkvdXNyL2xpYjY0L3J1YnkvMS44L3g4Nl82NC1saW51eCAtSS4gLURSVUJZX0VYVENPTkZfSD1cImV4dGNvbmYuaFwiICAtZm9wZW5tcCAtSS91c3IvaW5jbHVkZS9JbWFnZU1hZ2ljayAgIC1mUElDIC1PMiAtcGlwZSAtbWFyY2g9bmF0aXZlIC1mb3Blbm1wIC1JL3Vzci9pbmNsdWRlL0ltYWdlTWFnaWNrICAgIC1jIHJtaW1hZ2UuYwpybWlsaXN0LmM6INCSINGE0YPQvdC60YbQuNC4IOKAmEltYWdlTGlzdF9tYXDigJk6CnJtaWxpc3QuYzo0NDg6NTog0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtTog4oCYTWFwSW1hZ2Vz4oCZIGlzIGRlcHJlY2F0ZWQgKGRlY2xhcmVkIGF0IC91c3IvaW5jbHVkZS9JbWFnZU1hZ2ljay9tYWdpY2svZGVwcmVjYXRlLmg6MTk3KQpybWltYWdlLmM6INCSINGE0YPQvdC60YbQuNC4IOKAmEltYWdlX21hcOKAmToKcm1pbWFnZS5jOjgxNTU6NTog0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtTog4oCYTWFwSW1hZ2XigJkgaXMgZGVwcmVjYXRlZCAoZGVjbGFyZWQgYXQgL3Vzci9pbmNsdWRlL0ltYWdlTWFnaWNrL21hZ2ljay9kZXByZWNhdGUuaDoxOTUpCnJtaW1hZ2UuYzog0JIg0YTRg9C90LrRhtC40Lgg4oCYSW1hZ2VfcGl4ZWxfY29sb3LigJk6CnJtaW1hZ2UuYzo5ODE4OjQwOiDQvtGI0LjQsdC60LA6INC40L3QtNC10LrRgSDQvNCw0YHRgdC40LLQsCDQvdC1INGP0LLQu9GP0LXRgtGB0Y8g0YbQtdC70YvQvCDQt9C90LDRh9C10L3QuNC10LwKcm1pbWFnZS5jOiDQkiDRhNGD0L3QutGG0LjQuCDigJhJbWFnZV9yZWNvbG9y4oCZOgpybWltYWdlLmM6MTA3MDE6NTog0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtTog4oCYUmVjb2xvckltYWdl4oCZIGlzIGRlcHJlY2F0ZWQgKGRlY2xhcmVkIGF0IC91c3IvaW5jbHVkZS9JbWFnZU1hZ2ljay9tYWdpY2svZGVwcmVjYXRlLmg6MTM5KQpybWltYWdlLmM6INCSINGE0YPQvdC60YbQuNC4IOKAmEltYWdlX2NsYXNzX3R5cGVfZXHigJk6CnJtaW1hZ2UuYzoxMjY0ODo5OiDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1OiDQv9C10YDQtdC/0L7Qu9C90LXQvdC40LUg0L/RgNC4INC90LXRj9Cy0L3QvtC8INC/0YDQtdC+0LHRgNCw0LfQvtCy0LDQvdC40Lgg0LrQvtC90YHRgtCw0L3RgtGLCng4Nl82NC1wYy1saW51eC1nbnUtZ2NjIC1JLiAtSS4gLUkvdXNyL2xpYjY0L3J1YnkvMS44L3g4Nl82NC1saW51eCAtSS4gLURSVUJZX0VYVENPTkZfSD1cImV4dGNvbmYuaFwiICAtZm9wZW5tcCAtSS91c3IvaW5jbHVkZS9JbWFnZU1hZ2ljayAgIC1mUElDIC1PMiAtcGlwZSAtbWFyY2g9bmF0aXZlIC1mb3Blbm1wIC1JL3Vzci9pbmNsdWRlL0ltYWdlTWFnaWNrICAgIC1jIHJtbW9udGFnZS5jCm1ha2U6ICoqKiBbcm1pbWFnZS5vXSDQntGI0LjQsdC60LAgMQptYWtlOiAqKiog0J7QttC40LTQsNC90LjQtSDQt9Cw0LLQtdGA0YjQtdC90LjRjyDQt9Cw0LTQsNC90LjQuS4uLgplbWFrZSBmYWlsZWQKICogRVJST1I6IGRldi1ydWJ5L3JtYWdpY2stMi4xMy4xIGZhaWxlZCAoY29tcGlsZSBwaGFzZSk6CiAqICAgZW1ha2UgZmFpbGVkCiAqIAogKiBDYWxsIHN0YWNrOgogKiAgICAgZWJ1aWxkLnNoLCBsaW5lICAgODU6ICBDYWxsZWQgc3JjX2NvbXBpbGUKICogICBlbnZpcm9ubWVudCwgbGluZSA0MzQ4OiAgQ2FsbGVkIHJ1Ynktbmdfc3JjX2NvbXBpbGUKICogICBlbnZpcm9ubWVudCwgbGluZSA0MDEyOiAgQ2FsbGVkIF9ydWJ5X2VhY2hfaW1wbGVtZW50YXRpb24gJ2VhY2hfcnVieV9jb21waWxlJwogKiAgIGVudmlyb25tZW50LCBsaW5lICAzNzY6ICBDYWxsZWQgX3J1YnlfaW52b2tlX2Vudmlyb25tZW50ICdydWJ5MTgnICdlYWNoX3J1YnlfY29tcGlsZScKICogICBlbnZpcm9ubWVudCwgbGluZSAgNDI4OiAgQ2FsbGVkIGVhY2hfcnVieV9jb21waWxlCiAqICAgZW52aXJvbm1lbnQsIGxpbmUgIDcwOTogIENhbGxlZCBkaWUKICogVGhlIHNwZWNpZmljIHNuaXBwZXQgb2YgY29kZToKICogICAgICAgZW1ha2UgfHwgZGllICJlbWFrZSBmYWlsZWQiOwogKiAKICogSWYgeW91IG5lZWQgc3VwcG9ydCwgcG9zdCB0aGUgb3V0cHV0IG9mIGBlbWVyZ2UgLS1pbmZvICc9ZGV2LXJ1Ynkvcm1hZ2ljay0yLjEzLjEnYCwKICogdGhlIGNvbXBsZXRlIGJ1aWxkIGxvZyBhbmQgdGhlIG91dHB1dCBvZiBgZW1lcmdlIC1wcXYgJz1kZXYtcnVieS9ybWFnaWNrLTIuMTMuMSdgLgohISEgV2hlbiB5b3UgZmlsZSBhIGJ1ZyByZXBvcnQsIHBsZWFzZSBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246CkdFTlRPT19WTT0gIENMQVNTUEFUSD0iIiBKQVZBX0hPTUU9IiIKSkFWQUNGTEFHUz0iIiBDT01QSUxFUj0iIgphbmQgb2YgY291cnNlLCB0aGUgb3V0cHV0IG9mIGVtZXJnZSAtLWluZm8KICogVGhlIGNvbXBsZXRlIGJ1aWxkIGxvZyBpcyBsb2NhdGVkIGF0ICcvdmFyL3RtcC9wb3J0YWdlL2Rldi1ydWJ5L3JtYWdpY2stMi4xMy4xL3RlbXAvYnVpbGQubG9nJy4KICogVGhlIGVidWlsZCBlbnZpcm9ubWVudCBmaWxlIGlzIGxvY2F0ZWQgYXQgJy92YXIvdG1wL3BvcnRhZ2UvZGV2LXJ1Ynkvcm1hZ2ljay0yLjEzLjEvdGVtcC9lbnZpcm9ubWVudCcuCiAqIFdvcmtpbmcgZGlyZWN0b3J5OiAnL3Zhci90bXAvcG9ydGFnZS9kZXYtcnVieS9ybWFnaWNrLTIuMTMuMS93b3JrL3J1YnkxOC9STWFnaWNrLTIuMTMuMS9leHQvUk1hZ2ljaycKICogUzogJy92YXIvdG1wL3BvcnRhZ2UvZGV2LXJ1Ynkvcm1hZ2ljay0yLjEzLjEvd29yay9ydWJ5MTgvUk1hZ2ljay0yLjEzLjEnCgo+Pj4gRmFpbGVkIHRvIGVtZXJnZSBkZXYtcnVieS9ybWFnaWNrLTIuMTMuMSwgTG9nIGZpbGU6Cgo+Pj4gICcvdmFyL3RtcC9wb3J0YWdlL2Rldi1ydWJ5L3JtYWdpY2stMi4xMy4xL3RlbXAvYnVpbGQubG9nJwogKiBNZXNzYWdlcyBmb3IgcGFja2FnZSBkZXYtcnVieS9ybWFnaWNrLTIuMTMuMToKICogRVJST1I6IGRldi1ydWJ5L3JtYWdpY2stMi4xMy4xIGZhaWxlZCAoY29tcGlsZSBwaGFzZSk6CiAqICAgZW1ha2UgZmFpbGVkCiAqIAogKiBDYWxsIHN0YWNrOgogKiAgICAgZWJ1aWxkLnNoLCBsaW5lICAgODU6ICBDYWxsZWQgc3JjX2NvbXBpbGUKICogICBlbnZpcm9ubWVudCwgbGluZSA0MzQ4OiAgQ2FsbGVkIHJ1Ynktbmdfc3JjX2NvbXBpbGUKICogICBlbnZpcm9ubWVudCwgbGluZSA0MDEyOiAgQ2FsbGVkIF9ydWJ5X2VhY2hfaW1wbGVtZW50YXRpb24gJ2VhY2hfcnVieV9jb21waWxlJwogKiAgIGVudmlyb25tZW50LCBsaW5lICAzNzY6ICBDYWxsZWQgX3J1YnlfaW52b2tlX2Vudmlyb25tZW50ICdydWJ5MTgnICdlYWNoX3J1YnlfY29tcGlsZScKICogICBlbnZpcm9ubWVudCwgbGluZSAgNDI4OiAgQ2FsbGVkIGVhY2hfcnVieV9jb21waWxlCiAqICAgZW52aXJvbm1lbnQsIGxpbmUgIDcwOTogIENhbGxlZCBkaWUKICogVGhlIHNwZWNpZmljIHNuaXBwZXQgb2YgY29kZToKICogICAgICAgZW1ha2UgfHwgZGllICJlbWFrZSBmYWlsZWQiOwogKiAKICogSWYgeW91IG5lZWQgc3VwcG9ydCwgcG9zdCB0aGUgb3V0cHV0IG9mIGBlbWVyZ2UgLS1pbmZvICc9ZGV2LXJ1Ynkvcm1hZ2ljay0yLjEzLjEnYCwKICogdGhlIGNvbXBsZXRlIGJ1aWxkIGxvZyBhbmQgdGhlIG91dHB1dCBvZiBgZW1lcmdlIC1wcXYgJz1kZXYtcnVieS9ybWFnaWNrLTIuMTMuMSdgLgogKiBUaGUgY29tcGxldGUgYnVpbGQgbG9nIGlzIGxvY2F0ZWQgYXQgJy92YXIvdG1wL3BvcnRhZ2UvZGV2LXJ1Ynkvcm1hZ2ljay0yLjEzLjEvdGVtcC9idWlsZC5sb2cnLgogKiBUaGUgZWJ1aWxkIGVudmlyb25tZW50IGZpbGUgaXMgbG9jYXRlZCBhdCAnL3Zhci90bXAvcG9ydGFnZS9kZXYtcnVieS9ybWFnaWNrLTIuMTMuMS90ZW1wL2Vudmlyb25tZW50Jy4KICogV29ya2luZyBkaXJlY3Rvcnk6ICcvdmFyL3RtcC9wb3J0YWdlL2Rldi1ydWJ5L3JtYWdpY2stMi4xMy4xL3dvcmsvcnVieTE4L1JNYWdpY2stMi4xMy4xL2V4dC9STWFnaWNrJwogKiBTOiAnL3Zhci90bXAvcG9ydGFnZS9kZXYtcnVieS9ybWFnaWNrLTIuMTMuMS93b3JrL3J1YnkxOC9STWFnaWNrLTIuMTMuMScKCgo=