<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>22943</bug_id>
          
          <creation_ts>2008-12-19 17:06:04 -0800</creation_ts>
          <short_desc>Rename AffineTransform</short_desc>
          <delta_ts>2009-03-02 11:51:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>103053</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-12-19 17:06:04 -0800</bug_when>
    <thetext>AffineTransform should be renamed so we can add new features for non-affine transforms without adding another matrix class. This should enable all the transformy stuff to be in one class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103054</commentid>
    <comment_count>1</comment_count>
      <attachid>26165</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-12-19 17:07:29 -0800</bug_when>
    <thetext>Created attachment 26165
renames AffineTransform to TransformMatrix

AffineTransform -&gt; TransformMatrix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103055</commentid>
    <comment_count>2</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-12-19 17:08:55 -0800</bug_when>
    <thetext>When we get around to extending the class, the goal will be to keep the affine interface the same (with the same performance) and add new methods for non-affine stuff.
That way SVG and other affine usage won&apos;t need to change.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104112</commentid>
    <comment_count>3</comment_count>
      <attachid>26165</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-02 10:50:15 -0800</bug_when>
    <thetext>Comment on attachment 26165
renames AffineTransform to TransformMatrix

You should do changes like this with the do-webcore-rename script. It handles everything for you and almost always gets everything right. For example, it would have corrected all the make files for platforms other than the Mac that you neglected such as GNUMakefile.am and WebCore.vcproj.

Are you sure TransformMatrix is the best name? Transform seems to be a noun or a verb, not an adjective. Why not TransformationMatrix?

I&apos;m going to say review- because this would break non-Mac platforms. Once you decide what name you like, someone can do this using do-webcore-rename; less error prone than doing it manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104506</commentid>
    <comment_count>4</comment_count>
      <attachid>26446</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2009-01-05 16:39:50 -0800</bug_when>
    <thetext>Created attachment 26446
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104507</commentid>
    <comment_count>5</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2009-01-05 16:41:45 -0800</bug_when>
    <thetext>I didn&apos;t know about that script, thanks. Although it updated the build files for other platforms it didn&apos;t do all of the work.

I&apos;ve used the name TransformationMatrix this time, per your advice. I don&apos;t really care what the name is - AffineTransform probably should have been AffineTransformation from the start :) </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104510</commentid>
    <comment_count>6</comment_count>
      <attachid>26446</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-05 16:57:26 -0800</bug_when>
    <thetext>Comment on attachment 26446
updated patch

Having the giant list of every file changed and every function in the ChangeLog probably isn&apos;t all that helpful.

Name change is good. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104516</commentid>
    <comment_count>7</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2009-01-05 18:14:00 -0800</bug_when>
    <thetext>I&apos;ll remove the giant list from the changelog
thanks.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104518</commentid>
    <comment_count>8</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2009-01-05 19:01:20 -0800</bug_when>
    <thetext>Sending        WebCore/ChangeLog
Sending        WebCore/GNUmakefile.am
Sending        WebCore/WebCore.pro
Sending        WebCore/WebCore.scons
Sending        WebCore/WebCore.vcproj/WebCore.vcproj
Sending        WebCore/WebCore.xcodeproj/project.pbxproj
Sending        WebCore/WebCoreSources.bkl
Sending        WebCore/bindings/js/JSSVGMatrixCustom.cpp
Sending        WebCore/bindings/js/JSSVGPODTypeWrapper.h
Sending        WebCore/bindings/objc/DOMInternal.h
Sending        WebCore/bindings/scripts/CodeGeneratorJS.pm
Sending        WebCore/bindings/scripts/CodeGeneratorObjC.pm
Sending        WebCore/css/CSSComputedStyleDeclaration.cpp
Sending        WebCore/html/CanvasRenderingContext2D.cpp
Sending        WebCore/html/CanvasRenderingContext2D.h
Sending        WebCore/html/HTMLCanvasElement.cpp
Sending        WebCore/html/HTMLCanvasElement.h
Sending        WebCore/page/animation/AnimationBase.cpp
Sending        WebCore/page/win/FrameCGWin.cpp
Sending        WebCore/page/win/FrameWin.cpp
Sending        WebCore/platform/graphics/BitmapImage.h
Sending        WebCore/platform/graphics/FloatPoint.cpp
Sending        WebCore/platform/graphics/FloatPoint.h
Sending        WebCore/platform/graphics/GeneratedImage.cpp
Sending        WebCore/platform/graphics/GeneratedImage.h
Sending        WebCore/platform/graphics/GraphicsContext.h
Sending        WebCore/platform/graphics/GraphicsContextPrivate.h
Sending        WebCore/platform/graphics/Image.cpp
Sending        WebCore/platform/graphics/Image.h
Sending        WebCore/platform/graphics/ImageBuffer.h
Sending        WebCore/platform/graphics/Path.h
Sending        WebCore/platform/graphics/Pattern.h
Sending        WebCore/platform/graphics/cairo/AffineTransformCairo.cpp
Sending        WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
Sending        WebCore/platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h
Sending        WebCore/platform/graphics/cairo/ImageCairo.cpp
Sending        WebCore/platform/graphics/cairo/PathCairo.cpp
Sending        WebCore/platform/graphics/cairo/PatternCairo.cpp
Sending        WebCore/platform/graphics/cg/AffineTransformCG.cpp
Sending        WebCore/platform/graphics/cg/GraphicsContextCG.cpp
Sending        WebCore/platform/graphics/cg/GraphicsContextPlatformPrivateCG.h
Sending        WebCore/platform/graphics/cg/ImageCG.cpp
Sending        WebCore/platform/graphics/cg/PathCG.cpp
Sending        WebCore/platform/graphics/cg/PatternCG.cpp
Sending        WebCore/platform/graphics/qt/AffineTransformQt.cpp
Sending        WebCore/platform/graphics/qt/GraphicsContextQt.cpp
Sending        WebCore/platform/graphics/qt/ImageQt.cpp
Sending        WebCore/platform/graphics/qt/PathQt.cpp
Sending        WebCore/platform/graphics/qt/PatternQt.cpp
Deleting       WebCore/platform/graphics/transforms/AffineTransform.cpp
Deleting       WebCore/platform/graphics/transforms/AffineTransform.h
Sending        WebCore/platform/graphics/transforms/IdentityTransformOperation.h
Sending        WebCore/platform/graphics/transforms/MatrixTransformOperation.cpp
Sending        WebCore/platform/graphics/transforms/MatrixTransformOperation.h
Sending        WebCore/platform/graphics/transforms/RotateTransformOperation.h
Sending        WebCore/platform/graphics/transforms/ScaleTransformOperation.h
Sending        WebCore/platform/graphics/transforms/SkewTransformOperation.h
Sending        WebCore/platform/graphics/transforms/TransformOperation.h
Sending        WebCore/platform/graphics/transforms/TransformOperations.h
Adding         WebCore/platform/graphics/transforms/TransformationMatrix.cpp
Adding         WebCore/platform/graphics/transforms/TransformationMatrix.h
Sending        WebCore/platform/graphics/transforms/TranslateTransformOperation.h
Sending        WebCore/platform/graphics/win/FontCGWin.cpp
Sending        WebCore/platform/graphics/win/GraphicsContextCGWin.cpp
Sending        WebCore/platform/graphics/win/GraphicsContextCairoWin.cpp
Sending        WebCore/platform/graphics/win/GraphicsContextWin.cpp
Sending        WebCore/platform/graphics/wx/AffineTransformWx.cpp
Sending        WebCore/platform/graphics/wx/GraphicsContextWx.cpp
Sending        WebCore/platform/graphics/wx/ImageWx.cpp
Sending        WebCore/platform/graphics/wx/PathWx.cpp
Sending        WebCore/platform/gtk/RenderThemeGtk.cpp
Sending        WebCore/platform/wx/TemporaryLinkStubs.cpp
Sending        WebCore/rendering/RenderForeignObject.cpp
Sending        WebCore/rendering/RenderForeignObject.h
Sending        WebCore/rendering/RenderLayer.cpp
Sending        WebCore/rendering/RenderLayer.h
Sending        WebCore/rendering/RenderObject.cpp
Sending        WebCore/rendering/RenderObject.h
Sending        WebCore/rendering/RenderPath.cpp
Sending        WebCore/rendering/RenderPath.h
Sending        WebCore/rendering/RenderSVGContainer.cpp
Sending        WebCore/rendering/RenderSVGContainer.h
Sending        WebCore/rendering/RenderSVGHiddenContainer.cpp
Sending        WebCore/rendering/RenderSVGHiddenContainer.h
Sending        WebCore/rendering/RenderSVGImage.cpp
Sending        WebCore/rendering/RenderSVGImage.h
Sending        WebCore/rendering/RenderSVGInlineText.cpp
Sending        WebCore/rendering/RenderSVGRoot.cpp
Sending        WebCore/rendering/RenderSVGRoot.h
Sending        WebCore/rendering/RenderSVGText.cpp
Sending        WebCore/rendering/RenderSVGText.h
Sending        WebCore/rendering/RenderSVGTransformableContainer.cpp
Sending        WebCore/rendering/RenderSVGViewportContainer.cpp
Sending        WebCore/rendering/RenderSVGViewportContainer.h
Sending        WebCore/rendering/SVGCharacterLayoutInfo.cpp
Sending        WebCore/rendering/SVGCharacterLayoutInfo.h
Sending        WebCore/rendering/SVGInlineTextBox.cpp
Sending        WebCore/rendering/SVGRenderSupport.cpp
Sending        WebCore/rendering/SVGRenderTreeAsText.cpp
Sending        WebCore/rendering/SVGRenderTreeAsText.h
Sending        WebCore/rendering/SVGRootInlineBox.cpp
Sending        WebCore/rendering/style/RenderStyle.cpp
Sending        WebCore/rendering/style/RenderStyle.h
Sending        WebCore/svg/GradientAttributes.h
Sending        WebCore/svg/PatternAttributes.h
Sending        WebCore/svg/SVGAnimateMotionElement.cpp
Sending        WebCore/svg/SVGAnimateMotionElement.h
Sending        WebCore/svg/SVGAnimateTransformElement.cpp
Sending        WebCore/svg/SVGAnimateTransformElement.h
Sending        WebCore/svg/SVGElement.h
Sending        WebCore/svg/SVGFitToViewBox.cpp
Sending        WebCore/svg/SVGFitToViewBox.h
Sending        WebCore/svg/SVGGElement.h
Sending        WebCore/svg/SVGLocatable.cpp
Sending        WebCore/svg/SVGLocatable.h
Sending        WebCore/svg/SVGMatrix.idl
Sending        WebCore/svg/SVGPatternElement.cpp
Sending        WebCore/svg/SVGPreserveAspectRatio.cpp
Sending        WebCore/svg/SVGPreserveAspectRatio.h
Sending        WebCore/svg/SVGSVGElement.cpp
Sending        WebCore/svg/SVGSVGElement.h
Sending        WebCore/svg/SVGStyledLocatableElement.cpp
Sending        WebCore/svg/SVGStyledLocatableElement.h
Sending        WebCore/svg/SVGStyledTransformableElement.cpp
Sending        WebCore/svg/SVGStyledTransformableElement.h
Sending        WebCore/svg/SVGTextContentElement.cpp
Sending        WebCore/svg/SVGTextElement.cpp
Sending        WebCore/svg/SVGTextElement.h
Sending        WebCore/svg/SVGTextPathElement.cpp
Sending        WebCore/svg/SVGTransform.cpp
Sending        WebCore/svg/SVGTransform.h
Sending        WebCore/svg/SVGTransformDistance.cpp
Sending        WebCore/svg/SVGTransformDistance.h
Sending        WebCore/svg/SVGTransformList.cpp
Sending        WebCore/svg/SVGTransformList.h
Sending        WebCore/svg/SVGTransformable.cpp
Sending        WebCore/svg/SVGTransformable.h
Sending        WebCore/svg/graphics/SVGPaintServerGradient.cpp
Sending        WebCore/svg/graphics/SVGPaintServerGradient.h
Sending        WebCore/svg/graphics/SVGPaintServerPattern.cpp
Sending        WebCore/svg/graphics/SVGPaintServerPattern.h
Sending        WebCore/svg/graphics/SVGResourceClipper.cpp
Sending        WebCore/svg/graphics/SVGResourceMarker.cpp
Sending        WebCore/svg/graphics/cg/SVGResourceFilterCg.mm
Sending        WebCore/svg/graphics/qt/SVGPaintServerPatternQt.cpp
Committed revision 39635.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26165</attachid>
            <date>2008-12-19 17:07:29 -0800</date>
            <delta_ts>2009-01-05 16:39:50 -0800</delta_ts>
            <desc>renames AffineTransform to TransformMatrix</desc>
            <filename>affine-rename.patch</filename>
            <type>text/plain</type>
            <size>164368</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Mzk1YjYwOS4uZTNlYWI2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOTEgQEAKKzIwMDgtMTItMTkgIERlYW4gSmFja3Nv
biAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbmFtZSBBZmZpbmVUcmFuc2Zvcm0gdG8gVHJhbnNmb3JtTWF0cml4IGlu
CisgICAgICAgIHByZXBhcmF0aW9uIGZvciBmdXR1cmUgZW5oYW5jZW1lbnRzIChub24tYWZmaW5l
IG1hdHJpY2VzKQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjk0MworCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHTWF0cml4Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTU1ZHTWF0cml4OjptdWx0aXBseSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NW
R01hdHJpeDo6aW52ZXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR01hdHJpeDo6dHJhbnNs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTWF0cml4OjpzY2FsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1NWR01hdHJpeDo6c2NhbGVOb25Vbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTU1ZHTWF0cml4Ojpyb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdNYXRyaXg6OnJv
dGF0ZUZyb21WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdNYXRyaXg6OmZsaXBYKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTWF0cml4OjpmbGlwWSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1NWR01hdHJpeDo6c2tld1gpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdNYXRyaXg6OnNr
ZXdZKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmg6CisgICAg
ICAgICogYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvck9iakMucG06CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlZFRyYW5zZm9ybSk6CisgICAgICAg
ICogaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJvdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGgpOgorICAgICAgICAqIGh0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6YmFzZVRyYW5zZm9y
bSk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5j
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmxv
YXRQb2ludDo6bWF0cml4VHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFBvaW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6YmFz
ZVRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9BZmZpbmVUcmFuc2Zvcm1DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zv
cm1NYXRyaXg6OlRyYW5zZm9ybU1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1N
YXRyaXg6OnNldE1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1NYXRyaXg6Om1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1NYXRyaXg6Om1hcFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhbnNmb3JtTWF0cml4Ojppc0lkZW50aXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybU1hdHJpeDo6YSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1NYXRy
aXg6OnNldEEpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtTWF0cml4OjpiKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYW5zZm9ybU1hdHJpeDo6c2V0Qik6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1NYXRyaXg6OmMpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtTWF0cml4Ojpz
ZXRDKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybU1hdHJpeDo6ZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFuc2Zvcm1NYXRyaXg6OnNldEQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtTWF0cml4OjplKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybU1hdHJpeDo6c2V0RSk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1NYXRyaXg6OmYpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhbnNmb3JtTWF0cml4OjpzZXRGKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybU1h
dHJpeDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtTWF0cml4OjpzY2FsZSk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1NYXRyaXg6OnJvdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFuc2Zvcm1NYXRyaXg6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1NYXRyaXg6OnNoZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybU1hdHJp
eDo6ZGV0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybU1hdHJpeDo6aW52ZXJzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1NYXRyaXg6Om9wZXJhdG9yIFBsYXRmb3JtVHJhbnNm
b3JtTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybU1hdHJpeDo6b3BlcmF0b3I9
PSApOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtTWF0cml4OjpvcGVyYXRvcio9ICk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1NYXRyaXg6Om9wZXJhdG9yKiApOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29uY2F0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Z2V0Q1RNKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjb25jYXRDVE0pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0aDo6dHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL0FmZmluZVRyYW5zZm9ybS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0lkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3Bl
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjo6
YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJh
bnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNYXRyaXhUcmFuc2Zvcm1PcGVy
YXRpb246OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Jv
dGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Um90YXRlVHJhbnNm
b3JtT3BlcmF0aW9uOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNr
ZXdUcmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGb3JlaWduT2JqZWN0Ojp0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRm9yZWlnbk9iamVjdDo6Y29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6Y2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6bm9kZUF0UG9pbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGb3JlaWduT2JqZWN0Ojpsb2NhbFRyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRh
dGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNwYXJlbmN5Q2xpcEJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dHJhbnNmb3JtKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6bG9jYWxUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjphYnNvbHV0ZVRyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclBhdGg6OmxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclBhdGg6OmNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyUGF0aC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpsb2NhbFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnZpZXdwb3J0VHJhbnNmb3Jt
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OmFic29sdXRlVHJhbnNmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6bG9jYWxUcmFuc2Zvcm0pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
SW1hZ2U6OmNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpsb2NhbFRy
YW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6Y29tcHV0ZUFic29sdXRlUmVj
dEZvclJhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjphcHBseUNvbnRlbnRUcmFuc2Zvcm1zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmFic29sdXRlVHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmNhbGN1bGF0ZUxvY2FsVHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om5vZGVBdFBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVRdWFkcyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclNWR1RleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmxvY2Fs
VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyOjpjYWxjdWxhdGVMb2NhbFRyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyOjphcHBseUNvbnRlbnRUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjp2aWV3cG9ydFRyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6YWJzb2x1dGVUcmFu
c2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6Om5v
ZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWlu
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHQ2hhcmFjdGVyTGF5b3V0SW5mby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDaGFyOjpjaGFyYWN0ZXJUcmFuc2Zvcm0pOgorICAgICAgICAq
IHJlbmRlcmluZy9TVkdDaGFyYWN0ZXJMYXlvdXRJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXh0Q2h1bmtXYWxrZXI6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdJ
bmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OmNh
bGN1bGF0ZUdseXBoQm91bmRhcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0
Qm94Q2xvc2VzdENoYXJhY3RlclRvUG9zaXRpb25XYWxrZXI6OmNodW5rUG9ydGlvbkNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3hTZWxlY3Rpb25SZWN0V2Fsa2Vy
OjpjaHVua1BvcnRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0
Qm94OjpwYWludENoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJv
eDo6cGFpbnREZWNvcmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9y
dC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1JlbmRl
clRyZWVBc1RleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290SW5saW5lQm94UGFpbnRXYWxrZXI6OmNodW5rUG9y
dGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5VGV4dExlbmd0aENvcnJlY3Rp
b25Ub1RleHRDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290SW5saW5lQm94OjpidWls
ZExheW91dEluZm9ybWF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKiBzdmcv
R3JhZGllbnRBdHRyaWJ1dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEF0dHJpYnV0
ZXM6OmdyYWRpZW50VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50QXR0cmli
dXRlczo6c2V0R3JhZGllbnRUcmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9QYXR0ZXJuQXR0cmli
dXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybkF0dHJpYnV0ZXM6OnBhdHRlcm5UcmFu
c2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybkF0dHJpYnV0ZXM6OnNldFBhdHRlcm5U
cmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVu
dDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9u
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHA6
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN1cHBsZW1l
bnRhbFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaXRUb1ZpZXdCb3g6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0pOgor
ICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guaDoKKyAgICAgICAgKiBzdmcvU1ZHR0VsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTG9jYXRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0xvY2F0YWJsZTo6Z2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xvY2F0YWJsZTo6
Z2V0U2NyZWVuQ1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xvY2F0YWJsZTo6Z2V0VHJhbnNm
b3JtVG9FbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTG9jYXRhYmxlLmg6CisgICAgICAgICog
c3ZnL1NWR01hdHJpeC5pZGw6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpidWlsZFBhdHRlcm4pOgorICAg
ICAgICAqIHN2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUTSk6CisgICAgICAgICogc3ZnL1NWR1ByZXNl
cnZlQXNwZWN0UmF0aW8uaDoKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojp2aWV3cG9ydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTVkdFbGVtZW50OjpnZXRDVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxl
bWVudDo6Z2V0U2NyZWVuQ1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnZp
ZXdCb3hUb1ZpZXdUcmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0Q1RNKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSk6CisgICAgICAgICog
c3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQ6OmdldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzdXBwbGVtZW50
YWxUcmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveFF1ZXJ5V2Fsa2VyOjpjaHVua1BvcnRpb25DYWxsYmFj
ayk6CisgICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RleHRFbGVtZW50OjpnZXRTY3JlZW5DVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4
dEVsZW1lbnQ6OmdldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0RWxlbWVudDo6YW5p
bWF0ZWRMb2NhbFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0RWxlbWVudDo6
c3VwcGxlbWVudGFsVHJhbnNmb3JtKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZH
VHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtKToKKyAg
ICAgICAgKFNWR1RyYW5zZm9ybTo6bWF0cml4KToKKyAgICAgICAgKFNWR1RyYW5zZm9ybTo6c2V0
TWF0cml4KToKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtLmg6CisgICAgICAgICogc3ZnL1NW
R1RyYW5zZm9ybURpc3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybURp
c3RhbmNlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFu
c2Zvcm1EaXN0YW5jZTo6c2NhbGVkRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJh
bnNmb3JtRGlzdGFuY2U6OmlzWmVybyk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybURpc3Rh
bmNlLmg6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwOgorICAgICAgICAoU1ZH
VHJhbnNmb3JtTGlzdDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCk6CisgICAgICAgIChT
VkdUcmFuc2Zvcm1MaXN0Ojpjb25jYXRlbmF0ZSk6CisgICAgICAgIChTVkdUcmFuc2Zvcm1MaXN0
Ojp2YWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtTGlzdC5oOgorICAg
ICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Ry
YW5zZm9ybWFibGU6OmdldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1hYmxl
OjpnZXRTY3JlZW5DVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtYWJsZTo6cGFy
c2VUcmFuc2Zvcm1WYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybWFibGUuaDoKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYWludFNlcnZlckdyYWRpZW50OjpncmFkaWVudFRyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYWludFNlcnZlckdyYWRpZW50OjpzZXRHcmFkaWVudFRyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpjbGlwVG9UZXh0TWFzayk6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL1NWR1BhaW50U2VydmVyR3JhZGllbnQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50
U2VydmVyUGF0dGVybjo6cGF0dGVyblRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YWludFNlcnZlclBhdHRlcm46OnNldFBhdHRlcm5UcmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9TVkdQYWludFNlcnZlclBhdHRlcm4uaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlQ2xp
cHBlcjo6YXBwbHlDbGlwKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VNYXJr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VNYXJrZXI6OmRyYXcpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9jZy9TVkdSZXNvdXJjZUZpbHRlckNnLm1tOgorCiAyMDA4LTEy
LTE5ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAx
YjllNWRmLi5kOGYxOWI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNTgyLDggKzU4Miw4IEBACiAJCTQ2RjlENUREMEIwRDYwMTcwMDI4RUUzNiAvKiBh
bGlhc0N1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2RjlENURBMEIwRDYwMTcwMDI4RUUzNiAvKiBhbGlhc0N1cnNvci5wbmcgKi87IH07
CiAJCTQ2RjlENURFMEIwRDYwMTcwMDI4RUUzNiAvKiBub0Ryb3BDdXJzb3IucG5nIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5RDVEQjBCMEQ2MDE3
MDAyOEVFMzYgLyogbm9Ecm9wQ3Vyc29yLnBuZyAqLzsgfTsKIAkJNDZGOUQ1REYwQjBENjAxNzAw
MjhFRTM2IC8qIHByb2dyZXNzQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGOUQ1REMwQjBENjAxNzAwMjhFRTM2IC8qIHByb2dyZXNz
Q3Vyc29yLnBuZyAqLzsgfTsKLQkJNDlFOTExQzMwRUY4NkQ0NzAwOUQwQ0FGIC8qIEFmZmluZVRy
YW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OUU5MTFCMzBFRjg2RDQ3MDA5RDBDQUYgLyogQWZmaW5lVHJhbnNmb3JtLmNwcCAqLzsgfTsK
LQkJNDlFOTExQzQwRUY4NkQ0NzAwOUQwQ0FGIC8qIEFmZmluZVRyYW5zZm9ybS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFOTExQjQwRUY4NkQ0NzAw
OUQwQ0FGIC8qIEFmZmluZVRyYW5zZm9ybS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTQ5RTkxMUMzMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zv
cm1NYXRyaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlFOTExQjMwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybU1hdHJpeC5jcHAgKi87IH07
CisJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1NYXRyaXguaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RTkxMUI0MEVGODZENDcw
MDlEMENBRiAvKiBUcmFuc2Zvcm1NYXRyaXguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk0OUU5MTFDNTBFRjg2RDQ3MDA5RDBDQUYgLyogSWRlbnRp
dHlUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ5RTkxMUI1MEVGODZENDcwMDlEMENBRiAvKiBJZGVudGl0eVRyYW5zZm9y
bU9wZXJhdGlvbi5oICovOyB9OwogCQk0OUU5MTFDNjBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ5RTkxMUI2MEVGODZENDcwMDlEMENBRiAvKiBNYXRyaXhUcmFuc2Zvcm1P
cGVyYXRpb24uY3BwICovOyB9OwogCQk0OUU5MTFDNzBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4
VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUU5MTFCNzBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3Bl
cmF0aW9uLmggKi87IH07CkBAIC01NDIxLDggKzU0MjEsOCBAQAogCQk0NkY5RDVEQTBCMEQ2MDE3
MDAyOEVFMzYgLyogYWxpYXNDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gYWxpYXNDdXJzb3IucG5nOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY5RDVEQjBCMEQ2MDE3MDAyOEVFMzYgLyog
bm9Ecm9wQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IG5vRHJvcEN1cnNvci5wbmc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2RjlENURDMEIwRDYwMTcwMDI4RUUzNiAvKiBwcm9ncmVzc0N1
cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBpbWFnZS5wbmc7IHBhdGggPSBwcm9ncmVzc0N1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQ5RTkxMUIzMEVGODZENDcwMDlEMENBRiAvKiBBZmZpbmVUcmFuc2Zvcm0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQWZmaW5lVHJhbnNmb3Jt
LmNwcDsgcGF0aCA9IHRyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDlFOTExQjQwRUY4NkQ0NzAwOUQwQ0FGIC8qIEFmZmluZVRyYW5z
Zm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBZmZpbmVUcmFuc2Zvcm0u
aDsgcGF0aCA9IHRyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ5RTkxMUIzMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1NYXRyaXgu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVHJhbnNmb3JtTWF0cml4
LmNwcDsgcGF0aCA9IHRyYW5zZm9ybXMvVHJhbnNmb3JtTWF0cml4LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDlFOTExQjQwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9ybU1h
dHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUcmFuc2Zvcm1NYXRyaXgu
aDsgcGF0aCA9IHRyYW5zZm9ybXMvVHJhbnNmb3JtTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ5RTkxMUI1MEVGODZENDcwMDlEMENBRiAvKiBJZGVudGl0eVRyYW5zZm9y
bU9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJZGVudGl0eVRy
YW5zZm9ybU9wZXJhdGlvbi5oOyBwYXRoID0gdHJhbnNmb3Jtcy9JZGVudGl0eVRyYW5zZm9ybU9w
ZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUU5MTFCNjBFRjg2RDQ3
MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHA7IHBhdGgg
PSB0cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ5RTkxMUI3MEVGODZENDcwMDlEMENBRiAvKiBNYXRyaXhUcmFuc2Zv
cm1PcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWF0cml4VHJh
bnNmb3JtT3BlcmF0aW9uLmg7IHBhdGggPSB0cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTU2NCw4ICs5NTY0LDggQEAK
IAkJNDlFOTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9ybXMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ5RTkxMUIzMEVGODZENDcwMDlEMENB
RiAvKiBBZmZpbmVUcmFuc2Zvcm0uY3BwICovLAotCQkJCTQ5RTkxMUI0MEVGODZENDcwMDlEMENB
RiAvKiBBZmZpbmVUcmFuc2Zvcm0uaCAqLywKKwkJCQk0OUU5MTFCMzBFRjg2RDQ3MDA5RDBDQUYg
LyogVHJhbnNmb3JtTWF0cml4LmNwcCAqLywKKwkJCQk0OUU5MTFCNDBFRjg2RDQ3MDA5RDBDQUYg
LyogVHJhbnNmb3JtTWF0cml4LmggKi8sCiAJCQkJNDlFOTExQjUwRUY4NkQ0NzAwOUQwQ0FGIC8q
IElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQjYwRUY4NkQ0NzAw
OUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgKi8sCiAJCQkJNDlFOTExQjcw
RUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oICovLApAQCAtMTY0
NDMsNyArMTY0NDMsNyBAQAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2RTU4MSAvKiB2aXNpYmxl
X3VuaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODgyMEJERjBFRjVEMzgxMDA5MDk5QTggLyog
V01MVGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYxRDIxRjBFRjM1QzJBMDBE
QTg3NTMgLyogU2NyaXB0Q2FjaGVkUGFnZURhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTQ5RTkx
MUM0MEVGODZENDcwMDlEMENBRiAvKiBBZmZpbmVUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1NYXRyaXguaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5RTkxMUM1MEVGODZENDcwMDlEMENBRiAvKiBJZGVudGl0eVRyYW5zZm9y
bU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzcwRUY4NkQ0NzAwOUQwQ0FG
IC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEx
QzkwRUY4NkQ0NzAwOUQwQ0FGIC8qIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xODM5OCw3ICsxODM5OCw3IEBACiAJCQkJOTMzMDlFMUQwOTlFNjQ5MjAwNTZF
NTgxIC8qIHZpc2libGVfdW5pdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDg4MjBCREUwRUY1
RDM4MTAwOTA5OUE4IC8qIFdNTFRhYmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MUYxRDIyMDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkUGFnZURhdGEuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJNDlFOTExQzMwRUY4NkQ0NzAwOUQwQ0FGIC8qIEFmZmluZVRyYW5zZm9y
bS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OUU5MTFDMzBFRjg2RDQ3MDA5RDBDQUYgLyogVHJh
bnNmb3JtTWF0cml4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUM2MEVGODZENDcwMDlE
MENBRiAvKiBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDlFOTExQzgwRUY4NkQ0NzAwOUQwQ0FGIC8qIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0OUU5MTFDQTBFRjg2RDQ3MDA5RDBDQUYgLyogU2NhbGVUcmFu
c2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU1ZHTWF0cml4Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
VkdNYXRyaXhDdXN0b20uY3BwCmluZGV4IGQyMGE1NWUuLjgxM2FjNDkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0b20uY3BwCkBAIC0yMiw3ICsyMiw3IEBACiAjaWYgRU5B
QkxFKFNWRykKICNpbmNsdWRlICJKU1NWR01hdHJpeC5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHRXhj
ZXB0aW9uLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC0zMSwxNiArMzEsMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlKiBKU1NWR01hdHJpeDo6bXVsdGlwbHkoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIEFmZmluZVRyYW5zZm9ybSBp
bXAoKmltcGwoKSk7CisgICAgVHJhbnNmb3JtTWF0cml4IGltcCgqaW1wbCgpKTsKIAotICAgIEFm
ZmluZVRyYW5zZm9ybSBzZWNvbmRNYXRyaXggPSB0b1NWR01hdHJpeChhcmdzLmF0KGV4ZWMsIDAp
KTsgICAgCi0gICAgcmV0dXJuIHRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxB
ZmZpbmVUcmFuc2Zvcm0+OjpjcmVhdGUoaW1wLm11bHRpcGx5KHNlY29uZE1hdHJpeCkpLmdldCgp
LCBtX2NvbnRleHQuZ2V0KCkpOworICAgIFRyYW5zZm9ybU1hdHJpeCBzZWNvbmRNYXRyaXggPSB0
b1NWR01hdHJpeChhcmdzLmF0KGV4ZWMsIDApKTsgICAgCisgICAgcmV0dXJuIHRvSlMoZXhlYywg
SlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxUcmFuc2Zvcm1NYXRyaXg+OjpjcmVhdGUoaW1wLm11
bHRpcGx5KHNlY29uZE1hdHJpeCkpLmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOwogfQogCiBKU1Zh
bHVlKiBKU1NWR01hdHJpeDo6aW52ZXJzZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3Qm
KQogewotICAgIEFmZmluZVRyYW5zZm9ybSBpbXAoKmltcGwoKSk7Ci0gICAgSlNDOjpKU1ZhbHVl
KiByZXN1bHQgPSB0b0pTKGV4ZWMsIEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8QWZmaW5lVHJh
bnNmb3JtPjo6Y3JlYXRlKGltcC5pbnZlcnNlKCkpLmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOwor
ICAgIFRyYW5zZm9ybU1hdHJpeCBpbXAoKmltcGwoKSk7CisgICAgSlNDOjpKU1ZhbHVlKiByZXN1
bHQgPSB0b0pTKGV4ZWMsIEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8VHJhbnNmb3JtTWF0cml4
Pjo6Y3JlYXRlKGltcC5pbnZlcnNlKCkpLmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAg
aWYgKCFpbXAuaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBT
VkdFeGNlcHRpb246OlNWR19NQVRSSVhfTk9UX0lOVkVSVEFCTEUpOwpAQCAtNTAsNDggKzUwLDQ4
IEBAIEpTVmFsdWUqIEpTU1ZHTWF0cml4OjppbnZlcnNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYpCiAKIEpTVmFsdWUqIEpTU1ZHTWF0cml4Ojp0cmFuc2xhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIEFmZmluZVRyYW5zZm9ybSBpbXAoKmlt
cGwoKSk7CisgICAgVHJhbnNmb3JtTWF0cml4IGltcCgqaW1wbCgpKTsKIAogICAgIGZsb2F0IHgg
PSBhcmdzLmF0KGV4ZWMsIDApLT50b0Zsb2F0KGV4ZWMpOwogICAgIGZsb2F0IHkgPSBhcmdzLmF0
KGV4ZWMsIDEpLT50b0Zsb2F0KGV4ZWMpOwogCi0gICAgcmV0dXJuIHRvSlMoZXhlYywgSlNTVkdT
dGF0aWNQT0RUeXBlV3JhcHBlcjxBZmZpbmVUcmFuc2Zvcm0+OjpjcmVhdGUoaW1wLnRyYW5zbGF0
ZSh4LCB5KSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywg
SlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxUcmFuc2Zvcm1NYXRyaXg+OjpjcmVhdGUoaW1wLnRy
YW5zbGF0ZSh4LCB5KSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiB9CiAKIEpTVmFsdWUqIEpT
U1ZHTWF0cml4OjpzY2FsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7
Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGltcCgqaW1wbCgpKTsKKyAgICBUcmFuc2Zvcm1NYXRyaXgg
aW1wKCppbXBsKCkpOwogCiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBhcmdzLmF0KGV4ZWMsIDAp
LT50b0Zsb2F0KGV4ZWMpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIEpTU1ZHU3RhdGljUE9EVHlw
ZVdyYXBwZXI8QWZmaW5lVHJhbnNmb3JtPjo6Y3JlYXRlKGltcC5zY2FsZShzY2FsZUZhY3Rvcikp
LmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIEpTU1ZHU3Rh
dGljUE9EVHlwZVdyYXBwZXI8VHJhbnNmb3JtTWF0cml4Pjo6Y3JlYXRlKGltcC5zY2FsZShzY2Fs
ZUZhY3RvcikpLmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOwogfQogCiBKU1ZhbHVlKiBKU1NWR01h
dHJpeDo6c2NhbGVOb25Vbmlmb3JtKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJn
cykKIHsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gaW1wKCppbXBsKCkpOworICAgIFRyYW5zZm9ybU1h
dHJpeCBpbXAoKmltcGwoKSk7CiAKICAgICBmbG9hdCBzY2FsZUZhY3RvclggPSBhcmdzLmF0KGV4
ZWMsIDApLT50b0Zsb2F0KGV4ZWMpOwogICAgIGZsb2F0IHNjYWxlRmFjdG9yWSA9IGFyZ3MuYXQo
ZXhlYywgMSktPnRvRmxvYXQoZXhlYyk7CiAKLSAgICByZXR1cm4gdG9KUyhleGVjLCBKU1NWR1N0
YXRpY1BPRFR5cGVXcmFwcGVyPEFmZmluZVRyYW5zZm9ybT46OmNyZWF0ZShpbXAuc2NhbGVOb25V
bmlmb3JtKHNjYWxlRmFjdG9yWCwgc2NhbGVGYWN0b3JZKSkuZ2V0KCksIG1fY29udGV4dC5nZXQo
KSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxUcmFu
c2Zvcm1NYXRyaXg+OjpjcmVhdGUoaW1wLnNjYWxlTm9uVW5pZm9ybShzY2FsZUZhY3RvclgsIHNj
YWxlRmFjdG9yWSkpLmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOwogfQogCiBKU1ZhbHVlKiBKU1NW
R01hdHJpeDo6cm90YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gaW1wKCppbXBsKCkpOworICAgIFRyYW5zZm9ybU1hdHJpeCBp
bXAoKmltcGwoKSk7CiAKICAgICBmbG9hdCBhbmdsZSA9IGFyZ3MuYXQoZXhlYywgMCktPnRvRmxv
YXQoZXhlYyk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBl
cjxBZmZpbmVUcmFuc2Zvcm0+OjpjcmVhdGUoaW1wLnJvdGF0ZShhbmdsZSkpLmdldCgpLCBtX2Nv
bnRleHQuZ2V0KCkpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIEpTU1ZHU3RhdGljUE9EVHlwZVdy
YXBwZXI8VHJhbnNmb3JtTWF0cml4Pjo6Y3JlYXRlKGltcC5yb3RhdGUoYW5nbGUpKS5nZXQoKSwg
bV9jb250ZXh0LmdldCgpKTsKIH0KIAogSlNWYWx1ZSogSlNTVkdNYXRyaXg6OnJvdGF0ZUZyb21W
ZWN0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIEFmZmlu
ZVRyYW5zZm9ybSBpbXAoKmltcGwoKSk7CisgICAgVHJhbnNmb3JtTWF0cml4IGltcCgqaW1wbCgp
KTsKICAKICAgICBmbG9hdCB4ID0gYXJncy5hdChleGVjLCAwKS0+dG9GbG9hdChleGVjKTsKICAg
ICBmbG9hdCB5ID0gYXJncy5hdChleGVjLCAxKS0+dG9GbG9hdChleGVjKTsKIAotICAgIEpTQzo6
SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPEFm
ZmluZVRyYW5zZm9ybT46OmNyZWF0ZShpbXAucm90YXRlRnJvbVZlY3Rvcih4LCB5KSkuZ2V0KCks
IG1fY29udGV4dC5nZXQoKSk7CisgICAgSlNDOjpKU1ZhbHVlKiByZXN1bHQgPSB0b0pTKGV4ZWMs
IEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8VHJhbnNmb3JtTWF0cml4Pjo6Y3JlYXRlKGltcC5y
b3RhdGVGcm9tVmVjdG9yKHgsIHkpKS5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKIAogICAgIGlm
ICh4ID09IDAuMCB8fCB5ID09IDAuMCkKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNW
R0V4Y2VwdGlvbjo6U1ZHX0lOVkFMSURfVkFMVUVfRVJSKTsKQEAgLTEwMSwzMCArMTAxLDMwIEBA
IEpTVmFsdWUqIEpTU1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYgYXJncykKIAogSlNWYWx1ZSogSlNTVkdNYXRyaXg6OmZsaXBYKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYpCiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGltcCgq
aW1wbCgpKTsKLSAgICByZXR1cm4gdG9KUyhleGVjLCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVy
PEFmZmluZVRyYW5zZm9ybT46OmNyZWF0ZShpbXAuZmxpcFgoKSkuZ2V0KCksIG1fY29udGV4dC5n
ZXQoKSk7CisgICAgVHJhbnNmb3JtTWF0cml4IGltcCgqaW1wbCgpKTsKKyAgICByZXR1cm4gdG9K
UyhleGVjLCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPFRyYW5zZm9ybU1hdHJpeD46OmNyZWF0
ZShpbXAuZmxpcFgoKSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiB9CiAKIEpTVmFsdWUqIEpT
U1ZHTWF0cml4OjpmbGlwWShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmKQogewotICAg
IEFmZmluZVRyYW5zZm9ybSBpbXAoKmltcGwoKSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgSlNT
VkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxBZmZpbmVUcmFuc2Zvcm0+OjpjcmVhdGUoaW1wLmZsaXBZ
KCkpLmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOworICAgIFRyYW5zZm9ybU1hdHJpeCBpbXAoKmlt
cGwoKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxU
cmFuc2Zvcm1NYXRyaXg+OjpjcmVhdGUoaW1wLmZsaXBZKCkpLmdldCgpLCBtX2NvbnRleHQuZ2V0
KCkpOwogfQogCiBKU1ZhbHVlKiBKU1NWR01hdHJpeDo6c2tld1goRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIEFmZmluZVRyYW5zZm9ybSBpbXAoKmltcGwoKSk7
CisgICAgVHJhbnNmb3JtTWF0cml4IGltcCgqaW1wbCgpKTsKIAogICAgIGZsb2F0IGFuZ2xlID0g
YXJncy5hdChleGVjLCAwKS0+dG9GbG9hdChleGVjKTsKLSAgICByZXR1cm4gdG9KUyhleGVjLCBK
U1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPEFmZmluZVRyYW5zZm9ybT46OmNyZWF0ZShpbXAuc2tl
d1goYW5nbGUpKS5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKKyAgICByZXR1cm4gdG9KUyhleGVj
LCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPFRyYW5zZm9ybU1hdHJpeD46OmNyZWF0ZShpbXAu
c2tld1goYW5nbGUpKS5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKIH0KIAogSlNWYWx1ZSogSlNT
VkdNYXRyaXg6OnNrZXdZKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gaW1wKCppbXBsKCkpOworICAgIFRyYW5zZm9ybU1hdHJpeCBp
bXAoKmltcGwoKSk7CiAKICAgICBmbG9hdCBhbmdsZSA9IGFyZ3MuYXQoZXhlYywgMCktPnRvRmxv
YXQoZXhlYyk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBl
cjxBZmZpbmVUcmFuc2Zvcm0+OjpjcmVhdGUoaW1wLnNrZXdZKGFuZ2xlKSkuZ2V0KCksIG1fY29u
dGV4dC5nZXQoKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3Jh
cHBlcjxUcmFuc2Zvcm1NYXRyaXg+OjpjcmVhdGUoaW1wLnNrZXdZKGFuZ2xlKSkuZ2V0KCksIG1f
Y29udGV4dC5nZXQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTVkdQT0RUeXBlV3JhcHBlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVX
cmFwcGVyLmgKaW5kZXggMWMxYmE3Yy4uM2NjZTBmYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NWR1BPRFR5cGVXcmFwcGVyLmgKQEAgLTQ0LDEzICs0NCwxMyBAQCBwdWJsaWM6CiB9OwogCiAv
LyBUaGlzIGZpbGUgY29udGFpbnMgSlMgd3JhcHBlciBvYmplY3RzIGZvciBTVkcgZGF0YXR5cGVz
LCB0aGF0IGFyZSBwYXNzZWQgYXJvdW5kIGJ5IHZhbHVlCi0vLyBpbiBXZWJDb3JlL3N2ZyAoYWth
LiAnUE9EIHR5cGVzJykuIEZvciBpbnN0YW5jZSBTVkdNYXRyaXggaXMgbWFwcGVkIHRvIEFmZmlu
ZVRyYW5zZm9ybSwgYW5kCisvLyBpbiBXZWJDb3JlL3N2ZyAoYWthLiAnUE9EIHR5cGVzJykuIEZv
ciBpbnN0YW5jZSBTVkdNYXRyaXggaXMgbWFwcGVkIHRvIFRyYW5zZm9ybU1hdHJpeCwgYW5kCiAv
LyBwYXNzZWQgYXJvdW5kIGFzIGNvbnN0IHJlZmVyZW5jZS4gU1ZHIERPTSBkZW1hbmRzIHRoZXNl
IG9iamVjdHMgdG8gYmUgImxpdmUiLCBjaGFuZ2VzIHRvIGFueQogLy8gb2YgdGhlIHdyaXRhYmxl
IGF0dHJpYnV0ZXMgb2YgU1ZHTWF0cml4IG5lZWQgdG8gYmUgcmVmbGVjdGVkIGluIHRoZSBvYmpl
Y3Qgd2hpY2ggZXhwb3NlZCB0aGUKIC8vIFNWR01hdHJpeCBvYmplY3QgKGllLiAnc29tZUVsZW1l
bnQudHJhbnNmb3JtLm1hdHJpeC5hID0gNTAuMCcsIGluIHRoYXQgY2FzZSAnU1ZHVHJhbnNmb3Jt
JykuCi0vLyBUaGUgU1ZHVHJhbnNmb3JtIGNsYXNzIHN0b3JlcyBpdHMgIkFmZmluZVRyYW5zZm9y
bSBtX21hdHJpeCIgb2JqZWN0IG9uIHRoZSBzdGFjay4gSWYgaXQgd291bGQKKy8vIFRoZSBTVkdU
cmFuc2Zvcm0gY2xhc3Mgc3RvcmVzIGl0cyAiVHJhbnNmb3JtTWF0cml4IG1fbWF0cml4IiBvYmpl
Y3Qgb24gdGhlIHN0YWNrLiBJZiBpdCB3b3VsZAogLy8gYmUgc3RvcmVkIGFzIHBvaW50ZXIgd2Ug
Y291bGQganVzdCBidWlsZCBhbiBhdXRvLWdlbmVyYXRlZCBKU1NWRyogd3JhcHBlciBvYmplY3Qg
YXJvdW5kIGl0Ci0vLyBhbmQgYWxsIGNoYW5nZXMgdG8gdGhhdCBvYmplY3Qgd291bGQgYXV0b21h
dGljYWxseSBhZmZlY3QgdGhlIEFmZmluZVRyYW5zZm9ybSogb2JqZWN0IHN0b3JlZAorLy8gYW5k
IGFsbCBjaGFuZ2VzIHRvIHRoYXQgb2JqZWN0IHdvdWxkIGF1dG9tYXRpY2FsbHkgYWZmZWN0IHRo
ZSBUcmFuc2Zvcm1NYXRyaXgqIG9iamVjdCBzdG9yZWQKIC8vIGluIHRoZSBTVkdUcmFuc2Zvcm0g
b2JqZWN0LiBGb3IgdGhlIHNha2Ugb2YgZWZmaWNpZW5jeSBhbmQgbWVtb3J5IHdlIGRvbid0IHBh
c3MgYXJvdW5kIGFueQogLy8gcHJpbWl0aXZlIHZhbHVlcyBhcyBwb2ludGVycywgc28gYSBjdXN0
b20gSlMgd3JhcHBlciBvYmplY3QgaXMgbmVlZGVkIGZvciBhbGwgU1ZHIHR5cGVzLCB0aGF0CiAv
LyBhcmUgaW50ZXJuYWxseSByZXByZXNlbnRlZCBieSBQT0QgdHlwZXMgKFNWR1JlY3QgPC0+IEZs
b2F0UmVjdCwgU1ZHUG9pbnQgPC0+IEZsb2F0UG9pbnQsIC4uLikuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaCBiL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01JbnRlcm5hbC5oCmluZGV4IGMyYjJkZDguLjNkZGE5YzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9E
T01JbnRlcm5hbC5oCkBAIC0yOTksNyArMjk5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIE5vZGVGaWx0ZXI7CiAKICNpZiBFTkFCTEUoU1ZHKQotICAgIGNsYXNzIEFmZmluZVRy
YW5zZm9ybTsKKyAgICBjbGFzcyBUcmFuc2Zvcm1NYXRyaXg7CiAgICAgY2xhc3MgRmxvYXRQb2lu
dDsKICAgICBjbGFzcyBGbG9hdFJlY3Q7CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDhhZTIyMjguLmRiZDE0
ZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
MTU0NSw3ICsxNTQ1LDcgQEAgbXkgJW5hdGl2ZVR5cGUgPSAoCiAgICAgIkV2ZW50VGFyZ2V0IiA9
PiAiRXZlbnRUYXJnZXROb2RlKiIsCiAgICAgIk5vZGVGaWx0ZXIiID0+ICJSZWZQdHI8Tm9kZUZp
bHRlcj4iLAogICAgICJTVkdMZW5ndGgiID0+ICJTVkdMZW5ndGgiLAotICAgICJTVkdNYXRyaXgi
ID0+ICJBZmZpbmVUcmFuc2Zvcm0iLAorICAgICJTVkdNYXRyaXgiID0+ICJUcmFuc2Zvcm1NYXRy
aXgiLAogICAgICJTVkdOdW1iZXIiID0+ICJmbG9hdCIsCiAgICAgIlNWR1BhaW50VHlwZSIgPT4g
IlNWR1BhaW50OjpTVkdQYWludFR5cGUiLAogICAgICJTVkdQb2ludCIgPT4gIkZsb2F0UG9pbnQi
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpD
LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4
IDc5NjliMmMuLmE1YmRjODYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yT2JqQy5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvck9iakMucG0KQEAgLTY0Nyw3ICs2NDcsNyBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBl
CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJTVkdNYXRyaXgiKSB7Ci0gICAgICAgICRpbXBs
SW5jbHVkZXN7IkFmZmluZVRyYW5zZm9ybS5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVz
eyJUcmFuc2Zvcm1NYXRyaXguaCJ9ID0gMTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NJHR5
cGUuaCJ9ID0gMTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siU1ZHRXhjZXB0aW9uLmgifSA9IDE7
CiAgICAgICAgIHJldHVybjsKQEAgLTE0NDQsOCArMTQ0NCw4IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICMgRklYTUUhIFdlIG5lZWQg
W0N1c3RvbV0gc3VwcG9ydCBmb3IgT2JqQywgdG8gbW92ZSB0aGVzZSBoYWNrcyBpbnRvIERPTVNW
R0xlbmd0aC9NYXRyaXhDdXN0b20ubW0KLSAgICAgICAgICAgIG15ICRzdmdNYXRyaXhSb3RhdGVG
cm9tVmVjdG9yID0gKCRwb2RUeXBlIGFuZCAkcG9kVHlwZSBlcSAiQWZmaW5lVHJhbnNmb3JtIiBh
bmQgJGZ1bmN0aW9uTmFtZSBlcSAicm90YXRlRnJvbVZlY3RvciIpOwotICAgICAgICAgICAgbXkg
JHN2Z01hdHJpeEludmVyc2UgPSAoJHBvZFR5cGUgYW5kICRwb2RUeXBlIGVxICJBZmZpbmVUcmFu
c2Zvcm0iIGFuZCAkZnVuY3Rpb25OYW1lIGVxICJpbnZlcnNlIik7CisgICAgICAgICAgICBteSAk
c3ZnTWF0cml4Um90YXRlRnJvbVZlY3RvciA9ICgkcG9kVHlwZSBhbmQgJHBvZFR5cGUgZXEgIlRy
YW5zZm9ybU1hdHJpeCIgYW5kICRmdW5jdGlvbk5hbWUgZXEgInJvdGF0ZUZyb21WZWN0b3IiKTsK
KyAgICAgICAgICAgIG15ICRzdmdNYXRyaXhJbnZlcnNlID0gKCRwb2RUeXBlIGFuZCAkcG9kVHlw
ZSBlcSAiVHJhbnNmb3JtTWF0cml4IiBhbmQgJGZ1bmN0aW9uTmFtZSBlcSAiaW52ZXJzZSIpOwog
ICAgICAgICAgICAgbXkgJHN2Z0xlbmd0aENvbnZlcnRUb1NwZWNpZmllZFVuaXRzID0gKCRwb2RU
eXBlIGFuZCAkcG9kVHlwZSBlcSAiU1ZHTGVuZ3RoIiBhbmQgJGZ1bmN0aW9uTmFtZSBlcSAiY29u
dmVydFRvU3BlY2lmaWVkVW5pdHMiKTsKIAogICAgICAgICAgICAgcHVzaChAcGFyYW1ldGVyTmFt
ZXMsICJlYyIpIGlmICRyYWlzZXNFeGNlcHRpb25zIGFuZCAhKCRzdmdNYXRyaXhSb3RhdGVGcm9t
VmVjdG9yIHx8ICRzdmdNYXRyaXhJbnZlcnNlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGFjNzJmZmEuLmQ2ZThhYmYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNDA1LDcgKzQwNSw3IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjb21wdXRlZFRyYW5zZm9ybShSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogICAgIAogICAgIEludFJlY3QgYm94ID0gc2l6aW5nQm94KHJlbmRlcmVyKTsK
IAotICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgVHJhbnNmb3JtTWF0cml4IHRy
YW5zZm9ybTsKICAgICByZW5kZXJlci0+c3R5bGUoKS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3Jt
LCBib3guc2l6ZSgpLCBmYWxzZSk7CiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWU+IHRyYW5zZm9ybVZhbCA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpjcmVhdGUoV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbik7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1dlYkNvcmUvaHRt
bC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDVhMWYzZDAuLjhlZmQ4ZDQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zv
cm1NYXRyaXguaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFn
ZS5oIgogI2luY2x1ZGUgIkNhbnZhc0dyYWRpZW50LmgiCkBAIC0zMzYsNyArMzM2LDcgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNjYWxlKGZsb2F0IHN4LCBmbG9hdCBzeSkKICAg
ICBpZiAoIXN0YXRlKCkubV9pbnZlcnRpYmxlQ1RNKQogICAgICAgICByZXR1cm47CiAKLSAgICBB
ZmZpbmVUcmFuc2Zvcm0gbmV3VHJhbnNmb3JtID0gc3RhdGUoKS5tX3RyYW5zZm9ybTsKKyAgICBU
cmFuc2Zvcm1NYXRyaXggbmV3VHJhbnNmb3JtID0gc3RhdGUoKS5tX3RyYW5zZm9ybTsKICAgICBu
ZXdUcmFuc2Zvcm0uc2NhbGUoc3gsIHN5KTsKICAgICBpZiAoIW5ld1RyYW5zZm9ybS5pc0ludmVy
dGlibGUoKSkgewogICAgICAgICBzdGF0ZSgpLm1faW52ZXJ0aWJsZUNUTSA9IGZhbHNlOwpAQCAt
MzQ1LDcgKzM0NSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzY2FsZShmbG9h
dCBzeCwgZmxvYXQgc3kpCiAKICAgICBzdGF0ZSgpLm1fdHJhbnNmb3JtID0gbmV3VHJhbnNmb3Jt
OwogICAgIGMtPnNjYWxlKEZsb2F0U2l6ZShzeCwgc3kpKTsKLSAgICBtX3BhdGgudHJhbnNmb3Jt
KEFmZmluZVRyYW5zZm9ybSgpLnNjYWxlKDEuMC9zeCwgMS4wL3N5KSk7CisgICAgbV9wYXRoLnRy
YW5zZm9ybShUcmFuc2Zvcm1NYXRyaXgoKS5zY2FsZSgxLjAvc3gsIDEuMC9zeSkpOwogfQogCiB2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5z
KQpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyb3Rh
dGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpCiAgICAgaWYgKCFzdGF0ZSgpLm1faW52ZXJ0aWJsZUNU
TSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIG5ld1RyYW5zZm9ybSA9
IHN0YXRlKCkubV90cmFuc2Zvcm07CisgICAgVHJhbnNmb3JtTWF0cml4IG5ld1RyYW5zZm9ybSA9
IHN0YXRlKCkubV90cmFuc2Zvcm07CiAgICAgbmV3VHJhbnNmb3JtLnJvdGF0ZShhbmdsZUluUmFk
aWFucyAvIHBpRG91YmxlICogMTgwLjApOwogICAgIGlmICghbmV3VHJhbnNmb3JtLmlzSW52ZXJ0
aWJsZSgpKSB7CiAgICAgICAgIHN0YXRlKCkubV9pbnZlcnRpYmxlQ1RNID0gZmFsc2U7CkBAIC0z
NjUsNyArMzY1LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJvdGF0ZShmbG9h
dCBhbmdsZUluUmFkaWFucykKIAogICAgIHN0YXRlKCkubV90cmFuc2Zvcm0gPSBuZXdUcmFuc2Zv
cm07CiAgICAgYy0+cm90YXRlKGFuZ2xlSW5SYWRpYW5zKTsKLSAgICBtX3BhdGgudHJhbnNmb3Jt
KEFmZmluZVRyYW5zZm9ybSgpLnJvdGF0ZSgtYW5nbGVJblJhZGlhbnMgLyBwaURvdWJsZSAqIDE4
MC4wKSk7CisgICAgbV9wYXRoLnRyYW5zZm9ybShUcmFuc2Zvcm1NYXRyaXgoKS5yb3RhdGUoLWFu
Z2xlSW5SYWRpYW5zIC8gcGlEb3VibGUgKiAxODAuMCkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6dHJhbnNsYXRlKGZsb2F0IHR4LCBmbG9hdCB0eSkKQEAgLTM3Niw3ICsz
NzYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dHJhbnNsYXRlKGZsb2F0IHR4
LCBmbG9hdCB0eSkKICAgICBpZiAoIXN0YXRlKCkubV9pbnZlcnRpYmxlQ1RNKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbmV3VHJhbnNmb3JtID0gc3RhdGUoKS5tX3Ry
YW5zZm9ybTsKKyAgICBUcmFuc2Zvcm1NYXRyaXggbmV3VHJhbnNmb3JtID0gc3RhdGUoKS5tX3Ry
YW5zZm9ybTsKICAgICBuZXdUcmFuc2Zvcm0udHJhbnNsYXRlKHR4LCB0eSk7CiAgICAgaWYgKCFu
ZXdUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpIHsKICAgICAgICAgc3RhdGUoKS5tX2ludmVydGli
bGVDVE0gPSBmYWxzZTsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6dHJhbnNsYXRlKGZsb2F0IHR4LCBmbG9hdCB0eSkKIAogICAgIHN0YXRlKCkubV90
cmFuc2Zvcm0gPSBuZXdUcmFuc2Zvcm07CiAgICAgYy0+dHJhbnNsYXRlKHR4LCB0eSk7Ci0gICAg
bV9wYXRoLnRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoLXR4LCAtdHkpKTsK
KyAgICBtX3BhdGgudHJhbnNmb3JtKFRyYW5zZm9ybU1hdHJpeCgpLnRyYW5zbGF0ZSgtdHgsIC10
eSkpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dHJhbnNmb3JtKGZsb2F0
IG0xMSwgZmxvYXQgbTEyLCBmbG9hdCBtMjEsIGZsb2F0IG0yMiwgZmxvYXQgZHgsIGZsb2F0IGR5
KQpAQCAtNDAxLDkgKzQwMSw5IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0cmFu
c2Zvcm0oZmxvYXQgbTExLCBmbG9hdCBtMTIsIGZsb2F0IG0yMSwgZmxvYXQKICAgICAgICAgIWlz
ZmluaXRlKG0xMikgfCAhaXNmaW5pdGUobTIyKSB8ICFpc2Zpbml0ZShkeSkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0obTExLCBtMTIsIG0yMSwgbTIy
LCBkeCwgZHkpOworICAgIFRyYW5zZm9ybU1hdHJpeCB0cmFuc2Zvcm0obTExLCBtMTIsIG0yMSwg
bTIyLCBkeCwgZHkpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIG5ld1RyYW5zZm9ybSA9IHN0YXRl
KCkubV90cmFuc2Zvcm07CisgICAgVHJhbnNmb3JtTWF0cml4IG5ld1RyYW5zZm9ybSA9IHN0YXRl
KCkubV90cmFuc2Zvcm07CiAgICAgbmV3VHJhbnNmb3JtLm11bHRpcGx5KHRyYW5zZm9ybSk7CiAg
ICAgaWYgKCFuZXdUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpIHsKICAgICAgICAgc3RhdGUoKS5t
X2ludmVydGlibGVDVE0gPSBmYWxzZTsKQEAgLTQyOCw3ICs0MjgsNyBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0VHJhbnNmb3JtKGZsb2F0IG0xMSwgZmxvYXQgbTEyLCBmbG9h
dCBtMjEsIGZsbwogICAgICAgICAhaXNmaW5pdGUobTEyKSB8ICFpc2Zpbml0ZShtMjIpIHwgIWlz
ZmluaXRlKGR5KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9
IHN0YXRlKCkubV90cmFuc2Zvcm07CisgICAgVHJhbnNmb3JtTWF0cml4IGN0bSA9IHN0YXRlKCku
bV90cmFuc2Zvcm07CiAgICAgaWYgKCFjdG0uaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBjLT5jb25jYXRDVE0oYy0+Z2V0Q1RNKCkuaW52ZXJzZSgpKTsKQEAgLTY4NCw3ICs2
ODQsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aChjb25z
dCBmbG9hdCB4LCBjb25zdCBmbG9hdCB5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBG
bG9hdFBvaW50IHBvaW50KHgsIHkpOwotICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBzdGF0ZSgp
Lm1fdHJhbnNmb3JtOworICAgIFRyYW5zZm9ybU1hdHJpeCBjdG0gPSBzdGF0ZSgpLm1fdHJhbnNm
b3JtOwogICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRQb2ludCA9IGN0bS5pbnZlcnNlKCkubWFw
UG9pbnQocG9pbnQpOwogICAgIHJldHVybiBtX3BhdGguY29udGFpbnModHJhbnNmb3JtZWRQb2lu
dCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggYi9XZWJDb3JlL2h0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggY2VlOGZh
Zi4uM2U5ZWJmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5oCisrKyBiL1dlYkNvcmUvaHRtbC9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAt
MjYsNyArMjYsNyBAQAogI2lmbmRlZiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRfaAogI2RlZmlu
ZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRfaAogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgi
CiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTIwOSw3
ICsyMDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBTdHJpbmcgbV9zaGFk
b3dDb2xvcjsKICAgICAgICAgICAgIGZsb2F0IG1fZ2xvYmFsQWxwaGE7CiAgICAgICAgICAgICBD
b21wb3NpdGVPcGVyYXRvciBtX2dsb2JhbENvbXBvc2l0ZTsKLSAgICAgICAgICAgIEFmZmluZVRy
YW5zZm9ybSBtX3RyYW5zZm9ybTsKKyAgICAgICAgICAgIFRyYW5zZm9ybU1hdHJpeCBtX3RyYW5z
Zm9ybTsKICAgICAgICAgICAgIGJvb2wgbV9pbnZlcnRpYmxlQ1RNOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBUZXh0IHN0YXRlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5k
ZXggZTM0ODgwZS4uZjRhOTQ3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0y
NzEsMTIgKzI3MSwxMiBAQCBJbWFnZUJ1ZmZlciogSFRNTENhbnZhc0VsZW1lbnQ6OmJ1ZmZlcigp
IGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiB9CiAgICAgCi1BZmZpbmVU
cmFuc2Zvcm0gSFRNTENhbnZhc0VsZW1lbnQ6OmJhc2VUcmFuc2Zvcm0oKSBjb25zdAorVHJhbnNm
b3JtTWF0cml4IEhUTUxDYW52YXNFbGVtZW50OjpiYXNlVHJhbnNmb3JtKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQobV9jcmVhdGVkSW1hZ2VCdWZmZXIpOwogICAgIEZsb2F0U2l6ZSB1bnNjYWxlZFNp
emUod2lkdGgoKSwgaGVpZ2h0KCkpOwogICAgIEludFNpemUgc2l6ZSA9IGNvbnZlcnRMb2dpY2Fs
VG9EZXZpY2UodW5zY2FsZWRTaXplKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwor
ICAgIFRyYW5zZm9ybU1hdHJpeCB0cmFuc2Zvcm07CiAgICAgaWYgKHNpemUud2lkdGgoKSAmJiBz
aXplLmhlaWdodCgpKQogICAgICAgICB0cmFuc2Zvcm0uc2NhbGUoc2l6ZS53aWR0aCgpIC8gdW5z
Y2FsZWRTaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkgLyB1bnNjYWxlZFNpemUuaGVpZ2h0KCkp
OwogICAgIHRyYW5zZm9ybS5tdWx0aXBseShtX2ltYWdlQnVmZmVyLT5iYXNlVHJhbnNmb3JtKCkp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmggYi9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAppbmRleCAyZjFhNmU5Li45ZDRlYjk4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuaApAQCAtMjcsNyArMjcsNyBAQAogI2lmbmRlZiBIVE1MQ2FudmFz
RWxlbWVudF9oCiAjZGVmaW5lIEhUTUxDYW52YXNFbGVtZW50X2gKIAotI2luY2x1ZGUgIkFmZmlu
ZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybU1hdHJpeC5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogCkBAIC0xMDYsNyArMTA2LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRPYnNlcnZlcihDYW52YXNPYnNlcnZlciogbykgeyBtX29i
c2VydmVyID0gbzsgfQogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25z
dDsKKyAgICBUcmFuc2Zvcm1NYXRyaXggYmFzZVRyYW5zZm9ybSgpIGNvbnN0OwogcHJpdmF0ZToK
ICAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKCkgY29uc3Q7CiAgICAgdm9pZCByZXNldCgpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggZGI3MTNmNC4uMTY1
MjZhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cAorKysgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCkBAIC0xMzAs
OCArMTMwLDggQEAgc3RhdGljIGlubGluZSBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kRnVuYyhj
b25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBUcmEKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBDb252ZXJ0IHRoZSBUcmFuc2Zvcm1PcGVyYXRpb25zIGludG8gbWF0cmljZXMKICAgICAg
ICAgSW50U2l6ZSBzaXplID0gYW5pbS0+cmVuZGVyZXIoKS0+Ym9yZGVyQm94KCkuc2l6ZSgpOwot
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZnJvbVQ7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0
b1Q7CisgICAgICAgIFRyYW5zZm9ybU1hdHJpeCBmcm9tVDsKKyAgICAgICAgVHJhbnNmb3JtTWF0
cml4IHRvVDsKICAgICAgICAgZnJvbS5hcHBseShzaXplLCBmcm9tVCk7CiAgICAgICAgIHRvLmFw
cGx5KHNpemUsIHRvVCk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oCmluZGV4IDJkNmFkZGQuLmI3MGZmNTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmgKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IpOwogI2lm
IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShXWCkKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgVHJh
bnNmb3JtTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QpOwogI2VuZGlmICAgIAogICAgIHNpemVfdCBjdXJyZW50RnJhbWUo
KSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRGcmFtZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRQb2ludC5jcHAKaW5kZXggM2NhMDM2MS4uNmNkMDdlOCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiRmxvYXRD
b252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKIApAQCAtMzcsNyArMzcsNyBAQCBG
bG9hdFBvaW50OjpGbG9hdFBvaW50KGNvbnN0IEludFBvaW50JiBwKSA6IG1feChwLngoKSksIG1f
eShwLnkoKSkKIHsKIH0KIAotRmxvYXRQb2ludCBGbG9hdFBvaW50OjptYXRyaXhUcmFuc2Zvcm0o
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pIGNvbnN0CitGbG9hdFBvaW50IEZsb2F0
UG9pbnQ6Om1hdHJpeFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1NYXRyaXgmIHRyYW5zZm9ybSkg
Y29uc3QKIHsKICAgICBkb3VibGUgbmV3WCwgbmV3WTsKICAgICB0cmFuc2Zvcm0ubWFwKHN0YXRp
Y19jYXN0PGRvdWJsZT4obV94KSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3kpLCAmbmV3WCwgJm5l
d1kpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50Lmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAppbmRleCBhZTI5M2VkLi45
MjlmZTIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaApAQCAtNjEsNyAr
NjEsNyBAQCBzdHJ1Y3QgU2tQb2ludDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBB
ZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBUcmFuc2Zvcm1NYXRyaXg7CiBjbGFzcyBJbnRQb2ludDsK
IAogY2xhc3MgRmxvYXRQb2ludCB7CkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIEZs
b2F0UG9pbnQoY29uc3QgU2tQb2ludCYpOwogI2VuZGlmCiAKLSAgICBGbG9hdFBvaW50IG1hdHJp
eFRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdDsKKyAgICBGbG9hdFBvaW50
IG1hdHJpeFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1NYXRyaXgmKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBmbG9hdCBtX3gsIG1feTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR2VuZXJhdGVkSW1hZ2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0ZWRJbWFnZS5jcHAKaW5kZXggNWU1MDk1OS4uNDFiZjViNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY28KICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sCit2b2lkIEdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgVHJhbnNmb3JtTWF0cml4JiBw
YXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENyZWF0ZSBhIEJpdG1hcEltYWdlIGFuZCBj
YWxsIGRyYXdQYXR0ZXJuIG9uIGl0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HZW5lcmF0ZWRJbWFnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0
ZWRJbWFnZS5oCmluZGV4IGFkNGU1YzIuLmJjZjYzYWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgVHJhbnNmb3JtTWF0cml4JiBwYXR0ZXJuVHJh
bnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwogICAg
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggN2JmMWFhZS4uNzNjODFmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCkBAIC05Miw3ICs5Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjb25zdCBpbnQgY01pc3NwZWxsaW5nTGluZVBhdHRlcm5XaWR0aCA9IDQ7CiAgICAgY29u
c3QgaW50IGNNaXNzcGVsbGluZ0xpbmVQYXR0ZXJuR2FwV2lkdGggPSAxOwogCi0gICAgY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOworICAgIGNsYXNzIFRyYW5zZm9ybU1hdHJpeDsKICAgICBjbGFzcyBG
b250OwogICAgIGNsYXNzIEdlbmVyYXRvcjsKICAgICBjbGFzcyBHcmFkaWVudDsKQEAgLTI2OCw4
ICsyNjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNl
dFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKTsKIAotICAgICAgICB2b2lk
IGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIGdldENUTSgpIGNvbnN0OworICAgICAgICB2b2lkIGNvbmNhdENUTShjb25zdCBUcmFuc2Zv
cm1NYXRyaXgmKTsKKyAgICAgICAgVHJhbnNmb3JtTWF0cml4IGdldENUTSgpIGNvbnN0OwogCiAg
ICAgICAgIHZvaWQgc2V0VXNlQW50aWFsaWFzaW5nKGJvb2wgPSB0cnVlKTsKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmggYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaAppbmRleCBk
ZmNjNmFhLi5lZGM5MjA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dFByaXZhdGUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dFByaXZhdGUuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBHcmFwaGlj
c0NvbnRleHRQcml2YXRlX2gKICNkZWZpbmUgR3JhcGhpY3NDb250ZXh0UHJpdmF0ZV9oCiAKLSNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1NYXRyaXguaCIK
ICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lm
IFBMQVRGT1JNKENBSVJPKQogICAgICAgICBmbG9hdCBnbG9iYWxBbHBoYTsKICNlbGlmIFBMQVRG
T1JNKFFUKQotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0aFRyYW5zZm9ybTsKKyAgICAgICAg
VHJhbnNmb3JtTWF0cml4IHBhdGhUcmFuc2Zvcm07CiAjZW5kaWYKICAgICAgICAgQ29sb3JTcGFj
ZSBzdHJva2VDb2xvclNwYWNlOwogICAgICAgICBDb2xvciBzdHJva2VDb2xvcjsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNzAyNmRmMS4uMTBmODkyNyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisj
aW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC0xMzks
NyArMTM5LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKIAogICAgIEZsb2F0U2l6ZSBzY2Fs
ZShzY2FsZWRUaWxlU2l6ZS53aWR0aCgpIC8gaW50cmluc2ljVGlsZVNpemUud2lkdGgoKSwKICAg
ICAgICAgICAgICAgICAgICAgc2NhbGVkVGlsZVNpemUuaGVpZ2h0KCkgLyBpbnRyaW5zaWNUaWxl
U2l6ZS5oZWlnaHQoKSk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBB
ZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZShzY2FsZS53aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7Cisg
ICAgVHJhbnNmb3JtTWF0cml4IHBhdHRlcm5UcmFuc2Zvcm0gPSBUcmFuc2Zvcm1NYXRyaXgoKS5z
Y2FsZShzY2FsZS53aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7CiAKICAgICBGbG9hdFJlY3Qgb25l
VGlsZVJlY3Q7CiAgICAgb25lVGlsZVJlY3Quc2V0WChkZXN0UmVjdC54KCkgKyBmbW9kZihmbW9k
Zigtc3JjUG9pbnQueCgpLCBzY2FsZWRUaWxlU2l6ZS53aWR0aCgpKSAtIHNjYWxlZFRpbGVTaXpl
LndpZHRoKCksIHNjYWxlZFRpbGVTaXplLndpZHRoKCkpKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2
b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsbwogICAgICAgICB2UnVsZSA9IFJlcGVhdFRpbGU7CiAKICAg
ICBGbG9hdFNpemUgc2NhbGUgPSBjYWxjdWxhdGVQYXR0ZXJuU2NhbGUoZHN0UmVjdCwgc3JjUmVj
dCwgaFJ1bGUsIHZSdWxlKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9
IEFmZmluZVRyYW5zZm9ybSgpLnNjYWxlKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsK
KyAgICBUcmFuc2Zvcm1NYXRyaXggcGF0dGVyblRyYW5zZm9ybSA9IFRyYW5zZm9ybU1hdHJpeCgp
LnNjYWxlKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKIAogICAgIC8vIFdlIHdhbnQg
dG8gY29uc3RydWN0IHRoZSBwaGFzZSBzdWNoIHRoYXQgdGhlIHBhdHRlcm4gaXMgY2VudGVyZWQg
KHdoZW4gc3RyZXRjaCBpcyBub3QKICAgICAvLyBzZXQgZm9yIGEgcGFydGljdWxhciBydWxlKS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCAwNzM1ZGRlLi4wN2UzNDA1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIE5hdGl2ZUltYWdl
U2tpYTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBZmZpbmVUcmFuc2Zvcm07Citj
bGFzcyBUcmFuc2Zvcm1NYXRyaXg7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRSZWN0
OwogY2xhc3MgRmxvYXRTaXplOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHByb3RlY3RlZDoKICAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRBbmltYXRpb24oKSB7IH0KICAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCisgICAgdmlydHVh
bCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgVHJhbnNmb3JtTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwogI2lmIFBMQVRGT1JNKENHKQogICAg
IC8vIFRoZXNlIGFyZSBwcml2YXRlIHRvIENHLiAgSWRlYWxseSB0aGV5IHdvdWxkIGJlIG9ubHkg
aW4gdGhlIC5jcHAgZmlsZSwgYnV0IHRoZSBjYWxsYmFjayByZXF1aXJlcyBhY2Nlc3MKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBjYTcwODdlLi5hMjkyOTcyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaWZuZGVmIEltYWdlQnVmZmVyX2gKICNkZWZpbmUgSW1hZ2VCdWZmZXJfaAogCi0jaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXJEYXRhLmgiCkBAIC02OSw5ICs2OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0OwogI2lmICFQ
TEFURk9STShDRykKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGJhc2VUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsgfQorICAgICAgICBUcmFuc2Zvcm1NYXRyaXgg
YmFzZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIFRyYW5zZm9ybU1hdHJpeCgpOyB9CiAjZWxz
ZQotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IEFmZmluZVRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwgbV9zaXplLmhlaWdodCgpKTsgfQorICAg
ICAgICBUcmFuc2Zvcm1NYXRyaXggYmFzZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIFRyYW5z
Zm9ybU1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgbV9zaXplLmhlaWdodCgpKTsgfQogI2VuZGlmCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgSW1hZ2VCdWZmZXJEYXRhIG1fZGF0YTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmgKaW5kZXggNGVmZDM0MC4uYWRmNGE4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoLmgKQEAgLTUyLDcgKzUyLDcgQEAgdHlwZWRlZiB2b2lkIFBsYXRmb3JtUGF0aDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworICAgIGNsYXNz
IFRyYW5zZm9ybU1hdHJpeDsKICAgICBjbGFzcyBGbG9hdFBvaW50OwogICAgIGNsYXNzIEZsb2F0
U2l6ZTsKICAgICBjbGFzcyBGbG9hdFJlY3Q7CkBAIC0xMjEsNyArMTIxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGF0aCBjcmVhdGVMaW5lKGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBGbG9hdFBvaW50Jik7CiAKICAgICAgICAgdm9pZCBhcHBseSh2b2lkKiBpbmZv
LCBQYXRoQXBwbGllckZ1bmN0aW9uKSBjb25zdDsKLSAgICAgICAgdm9pZCB0cmFuc2Zvcm0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgICAgIHZvaWQgdHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybU1hdHJpeCYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUGxhdGZvcm1QYXRoKiBtX3Bh
dGg7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCmluZGV4IGU2NjA0OWQuLjU0NzYzYjYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBAIC01NCw3ICs1NCw3IEBAIHR5cGVk
ZWYgd3hCcnVzaCogUGxhdGZvcm1QYXR0ZXJuUHRyOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKLSAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CisgICAgY2xhc3MgVHJhbnNmb3JtTWF0
cml4OwogICAgIGNsYXNzIEltYWdlOwogCiAgICAgY2xhc3MgUGF0dGVybiA6IHB1YmxpYyBSZWZD
b3VudGVkPFBhdHRlcm4+IHsKQEAgLTY3LDcgKzY3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIEltYWdlKiB0aWxlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFnZS5n
ZXQoKTsgfQogCi0gICAgICAgIFBsYXRmb3JtUGF0dGVyblB0ciBjcmVhdGVQbGF0Zm9ybVBhdHRl
cm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtKSBjb25zdDsKKyAgICAg
ICAgUGxhdGZvcm1QYXR0ZXJuUHRyIGNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBUcmFuc2Zv
cm1NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0pIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgUGF0dGVybihJbWFnZSosIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQWZmaW5lVHJhbnNmb3JtQ0cuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9BZmZpbmVUcmFuc2Zvcm1DRy5jcHAKaW5kZXgg
NGYwYmNhMC4uOTU4OThmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9BZmZpbmVUcmFuc2Zvcm1DRy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9BZmZpbmVUcmFuc2Zvcm1DRy5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJh
bnNmb3JtTWF0cml4LmgiCiAKICNpZiBQTEFURk9STShDRykKIApAQCAtMzYsMTIgKzM2LDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQWZmaW5lVHJhbnNmb3JtOjpBZmZpbmVUcmFuc2Zv
cm0oKQorVHJhbnNmb3JtTWF0cml4OjpUcmFuc2Zvcm1NYXRyaXgoKQogICAgIDogbV90cmFuc2Zv
cm0oQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eSkKIHsKIH0KIAotQWZmaW5lVHJhbnNmb3JtOjpB
ZmZpbmVUcmFuc2Zvcm0oZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRv
dWJsZSB0eCwgZG91YmxlIHR5KQorVHJhbnNmb3JtTWF0cml4OjpUcmFuc2Zvcm1NYXRyaXgoZG91
YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSB0eCwgZG91YmxlIHR5
KQogewogICAgIG1fdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKG5hcnJvd1ByZWNp
c2lvblRvQ0dGbG9hdChhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQoYiksCkBAIC01MSwxMiArNTEsMTIgQEAgQWZmaW5l
VHJhbnNmb3JtOjpBZmZpbmVUcmFuc2Zvcm0oZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywg
ZG91YmxlIGQsIGRvdWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdCh0eSkpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm06OkFm
ZmluZVRyYW5zZm9ybShjb25zdCBQbGF0Zm9ybUFmZmluZVRyYW5zZm9ybSYgdCkKK1RyYW5zZm9y
bU1hdHJpeDo6VHJhbnNmb3JtTWF0cml4KGNvbnN0IFBsYXRmb3JtVHJhbnNmb3JtTWF0cml4JiB0
KQogICAgIDogbV90cmFuc2Zvcm0odCkKIHsKIH0KIAotdm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNl
dE1hdHJpeChkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIHR4
LCBkb3VibGUgdHkpCit2b2lkIFRyYW5zZm9ybU1hdHJpeDo6c2V0TWF0cml4KGRvdWJsZSBhLCBk
b3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgdHgsIGRvdWJsZSB0eSkKIHsKICAg
ICBtX3RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZShuYXJyb3dQcmVjaXNpb25Ub0NH
RmxvYXQoYSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFycm93
UHJlY2lzaW9uVG9DR0Zsb2F0KGIpLApAQCAtNjYsMTQ3ICs2NiwxNDcgQEAgdm9pZCBBZmZpbmVU
cmFuc2Zvcm06OnNldE1hdHJpeChkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUg
ZCwgZG91YmxlIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXJy
b3dQcmVjaXNpb25Ub0NHRmxvYXQodHkpKTsKIH0KIAotdm9pZCBBZmZpbmVUcmFuc2Zvcm06Om1h
cChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSAqeDIsIGRvdWJsZSAqeTIpIGNvbnN0Cit2b2lk
IFRyYW5zZm9ybU1hdHJpeDo6bWFwKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlICp4MiwgZG91
YmxlICp5MikgY29uc3QKIHsKICAgICBDR1BvaW50IHJlc3VsdCA9IENHUG9pbnRBcHBseUFmZmlu
ZVRyYW5zZm9ybShDR1BvaW50TWFrZShuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQoeCksIG5hcnJv
d1ByZWNpc2lvblRvQ0dGbG9hdCh5KSksIG1fdHJhbnNmb3JtKTsKICAgICAqeDIgPSByZXN1bHQu
eDsKICAgICAqeTIgPSByZXN1bHQueTsKIH0KIAotSW50UmVjdCBBZmZpbmVUcmFuc2Zvcm06Om1h
cFJlY3QoY29uc3QgSW50UmVjdCAmcmVjdCkgY29uc3QKK0ludFJlY3QgVHJhbnNmb3JtTWF0cml4
OjptYXBSZWN0KGNvbnN0IEludFJlY3QgJnJlY3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVuY2xv
c2luZ0ludFJlY3QoQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oQ0dSZWN0KHJlY3QpLCBtX3Ry
YW5zZm9ybSkpOwogfQogCi1GbG9hdFJlY3QgQWZmaW5lVHJhbnNmb3JtOjptYXBSZWN0KGNvbnN0
IEZsb2F0UmVjdCAmcmVjdCkgY29uc3QKK0Zsb2F0UmVjdCBUcmFuc2Zvcm1NYXRyaXg6Om1hcFJl
Y3QoY29uc3QgRmxvYXRSZWN0ICZyZWN0KSBjb25zdAogewogICAgIHJldHVybiBGbG9hdFJlY3Qo
Q0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oQ0dSZWN0KHJlY3QpLCBtX3RyYW5zZm9ybSkpOwog
fQogCi1ib29sIEFmZmluZVRyYW5zZm9ybTo6aXNJZGVudGl0eSgpIGNvbnN0Citib29sIFRyYW5z
Zm9ybU1hdHJpeDo6aXNJZGVudGl0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENHQWZmaW5lVHJh
bnNmb3JtSXNJZGVudGl0eShtX3RyYW5zZm9ybSk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zv
cm06OmEoKSBjb25zdAorZG91YmxlIFRyYW5zZm9ybU1hdHJpeDo6YSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fdHJhbnNmb3JtLmE7CiB9CiAKLXZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRBKGRv
dWJsZSBhKQordm9pZCBUcmFuc2Zvcm1NYXRyaXg6OnNldEEoZG91YmxlIGEpCiB7CiAgICAgbV90
cmFuc2Zvcm0uYSA9IG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChhKTsKIH0KIAotZG91YmxlIEFm
ZmluZVRyYW5zZm9ybTo6YigpIGNvbnN0Citkb3VibGUgVHJhbnNmb3JtTWF0cml4OjpiKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0uYjsKIH0KIAotdm9pZCBBZmZpbmVUcmFuc2Zv
cm06OnNldEIoZG91YmxlIGIpCit2b2lkIFRyYW5zZm9ybU1hdHJpeDo6c2V0Qihkb3VibGUgYikK
IHsKICAgICBtX3RyYW5zZm9ybS5iID0gbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KGIpOwogfQog
Ci1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpjKCkgY29uc3QKK2RvdWJsZSBUcmFuc2Zvcm1NYXRy
aXg6OmMoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS5jOwogfQogCi12b2lkIEFm
ZmluZVRyYW5zZm9ybTo6c2V0Qyhkb3VibGUgYykKK3ZvaWQgVHJhbnNmb3JtTWF0cml4OjpzZXRD
KGRvdWJsZSBjKQogewogICAgIG1fdHJhbnNmb3JtLmMgPSBuYXJyb3dQcmVjaXNpb25Ub0NHRmxv
YXQoYyk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmQoKSBjb25zdAorZG91YmxlIFRy
YW5zZm9ybU1hdHJpeDo6ZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLmQ7CiB9
CiAKLXZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXREKGRvdWJsZSBkKQordm9pZCBUcmFuc2Zvcm1N
YXRyaXg6OnNldEQoZG91YmxlIGQpCiB7CiAgICAgbV90cmFuc2Zvcm0uZCA9IG5hcnJvd1ByZWNp
c2lvblRvQ0dGbG9hdChkKTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZSgpIGNvbnN0
Citkb3VibGUgVHJhbnNmb3JtTWF0cml4OjplKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFu
c2Zvcm0udHg7CiB9CiAKLXZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRFKGRvdWJsZSBlKQordm9p
ZCBUcmFuc2Zvcm1NYXRyaXg6OnNldEUoZG91YmxlIGUpCiB7CiAgICAgbV90cmFuc2Zvcm0udHgg
PSBuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQoZSk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zv
cm06OmYoKSBjb25zdAorZG91YmxlIFRyYW5zZm9ybU1hdHJpeDo6ZigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fdHJhbnNmb3JtLnR5OwogfQogCi12b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0Rihk
b3VibGUgZikKK3ZvaWQgVHJhbnNmb3JtTWF0cml4OjpzZXRGKGRvdWJsZSBmKQogewogICAgIG1f
dHJhbnNmb3JtLnR5ID0gbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KGYpOwogfQogCi12b2lkIEFm
ZmluZVRyYW5zZm9ybTo6cmVzZXQoKQordm9pZCBUcmFuc2Zvcm1NYXRyaXg6OnJlc2V0KCkKIHsK
ICAgICBtX3RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7CiB9CiAKLUFmZmlu
ZVRyYW5zZm9ybSAmQWZmaW5lVHJhbnNmb3JtOjpzY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSkK
K1RyYW5zZm9ybU1hdHJpeCAmVHJhbnNmb3JtTWF0cml4OjpzY2FsZShkb3VibGUgc3gsIGRvdWJs
ZSBzeSkKIHsKICAgICBtX3RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtU2NhbGUobV90cmFu
c2Zvcm0sIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChzeCksIG5hcnJvd1ByZWNpc2lvblRvQ0dG
bG9hdChzeSkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotQWZmaW5lVHJhbnNmb3JtICZBZmZp
bmVUcmFuc2Zvcm06OnJvdGF0ZShkb3VibGUgZCkKK1RyYW5zZm9ybU1hdHJpeCAmVHJhbnNmb3Jt
TWF0cml4Ojpyb3RhdGUoZG91YmxlIGQpCiB7CiAgICAgbV90cmFuc2Zvcm0gPSBDR0FmZmluZVRy
YW5zZm9ybVJvdGF0ZShtX3RyYW5zZm9ybSwgbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KGRlZzJy
YWQoZCkpKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSAmQWZmaW5l
VHJhbnNmb3JtOjp0cmFuc2xhdGUoZG91YmxlIHR4LCBkb3VibGUgdHkpCitUcmFuc2Zvcm1NYXRy
aXggJlRyYW5zZm9ybU1hdHJpeDo6dHJhbnNsYXRlKGRvdWJsZSB0eCwgZG91YmxlIHR5KQogewog
ICAgIG1fdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUobV90cmFuc2Zvcm0s
IG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdCh0eCksIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdCh0
eSkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotQWZmaW5lVHJhbnNmb3JtICZBZmZpbmVUcmFu
c2Zvcm06OnNoZWFyKGRvdWJsZSBzeCwgZG91YmxlIHN5KQorVHJhbnNmb3JtTWF0cml4ICZUcmFu
c2Zvcm1NYXRyaXg6OnNoZWFyKGRvdWJsZSBzeCwgZG91YmxlIHN5KQogewogICAgIENHQWZmaW5l
VHJhbnNmb3JtIHNoZWFyID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKDEuMGYsIG5hcnJvd1ByZWNp
c2lvblRvQ0dGbG9hdChzeSksIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChzeCksIDEuMGYsIDAu
MGYsIDAuMGYpOwogICAgIG1fdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQoc2hl
YXIsIG1fdHJhbnNmb3JtKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWRvdWJsZSBBZmZpbmVU
cmFuc2Zvcm06OmRldCgpIGNvbnN0Citkb3VibGUgVHJhbnNmb3JtTWF0cml4OjpkZXQoKSBjb25z
dAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS5hICogbV90cmFuc2Zvcm0uZCAtIG1fdHJhbnNm
b3JtLmIgKiBtX3RyYW5zZm9ybS5jOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gQWZmaW5lVHJhbnNm
b3JtOjppbnZlcnNlKCkgY29uc3QKK1RyYW5zZm9ybU1hdHJpeCBUcmFuc2Zvcm1NYXRyaXg6Omlu
dmVyc2UoKSBjb25zdAogewogICAgIGlmIChpc0ludmVydGlibGUoKSkKLSAgICAgICAgcmV0dXJu
IEFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybUludmVydChtX3RyYW5zZm9ybSkpOwot
ICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICAgICAgcmV0dXJuIFRyYW5zZm9ybU1h
dHJpeChDR0FmZmluZVRyYW5zZm9ybUludmVydChtX3RyYW5zZm9ybSkpOworICAgIHJldHVybiBU
cmFuc2Zvcm1NYXRyaXgoKTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtOjpvcGVyYXRvciBQbGF0Zm9y
bUFmZmluZVRyYW5zZm9ybSgpIGNvbnN0CitUcmFuc2Zvcm1NYXRyaXg6Om9wZXJhdG9yIFBsYXRm
b3JtVHJhbnNmb3JtTWF0cml4KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm07CiB9
CiAKLWJvb2wgQWZmaW5lVHJhbnNmb3JtOjpvcGVyYXRvcj09IChjb25zdCBBZmZpbmVUcmFuc2Zv
cm0gJm0yKSBjb25zdAorYm9vbCBUcmFuc2Zvcm1NYXRyaXg6Om9wZXJhdG9yPT0gKGNvbnN0IFRy
YW5zZm9ybU1hdHJpeCAmbTIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3Jt
RXF1YWxUb1RyYW5zZm9ybShtX3RyYW5zZm9ybSwgQ0dBZmZpbmVUcmFuc2Zvcm0obTIpKTsKIH0K
IAotQWZmaW5lVHJhbnNmb3JtICZBZmZpbmVUcmFuc2Zvcm06Om9wZXJhdG9yKj0gKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSAmbTIpCitUcmFuc2Zvcm1NYXRyaXggJlRyYW5zZm9ybU1hdHJpeDo6b3Bl
cmF0b3IqPSAoY29uc3QgVHJhbnNmb3JtTWF0cml4ICZtMikKIHsKICAgICBtX3RyYW5zZm9ybSA9
IENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KG1fdHJhbnNmb3JtLCBDR0FmZmluZVRyYW5zZm9ybSht
MikpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIEFmZmluZVRyYW5z
Zm9ybTo6b3BlcmF0b3IqIChjb25zdCBBZmZpbmVUcmFuc2Zvcm0gJm0yKQorVHJhbnNmb3JtTWF0
cml4IFRyYW5zZm9ybU1hdHJpeDo6b3BlcmF0b3IqIChjb25zdCBUcmFuc2Zvcm1NYXRyaXggJm0y
KQogewogICAgIHJldHVybiBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdChtX3RyYW5zZm9ybSwgQ0dB
ZmZpbmVUcmFuc2Zvcm0obTIpKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggNGUxNDc2Zi4uOTEzOWRiOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
QEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRy
YW5zZm9ybU1hdHJpeC5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGVDRy5oIgpAQCAtODkwLDcgKzg5MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
Ojp0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNl
VHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0Ojpjb25jYXRDVE0oY29uc3QgVHJhbnNmb3JtTWF0cml4JiB0cmFuc2Zv
cm0pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
ODk5LDcgKzg5OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpjb25jYXRDVE0oY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5z
Zm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBHcmFw
aGljc0NvbnRleHQ6OmdldENUTSgpIGNvbnN0CitUcmFuc2Zvcm1NYXRyaXggR3JhcGhpY3NDb250
ZXh0OjpnZXRDVE0oKSBjb25zdAogewogICAgIHJldHVybiBDR0NvbnRleHRHZXRDVE0ocGxhdGZv
cm1Db250ZXh0KCkpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oCmluZGV4IDg4Mjdm
ZjcuLmVmYzkzM2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJikge30KICAgICB2
b2lkIHJvdGF0ZShmbG9hdCkge30KICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCwgZmxvYXQpIHt9
Ci0gICAgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikge30KKyAgICB2b2lk
IGNvbmNhdENUTShjb25zdCBUcmFuc2Zvcm1NYXRyaXgmKSB7fQogICAgIHZvaWQgYmVnaW5UcmFu
c3BhcmVuY3lMYXllcigpIHt9CiAgICAgdm9pZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpIHt9CiAj
ZW5kaWYKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2NhbGUoY29uc3QgRmxv
YXRTaXplJik7CiAgICAgdm9pZCByb3RhdGUoZmxvYXQpOwogICAgIHZvaWQgdHJhbnNsYXRlKGZs
b2F0LCBmbG9hdCk7Ci0gICAgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7
CisgICAgdm9pZCBjb25jYXRDVE0oY29uc3QgVHJhbnNmb3JtTWF0cml4Jik7CiAgICAgdm9pZCBi
ZWdpblRyYW5zcGFyZW5jeUxheWVyKCkgeyBtX3RyYW5zcGFyZW5jeUNvdW50Kys7IH0KICAgICB2
b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCkgeyBtX3RyYW5zcGFyZW5jeUNvdW50LS07IH0KIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggMDQ0OGJmMi4uNGM0
YmNlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShDRykKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybU1hdHJpeC5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVy
c2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuQ2FsbGJhY2so
dm9pZCogaW5mbywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgQ0dDb250ZXh0RHJhd0ltYWdl
KGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dChjb250ZXh0KS5yb3VuZFRvRGV2aWNlUGl4ZWxzKEZs
b2F0UmVjdCgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGlt
YWdlKSkpLCBpbWFnZSk7CiB9CiAKLXZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAordm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBUcmFuc2Zvcm1N
YXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QpCiB7CiAgICAgaWYgKCFuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCmluZGV4IGVhMGMwMDAuLmY4ZmRhMTIg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKIAogI2lmIFBMQVRGT1JNKENHKQogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisj
aW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNl
cy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgpAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgUGF0aDo6YXBwbHkodm9pZCog
aW5mbywgUGF0aEFwcGxpZXJGdW5jdGlvbiBmdW5jdGlvbikgY29uc3QKICAgICBDR1BhdGhBcHBs
eShtX3BhdGgsICZwaW5mbywgQ0dQYXRoQXBwbGllclRvUGF0aEFwcGxpZXIpOwogfQogCi12b2lk
IFBhdGg6OnRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3ZvaWQg
UGF0aDo6dHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybU1hdHJpeCYgdHJhbnNmb3JtKQogewogICAg
IENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKICAgICBDR0Fm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1DRyA9IHRyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCBlMWY3YTY5Li44ODZiODc1IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogCi0jaW5jbHVkZSAi
QWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKICNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0Fw
cGxpY2F0aW9uU2VydmljZXMuaD4KQEAgLTUwLDExICs1MCwxMSBAQCBzdGF0aWMgdm9pZCBwYXR0
ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgc3RhdGljX2Nhc3Q8SW1hZ2UqPihp
bmZvKS0+ZGVyZWYoKTsKIH0KIAotQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3Jt
UGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkgY29uc3QKK0NHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgVHJhbnNmb3JtTWF0cml4
JiB0cmFuc2Zvcm0pIGNvbnN0CiB7CiAgICAgSW50UmVjdCB0aWxlUmVjdCA9IHRpbGVJbWFnZSgp
LT5yZWN0KCk7CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHRyYW5z
Zm9ybTsKKyAgICBUcmFuc2Zvcm1NYXRyaXggcGF0dGVyblRyYW5zZm9ybSA9IHRyYW5zZm9ybTsK
ICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlKDEsIC0xKTsKICAgICBwYXR0ZXJuVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVpZ2h0KCkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmEwYmFiLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLQotI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgotI2luY2x1ZGUgIkludFJlY3Qu
aCIKLQotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RhdGljIHZvaWQgYWZmaW5lVHJhbnNmb3JtRGVjb21wb3NlKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgbWF0cml4LCBkb3VibGUgc3JbOV0pCi17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG0obWF0
cml4KTsKLQotICAgIC8vIENvbXB1dGUgc2NhbGluZyBmYWN0b3JzCi0gICAgZG91YmxlIHN4ID0g
c3FydChtLmEoKSAqIG0uYSgpICsgbS5iKCkgKiBtLmIoKSk7Ci0gICAgZG91YmxlIHN5ID0gc3Fy
dChtLmMoKSAqIG0uYygpICsgbS5kKCkgKiBtLmQoKSk7Ci0KLSAgICAvKiBDb21wdXRlIGNyb3Nz
IHByb2R1Y3Qgb2YgdHJhbnNmb3JtZWQgdW5pdCB2ZWN0b3JzLiBJZiBuZWdhdGl2ZSwKLSAgICAg
ICAgb25lIGF4aXMgd2FzIGZsaXBwZWQuICovCi0KLSAgICBpZiAobS5hKCkgKiBtLmQoKSAtIG0u
YygpICogbS5iKCkgPCAwLjApIHsKLSAgICAgICAgLy8gRmxpcCBheGlzIHdpdGggbWluaW11bSB1
bml0IHZlY3RvciBkb3QgcHJvZHVjdAotCi0gICAgICAgIGlmIChtLmEoKSA8IG0uZCgpKQotICAg
ICAgICAgICAgc3ggPSAtc3g7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN5ID0gLXN5Owot
ICAgIH0KLQotICAgIC8vIFJlbW92ZSBzY2FsZSBmcm9tIG1hdHJpeAotCi0gICAgbS5zY2FsZSgx
LjAgLyBzeCwgMS4wIC8gc3kpOwotCi0gICAgLy8gQ29tcHV0ZSByb3RhdGlvbgotCi0gICAgZG91
YmxlIGFuZ2xlID0gYXRhbjIobS5iKCksIG0uYSgpKTsKLQotICAgIC8vIFJlbW92ZSByb3RhdGlv
biBmcm9tIG1hdHJpeAotCi0gICAgbS5yb3RhdGUocmFkMmRlZygtYW5nbGUpKTsKLQotICAgIC8v
IFJldHVybiByZXN1bHRzCi0KLSAgICBzclswXSA9IHN4OyBzclsxXSA9IHN5OyBzclsyXSA9IGFu
Z2xlOwotICAgIHNyWzNdID0gbS5hKCk7IHNyWzRdID0gbS5iKCk7Ci0gICAgc3JbNV0gPSBtLmMo
KTsgc3JbNl0gPSBtLmQoKTsKLSAgICBzcls3XSA9IG0uZSgpOyBzcls4XSA9IG0uZigpOwotfQot
Ci1zdGF0aWMgdm9pZCBhZmZpbmVUcmFuc2Zvcm1Db21wb3NlKEFmZmluZVRyYW5zZm9ybSYgbSwg
Y29uc3QgZG91YmxlIHNyWzldKQotewotICAgIG0uc2V0QShzclszXSk7Ci0gICAgbS5zZXRCKHNy
WzRdKTsKLSAgICBtLnNldEMoc3JbNV0pOwotICAgIG0uc2V0RChzcls2XSk7Ci0gICAgbS5zZXRF
KHNyWzddKTsKLSAgICBtLnNldEYoc3JbOF0pOwotICAgIG0ucm90YXRlKHJhZDJkZWcoc3JbMl0p
KTsKLSAgICBtLnNjYWxlKHNyWzBdLCBzclsxXSk7Ci19Ci0KLWJvb2wgQWZmaW5lVHJhbnNmb3Jt
Ojppc0ludmVydGlibGUoKSBjb25zdAotewotICAgIHJldHVybiBkZXQoKSAhPSAwLjA7Ci19Ci0K
LUFmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjptdWx0aXBseShjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIG90aGVyKQotewotICAgIHJldHVybiAoKnRoaXMpICo9IG90aGVyOwotfQotCi1B
ZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6c2NhbGUoZG91YmxlIHMpCi17Ci0gICAg
cmV0dXJuIHNjYWxlKHMsIHMpOwotfQotCi1BZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9y
bTo6c2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwgZG91YmxlIHN5KQotewotICAgIHJldHVybiBz
Y2FsZShzeCwgc3kpOwotfQotCi1BZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6cm90
YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHkpCi17Ci0gICAgcmV0dXJuIHJvdGF0ZShy
YWQyZGVnKGF0YW4yKHksIHgpKSk7Ci19Ci0KLUFmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNm
b3JtOjpmbGlwWCgpCi17Ci0gICAgcmV0dXJuIHNjYWxlKC0xLjBmLCAxLjBmKTsKLX0KLQotQWZm
aW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zvcm06OmZsaXBZKCkKLXsKLSAgICByZXR1cm4gc2Nh
bGUoMS4wZiwgLTEuMGYpOwotfQotCi1BZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6
c2tldyhkb3VibGUgYW5nbGVYLCBkb3VibGUgYW5nbGVZKQotewotICAgIHJldHVybiBzaGVhcih0
YW4oZGVnMnJhZChhbmdsZVgpKSwgdGFuKGRlZzJyYWQoYW5nbGVZKSkpOwotfQotCi1BZmZpbmVU
cmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6c2tld1goZG91YmxlIGFuZ2xlKQotewotICAgIHJl
dHVybiBzaGVhcih0YW4oZGVnMnJhZChhbmdsZSkpLCAwLjBmKTsKLX0KLQotQWZmaW5lVHJhbnNm
b3JtJiBBZmZpbmVUcmFuc2Zvcm06OnNrZXdZKGRvdWJsZSBhbmdsZSkKLXsKLSAgICByZXR1cm4g
c2hlYXIoMC4wZiwgdGFuKGRlZzJyYWQoYW5nbGUpKSk7Ci19Ci0KLUFmZmluZVRyYW5zZm9ybSBt
YWtlTWFwQmV0d2VlblJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3QpCi17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKGRlc3QueCgpIC0gc291cmNlLngoKSwgZGVzdC55KCkgLSBzb3VyY2UueSgp
KTsKLSAgICB0cmFuc2Zvcm0uc2NhbGUoZGVzdC53aWR0aCgpIC8gc291cmNlLndpZHRoKCksIGRl
c3QuaGVpZ2h0KCkgLyBzb3VyY2UuaGVpZ2h0KCkpOwotICAgIHJldHVybiB0cmFuc2Zvcm07Ci19
Ci0KLUludFBvaW50IEFmZmluZVRyYW5zZm9ybTo6bWFwUG9pbnQoY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAotewotICAgIGRvdWJsZSB4MiwgeTI7Ci0gICAgbWFwKHBvaW50LngoKSwgcG9p
bnQueSgpLCAmeDIsICZ5Mik7Ci0gICAgCi0gICAgLy8gUm91bmQgdGhlIHBvaW50LgotICAgIHJl
dHVybiBJbnRQb2ludChscm91bmQoeDIpLCBscm91bmQoeTIpKTsKLX0KLQotRmxvYXRQb2ludCBB
ZmZpbmVUcmFuc2Zvcm06Om1hcFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAot
ewotICAgIGRvdWJsZSB4MiwgeTI7Ci0gICAgbWFwKHBvaW50LngoKSwgcG9pbnQueSgpLCAmeDIs
ICZ5Mik7Ci0KLSAgICByZXR1cm4gRmxvYXRQb2ludChzdGF0aWNfY2FzdDxmbG9hdD4oeDIpLCBz
dGF0aWNfY2FzdDxmbG9hdD4oeTIpKTsKLX0KLQotRmxvYXRRdWFkIEFmZmluZVRyYW5zZm9ybTo6
bWFwUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IGF2
b2lkIDQgc2VwZXJhdGUgbGlicmFyeSBjYWxscy4gUG9pbnQgbWFwcGluZyByZWFsbHkgbmVlZHMK
LSAgICAvLyB0byBiZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBjb2RlLgotICAgIHJldHVybiBGbG9h
dFF1YWQobWFwUG9pbnQocXVhZC5wMSgpKSwKLSAgICAgICAgICAgICAgICAgICAgIG1hcFBvaW50
KHF1YWQucDIoKSksCi0gICAgICAgICAgICAgICAgICAgICBtYXBQb2ludChxdWFkLnAzKCkpLAot
ICAgICAgICAgICAgICAgICAgICAgbWFwUG9pbnQocXVhZC5wNCgpKSk7Ci19Ci0KLXZvaWQgQWZm
aW5lVHJhbnNmb3JtOjpibGVuZChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGZyb20sIGRvdWJsZSBw
cm9ncmVzcykKLXsKLSAgICBkb3VibGUgc3JBWzldLCBzckJbOV07Ci0KLSAgICBhZmZpbmVUcmFu
c2Zvcm1EZWNvbXBvc2UoZnJvbSwgc3JBKTsKLSAgICBhZmZpbmVUcmFuc2Zvcm1EZWNvbXBvc2Uo
KnRoaXMsIHNyQik7Ci0KLSAgICAvLyBJZiB4LWF4aXMgb2Ygb25lIGlzIGZsaXBwZWQsIGFuZCB5
LWF4aXMgb2YgdGhlIG90aGVyLCBjb252ZXJ0IHRvIGFuIHVuZmxpcHBlZCByb3RhdGlvbi4KLSAg
ICBpZiAoKHNyQVswXSA8IDAuMCAmJiBzckJbMV0gPCAwLjApIHx8IChzckFbMV0gPCAwLjAgJiYg
IHNyQlswXSA8IDAuMCkpIHsKLSAgICAgICAgc3JBWzBdID0gLXNyQVswXTsKLSAgICAgICAgc3JB
WzFdID0gLXNyQVsxXTsKLSAgICAgICAgc3JBWzJdICs9IHNyQVsyXSA8IDAgPyBwaURvdWJsZSA6
IC1waURvdWJsZTsKLSAgICB9Ci0KLSAgICAvLyBEb24ndCByb3RhdGUgdGhlIGxvbmcgd2F5IGFy
b3VuZC4KLSAgICBzckFbMl0gPSBmbW9kKHNyQVsyXSwgMi4wICogcGlEb3VibGUpOwotICAgIHNy
QlsyXSA9IGZtb2Qoc3JCWzJdLCAyLjAgKiBwaURvdWJsZSk7Ci0KLSAgICBpZiAoZmFicyhzckFb
Ml0gLSBzckJbMl0pID4gcGlEb3VibGUpIHsKLSAgICAgICAgaWYgKHNyQVsyXSA+IHNyQlsyXSkK
LSAgICAgICAgICAgIHNyQVsyXSAtPSBwaURvdWJsZSAqIDIuMDsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgc3JCWzJdIC09IHBpRG91YmxlICogMi4wOwotICAgIH0KLQotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgOTsgaSsrKQotICAgICAgICBzckFbaV0gPSBzckFbaV0gKyBwcm9ncmVzcyAq
IChzckJbaV0gLSBzckFbaV0pOwotCi0gICAgYWZmaW5lVHJhbnNmb3JtQ29tcG9zZSgqdGhpcywg
c3JBKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
MjU2N2U2Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9BZmZpbmVUcmFuc2Zvcm0uaAorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFmZmluZVRyYW5zZm9ybV9oCi0jZGVmaW5l
IEFmZmluZVRyYW5zZm9ybV9oCi0KLSNpZiBQTEFURk9STShDRykKLSNpbmNsdWRlIDxDb3JlR3Jh
cGhpY3MvQ0dBZmZpbmVUcmFuc2Zvcm0uaD4KLXR5cGVkZWYgQ0dBZmZpbmVUcmFuc2Zvcm0gUGxh
dGZvcm1BZmZpbmVUcmFuc2Zvcm07Ci0jZWxpZiBQTEFURk9STShRVCkKLSNpbmNsdWRlIDxRTWF0
cml4PgotdHlwZWRlZiBRTWF0cml4IFBsYXRmb3JtQWZmaW5lVHJhbnNmb3JtOwotI2VsaWYgUExB
VEZPUk0oQ0FJUk8pCi0jaW5jbHVkZSA8Y2Fpcm8uaD4KLXR5cGVkZWYgY2Fpcm9fbWF0cml4X3Qg
UGxhdGZvcm1BZmZpbmVUcmFuc2Zvcm07Ci0jZWxpZiBQTEFURk9STShTS0lBKQotI2luY2x1ZGUg
IlNrTWF0cml4LmgiCi10eXBlZGVmIFNrTWF0cml4IFBsYXRmb3JtQWZmaW5lVHJhbnNmb3JtOwot
I2VsaWYgUExBVEZPUk0oV1gpICYmIFVTRShXWEdDKQotI2luY2x1ZGUgPHd4L2RlZnMuaD4KLSNp
bmNsdWRlIDx3eC9ncmFwaGljcy5oPgotdHlwZWRlZiB3eEdyYXBoaWNzTWF0cml4IFBsYXRmb3Jt
QWZmaW5lVHJhbnNmb3JtOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
SW50UG9pbnQ7Ci1jbGFzcyBJbnRSZWN0OwotY2xhc3MgRmxvYXRQb2ludDsKLWNsYXNzIEZsb2F0
UmVjdDsKLWNsYXNzIEZsb2F0UXVhZDsKLQotY2xhc3MgQWZmaW5lVHJhbnNmb3JtIHsKLXB1Ymxp
YzoKLSAgICBBZmZpbmVUcmFuc2Zvcm0oKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0oZG91YmxlIGEs
IGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZik7Ci0jaWYg
IVBMQVRGT1JNKFdYKSB8fCBVU0UoV1hHQykKLSAgICBBZmZpbmVUcmFuc2Zvcm0oY29uc3QgUGxh
dGZvcm1BZmZpbmVUcmFuc2Zvcm0mKTsKLSNlbmRpZgotCi0gICAgdm9pZCBzZXRNYXRyaXgoZG91
YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZik7
Ci0gICAgdm9pZCBtYXAoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgKngyLCBkb3VibGUgKnky
KSBjb25zdDsKLQotICAgIC8vIFJvdW5kcyB0aGUgbWFwcGVkIHBvaW50IHRvIHRoZSBuZWFyZXN0
IGludGVnZXIgdmFsdWUuCi0gICAgSW50UG9pbnQgbWFwUG9pbnQoY29uc3QgSW50UG9pbnQmKSBj
b25zdDsKLQotICAgIEZsb2F0UG9pbnQgbWFwUG9pbnQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0
OwotCi0gICAgLy8gUm91bmRzIHRoZSByZXN1bHRpbmcgbWFwcGVkIHJlY3RhbmdsZSBvdXQuIFRo
aXMgaXMgaGVscGZ1bCBmb3IgYm91bmRpbmcKLSAgICAvLyBib3ggY29tcHV0YXRpb25zIGJ1dCBt
YXkgbm90IGJlIHdoYXQgaXMgd2FudGVkIGluIG90aGVyIGNvbnRleHRzLgotICAgIEludFJlY3Qg
bWFwUmVjdChjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0KLSAgICBGbG9hdFJlY3QgbWFwUmVjdChj
b25zdCBGbG9hdFJlY3QmKSBjb25zdDsKLQotICAgIEZsb2F0UXVhZCBtYXBRdWFkKGNvbnN0IEZs
b2F0UXVhZCYpIGNvbnN0OwotCi0gICAgYm9vbCBpc0lkZW50aXR5KCkgY29uc3Q7Ci0KLSAgICBk
b3VibGUgYSgpIGNvbnN0OwotICAgIHZvaWQgc2V0QShkb3VibGUgYSk7Ci0KLSAgICBkb3VibGUg
YigpIGNvbnN0OwotICAgIHZvaWQgc2V0Qihkb3VibGUgYik7Ci0KLSAgICBkb3VibGUgYygpIGNv
bnN0OwotICAgIHZvaWQgc2V0Qyhkb3VibGUgYyk7Ci0KLSAgICBkb3VibGUgZCgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0RChkb3VibGUgZCk7Ci0KLSAgICBkb3VibGUgZSgpIGNvbnN0OwotICAgIHZv
aWQgc2V0RShkb3VibGUgZSk7Ci0KLSAgICBkb3VibGUgZigpIGNvbnN0OwotICAgIHZvaWQgc2V0
Rihkb3VibGUgZik7Ci0KLSAgICB2b2lkIHJlc2V0KCk7Ci0KLSAgICBBZmZpbmVUcmFuc2Zvcm0m
IG11bHRpcGx5KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAgIEFmZmluZVRyYW5zZm9ybSYg
c2NhbGUoZG91YmxlKTsgCi0gICAgQWZmaW5lVHJhbnNmb3JtJiBzY2FsZShkb3VibGUgc3gsIGRv
dWJsZSBzeSk7IAotICAgIEFmZmluZVRyYW5zZm9ybSYgc2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBz
eCwgZG91YmxlIHN5KTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0mIHJvdGF0ZShkb3VibGUgZCk7Ci0g
ICAgQWZmaW5lVHJhbnNmb3JtJiByb3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUgeSk7
Ci0gICAgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2xhdGUoZG91YmxlIHR4LCBkb3VibGUgdHkpOwot
ICAgIEFmZmluZVRyYW5zZm9ybSYgc2hlYXIoZG91YmxlIHN4LCBkb3VibGUgc3kpOwotICAgIEFm
ZmluZVRyYW5zZm9ybSYgZmxpcFgoKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0mIGZsaXBZKCk7Ci0g
ICAgQWZmaW5lVHJhbnNmb3JtJiBza2V3KGRvdWJsZSBhbmdsZVgsIGRvdWJsZSBhbmdsZVkpOwot
ICAgIEFmZmluZVRyYW5zZm9ybSYgc2tld1goZG91YmxlIGFuZ2xlKTsKLSAgICBBZmZpbmVUcmFu
c2Zvcm0mIHNrZXdZKGRvdWJsZSBhbmdsZSk7Ci0gCi0gICAgZG91YmxlIGRldCgpIGNvbnN0Owot
ICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3Q7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGludmVy
c2UoKSBjb25zdDsKLQotICAgIHZvaWQgYmxlbmQoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBmcm9t
LCBkb3VibGUgcHJvZ3Jlc3MpOwotCi0jaWYgIVBMQVRGT1JNKFdYKSB8fCBVU0UoV1hHQykKLSAg
ICBvcGVyYXRvciBQbGF0Zm9ybUFmZmluZVRyYW5zZm9ybSgpIGNvbnN0OwotI2VuZGlmCi0KLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgQWZmaW5lVHJhbnNmb3JtJiBvcGVyYXRvcio9KGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAgIEFmZmluZVRyYW5zZm9ybSBvcGVyYXRvciooY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgCi1wcml2YXRlOgotI2lmICFQTEFURk9STShXWCkg
fHwgVVNFKFdYR0MpCi0gICAgUGxhdGZvcm1BZmZpbmVUcmFuc2Zvcm0gbV90cmFuc2Zvcm07Ci0j
ZW5kaWYKLX07Ci0KLUFmZmluZVRyYW5zZm9ybSBtYWtlTWFwQmV0d2VlblJlY3RzKGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QpOwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBBZmZpbmVUcmFuc2Zvcm1faApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0lkZW50aXR5VHJhbnNmb3JtT3BlcmF0
aW9uLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFu
c2Zvcm1PcGVyYXRpb24uaAppbmRleCA1NGM0OWEzLi4yMjUxZmQ0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRp
b24uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlU
cmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBpc1NhbWVUeXBlKG8pOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBhcHBseShBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29u
c3QKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnN0IEludFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCBjNDFh
ZTNlLi4wODEzYjdlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcApAQCAtMzMs
OCArMzMsOCBAQCBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gTWF0cml4VHJhbnNmb3Jt
T3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcAogCiAgICAgLy8gY29udmVydCB0aGUg
VHJhbnNmb3JtT3BlcmF0aW9ucyBpbnRvIG1hdHJpY2VzCiAgICAgSW50U2l6ZSBzaXplOwotICAg
IEFmZmluZVRyYW5zZm9ybSBmcm9tVDsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdG9UKG1fYSwgbV9i
LCBtX2MsIG1fZCwgbV9lLCBtX2YpOworICAgIFRyYW5zZm9ybU1hdHJpeCBmcm9tVDsKKyAgICBU
cmFuc2Zvcm1NYXRyaXggdG9UKG1fYSwgbV9iLCBtX2MsIG1fZCwgbV9lLCBtX2YpOwogICAgIGlm
IChmcm9tKSB7CiAgICAgICAgIGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbiogbSA9IHN0
YXRpY19jYXN0PGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbio+KGZyb20pOwogICAgICAg
ICBmcm9tVC5zZXRNYXRyaXgobS0+bV9hLCBtLT5tX2IsIG0tPm1fYywgbS0+bV9kLCBtLT5tX2Us
IG0tPm1fZik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggNTc0ZjJhOC4uN2Q4
NGRmYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01h
dHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtNDksOSArNDksOSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX2EgPT0gbS0+bV9hICYmIG1fYiA9PSBtLT5tX2IgJiYg
bV9jID09IG0tPm1fYyAmJiBtX2QgPT0gbS0+bV9kICYmIG1fZSA9PSBtLT5tX2UgJiYgbV9mID09
IG0tPm1fZjsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0CisgICAgdmly
dHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybU1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXpl
JiBib3JkZXJCb3hTaXplKSBjb25zdAogICAgIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1h
dHJpeChtX2EsIG1fYiwgbV9jLCBtX2QsIG1fZSwgbV9mKTsKKyAgICAgICAgVHJhbnNmb3JtTWF0
cml4IG1hdHJpeChtX2EsIG1fYiwgbV9jLCBtX2QsIG1fZSwgbV9mKTsKICAgICAgICAgdHJhbnNm
b3JtID0gbWF0cml4ICogdHJhbnNmb3JtOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IDljZmM5YzguLmMwZTI5NmEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zv
cm1PcGVyYXRpb24uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbV9hbmdsZSA9PSByLT5tX2FuZ2xlOwogICAgIH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBhcHBseShBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYgYm9y
ZGVyQm94U2l6ZSkgY29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0CiAgICAgewog
ICAgICAgICB0cmFuc2Zvcm0ucm90YXRlKG1fYW5nbGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb24uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IDc4N2YwNjcuLjk0Mjk5OTIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9y
bU9wZXJhdGlvbi5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9T
Y2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1feCA9PSBzLT5tX3ggJiYgbV95ID09IHMtPm1feTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgYXBwbHkoQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEludFNp
emUmIGJvcmRlckJveFNpemUpIGNvbnN0CisgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9y
bU1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdAog
ICAgIHsKICAgICAgICAgdHJhbnNmb3JtLnNjYWxlKG1feCwgbV95KTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggYTc4NzllOC4uMGRjNTNlMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFu
c2Zvcm1PcGVyYXRpb24uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fYW5nbGVYID09IHMtPm1fYW5nbGVYICYmIG1fYW5nbGVZID09IHMtPm1f
YW5nbGVZOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBhcHBseShBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QKKyAgICB2aXJ0
dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUm
IGJvcmRlckJveFNpemUpIGNvbnN0CiAgICAgewogICAgICAgICB0cmFuc2Zvcm0uc2tldyhtX2Fu
Z2xlWCwgbV9hbmdsZVkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmggYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmgK
aW5kZXggMWJhYTY3ZC4uNTQ3YTM0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtMjUsNyArMjUs
NyBAQAogI2lmbmRlZiBUcmFuc2Zvcm1PcGVyYXRpb25faAogI2RlZmluZSBUcmFuc2Zvcm1PcGVy
YXRpb25faAogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNm
b3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBjb25zdCA9IDA7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgYXBwbHkoQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgSW50U2l6ZSYgYm9yZGVy
Qm94U2l6ZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm1NYXRy
aXgmLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBm
YWxzZSkgPSAwOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAppbmRleCBkNTU4YTRlLi44NjA3NWEzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
T3BlcmF0aW9ucy5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1PcGVyYXRpb25zLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBhcHBseShjb25zdCBJ
bnRTaXplJiBzeiwgQWZmaW5lVHJhbnNmb3JtJiB0KSBjb25zdAorICAgIHZvaWQgYXBwbHkoY29u
c3QgSW50U2l6ZSYgc3osIFRyYW5zZm9ybU1hdHJpeCYgdCkgY29uc3QKICAgICB7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpCiAgICAg
ICAgICAgICBtX29wZXJhdGlvbnNbaV0tPmFwcGx5KHQsIHN6KTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRp
b24uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb24uaAppbmRleCBjMjkyYWU3Li5hNTI1MDkyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1feCA9PSB0LT5tX3ggJiYgbV95ID09IHQtPm1feTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgYXBwbHkoQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUm
IGJvcmRlckJveFNpemUpIGNvbnN0CisgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybU1h
dHJpeCYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdAogICAg
IHsKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShtX3guY2FsY0Zsb2F0VmFsdWUoYm9yZGVy
Qm94U2l6ZS53aWR0aCgpKSwgbV95LmNhbGNGbG9hdFZhbHVlKGJvcmRlckJveFNpemUuaGVpZ2h0
KCkpKTsKICAgICAgICAgcmV0dXJuIG1feC50eXBlKCkgPT0gUGVyY2VudCB8fCBtX3kudHlwZSgp
ID09IFBlcmNlbnQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWdu
T2JqZWN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCmlu
ZGV4IGM1MmMxNTcuLjY1ODRlMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZvcmVpZ25PYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25P
YmplY3QuY3BwCkBAIC0zOCwxMCArMzgsMTAgQEAgUmVuZGVyRm9yZWlnbk9iamVjdDo6UmVuZGVy
Rm9yZWlnbk9iamVjdChTVkdGb3JlaWduT2JqZWN0RWxlbWVudCogbm9kZSkKIHsKIH0KIAotQWZm
aW5lVHJhbnNmb3JtIFJlbmRlckZvcmVpZ25PYmplY3Q6OnRyYW5zbGF0aW9uRm9yQXR0cmlidXRl
cygpCitUcmFuc2Zvcm1NYXRyaXggUmVuZGVyRm9yZWlnbk9iamVjdDo6dHJhbnNsYXRpb25Gb3JB
dHRyaWJ1dGVzKCkKIHsKICAgICBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCogZm9yZWlnbiA9IHN0
YXRpY19jYXN0PFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Kj4oZWxlbWVudCgpKTsKLSAgICByZXR1
cm4gQWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRlKGZvcmVpZ24tPngoKS52YWx1ZShmb3JlaWdu
KSwgZm9yZWlnbi0+eSgpLnZhbHVlKGZvcmVpZ24pKTsKKyAgICByZXR1cm4gVHJhbnNmb3JtTWF0
cml4KCkudHJhbnNsYXRlKGZvcmVpZ24tPngoKS52YWx1ZShmb3JlaWduKSwgZm9yZWlnbi0+eSgp
LnZhbHVlKGZvcmVpZ24pKTsKIH0KIAogdm9pZCBSZW5kZXJGb3JlaWduT2JqZWN0OjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgaW50IHBhcmVudFgsIGludCBwYXJlbnRZKQpAQCAtNTAsNyAr
NTAsNyBAQCB2b2lkIFJlbmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBpbnQgcGFyZW50WCwgaW50IHBhcmVudFkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHBh
aW50SW5mby5jb250ZXh0LT5zYXZlKCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNvbmNhdENU
TShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUocGFyZW50WCwgcGFyZW50WSkpOworICAgIHBh
aW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0oVHJhbnNmb3JtTWF0cml4KCkudHJhbnNsYXRlKHBh
cmVudFgsIHBhcmVudFkpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKGxvY2Fs
VHJhbnNmb3JtKCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0odHJhbnNsYXRp
b25Gb3JBdHRyaWJ1dGVzKCkpOwogICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGdldENsaXBS
ZWN0KHBhcmVudFgsIHBhcmVudFkpKTsKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBSZW5kZXJGb3Jl
aWduT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHBhcmVudFgsIGludCBw
YXJlbnRZKQogCiB2b2lkIFJlbmRlckZvcmVpZ25PYmplY3Q6OmNvbXB1dGVBYnNvbHV0ZVJlcGFp
bnRSZWN0KEludFJlY3QmIHIsIGJvb2wgZikKIHsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNm
b3JtID0gdHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCkgKiBsb2NhbFRyYW5zZm9ybSgpOworICAg
IFRyYW5zZm9ybU1hdHJpeCB0cmFuc2Zvcm0gPSB0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKSAq
IGxvY2FsVHJhbnNmb3JtKCk7CiAgICAgciA9IHRyYW5zZm9ybS5tYXBSZWN0KHIpOwogCiAgICAg
UmVuZGVyQmxvY2s6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KHIsIGYpOwpAQCAtODUsNyAr
ODUsNyBAQCBib29sIFJlbmRlckZvcmVpZ25PYmplY3Q6OnJlcXVpcmVzTGF5ZXIoKQogCiBib29s
IFJlbmRlckZvcmVpZ25PYmplY3Q6OmNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCkKIHsKLSAgICBB
ZmZpbmVUcmFuc2Zvcm0gb2xkVHJhbnNmb3JtID0gbV9sb2NhbFRyYW5zZm9ybTsKKyAgICBUcmFu
c2Zvcm1NYXRyaXggb2xkVHJhbnNmb3JtID0gbV9sb2NhbFRyYW5zZm9ybTsKICAgICBtX2xvY2Fs
VHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQqPihlbGVtZW50
KCkpLT5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7CiAgICAgcmV0dXJuIChvbGRUcmFuc2Zvcm0g
IT0gbV9sb2NhbFRyYW5zZm9ybSk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBSZW5kZXJG
b3JlaWduT2JqZWN0OjpsYXlvdXQoKQogCiBib29sIFJlbmRlckZvcmVpZ25PYmplY3Q6Om5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFj
dGlvbikKIHsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdG90YWxUcmFuc2Zvcm0gPSBhYnNvbHV0ZVRy
YW5zZm9ybSgpOworICAgIFRyYW5zZm9ybU1hdHJpeCB0b3RhbFRyYW5zZm9ybSA9IGFic29sdXRl
VHJhbnNmb3JtKCk7CiAgICAgdG90YWxUcmFuc2Zvcm0gKj0gdHJhbnNsYXRpb25Gb3JBdHRyaWJ1
dGVzKCk7CiAgICAgZG91YmxlIGxvY2FsWCwgbG9jYWxZOwogICAgIHRvdGFsVHJhbnNmb3JtLmlu
dmVyc2UoKS5tYXAoeCwgeSwgJmxvY2FsWCwgJmxvY2FsWSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGb3JlaWduT2JqZWN0LmgKaW5kZXggYjYyNDY4My4uYTlkNmIzMSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZvcmVpZ25PYmplY3QuaApAQCAtMjQsNyArMjQsNyBAQAogI2RlZmluZSBSZW5k
ZXJGb3JlaWduT2JqZWN0X2gKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZPUkVJR05f
T0JKRUNUKQogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNm
b3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHQmxvY2suaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgaW50IHBhcmVudFgsIGludCBwYXJlbnRZKTsKIAotICAgIHZpcnR1YWwg
QWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRy
YW5zZm9ybTsgfQorICAgIHZpcnR1YWwgVHJhbnNmb3JtTWF0cml4IGxvY2FsVHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYWxj
dWxhdGVMb2NhbFRyYW5zZm9ybSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVBYnNvbHV0
ZVJlcGFpbnRSZWN0KEludFJlY3QmLCBib29sIGZpeGVkKTsKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0
aW9uKTsKIAogIHByaXZhdGU6Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zbGF0aW9uRm9yQXR0
cmlidXRlcygpOworICAgIFRyYW5zZm9ybU1hdHJpeCB0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMo
KTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVHJhbnNmb3JtOworICAgIFRyYW5zZm9y
bU1hdHJpeCBtX2xvY2FsVHJhbnNmb3JtOwogICAgIEludFJlY3QgbV9hYnNvbHV0ZUJvdW5kczsK
IH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBjNzlmZjE3Li5hNDk0MGVmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKCkKICAgICBib29sIGhhZFRyYW5zZm9ybSA9IG1fdHJh
bnNmb3JtOwogICAgIGlmIChoYXNUcmFuc2Zvcm0gIT0gaGFkVHJhbnNmb3JtKSB7CiAgICAgICAg
IGlmIChoYXNUcmFuc2Zvcm0pCi0gICAgICAgICAgICBtX3RyYW5zZm9ybS5zZXQobmV3IEFmZmlu
ZVRyYW5zZm9ybSk7CisgICAgICAgICAgICBtX3RyYW5zZm9ybS5zZXQobmV3IFRyYW5zZm9ybU1h
dHJpeCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fdHJhbnNmb3JtLmNsZWFyKCk7CiAg
ICAgfQpAQCAtNDkwLDIwICs0OTAsMjAgQEAgUmVuZGVyTGF5ZXI6OnRyYW5zcGFyZW50QW5jZXN0
b3IoKQogICAgIHJldHVybiBjdXJyOwogfQogCi1zdGF0aWMgSW50UmVjdCB0cmFuc3BhcmVuY3lD
bGlwQm94KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZW5jbG9zaW5nVHJhbnNmb3JtLCBjb25zdCBS
ZW5kZXJMYXllciogbCwgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllcikKK3N0YXRpYyBJbnRS
ZWN0IHRyYW5zcGFyZW5jeUNsaXBCb3goY29uc3QgVHJhbnNmb3JtTWF0cml4JiBlbmNsb3NpbmdU
cmFuc2Zvcm0sIGNvbnN0IFJlbmRlckxheWVyKiBsLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExh
eWVyKQogewogICAgIC8vIEZJWE1FOiBBbHRob3VnaCB0aGlzIGZ1bmN0aW9uIGNvbXBsZXRlbHkg
aWdub3JlcyBDU1MtaW1wb3NlZCBjbGlwcGluZywgd2UgZGlkIGFscmVhZHkgaW50ZXJzZWN0IHdp
dGggdGhlCiAgICAgLy8gcGFpbnREaXJ0eVJlY3QsIGFuZCB0aGF0IHNob3VsZCBjdXQgZG93biBv
biB0aGUgYW1vdW50IHdlIGhhdmUgdG8gcGFpbnQuICBTdGlsbCBpdAogICAgIC8vIHdvdWxkIGJl
IGJldHRlciB0byByZXNwZWN0IGNsaXBzLgogICAgIAotICAgIEFmZmluZVRyYW5zZm9ybSogdCA9
IGwtPnRyYW5zZm9ybSgpOworICAgIFRyYW5zZm9ybU1hdHJpeCogdCA9IGwtPnRyYW5zZm9ybSgp
OwogICAgIGlmICh0ICYmIHJvb3RMYXllciAhPSBsKSB7CiAgICAgICAgIC8vIFRoZSBiZXN0IHdl
IGNhbiBkbyBoZXJlIGlzIHRvIHVzZSBlbmNsb3NlZCBib3VuZGluZyBib3hlcyB0byBlc3RhYmxp
c2ggYSAiZnV6enkiIGVub3VnaCBjbGlwIHRvIGVuY29tcGFzcwogICAgICAgICAvLyB0aGUgdHJh
bnNmb3JtZWQgbGF5ZXIgYW5kIGFsbCBvZiBpdHMgY2hpbGRyZW4uCiAgICAgICAgIGludCB4ID0g
MDsKICAgICAgICAgaW50IHkgPSAwOwogICAgICAgICBsLT5jb252ZXJ0VG9MYXllckNvb3Jkcyhy
b290TGF5ZXIsIHgsIHkpOwotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAg
ICAgICBUcmFuc2Zvcm1NYXRyaXggdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNs
YXRlKHgsIHkpOwogICAgICAgICB0cmFuc2Zvcm0gPSAqdCAqIHRyYW5zZm9ybTsKICAgICAgICAg
dHJhbnNmb3JtID0gdHJhbnNmb3JtICogZW5jbG9zaW5nVHJhbnNmb3JtOwpAQCAtNTQ5LDcgKzU0
OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBoaWNz
Q29udGV4dCogcCwgY29uc3QgUmVuZGVyTGF5ZXIqCiAgICAgaWYgKGlzVHJhbnNwYXJlbnQoKSkg
ewogICAgICAgICBtX3VzZWRUcmFuc3BhcmVuY3kgPSB0cnVlOwogICAgICAgICBwLT5zYXZlKCk7
Ci0gICAgICAgIHAtPmNsaXAodHJhbnNwYXJlbmN5Q2xpcEJveChBZmZpbmVUcmFuc2Zvcm0oKSwg
dGhpcywgcm9vdExheWVyKSk7CisgICAgICAgIHAtPmNsaXAodHJhbnNwYXJlbmN5Q2xpcEJveChU
cmFuc2Zvcm1NYXRyaXgoKSwgdGhpcywgcm9vdExheWVyKSk7CiAgICAgICAgIHAtPmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIocmVuZGVyZXIoKS0+b3BhY2l0eSgpKTsKICAgICB9CiB9CkBAIC0xNjg5
LDcgKzE2ODksNyBAQCBSZW5kZXJMYXllcjo6cGFpbnRMYXllcihSZW5kZXJMYXllciogcm9vdExh
eWVyLCBHcmFwaGljc0NvbnRleHQqIHAsCiAgICAgICAgIGludCB4ID0gMDsKICAgICAgICAgaW50
IHkgPSAwOwogICAgICAgICBjb252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIsIHgsIHkpOwot
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgICAgICBUcmFuc2Zvcm1NYXRy
aXggdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHgsIHkpOwogICAgICAg
ICB0cmFuc2Zvcm0gPSAqbV90cmFuc2Zvcm0gKiB0cmFuc2Zvcm07CiAgICAgICAgIApAQCAtMTkw
MCw3ICsxOTAwLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIoUmVu
ZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgSGl0VGVzdFJlcXUKICAgICAgICAgaW50IHggPSAw
OwogICAgICAgICBpbnQgeSA9IDA7CiAgICAgICAgIGNvbnZlcnRUb0xheWVyQ29vcmRzKHJvb3RM
YXllciwgeCwgeSk7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgICAg
IFRyYW5zZm9ybU1hdHJpeCB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUo
eCwgeSk7CiAgICAgICAgIHRyYW5zZm9ybSA9ICptX3RyYW5zZm9ybSAqIHRyYW5zZm9ybTsKICAg
ICAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCBmMDYwOGMxLi5iZmFmZDM4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTUxLDcgKzUxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBUcmFuc2Zvcm1NYXRyaXg7CiBj
bGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBSZW5kZXJG
cmFtZVNldDsKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aWNZ
KGludCBzdGF0aWNZKSB7IG1fc3RhdGljWSA9IHN0YXRpY1k7IH0KIAogICAgIGJvb2wgaGFzVHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3QtPmhhc1RyYW5zZm9ybSgpOyB9Ci0gICAg
QWZmaW5lVHJhbnNmb3JtKiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybS5n
ZXQoKTsgfQorICAgIFRyYW5zZm9ybU1hdHJpeCogdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
bV90cmFuc2Zvcm0uZ2V0KCk7IH0KIAogICAgIHZvaWQgZGVzdHJveShSZW5kZXJBcmVuYSopOwog
CkBAIC01MDUsNyArNTA1LDcgQEAgcHJvdGVjdGVkOgogICAgIGludCBtX3N0YXRpY1g7CiAgICAg
aW50IG1fc3RhdGljWTsKICAgICAKLSAgICBPd25QdHI8QWZmaW5lVHJhbnNmb3JtPiBtX3RyYW5z
Zm9ybTsKKyAgICBPd25QdHI8VHJhbnNmb3JtTWF0cml4PiBtX3RyYW5zZm9ybTsKICAgICAKICAg
ICAvLyBNYXkgdWx0aW1hdGVseSBiZSBleHRlbmRlZCB0byBtYW55IHJlcGxpY2FzICh3aXRoIHRo
ZWlyIG93biBwYWludCBvcmRlcikuCiAgICAgUmVuZGVyUmVwbGljYSogbV9yZWZsZWN0aW9uOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggOWU0NGIyYy4uMzVmYzczOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSAiQWZm
aW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSAi
QW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNp
bmNsdWRlICJDYWNoZWRJbWFnZS5oIgpAQCAtMzI1MiwxMiArMzI1MiwxMiBAQCBGbG9hdFJlY3Qg
UmVuZGVyT2JqZWN0OjpyZWxhdGl2ZUJCb3goYm9vbCkgY29uc3QKICAgICByZXR1cm4gRmxvYXRS
ZWN0KCk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBSZW5kZXJPYmplY3Q6OmxvY2FsVHJhbnNmb3Jt
KCkgY29uc3QKK1RyYW5zZm9ybU1hdHJpeCBSZW5kZXJPYmplY3Q6OmxvY2FsVHJhbnNmb3JtKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAsIDEsIHhQb3MoKSwg
eVBvcygpKTsKKyAgICByZXR1cm4gVHJhbnNmb3JtTWF0cml4KDEsIDAsIDAsIDEsIHhQb3MoKSwg
eVBvcygpKTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIFJlbmRlck9iamVjdDo6YWJzb2x1dGVUcmFu
c2Zvcm0oKSBjb25zdAorVHJhbnNmb3JtTWF0cml4IFJlbmRlck9iamVjdDo6YWJzb2x1dGVUcmFu
c2Zvcm0oKSBjb25zdAogewogICAgIGlmIChwYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIGxvY2Fs
VHJhbnNmb3JtKCkgKiBwYXJlbnQoKS0+YWJzb2x1dGVUcmFuc2Zvcm0oKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKaW5kZXggZmU5OTg1OS4uMGU5ZDg1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBB
ZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBUcmFuc2Zvcm1NYXRyaXg7CiBjbGFzcyBBbmltYXRpb25D
b250cm9sbGVyOwogY2xhc3MgQ29sb3I7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTMxMiw4ICszMTIs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZWxhdGl2ZUJCb3goYm9vbCBp
bmNsdWRlU3Ryb2tlID0gdHJ1ZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9y
bSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGFi
c29sdXRlVHJhbnNmb3JtKCkgY29uc3Q7CisgICAgdmlydHVhbCBUcmFuc2Zvcm1NYXRyaXggbG9j
YWxUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFRyYW5zZm9ybU1hdHJpeCBhYnNvbHV0
ZVRyYW5zZm9ybSgpIGNvbnN0OwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJs
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAppbmRleCAwNjdlNGY2Li5iZDA2ODM1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcApAQCAtNTcsNyArNTcsNyBAQCBSZW5kZXJQYXRo
Ojp+UmVuZGVyUGF0aCgpCiB7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBSZW5kZXJQYXRoOjpsb2Nh
bFRyYW5zZm9ybSgpIGNvbnN0CitUcmFuc2Zvcm1NYXRyaXggUmVuZGVyUGF0aDo6bG9jYWxUcmFu
c2Zvcm0oKSBjb25zdAogewogICAgIHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOwogfQpAQCAtMTE1
LDcgKzExNSw3IEBAIGNvbnN0IFBhdGgmIFJlbmRlclBhdGg6OnBhdGgoKSBjb25zdAogCiBib29s
IFJlbmRlclBhdGg6OmNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCkKIHsKLSAgICBBZmZpbmVUcmFu
c2Zvcm0gb2xkVHJhbnNmb3JtID0gbV9sb2NhbFRyYW5zZm9ybTsKKyAgICBUcmFuc2Zvcm1NYXRy
aXggb2xkVHJhbnNmb3JtID0gbV9sb2NhbFRyYW5zZm9ybTsKICAgICBtX2xvY2FsVHJhbnNmb3Jt
ID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihlbGVtZW50KCkp
LT5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7CiAgICAgcmV0dXJuIChtX2xvY2FsVHJhbnNmb3Jt
ICE9IG9sZFRyYW5zZm9ybSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJQYXRoLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmgKaW5kZXggZDM0Y2ExYy4u
NDQxMWIxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5oCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKFNWRykKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRy
YW5zZm9ybU1hdHJpeC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyUGF0aCI7IH0KICAgICAK
ICAgICBib29sIGNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCk7Ci0gICAgdmlydHVhbCBBZmZpbmVU
cmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFRyYW5zZm9ybU1h
dHJpeCBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKICAgICB2aXJ0dWFsIEludFJlY3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7
CkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBGbG9hdFJlY3QgbV9maWxs
QkJveDsKICAgICBtdXRhYmxlIEZsb2F0UmVjdCBtX3N0cm9rZUJib3g7CiAgICAgRmxvYXRSZWN0
IG1fbWFya2VyQm91bmRzOwotICAgIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVHJhbnNmb3JtOwor
ICAgIFRyYW5zZm9ybU1hdHJpeCBtX2xvY2FsVHJhbnNmb3JtOwogICAgIEludFJlY3QgbV9hYnNv
bHV0ZUJvdW5kczsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R0NvbnRhaW5lci5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3Bw
CmluZGV4IGFhNGY0OTYuLjZiM2IwNjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpz
ZXREcmF3c0NvbnRlbnRzKGJvb2wgZHJhd3NDb250ZW50cykKICAgICBtX2RyYXdzQ29udGVudHMg
PSBkcmF3c0NvbnRlbnRzOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHQ29udGFpbmVy
Ojpsb2NhbFRyYW5zZm9ybSgpIGNvbnN0CitUcmFuc2Zvcm1NYXRyaXggUmVuZGVyU1ZHQ29udGFp
bmVyOjpsb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbG9jYWxUcmFuc2Zv
cm07CiB9CkBAIC0zNTgsOSArMzU4LDkgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgcGFyZW50WCwgaW50IHBhcmVudFkpCiAgICAgICAg
IHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgbV9hYnNvbHV0ZUJvdW5kcy54KCksIG1f
YWJzb2x1dGVCb3VuZHMueSgpLCBtX2Fic29sdXRlQm91bmRzLndpZHRoKCksIG1fYWJzb2x1dGVC
b3VuZHMuaGVpZ2h0KCksIHN0eWxlKCkpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZH
Q29udGFpbmVyOjp2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0CitUcmFuc2Zvcm1NYXRyaXggUmVu
ZGVyU1ZHQ29udGFpbmVyOjp2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0CiB7Ci0gICAgIHJldHVy
biBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICAgcmV0dXJuIFRyYW5zZm9ybU1hdHJpeCgpOwogfQog
CiBJbnRSZWN0IFJlbmRlclNWR0NvbnRhaW5lcjo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0
KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5oIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggYTdkYWE4YS4uN2Zj
M2ZmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTg0LDggKzg0
LDggQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCByZWxhdGl2ZUJCb3goYm9vbCBpbmNsdWRlU3Ry
b2tlID0gdHJ1ZSkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFu
c2Zvcm0oKTsKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNv
bnN0OwotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIHZpZXdwb3J0VHJhbnNmb3JtKCkgY29u
c3Q7CisgICAgdmlydHVhbCBUcmFuc2Zvcm1NYXRyaXggbG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFRyYW5zZm9ybU1hdHJpeCB2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0Owog
CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24p
OwogCkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICAKIHByb3RlY3RlZDogICAgCiAg
ICAgSW50UmVjdCBtX2Fic29sdXRlQm91bmRzOwotICAgIEFmZmluZVRyYW5zZm9ybSBtX2xvY2Fs
VHJhbnNmb3JtOworICAgIFRyYW5zZm9ybU1hdHJpeCBtX2xvY2FsVHJhbnNmb3JtOwogfTsKICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
SGlkZGVuQ29udGFpbmVyLmNwcAppbmRleCA1ZWY3NzE5Li43NzYwODk3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAKQEAgLTkxLDE0ICs5MSwx
NCBAQCB2b2lkIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wgdG9wTAogICAgIC8vIFRoaXMgc3VidHJlZSBkb2VzIG5v
dCB0YWtlIHVwIHNwYWNlIG9yIHBhaW50CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdI
aWRkZW5Db250YWluZXI6OmFic29sdXRlVHJhbnNmb3JtKCkgY29uc3QKK1RyYW5zZm9ybU1hdHJp
eCBSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OmFic29sdXRlVHJhbnNmb3JtKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CisgICAgcmV0dXJuIFRyYW5zZm9ybU1hdHJp
eCgpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpsb2Nh
bFRyYW5zZm9ybSgpIGNvbnN0CitUcmFuc2Zvcm1NYXRyaXggUmVuZGVyU1ZHSGlkZGVuQ29udGFp
bmVyOjpsb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEFmZmluZVRyYW5zZm9y
bSgpOworICAgIHJldHVybiBUcmFuc2Zvcm1NYXRyaXgoKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdI
aWRkZW5Db250YWluZXI6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGludCBfeCwgaW50IF95LCBpbnQgX3R4LCBpbnQgX3R5
LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR0hpZGRlbkNvbnRhaW5lci5oCmluZGV4IGFkNjkwYTguLjg5NzRkZDYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCkBAIC01NSw4ICs1NSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHksIGJvb2wgdG9wTGV2ZWwgPSB0
cnVlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mLCBib29sIHRvcExldmVsID0gdHJ1ZSk7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIEFm
ZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFs
IFRyYW5zZm9ybU1hdHJpeCBhYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIFRyYW5zZm9ybU1hdHJpeCBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0OwogCiAgICAgICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHJlbGF0aXZlQkJveChib29sIGluY2x1ZGVTdHJva2UgPSB0cnVlKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRl
c3RBY3Rpb24pOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDUyYWQ5ZjEu
LjdlNTE5MTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTEyNyw3ICsx
MjcsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjphZGp1c3RSZWN0c0ZvckFzcGVjdFJhdGlvKEZs
b2F0UmVjdCYgZGVzdFJlY3QsIEZsb2F0UmVjdCYgcwogCiBib29sIFJlbmRlclNWR0ltYWdlOjpj
YWxjdWxhdGVMb2NhbFRyYW5zZm9ybSgpCiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG9sZFRyYW5z
Zm9ybSA9IG1fbG9jYWxUcmFuc2Zvcm07CisgICAgVHJhbnNmb3JtTWF0cml4IG9sZFRyYW5zZm9y
bSA9IG1fbG9jYWxUcmFuc2Zvcm07CiAgICAgbV9sb2NhbFRyYW5zZm9ybSA9IHN0YXRpY19jYXN0
PFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kj4oZWxlbWVudCgpKS0+YW5pbWF0ZWRMb2Nh
bFRyYW5zZm9ybSgpOwogICAgIHJldHVybiAobV9sb2NhbFRyYW5zZm9ybSAhPSBvbGRUcmFuc2Zv
cm0pOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmgKaW5kZXggOWI3Y2QyMS4uNWMwYTQx
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAKICNp
ZiBFTkFCTEUoU1ZHKQogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAi
VHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVySW1hZ2UuaCIKIApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIFJlbmRlclNWR0ltYWdlKFNWR0ltYWdlRWxlbWVudCopOwogICAgICAgICB2aXJ0dWFsIH5S
ZW5kZXJTVkdJbWFnZSgpOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zv
cm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9Cisg
ICAgICAgIHZpcnR1YWwgVHJhbnNmb3JtTWF0cml4IGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQogICAgICAgICAKICAgICAgICAgdmlydHVhbCBGbG9h
dFJlY3QgcmVsYXRpdmVCQm94KGJvb2wgaW5jbHVkZVN0cm9rZSA9IHRydWUpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIEludFJlY3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7CkBAIC02
Miw3ICs2Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZvaWQgY2FsY3VsYXRlQWJzb2x1dGVCb3VuZHMoKTsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IG1fbG9jYWxUcmFuc2Zvcm07CisgICAgICAgIFRyYW5zZm9ybU1hdHJpeCBtX2xvY2FsVHJhbnNm
b3JtOwogICAgICAgICBGbG9hdFJlY3QgbV9sb2NhbEJvdW5kczsKICAgICAgICAgSW50UmVjdCBt
X2Fic29sdXRlQm91bmRzOwogICAgIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lubGlu
ZVRleHQuY3BwCmluZGV4IDM4NWQxOWQuLjU5Y2NmZWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR0lubGluZVRleHQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgSW50UmVjdCBSZW5kZXJT
VkdJbmxpbmVUZXh0Ojpjb21wdXRlQWJzb2x1dGVSZWN0Rm9yUmFuZ2UoaW50IHN0YXJ0UG9zLCBp
bnQgZW5kUG8KIAogICAgIC8vIFJlbW92ZSBIVE1MIHBhcmVudCB0cmFuc2xhdGlvbiBvZmZzZXRz
IGhlcmUhIFRoZXNlIG5lZWQgdG8gYmUgcmV0cmlldmVkIGZyb20gdGhlIFJlbmRlclNWR1Jvb3Qg
b2JqZWN0LgogICAgIC8vIEJ1dCBkbyB0YWtlIHRoZSBjb250YWluaW5nQmxvY2tzJ3MgY29udGFp
bmVyIHBvc2l0aW9uIGludG8gYWNjb3VudCwgaWUuIFNWRyB0ZXh0IGluIHNjcm9sbGFibGUgPGRp
dj4uCi0gICAgQWZmaW5lVHJhbnNmb3JtIGh0bWxQYXJlbnRDdG0gPSByb290LT5SZW5kZXJDb250
YWluZXI6OmFic29sdXRlVHJhbnNmb3JtKCk7CisgICAgVHJhbnNmb3JtTWF0cml4IGh0bWxQYXJl
bnRDdG0gPSByb290LT5SZW5kZXJDb250YWluZXI6OmFic29sdXRlVHJhbnNmb3JtKCk7CiAKICAg
ICBGbG9hdFJlY3QgZml4ZWRSZWN0KG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocmVjdC54KCkgKyBh
YnNQb3MueCgpIC0geFBvcygpIC0gaHRtbFBhcmVudEN0bS5lKCkpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9GbG9hdChyZWN0LnkoKSArIGFic1Bvcy55KCkgLSB5
UG9zKCkgLSBodG1sUGFyZW50Q3RtLmYoKSksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDgzM2VjMzEuLjBmN2YxMmMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC0xMzAsMjUgKzEzMCwyNSBAQCB2b2lk
IFJlbmRlclNWR1Jvb3Q6OmFwcGx5Q29udGVudFRyYW5zZm9ybXMoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGludCBwYXJlbnRYLCBpbgogICAgIG9yaWdpbi5tb3ZlKHBhZGRpbmdMZWZ0KCksIHBhZGRp
bmdUb3AoKSk7CiAKICAgICBpZiAob3JpZ2luLngoKSB8fCBvcmlnaW4ueSgpKSB7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0oQWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRl
KG9yaWdpbi54KCksIG9yaWdpbi55KCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNv
bmNhdENUTShUcmFuc2Zvcm1NYXRyaXgoKS50cmFuc2xhdGUob3JpZ2luLngoKSwgb3JpZ2luLnko
KSkpOwogICAgICAgICBwYWludEluZm8ucmVjdC5tb3ZlKC1vcmlnaW4ueCgpLCAtb3JpZ2luLnko
KSk7CiAgICAgfQogCiAgICAgLy8gUmVzcGVjdCBzY3JvbGwgb2Zmc2V0IGNhdXNlZCBieSBodG1s
IHBhcmVudHMKLSAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gUmVuZGVyQ29udGFpbmVyOjphYnNv
bHV0ZVRyYW5zZm9ybSgpOworICAgIFRyYW5zZm9ybU1hdHJpeCBjdG0gPSBSZW5kZXJDb250YWlu
ZXI6OmFic29sdXRlVHJhbnNmb3JtKCk7CiAgICAgcGFpbnRJbmZvLnJlY3QubW92ZShzdGF0aWNf
Y2FzdDxpbnQ+KGN0bS5lKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KGN0bS5mKCkpKTsKIAogICAgIFNW
R1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR1NWR0VsZW1lbnQqPihlbGVtZW50KCkp
OwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0oQWZmaW5lVHJhbnNmb3JtKCkuc2Nh
bGUoc3ZnLT5jdXJyZW50U2NhbGUoKSkpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRD
VE0oVHJhbnNmb3JtTWF0cml4KCkuc2NhbGUoc3ZnLT5jdXJyZW50U2NhbGUoKSkpOwogCiAgICAg
aWYgKCF2aWV3cG9ydCgpLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoc3R5bGUoKS0+b3ZlcmZs
b3dYKCkgIT0gT1ZJU0lCTEUpCiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChl
bmNsb3NpbmdJbnRSZWN0KHZpZXdwb3J0KCkpKTsgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2UnbGwg
d2FudCBmbG9hdC1wcmVjaXNpb24gY2xpcHBpbmcKICAgICAgICAgCi0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jb25jYXRDVE0oQWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRlKHZpZXdwb3J0
KCkueCgpLCB2aWV3cG9ydCgpLnkoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y29u
Y2F0Q1RNKFRyYW5zZm9ybU1hdHJpeCgpLnRyYW5zbGF0ZSh2aWV3cG9ydCgpLngoKSwgdmlld3Bv
cnQoKS55KCkpKTsKICAgICB9CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKEFm
ZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShzdmctPmN1cnJlbnRUcmFuc2xhdGUoKS54KCksIHN2
Zy0+Y3VycmVudFRyYW5zbGF0ZSgpLnkoKSkpOworICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25j
YXRDVE0oVHJhbnNmb3JtTWF0cml4KCkudHJhbnNsYXRlKHN2Zy0+Y3VycmVudFRyYW5zbGF0ZSgp
LngoKSwgc3ZnLT5jdXJyZW50VHJhbnNsYXRlKCkueSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZH
Um9vdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCBwYXJlbnRYLCBpbnQgcGFyZW50
WSkKQEAgLTI2NSw5ICsyNjUsOSBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmFic29sdXRlUXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sIHRvcExldmVsKQogICAgICAgICBjdXJyZW50
LT5hYnNvbHV0ZVF1YWRzKHF1YWRzKTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIFJlbmRlclNWR1Jv
b3Q6OmFic29sdXRlVHJhbnNmb3JtKCkgY29uc3QKK1RyYW5zZm9ybU1hdHJpeCBSZW5kZXJTVkdS
b290OjphYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0CiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGN0
bSA9IFJlbmRlckNvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKTsKKyAgICBUcmFuc2Zvcm1N
YXRyaXggY3RtID0gUmVuZGVyQ29udGFpbmVyOjphYnNvbHV0ZVRyYW5zZm9ybSgpOwogICAgIGN0
bS50cmFuc2xhdGUobV94LCBtX3kpOwogICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19j
YXN0PFNWR1NWR0VsZW1lbnQqPihlbGVtZW50KCkpOwogICAgIGN0bS5zY2FsZShzdmctPmN1cnJl
bnRTY2FsZSgpKTsKQEAgLTI5MywxNCArMjkzLDE0IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdSb290
OjpyZWxhdGl2ZUJCb3goYm9vbCBpbmNsdWRlU3Ryb2tlKSBjb25zdAogICAgIHJldHVybiByZWN0
OwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHUm9vdDo6bG9jYWxUcmFuc2Zvcm0oKSBj
b25zdAorVHJhbnNmb3JtTWF0cml4IFJlbmRlclNWR1Jvb3Q6OmxvY2FsVHJhbnNmb3JtKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CisgICAgcmV0dXJuIFRyYW5zZm9y
bU1hdHJpeCgpOwogfQogCiBib29sIFJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGludCBfeCwgaW50
IF95LCBpbnQgX3R4LCBpbnQgX3R5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7Ci0g
ICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IFJlbmRlckNvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zv
cm0oKTsKKyAgICBUcmFuc2Zvcm1NYXRyaXggY3RtID0gUmVuZGVyQ29udGFpbmVyOjphYnNvbHV0
ZVRyYW5zZm9ybSgpOwogCiAgICAgaW50IHN4ID0gKF90eCAtIHN0YXRpY19jYXN0PGludD4oY3Rt
LmUoKSkpOyAvLyBzY3JvbGwgb2Zmc2V0CiAgICAgaW50IHN5ID0gKF90eSAtIHN0YXRpY19jYXN0
PGludD4oY3RtLmYoKSkpOyAvLyBzY3JvbGwgb2Zmc2V0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdSb290LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290
LmgKaW5kZXggOWE3OTU0Zi4uMzVlNGUyNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHUm9vdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuaApA
QCAtMzAsNyArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdTdHlsZWRF
bGVtZW50OwotY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgVHJhbnNmb3JtTWF0cml4Owog
CiBjbGFzcyBSZW5kZXJTVkdSb290IDogcHVibGljIFJlbmRlckNvbnRhaW5lciB7CiBwdWJsaWM6
CkBAIC01MiwxMyArNTIsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1
YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCB0b3BMZXZlbCA9IHRydWUpOwogICAgIHZpcnR1
YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0
eSk7CiAKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSgpIGNv
bnN0OworICAgIHZpcnR1YWwgVHJhbnNmb3JtTWF0cml4IGFic29sdXRlVHJhbnNmb3JtKCkgY29u
c3Q7CiAKICAgICBib29sIGZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAg
ICAgYm9vbCBzdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgRmxv
YXRSZWN0IHJlbGF0aXZlQkJveChib29sIGluY2x1ZGVTdHJva2UgPSB0cnVlKSBjb25zdDsKICAg
ICAKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgVHJhbnNmb3JtTWF0cml4IGxvY2FsVHJhbnNmb3JtKCkgY29uc3Q7CiAgICAK
ICAgICBGbG9hdFJlY3Qgdmlld3BvcnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdU
ZXh0LmNwcAppbmRleCAwZDIzYmNiLi4zY2M3MjZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdU
ZXh0LmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29sIFJlbmRlclNWR1RleHQ6OnJlcXVpcmVzTGF5
ZXIoKQogCiBib29sIFJlbmRlclNWR1RleHQ6OmNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCkKIHsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gb2xkVHJhbnNmb3JtID0gbV9sb2NhbFRyYW5zZm9ybTsKKyAg
ICBUcmFuc2Zvcm1NYXRyaXggb2xkVHJhbnNmb3JtID0gbV9sb2NhbFRyYW5zZm9ybTsKICAgICBt
X2xvY2FsVHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8U1ZHVGV4dEVsZW1lbnQqPihlbGVtZW50KCkp
LT5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7CiAgICAgcmV0dXJuIChvbGRUcmFuc2Zvcm0gIT0g
bV9sb2NhbFRyYW5zZm9ybSk7CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgYm9vbCBSZW5kZXJTVkdU
ZXh0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3VsdCYgcmUKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJsZSkg
ewogICAgICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAmJiAoc3R5bGUoKS0+c3ZnU3R5
bGUoKS0+aGFzU3Ryb2tlKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVTdHJva2UpKQogICAgICAgICAg
ICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHN0eWxlKCktPnN2Z1N0eWxlKCktPmhhc0Zp
bGwoKSB8fCAhaGl0UnVsZXMucmVxdWlyZUZpbGwpKSkgewotICAgICAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIHRvdGFsVHJhbnNmb3JtID0gYWJzb2x1dGVUcmFuc2Zvcm0oKTsKKyAgICAgICAgICAg
IFRyYW5zZm9ybU1hdHJpeCB0b3RhbFRyYW5zZm9ybSA9IGFic29sdXRlVHJhbnNmb3JtKCk7CiAg
ICAgICAgICAgICBkb3VibGUgbG9jYWxYLCBsb2NhbFk7CiAgICAgICAgICAgICB0b3RhbFRyYW5z
Zm9ybS5pbnZlcnNlKCkubWFwKF94LCBfeSwgJmxvY2FsWCwgJmxvY2FsWSk7CiAgICAgICAgICAg
ICBGbG9hdFBvaW50IGhpdFBvaW50KF94LCBfeSk7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBS
ZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCwg
aW50LCBib29sKQogCiAgICAgRmxvYXRQb2ludCBhYnNQb3MgPSBsb2NhbFRvQWJzb2x1dGUoKTsK
IAotICAgIEFmZmluZVRyYW5zZm9ybSBodG1sUGFyZW50Q3RtID0gcm9vdC0+UmVuZGVyQ29udGFp
bmVyOjphYnNvbHV0ZVRyYW5zZm9ybSgpOworICAgIFRyYW5zZm9ybU1hdHJpeCBodG1sUGFyZW50
Q3RtID0gcm9vdC0+UmVuZGVyQ29udGFpbmVyOjphYnNvbHV0ZVRyYW5zZm9ybSgpOwogIAogICAg
IC8vIERvbid0IHVzZSByZWxhdGl2ZUJCb3ggaGVyZSwgYXMgaXQncyB1bml0ZXMgdGhlIHNlbGVj
dGlvbiByZWN0cy4gTWFrZXMgaXQgaGFyZAogICAgIC8vIHRvIHNwb3QgZXJyb3JzLCBpZiB0aGVy
ZSBhcmUgYW55IHVzaW5nIFdlYkluc3BlY3Rvci4gSW5kaXZpZHVhbGx5IGZlZWQgdGhlbSBpbnRv
ICdyZWN0cycuCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCB0b3BMZXZlbCkKIAogICAgIEZs
b2F0UG9pbnQgYWJzUG9zID0gbG9jYWxUb0Fic29sdXRlKCk7CiAKLSAgICBBZmZpbmVUcmFuc2Zv
cm0gaHRtbFBhcmVudEN0bSA9IHJvb3QtPlJlbmRlckNvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zv
cm0oKTsKKyAgICBUcmFuc2Zvcm1NYXRyaXggaHRtbFBhcmVudEN0bSA9IHJvb3QtPlJlbmRlckNv
bnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKTsKICAKICAgICAvLyBEb24ndCB1c2UgcmVsYXRp
dmVCQm94IGhlcmUsIGFzIGl0J3MgdW5pdGVzIHRoZSBzZWxlY3Rpb24gcmVjdHMuIE1ha2VzIGl0
IGhhcmQKICAgICAvLyB0byBzcG90IGVycm9ycywgaWYgdGhlcmUgYXJlIGFueSB1c2luZyBXZWJJ
bnNwZWN0b3IuIEluZGl2aWR1YWxseSBmZWVkIHRoZW0gaW50byAncmVjdHMnLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHVGV4dC5oCmluZGV4IDczMDY0ZmUuLjI1OGZmNmMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdUZXh0LmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2lmIEVOQUJMRShTVkcpCiAKLSNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1NYXRyaXguaCIKICNp
bmNsdWRlICJSZW5kZXJTVkdCbG9jay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdUZXh0KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKTsK
LSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIFRyYW5zZm9ybU1hdHJpeCBsb2Nh
bFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KICAgICAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHR4LCBpbnQgdHkpOwogICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uKTsKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW5saW5lQm94KiBjcmVhdGVJbmxpbmVC
b3goYm9vbCBtYWtlUGxhY2VIb2xkZXJCb3gsIGJvb2wgaXNSb290TGluZUJveCwgYm9vbCBpc09u
bHlSdW4gPSBmYWxzZSk7CiAKIHByaXZhdGU6Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG1fbG9jYWxU
cmFuc2Zvcm07CisgICAgVHJhbnNmb3JtTWF0cml4IG1fbG9jYWxUcmFuc2Zvcm07CiAgICAgSW50
UmVjdCBtX2Fic29sdXRlQm91bmRzOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcAppbmRleCA5OGVhYWIwLi40NWJi
OWEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyLmNwcApAQCAtMzcsNyArMzcsNyBAQCBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR1N0eWxlZFRyYW5z
ZgogCiBib29sIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OmNhbGN1bGF0ZUxvY2Fs
VHJhbnNmb3JtKCkKIHsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gb2xkVHJhbnNmb3JtID0gbV9sb2Nh
bFRyYW5zZm9ybTsKKyAgICBUcmFuc2Zvcm1NYXRyaXggb2xkVHJhbnNmb3JtID0gbV9sb2NhbFRy
YW5zZm9ybTsKICAgICBtX2xvY2FsVHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQqPihlbGVtZW50KCkpLT5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7
CiAgICAgcmV0dXJuIChtX2xvY2FsVHJhbnNmb3JtICE9IG9sZFRyYW5zZm9ybSk7CiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAKaW5kZXgg
OTFjN2JiYS4uMTAwNjMxOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
Vmlld3BvcnRDb250YWluZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyOjphcHBseUNvbnRlbnRUcmFuc2Zvcm1zKFBhaW50SW5mbyYgcGFpbnRJbmZv
KQogICAgICAgICBpZiAoc3R5bGUoKS0+b3ZlcmZsb3dYKCkgIT0gT1ZJU0lCTEUpCiAgICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChlbmNsb3NpbmdJbnRSZWN0KHZpZXdwb3J0KCkp
KTsgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2UnbGwgd2FudCBmbG9hdC1wcmVjaXNpb24gY2xpcHBp
bmcKICAgICAgICAgCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0oQWZmaW5l
VHJhbnNmb3JtKCkudHJhbnNsYXRlKHZpZXdwb3J0KCkueCgpLCB2aWV3cG9ydCgpLnkoKSkpOwor
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKFRyYW5zZm9ybU1hdHJpeCgpLnRy
YW5zbGF0ZSh2aWV3cG9ydCgpLngoKSwgdmlld3BvcnQoKS55KCkpKTsKICAgICB9CiAKICAgICBS
ZW5kZXJTVkdDb250YWluZXI6OmFwcGx5Q29udGVudFRyYW5zZm9ybXMocGFpbnRJbmZvKTsKQEAg
LTEzMyw3ICsxMzMsNyBAQCB2b2lkIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpjYWxjVmll
d3BvcnQoKQogICAgIH0KIH0KIAotQWZmaW5lVHJhbnNmb3JtIFJlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyOjp2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0CitUcmFuc2Zvcm1NYXRyaXggUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXI6OnZpZXdwb3J0VHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICBp
ZiAoZWxlbWVudCgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpKSB7CiAgICAgICAgIFNW
R1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR1NWR0VsZW1lbnQqPihlbGVtZW50KCkp
OwpAQCAtMTQzLDEyICsxNDMsMTIgQEAgQWZmaW5lVHJhbnNmb3JtIFJlbmRlclNWR1ZpZXdwb3J0
Q29udGFpbmVyOjp2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBtYXJr
ZXItPnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0odmlld3BvcnQoKS53aWR0aCgpLCB2aWV3cG9ydCgp
LmhlaWdodCgpKTsKICAgICB9CiAgCi0gICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAg
ICAgcmV0dXJuIFRyYW5zZm9ybU1hdHJpeCgpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXI6OmFic29sdXRlVHJhbnNmb3JtKCkgY29uc3QKK1RyYW5zZm9y
bU1hdHJpeCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKSBj
b25zdAogewotICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBSZW5kZXJPYmplY3Q6OmFic29sdXRl
VHJhbnNmb3JtKCk7CisgICAgVHJhbnNmb3JtTWF0cml4IGN0bSA9IFJlbmRlck9iamVjdDo6YWJz
b2x1dGVUcmFuc2Zvcm0oKTsKICAgICBjdG0udHJhbnNsYXRlKHZpZXdwb3J0KCkueCgpLCB2aWV3
cG9ydCgpLnkoKSk7CiAgICAgcmV0dXJuIHZpZXdwb3J0VHJhbnNmb3JtKCkgKiBjdG07CiB9CkBA
IC0xNjEsNyArMTYxLDcgQEAgYm9vbCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6bm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFQKICAgICAgICAgLy8gQ2hl
Y2sgaWYgd2UgbmVlZCB0byBkbyBhbnl0aGluZyBhdCBhbGwuCiAgICAgICAgIEludFJlY3Qgb3Zl
cmZsb3dCb3ggPSBvdmVyZmxvd1JlY3QoZmFsc2UpOwogICAgICAgICBvdmVyZmxvd0JveC5tb3Zl
KF90eCwgX3R5KTsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IFJlbmRlck9iamVjdDo6
YWJzb2x1dGVUcmFuc2Zvcm0oKTsKKyAgICAgICAgVHJhbnNmb3JtTWF0cml4IGN0bSA9IFJlbmRl
ck9iamVjdDo6YWJzb2x1dGVUcmFuc2Zvcm0oKTsKICAgICAgICAgY3RtLnRyYW5zbGF0ZSh2aWV3
cG9ydCgpLngoKSwgdmlld3BvcnQoKS55KCkpOwogICAgICAgICBkb3VibGUgbG9jYWxYLCBsb2Nh
bFk7CiAgICAgICAgIGN0bS5pbnZlcnNlKCkubWFwKF94IC0gX3R4LCBfeSAtIF90eSwgJmxvY2Fs
WCwgJmxvY2FsWSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lci5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXIuaAppbmRleCAyM2E4ODVmLi45YTIzNTRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJ
bmZvJiwgaW50IHBhcmVudFgsIGludCBwYXJlbnRZKTsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJh
bnNmb3JtIGFic29sdXRlVHJhbnNmb3JtKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBZmZpbmVUcmFu
c2Zvcm0gdmlld3BvcnRUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFRyYW5zZm9ybU1h
dHJpeCBhYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0OworICAgIHZpcnR1YWwgVHJhbnNmb3JtTWF0
cml4IHZpZXdwb3J0VHJhbnNmb3JtKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgaW50IHgsIGludCB5
LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1NWR0NoYXJhY3RlckxheW91dEluZm8uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
U1ZHQ2hhcmFjdGVyTGF5b3V0SW5mby5jcHAKaW5kZXggMjg3YWVhYy4uZmE4MGU2NiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHQ2hhcmFjdGVyTGF5b3V0SW5mby5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvU1ZHQ2hhcmFjdGVyTGF5b3V0SW5mby5jcHAKQEAgLTUxMiw5ICs1
MTIsOSBAQCBib29sIFNWR0NoYXI6OmlzSGlkZGVuKCkgY29uc3QKICAgICByZXR1cm4gcGF0aERh
dGEgJiYgcGF0aERhdGEtPmhpZGRlbjsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIFNWR0NoYXI6OmNo
YXJhY3RlclRyYW5zZm9ybSgpIGNvbnN0CitUcmFuc2Zvcm1NYXRyaXggU1ZHQ2hhcjo6Y2hhcmFj
dGVyVHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOworICAgIFRy
YW5zZm9ybU1hdHJpeCBjdG07CiAKICAgICAvLyBSb3RhdGUgY2hhcmFjdGVyIGFyb3VuZCBhbmds
ZSwgYW5kIHBvc3NpYmx5IHNjYWxlLgogICAgIGN0bS50cmFuc2xhdGUoeCwgeSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9TVkdDaGFyYWN0ZXJMYXlvdXRJbmZvLmggYi9XZWJDb3Jl
L3JlbmRlcmluZy9TVkdDaGFyYWN0ZXJMYXlvdXRJbmZvLmgKaW5kZXggZjNjNTIwOS4uYTUyNWQ3
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHQ2hhcmFjdGVyTGF5b3V0SW5mby5o
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1NWR0NoYXJhY3RlckxheW91dEluZm8uaApAQCAtMjks
NyArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3Jt
TWF0cml4LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlICJTVkdSZW5k
ZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNWR1RleHRDb250ZW50RWxlbWVudC5oIgpAQCAtMjM1LDcg
KzIzNSw3IEBAIHN0cnVjdCBTVkdDaGFyIHsKIAogICAgIC8vIEhlbHBlciBtZXRob2RzCiAgICAg
Ym9vbCBpc0hpZGRlbigpIGNvbnN0OwotICAgIEFmZmluZVRyYW5zZm9ybSBjaGFyYWN0ZXJUcmFu
c2Zvcm0oKSBjb25zdDsKKyAgICBUcmFuc2Zvcm1NYXRyaXggY2hhcmFjdGVyVHJhbnNmb3JtKCkg
Y29uc3Q7CiB9OwogCiBzdHJ1Y3QgU1ZHSW5saW5lQm94Q2hhcmFjdGVyUmFuZ2UgewpAQCAtMjc2
LDcgKzI3Niw3IEBAIHN0cnVjdCBTVkdUZXh0Q2h1bmsgewogICAgIC8vIHRleHRMZW5ndGggJiBs
ZW5ndGhBZGp1c3Qgc3VwcG9ydAogICAgIGZsb2F0IHRleHRMZW5ndGg7CiAgICAgRUxlbmd0aEFk
anVzdCBsZW5ndGhBZGp1c3Q7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKKyAgICBUcmFuc2Zv
cm1NYXRyaXggY3RtOwogCiAgICAgLy8gc3RhdHVzIGZsYWdzCiAgICAgYm9vbCBpc1ZlcnRpY2Fs
VGV4dCA6IDE7CkBAIC0yOTIsNyArMjkyLDcgQEAgc3RydWN0IFNWR1RleHRDaHVuayB7CiBzdHJ1
Y3QgU1ZHVGV4dENodW5rV2Fsa2VyQmFzZSB7CiAgICAgdmlydHVhbCB+U1ZHVGV4dENodW5rV2Fs
a2VyQmFzZSgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIG9wZXJhdG9yKCkoU1ZHSW5saW5lVGV4
dEJveCogdGV4dEJveCwgaW50IHN0YXJ0T2Zmc2V0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGNo
dW5rQ3RtLAorICAgIHZpcnR1YWwgdm9pZCBvcGVyYXRvcigpKFNWR0lubGluZVRleHRCb3gqIHRl
eHRCb3gsIGludCBzdGFydE9mZnNldCwgY29uc3QgVHJhbnNmb3JtTWF0cml4JiBjaHVua0N0bSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U1ZHQ2hhcj46Oml0ZXJh
dG9yJiBzdGFydCwgY29uc3QgVmVjdG9yPFNWR0NoYXI+OjppdGVyYXRvciYgZW5kKSA9IDA7CiAK
ICAgICAvLyBGb2xsb3dpbmdzIG1ldGhvZHMgYXJlIG9ubHkgdXNlZCBmb3IgcGFpbnRpbmcgdGV4
dCBjaHVua3MKQEAgLTMwOCw3ICszMDgsNyBAQCBzdHJ1Y3QgU1ZHVGV4dENodW5rV2Fsa2VyIDog
cHVibGljIFNWR1RleHRDaHVua1dhbGtlckJhc2UgewogcHVibGljOgogICAgIHR5cGVkZWYgdm9p
ZCAoQ2FsbGJhY2tDbGFzczo6KlNWR1RleHRDaHVua1dhbGtlckNhbGxiYWNrKShTVkdJbmxpbmVU
ZXh0Qm94KiB0ZXh0Qm94LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRPZmZzZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgY2h1bmtDdG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybU1hdHJpeCYgY2h1bmtD
dG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFZlY3RvcjxTVkdDaGFyPjo6aXRlcmF0b3ImIHN0YXJ0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWZWN0b3I8U1ZHQ2hhcj46Oml0ZXJhdG9yJiBlbmQpOwogCkBAIC0zMzYsNyArMzM2LDcg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlQod2Fsa2VyKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgb3BlcmF0b3IoKShTVkdJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LCBpbnQgc3RhcnRPZmZz
ZXQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY2h1bmtDdG0sCisgICAgdmlydHVhbCB2b2lkIG9w
ZXJhdG9yKCkoU1ZHSW5saW5lVGV4dEJveCogdGV4dEJveCwgaW50IHN0YXJ0T2Zmc2V0LCBjb25z
dCBUcmFuc2Zvcm1NYXRyaXgmIGNodW5rQ3RtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFZlY3RvcjxTVkdDaGFyPjo6aXRlcmF0b3ImIHN0YXJ0LCBjb25zdCBWZWN0b3I8U1ZH
Q2hhcj46Oml0ZXJhdG9yJiBlbmQpCiAgICAgewogICAgICAgICAoKm1fb2JqZWN0LiptX3dhbGtl
ckNhbGxiYWNrKSh0ZXh0Qm94LCBzdGFydE9mZnNldCwgY2h1bmtDdG0sIHN0YXJ0LCBlbmQpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCBjZWI3YjBlLi45NDE0MTky
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMTEzLDcgKzExMyw3
IEBAIEZsb2F0UmVjdCBTVkdJbmxpbmVUZXh0Qm94OjpjYWxjdWxhdGVHbHlwaEJvdW5kYXJpZXMo
UmVuZGVyU3R5bGUqIHN0eWxlLCBpbnQgb2ZmCiAgICAgRmxvYXRSZWN0IGdseXBoUmVjdCh4MSwg
eTEsIHgyIC0geDEsIHkyIC0geTEpOwogCiAgICAgLy8gVGFrZSBwZXItY2hhcmFjdGVyIHRyYW5z
Zm9ybWF0aW9ucyBpbnRvIGFjY291bnQKLSAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gc3ZnQ2hh
ci5jaGFyYWN0ZXJUcmFuc2Zvcm0oKTsKKyAgICBUcmFuc2Zvcm1NYXRyaXggY3RtID0gc3ZnQ2hh
ci5jaGFyYWN0ZXJUcmFuc2Zvcm0oKTsKICAgICBpZiAoIWN0bS5pc0lkZW50aXR5KCkpCiAgICAg
ICAgIGdseXBoUmVjdCA9IGN0bS5tYXBSZWN0KGdseXBoUmVjdCk7CiAKQEAgLTEzMSw3ICsxMzEs
NyBAQCBzdHJ1Y3QgU1ZHSW5saW5lVGV4dEJveENsb3Nlc3RDaGFyYWN0ZXJUb1Bvc2l0aW9uV2Fs
a2VyIHsKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBjaHVua1BvcnRpb25DYWxsYmFjayhTVkdJ
bmxpbmVUZXh0Qm94KiB0ZXh0Qm94LCBpbnQgc3RhcnRPZmZzZXQsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgY2h1bmtDdG0sCisgICAgdm9pZCBjaHVua1BvcnRpb25DYWxsYmFjayhTVkdJbmxpbmVU
ZXh0Qm94KiB0ZXh0Qm94LCBpbnQgc3RhcnRPZmZzZXQsIGNvbnN0IFRyYW5zZm9ybU1hdHJpeCYg
Y2h1bmtDdG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U1ZH
Q2hhcj46Oml0ZXJhdG9yJiBzdGFydCwgY29uc3QgVmVjdG9yPFNWR0NoYXI+OjppdGVyYXRvciYg
ZW5kKQogICAgIHsKICAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gdGV4dEJveC0+dGV4dE9i
amVjdCgpLT5zdHlsZSgpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIHN0cnVjdCBTVkdJbmxpbmVUZXh0
Qm94U2VsZWN0aW9uUmVjdFdhbGtlciB7CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgY2h1bmtQ
b3J0aW9uQ2FsbGJhY2soU1ZHSW5saW5lVGV4dEJveCogdGV4dEJveCwgaW50IHN0YXJ0T2Zmc2V0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGNodW5rQ3RtLAorICAgIHZvaWQgY2h1bmtQb3J0aW9u
Q2FsbGJhY2soU1ZHSW5saW5lVGV4dEJveCogdGV4dEJveCwgaW50IHN0YXJ0T2Zmc2V0LCBjb25z
dCBUcmFuc2Zvcm1NYXRyaXgmIGNodW5rQ3RtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVmVjdG9yPFNWR0NoYXI+OjppdGVyYXRvciYgc3RhcnQsIGNvbnN0IFZlY3RvcjxT
VkdDaGFyPjo6aXRlcmF0b3ImIGVuZCkKICAgICB7CiAgICAgICAgIFJlbmRlclN0eWxlKiBzdHls
ZSA9IHRleHRCb3gtPnRleHRPYmplY3QoKS0+c3R5bGUoKTsKQEAgLTM1Miw3ICszNTIsNyBAQCB2
b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50Q2hhcmFjdGVycyhSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYgcGFpbnRJbmZvLCBpbnQgdAogICAgIGlmICgqZm9udCAhPSBwYWludEluZm8uY29udGV4
dC0+Zm9udCgpKQogICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0Rm9udCgqZm9udCk7CiAK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gc3ZnQ2hhci5jaGFyYWN0ZXJUcmFuc2Zvcm0oKTsK
KyAgICBUcmFuc2Zvcm1NYXRyaXggY3RtID0gc3ZnQ2hhci5jaGFyYWN0ZXJUcmFuc2Zvcm0oKTsK
ICAgICBpZiAoIWN0bS5pc0lkZW50aXR5KCkpCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5j
b25jYXRDVE0oY3RtKTsKIApAQCAtNTIwLDcgKzUyMCw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJv
eDo6cGFpbnREZWNvcmF0aW9uKEVUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBHcmFwaGljc0Nv
bnRlCiAgICAgY29udGV4dC0+c2F2ZSgpOwogICAgIGNvbnRleHQtPmJlZ2luUGF0aCgpOwogCi0g
ICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IHN2Z0NoYXIuY2hhcmFjdGVyVHJhbnNmb3JtKCk7Cisg
ICAgVHJhbnNmb3JtTWF0cml4IGN0bSA9IHN2Z0NoYXIuY2hhcmFjdGVyVHJhbnNmb3JtKCk7CiAg
ICAgaWYgKCFjdG0uaXNJZGVudGl0eSgpKQogICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0oY3Rt
KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCBmMzIyM2YxLi5l
OThhYWIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtMjUsNyAr
MjUsNyBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgog
Ci0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdDb250YWluZXIuaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggZDNlMDI5Yy4uYTkzNTE0YyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGbG9hdFNpemUmIHMpCiAgICAg
cmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFRyYW5zZm9ybU1hdHJpeCYgdHJhbnNmb3JtKQogewogICAg
IGlmICh0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKQogICAgICAgICB0cyA8PCAiaWRlbnRpdHkiOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oCmluZGV4IGUyM2I4MmMuLjllNTRi
OGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclRyZWVBc1RleHQuaAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0LmgKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQWZmaW5lVHJhbnNmb3Jt
OworICAgIGNsYXNzIFRyYW5zZm9ybU1hdHJpeDsKICAgICBjbGFzcyBDb2xvcjsKICAgICBjbGFz
cyBGbG9hdFBvaW50OwogICAgIGNsYXNzIEZsb2F0UmVjdDsKQEAgLTU2LDcgKzU2LDcgQEAgdm9p
ZCB3cml0ZShUZXh0U3RyZWFtJiwgY29uc3QgUmVuZGVyU1ZHVGV4dCYsIGludCBpZGVudCA9IDAp
Owogdm9pZCB3cml0ZVJlbmRlclJlc291cmNlcyhUZXh0U3RyZWFtJiwgTm9kZSogcGFyZW50KTsK
IAogLy8gaGVscGVyIG9wZXJhdG9ycyBkZWZpbmVkIHVzZWQgaW4gdmFyaW91cyBjbGFzc2VzIHRv
IGR1bXAgdGhlIHJlbmRlciB0cmVlLgotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mLCBjb25zdCBUcmFuc2Zvcm1NYXRyaXgmKTsKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IEludFJlY3QmKTsKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7CiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBjb25zdCBJbnRQb2ludCYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvU1ZH
Um9vdElubGluZUJveC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmNw
cAppbmRleCBkZWM4ODRmLi44ZDg5NDY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9T
VkdSb290SW5saW5lQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5l
Qm94LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0cnVjdCBTVkdSb290SW5saW5lQm94UGFpbnRX
YWxrZXIgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdm9pZCBjaHVua1Bv
cnRpb25DYWxsYmFjayhTVkdJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LCBpbnQgc3RhcnRPZmZzZXQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY2h1bmtDdG0sCisgICAgdm9pZCBjaHVua1BvcnRpb25D
YWxsYmFjayhTVkdJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LCBpbnQgc3RhcnRPZmZzZXQsIGNvbnN0
IFRyYW5zZm9ybU1hdHJpeCYgY2h1bmtDdG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBWZWN0b3I8U1ZHQ2hhcj46Oml0ZXJhdG9yJiBzdGFydCwgY29uc3QgVmVjdG9yPFNW
R0NoYXI+OjppdGVyYXRvciYgZW5kKQogICAgIHsKICAgICAgICAgUmVuZGVyVGV4dCogdGV4dCA9
IHRleHRCb3gtPnRleHRPYmplY3QoKTsKQEAgLTg0Miw3ICs4NDIsNyBAQCBzdGF0aWMgdm9pZCBh
cHBseVRleHRMZW5ndGhDb3JyZWN0aW9uVG9UZXh0Q2h1bmsoU1ZHVGV4dENodW5rJiBjaHVuaykK
ICAgICAgICAgU1ZHQ2hhciYgZmlyc3RDaGFyID0gKihjaHVuay5zdGFydCk7CiAKICAgICAgICAg
Ly8gQXNzdXJlIHdlIGFwcGx5IHRoZSBjaHVuayBzY2FsaW5nIGluIHRoZSByaWdodCBvcmlnaW4K
LSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG5ld0NodW5rQ3RtOworICAgICAgICBUcmFuc2Zvcm1N
YXRyaXggbmV3Q2h1bmtDdG07CiAgICAgICAgIG5ld0NodW5rQ3RtLnRyYW5zbGF0ZShmaXJzdENo
YXIueCwgZmlyc3RDaGFyLnkpOwogICAgICAgICBuZXdDaHVua0N0bSA9IGNodW5rLmN0bSAqIG5l
d0NodW5rQ3RtOwogICAgICAgICBuZXdDaHVua0N0bS50cmFuc2xhdGUoLWZpcnN0Q2hhci54LCAt
Zmlyc3RDaGFyLnkpOwpAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgU1ZHUm9vdElubGluZUJveDo6
YnVpbGRMYXlvdXRJbmZvcm1hdGlvbihJbmxpbmVGbG93Qm94KiBzdGFydCwgU1ZHQ2hhcmFjdGVy
CiAgICAgICAgICAgICAgICAgVmVjdG9yPFNWR1RleHRDaHVuaz46Oml0ZXJhdG9yIGl0ID0gdGVt
cENodW5rcy5iZWdpbigpOwogICAgICAgICAgICAgICAgIFZlY3RvcjxTVkdUZXh0Q2h1bms+Ojpp
dGVyYXRvciBlbmQgPSB0ZW1wQ2h1bmtzLmVuZCgpOwogCi0gICAgICAgICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIGN0bTsKKyAgICAgICAgICAgICAgICBUcmFuc2Zvcm1NYXRyaXggY3RtOwogICAg
ICAgICAgICAgICAgIGZsb2F0IGNvbXB1dGVkTGVuZ3RoID0gMC4wZjsKICAKICAgICAgICAgICAg
ICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKaW5kZXggY2NlZTM5Mi4uZmMxMDI5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNjM2LDcgKzYzNiw3IEBAIHZvaWQgUmVuZGVyU3R5bGU6
OnNldENvbnRlbnQoQ291bnRlckNvbnRlbnQqIGMsIGJvb2wgYWRkKQogICAgIG5ld0NvbnRlbnRE
YXRhLT5tX3R5cGUgPSBDT05URU5UX0NPVU5URVI7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OmFw
cGx5VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXplJiBi
b3JkZXJCb3hTaXplLCBib29sIGluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4pIGNvbnN0Cit2b2lkIFJl
bmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1NYXRyaXgmIHRyYW5zZm9ybSwgY29u
c3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSwgYm9vbCBpbmNsdWRlVHJhbnNmb3JtT3JpZ2luKSBj
b25zdAogewogICAgIC8vIHRyYW5zZm9ybS1vcmlnaW4gYnJhY2tldHMgdGhlIHRyYW5zZm9ybSB3
aXRoIHRyYW5zbGF0ZSBvcGVyYXRpb25zLgogICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3
aGVyZSB0aGUgb25seSB0cmFuc2Zvcm0gaXMgYSB0cmFuc2xhdGlvbiwgc2luY2UgdGhlIHRyYW5z
Zm9ybS1vcmlnaW4gaXMgaXJyZWxldmFudApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKaW5kZXggMmY0Y2JjZS4uZTU2MjU3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCkBAIC0yNSw3ICsyNSw3IEBACiAjaWZuZGVmIFJlbmRlclN0eWxlX2gKICNkZWZpbmUg
UmVuZGVyU3R5bGVfaAogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAi
VHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiQW5pbWF0aW9uTGlzdC5oIgogI2luY2x1ZGUg
IkJvcmRlckRhdGEuaCIKICNpbmNsdWRlICJCb3JkZXJWYWx1ZS5oIgpAQCAtNjI1LDcgKzYyNSw3
IEBAIHB1YmxpYzoKICAgICBMZW5ndGggdHJhbnNmb3JtT3JpZ2luWCgpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV94OyB9CiAgICAgTGVuZ3RoIHRy
YW5zZm9ybU9yaWdpblkoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90
cmFuc2Zvcm0tPm1feTsgfQogICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
IXJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVyYXRpb25zLm9wZXJhdGlv
bnMoKS5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUsIGJvb2wgaW5jbHVkZVRyYW5zZm9ybU9y
aWdpbiA9IHRydWUpIGNvbnN0OworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtTWF0
cml4JiwgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSwgYm9vbCBpbmNsdWRlVHJhbnNmb3Jt
T3JpZ2luID0gdHJ1ZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNNYXNrKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5oYXNJbWFnZSgpIHx8IHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX21hc2tCb3hJbWFnZS5oYXNJbWFnZSgpOyB9CiAgICAgLy8gRW5kIENTUzMgR2V0
dGVycwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9HcmFkaWVudEF0dHJpYnV0ZXMuaCBiL1dl
YkNvcmUvc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oCmluZGV4IGE1ZjBmMzcuLmQ2MDZkYWMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oCisrKyBiL1dlYkNvcmUv
c3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oCkBAIC0zOSwxMiArMzksMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKIAogICAgICAgICBHcmFkaWVudFNwcmVhZE1ldGhvZCBzcHJlYWRNZXRob2QoKSBjb25z
dCB7IHJldHVybiBtX3NwcmVhZE1ldGhvZDsgfQogICAgICAgICBib29sIGJvdW5kaW5nQm94TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRpbmdCb3hNb2RlOyB9Ci0gICAgICAgIEFmZmluZVRy
YW5zZm9ybSBncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhZGllbnRUcmFu
c2Zvcm07IH0KKyAgICAgICAgVHJhbnNmb3JtTWF0cml4IGdyYWRpZW50VHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybTsgfQogICAgICAgICBjb25zdCBWZWN0b3I8
U1ZHR3JhZGllbnRTdG9wPiYgc3RvcHMoKSBjb25zdCB7IHJldHVybiBtX3N0b3BzOyB9CiAKICAg
ICAgICAgdm9pZCBzZXRTcHJlYWRNZXRob2QoR3JhZGllbnRTcHJlYWRNZXRob2QgdmFsdWUpIHsg
bV9zcHJlYWRNZXRob2QgPSB2YWx1ZTsgbV9zcHJlYWRNZXRob2RTZXQgPSB0cnVlOyB9CiAgICAg
ICAgIHZvaWQgc2V0Qm91bmRpbmdCb3hNb2RlKGJvb2wgdmFsdWUpIHsgbV9ib3VuZGluZ0JveE1v
ZGUgPSB2YWx1ZTsgbV9ib3VuZGluZ0JveE1vZGVTZXQgPSB0cnVlOyB9Ci0gICAgICAgIHZvaWQg
c2V0R3JhZGllbnRUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB2YWx1ZSkgeyBtX2dy
YWRpZW50VHJhbnNmb3JtID0gdmFsdWU7IG1fZ3JhZGllbnRUcmFuc2Zvcm1TZXQgPSB0cnVlOyB9
CisgICAgICAgIHZvaWQgc2V0R3JhZGllbnRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtTWF0cml4
JiB2YWx1ZSkgeyBtX2dyYWRpZW50VHJhbnNmb3JtID0gdmFsdWU7IG1fZ3JhZGllbnRUcmFuc2Zv
cm1TZXQgPSB0cnVlOyB9CiAgICAgICAgIHZvaWQgc2V0U3RvcHMoY29uc3QgVmVjdG9yPFNWR0dy
YWRpZW50U3RvcD4mIHZhbHVlKSB7IG1fc3RvcHMgPSB2YWx1ZTsgbV9zdG9wc1NldCA9IHRydWU7
IH0gCiAKICAgICAgICAgYm9vbCBoYXNTcHJlYWRNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX3Nw
cmVhZE1ldGhvZFNldDsgfQpAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAg
ICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIG1fc3ByZWFk
TWV0aG9kOwogICAgICAgICBib29sIG1fYm91bmRpbmdCb3hNb2RlOwotICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gbV9ncmFkaWVudFRyYW5zZm9ybTsKKyAgICAgICAgVHJhbnNmb3JtTWF0cml4IG1f
Z3JhZGllbnRUcmFuc2Zvcm07CiAgICAgICAgIFZlY3RvcjxTVkdHcmFkaWVudFN0b3A+IG1fc3Rv
cHM7CiAKICAgICAgICAgLy8gUHJvcGVydHkgc3RhdGVzCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2
Zy9QYXR0ZXJuQXR0cmlidXRlcy5oIGIvV2ViQ29yZS9zdmcvUGF0dGVybkF0dHJpYnV0ZXMuaApp
bmRleCBlNmEzNDdjLi4zMTU5YTVmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9QYXR0ZXJuQXR0
cmlidXRlcy5oCisrKyBiL1dlYkNvcmUvc3ZnL1BhdHRlcm5BdHRyaWJ1dGVzLmgKQEAgLTUyLDcg
KzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgU1ZHTGVuZ3RoIGhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAgICAgICAgIGJvb2wgYm91bmRpbmdCb3hNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9ib3VuZGluZ0JveE1vZGU7IH0KICAgICAgICAgYm9vbCBib3VuZGlu
Z0JveE1vZGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGluZ0JveE1vZGVDb250ZW50
OyB9Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXR0ZXJuVHJhbnNmb3JtOyB9CisgICAgICAgIFRyYW5zZm9ybU1hdHJpeCBwYXR0
ZXJuVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuVHJhbnNmb3JtOyB9CiAgICAg
ICAgIGNvbnN0IFNWR1BhdHRlcm5FbGVtZW50KiBwYXR0ZXJuQ29udGVudEVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBtX3BhdHRlcm5Db250ZW50RWxlbWVudDsgfQogCiAgICAgICAgIHZvaWQgc2V0
WChjb25zdCBTVkdMZW5ndGgmIHZhbHVlKSB7IG1feCA9IHZhbHVlOyBtX3hTZXQgPSB0cnVlOyB9
CkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZvaWQgc2V0SGVp
Z2h0KGNvbnN0IFNWR0xlbmd0aCYgdmFsdWUpIHsgbV9oZWlnaHQgPSB2YWx1ZTsgbV9oZWlnaHRT
ZXQgPSB0cnVlOyB9CiAgICAgICAgIHZvaWQgc2V0Qm91bmRpbmdCb3hNb2RlKGJvb2wgdmFsdWUp
IHsgbV9ib3VuZGluZ0JveE1vZGUgPSB2YWx1ZTsgbV9ib3VuZGluZ0JveE1vZGVTZXQgPSB0cnVl
OyB9CiAgICAgICAgIHZvaWQgc2V0Qm91bmRpbmdCb3hNb2RlQ29udGVudChib29sIHZhbHVlKSB7
IG1fYm91bmRpbmdCb3hNb2RlQ29udGVudCA9IHZhbHVlOyBtX2JvdW5kaW5nQm94TW9kZUNvbnRl
bnRTZXQgPSB0cnVlOyB9Ci0gICAgICAgIHZvaWQgc2V0UGF0dGVyblRyYW5zZm9ybShjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHZhbHVlKSB7IG1fcGF0dGVyblRyYW5zZm9ybSA9IHZhbHVlOyBtX3Bh
dHRlcm5UcmFuc2Zvcm1TZXQgPSB0cnVlOyB9CisgICAgICAgIHZvaWQgc2V0UGF0dGVyblRyYW5z
Zm9ybShjb25zdCBUcmFuc2Zvcm1NYXRyaXgmIHZhbHVlKSB7IG1fcGF0dGVyblRyYW5zZm9ybSA9
IHZhbHVlOyBtX3BhdHRlcm5UcmFuc2Zvcm1TZXQgPSB0cnVlOyB9CiAgICAgICAgIHZvaWQgc2V0
UGF0dGVybkNvbnRlbnRFbGVtZW50KGNvbnN0IFNWR1BhdHRlcm5FbGVtZW50KiB2YWx1ZSkgeyBt
X3BhdHRlcm5Db250ZW50RWxlbWVudCA9IHZhbHVlOyBtX3BhdHRlcm5Db250ZW50RWxlbWVudFNl
dCA9IHRydWU7IH0KIAogICAgICAgICBib29sIGhhc1goKSBjb25zdCB7IHJldHVybiBtX3hTZXQ7
IH0KQEAgLTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgU1ZHTGVuZ3Ro
IG1faGVpZ2h0OwogICAgICAgICBib29sIG1fYm91bmRpbmdCb3hNb2RlOwogICAgICAgICBib29s
IG1fYm91bmRpbmdCb3hNb2RlQ29udGVudDsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fcGF0
dGVyblRyYW5zZm9ybTsKKyAgICAgICAgVHJhbnNmb3JtTWF0cml4IG1fcGF0dGVyblRyYW5zZm9y
bTsKICAgICAgICAgY29uc3QgU1ZHUGF0dGVybkVsZW1lbnQqIG1fcGF0dGVybkNvbnRlbnRFbGVt
ZW50OwogCiAgICAgICAgIC8vIFByb3BlcnR5IHN0YXRlcwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQuY3BwCmluZGV4IDRiZWI1MjAuLjU4ZDMyOTMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKGNvbnN0IFN0cmluZyYpCiAgICAgaWYg
KCFoYXNWYWxpZFRhcmdldCgpKQogICAgICAgICByZXR1cm47CiAgICAgU1ZHRWxlbWVudCogdGFy
Z2V0ID0gdGFyZ2V0RWxlbWVudCgpOwotICAgIEFmZmluZVRyYW5zZm9ybSogdHJhbnNmb3JtID0g
dGFyZ2V0LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKTsKKyAgICBUcmFuc2Zvcm1NYXRyaXgqIHRy
YW5zZm9ybSA9IHRhcmdldC0+c3VwcGxlbWVudGFsVHJhbnNmb3JtKCk7CiAgICAgaWYgKCF0cmFu
c2Zvcm0pCiAgICAgICAgIHJldHVybjsKICAgICB0cmFuc2Zvcm0tPnJlc2V0KCk7CkBAIC0xNzQs
NyArMTc0LDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZAogICAgIFNWR0VsZW1lbnQqIHRhcmdl
dCA9IHRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwot
ICAgIEFmZmluZVRyYW5zZm9ybSogdHJhbnNmb3JtID0gdGFyZ2V0LT5zdXBwbGVtZW50YWxUcmFu
c2Zvcm0oKTsKKyAgICBUcmFuc2Zvcm1NYXRyaXgqIHRyYW5zZm9ybSA9IHRhcmdldC0+c3VwcGxl
bWVudGFsVHJhbnNmb3JtKCk7CiAgICAgaWYgKCF0cmFuc2Zvcm0pCiAgICAgICAgIHJldHVybjsK
ICAgICAKQEAgLTIxOCw4ICsyMTgsOCBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojph
cHBseVJlc3VsdHNUb1RhcmdldCgpCiAgICAgZm9yIChIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5j
ZSo+OjppdGVyYXRvciBpdCA9IGluc3RhbmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
ICAgICAgICAgU1ZHRWxlbWVudCogc2hhZG93VHJlZUVsZW1lbnQgPSAoKml0KS0+c2hhZG93VHJl
ZUVsZW1lbnQoKTsKICAgICAgICAgQVNTRVJUKHNoYWRvd1RyZWVFbGVtZW50KTsKLSAgICAgICAg
QWZmaW5lVHJhbnNmb3JtKiB0cmFuc2Zvcm0gPSBzaGFkb3dUcmVlRWxlbWVudC0+c3VwcGxlbWVu
dGFsVHJhbnNmb3JtKCk7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSogdCA9IHRhcmdldEVsZW1l
bnQtPnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOworICAgICAgICBUcmFuc2Zvcm1NYXRyaXgqIHRy
YW5zZm9ybSA9IHNoYWRvd1RyZWVFbGVtZW50LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKTsKKyAg
ICAgICAgVHJhbnNmb3JtTWF0cml4KiB0ID0gdGFyZ2V0RWxlbWVudC0+c3VwcGxlbWVudGFsVHJh
bnNmb3JtKCk7CiAgICAgICAgIHRyYW5zZm9ybS0+c2V0TWF0cml4KHQtPmEoKSwgdC0+YigpLCB0
LT5jKCksIHQtPmQoKSwgdC0+ZSgpLCB0LT5mKCkpOwogICAgICAgICBpZiAoc2hhZG93VHJlZUVs
ZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBzaGFkb3dUcmVlRWxlbWVudC0+cmVuZGVy
ZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlTW90aW9uRWxlbWVudC5oIGIvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuaAppbmRleCBmZjU4MjY0Li5lNjk0NGI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlTW90aW9uRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25F
bGVtZW50LmgKQEAgLTI1LDcgKzI1LDcgQEAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKIAog
I2luY2x1ZGUgIlNWR0FuaW1hdGlvbkVsZW1lbnQuaCIKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zv
cm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1NYXRyaXguaCIKICNpbmNsdWRlICJQYXRoLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50LmNwcAppbmRleCBjNWI0ZTlkLi4wYWMxMTQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaWYgRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19BTklNQVRJT04pCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQuaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5z
Zm9ybU1hdHJpeC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNWR0Fu
Z2xlLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudEluc3RhbmNlLmgiCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oIGIvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQuaAppbmRleCAzYzMxZDE3Li5mYmZiMTU0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCisrKyBiL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworICAgIGNsYXNz
IFRyYW5zZm9ybU1hdHJpeDsKIAogICAgIGNsYXNzIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
IDogcHVibGljIFNWR0FuaW1hdGlvbkVsZW1lbnQgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRl
eCA0OTZjMmIwLi41OTgxNjgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
KysrIGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKKyAgICBjbGFzcyBU
cmFuc2Zvcm1NYXRyaXg7CiAgICAgY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTsKICAgICBjbGFz
cyBEb2N1bWVudDsKICAgICBjbGFzcyBTVkdDdXJzb3JFbGVtZW50OwpAQCAtODQsNyArODQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZW5kU1ZHTG9hZEV2ZW50SWZQ
b3NzaWJsZShib29sIHNlbmRQYXJlbnRMb2FkRXZlbnRzID0gZmFsc2UpOwogICAgICAgICAKLSAg
ICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpIHsg
cmV0dXJuIDA7IH0KKyAgICAgICAgdmlydHVhbCBUcmFuc2Zvcm1NYXRyaXgqIHN1cHBsZW1lbnRh
bFRyYW5zZm9ybSgpIHsgcmV0dXJuIDA7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
QW5pbWF0ZWRTVkdBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBzZXRTeW5jaHJvbml6ZWRTVkdBdHRyaWJ1dGVzKGJvb2wpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR0Zp
dFRvVmlld0JveC5jcHAKaW5kZXggNjllMDc3ZS4uZTFhZDUzYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdC
b3guY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdG
aXRUb1ZpZXdCb3guaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUg
IlRyYW5zZm9ybU1hdHJpeC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTgwLDExICs4MCwxMSBAQCBib29s
IFNWR0ZpdFRvVmlld0JveDo6cGFyc2VWaWV3Qm94KGNvbnN0IFVDaGFyKiYgYywgY29uc3QgVUNo
YXIqIGVuZCwgZmxvYXQmIHgsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUFmZmluZVRyYW5zZm9y
bSBTVkdGaXRUb1ZpZXdCb3g6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRo
LCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25zdAorVHJhbnNmb3JtTWF0cml4IFNWR0ZpdFRvVmlld0Jv
eDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWln
aHQpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHZpZXdCb3hSZWN0ID0gdmlld0JveCgpOwogICAg
IGlmICghdmlld0JveFJlY3Qud2lkdGgoKSB8fCAhdmlld0JveFJlY3QuaGVpZ2h0KCkpCi0gICAg
ICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICAgICAgcmV0dXJuIFRyYW5zZm9ybU1h
dHJpeCgpOwogCiAgICAgcmV0dXJuIHByZXNlcnZlQXNwZWN0UmF0aW8oKS0+Z2V0Q1RNKHZpZXdC
b3hSZWN0LngoKSwKICAgICAgICAgICAgIHZpZXdCb3hSZWN0LnkoKSwgdmlld0JveFJlY3Qud2lk
dGgoKSwgdmlld0JveFJlY3QuaGVpZ2h0KCksCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdG
aXRUb1ZpZXdCb3guaCBiL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCmluZGV4IGNjNjEy
ZWMuLmJjYTMxMzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCisr
KyBiL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGV4dGVybiBjaGFyIFNWR0ZpdFRvVmlld0JveElkZW50aWZp
ZXJbXTsKIAotICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKKyAgICBjbGFzcyBUcmFuc2Zvcm1N
YXRyaXg7CiAKICAgICBjbGFzcyBTVkdGaXRUb1ZpZXdCb3ggewogICAgIHB1YmxpYzoKQEAgLTM5
LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TVkdGaXRU
b1ZpZXdCb3goKTsKIAogICAgICAgICBib29sIHBhcnNlVmlld0JveChjb25zdCBVQ2hhciomIHN0
YXJ0LCBjb25zdCBVQ2hhciogZW5kLCBmbG9hdCYgeCwgZmxvYXQmIHksIGZsb2F0JiB3LCBmbG9h
dCYgaCwgYm9vbCB2YWxpZGF0ZSA9IHRydWUpOwotICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5z
Zm9ybSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hl
aWdodCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgVHJhbnNmb3JtTWF0cml4IHZpZXdCb3hUb1Zp
ZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25zdDsKIAog
ICAgICAgICBib29sIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAg
ICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaCBiL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmgKaW5kZXggZmU1MmQwNS4uM2MwYTA4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHR0Vs
ZW1lbnQuaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCkBAIC01Miw3ICs1Miw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBTVkdVc2VFbGVtZW50OwotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxNYXRyaXgoKSBj
b25zdDsKKyAgICAgICAgVHJhbnNmb3JtTWF0cml4IGxvY2FsTWF0cml4KCkgY29uc3Q7CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZH
TG9jYXRhYmxlLmNwcCBiL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAKaW5kZXggOTU2YTRm
OS4uZDkzNzYyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcAorKysg
Yi9XZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNs
dWRlICJTVkdMb2NhdGFibGUuaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2lu
Y2x1ZGUgIlRyYW5zZm9ybU1hdHJpeC5oIgogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNs
dWRlICJTVkdFeGNlcHRpb24uaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCkBAIC05OCwx
OCArOTgsMTggQEAgRmxvYXRSZWN0IFNWR0xvY2F0YWJsZTo6Z2V0QkJveChjb25zdCBTVkdFbGVt
ZW50KiBlKQogICAgIHJldHVybiBiYm94UmVjdDsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIFNWR0xv
Y2F0YWJsZTo6Z2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpCitUcmFuc2Zvcm1NYXRy
aXggU1ZHTG9jYXRhYmxlOjpnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKIHsKICAg
ICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICAg
ICAgcmV0dXJuIFRyYW5zZm9ybU1hdHJpeCgpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsK
KyAgICBUcmFuc2Zvcm1NYXRyaXggY3RtOwogCiAgICAgTm9kZSogcGFyZW50ID0gZWxlbWVudC0+
cGFyZW50Tm9kZSgpOwogICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc1NWR0VsZW1lbnQoKSkg
ewogICAgICAgICBTVkdFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxl
bWVudCo+KHBhcmVudCk7CiAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50ICYmIHBhcmVudEVsZW1l
bnQtPmlzU3R5bGVkTG9jYXRhYmxlKCkpIHsKLSAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBw
YXJlbnRDVE0gPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4ocGFyZW50
RWxlbWVudCktPmdldENUTSgpOworICAgICAgICAgICAgVHJhbnNmb3JtTWF0cml4IHBhcmVudENU
TSA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQqPihwYXJlbnRFbGVtZW50
KS0+Z2V0Q1RNKCk7CiAgICAgICAgICAgICBjdG0gPSBwYXJlbnRDVE0gKiBjdG07CiAgICAgICAg
IH0KICAgICB9CkBAIC0xMTcsMTggKzExNywxOCBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHTG9jYXRh
YmxlOjpnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkKICAgICByZXR1cm4gY3RtOwog
fQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHTG9jYXRhYmxlOjpnZXRTY3JlZW5DVE0oY29uc3QgU1ZH
RWxlbWVudCogZWxlbWVudCkKK1RyYW5zZm9ybU1hdHJpeCBTVkdMb2NhdGFibGU6OmdldFNjcmVl
bkNUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmICghZWxlbWVudCkKLSAg
ICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOworICAgICAgICByZXR1cm4gVHJhbnNmb3Jt
TWF0cml4KCk7CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOworICAgIFRyYW5zZm9ybU1hdHJp
eCBjdG07CiAKICAgICBOb2RlKiBwYXJlbnQgPSBlbGVtZW50LT5wYXJlbnROb2RlKCk7CiAgICAg
aWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzU1ZHRWxlbWVudCgpKSB7CiAgICAgICAgIFNWR0VsZW1l
bnQqIHBhcmVudEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4ocGFyZW50KTsKICAg
ICAgICAgaWYgKHBhcmVudEVsZW1lbnQgJiYgcGFyZW50RWxlbWVudC0+aXNTdHlsZWRMb2NhdGFi
bGUoKSkgewotICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHBhcmVudENUTSA9IHN0YXRpY19j
YXN0PFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQqPihwYXJlbnRFbGVtZW50KS0+Z2V0U2NyZWVu
Q1RNKCk7CisgICAgICAgICAgICBUcmFuc2Zvcm1NYXRyaXggcGFyZW50Q1RNID0gc3RhdGljX2Nh
c3Q8U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHBhcmVudEVsZW1lbnQpLT5nZXRTY3JlZW5D
VE0oKTsKICAgICAgICAgICAgIGN0bSA9IHBhcmVudENUTSAqIGN0bTsKICAgICAgICAgfQogICAg
IH0KQEAgLTEzNiwxMiArMTM2LDEyIEBAIEFmZmluZVRyYW5zZm9ybSBTVkdMb2NhdGFibGU6Omdl
dFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBjdG07CiB9
CiAKLUFmZmluZVRyYW5zZm9ybSBTVkdMb2NhdGFibGU6OmdldFRyYW5zZm9ybVRvRWxlbWVudChT
VkdFbGVtZW50KiB0YXJnZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorVHJhbnNmb3JtTWF0
cml4IFNWR0xvY2F0YWJsZTo6Z2V0VHJhbnNmb3JtVG9FbGVtZW50KFNWR0VsZW1lbnQqIHRhcmdl
dCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9
IGdldENUTSgpOworICAgIFRyYW5zZm9ybU1hdHJpeCBjdG0gPSBnZXRDVE0oKTsKIAogICAgIGlm
ICh0YXJnZXQgJiYgdGFyZ2V0LT5pc1N0eWxlZExvY2F0YWJsZSgpKSB7Ci0gICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSB0YXJnZXRDVE0gPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVt
ZW50Kj4odGFyZ2V0KS0+Z2V0Q1RNKCk7CisgICAgICAgIFRyYW5zZm9ybU1hdHJpeCB0YXJnZXRD
VE0gPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4odGFyZ2V0KS0+Z2V0
Q1RNKCk7CiAgICAgICAgIGlmICghdGFyZ2V0Q1RNLmlzSW52ZXJ0aWJsZSgpKSB7CiAgICAgICAg
ICAgICBlYyA9IFNWR0V4Y2VwdGlvbjo6U1ZHX01BVFJJWF9OT1RfSU5WRVJUQUJMRTsKICAgICAg
ICAgICAgIHJldHVybiBjdG07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUu
aCBiL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5oCmluZGV4IGIxNjAxY2UuLjJlNDQ0NzIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5oCisrKyBiL1dlYkNvcmUvc3ZnL1NW
R0xvY2F0YWJsZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKKyAgICBjbGFzcyBUcmFuc2Zvcm1NYXRyaXg7CiAg
ICAgY2xhc3MgRmxvYXRSZWN0OwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7CiAKQEAgLTQzLDE3ICs0
MywxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudCog
ZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdCA9IDA7CiAKICAgICAgICAgdmlydHVhbCBG
bG9hdFJlY3QgZ2V0QkJveCgpIGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFu
c2Zvcm0gZ2V0Q1RNKCkgY29uc3QgPSAwOwotICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9y
bSBnZXRTY3JlZW5DVE0oKSBjb25zdCA9IDA7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBnZXRU
cmFuc2Zvcm1Ub0VsZW1lbnQoU1ZHRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCBUcmFuc2Zvcm1NYXRyaXggZ2V0Q1RNKCkgY29uc3QgPSAwOworICAgICAg
ICB2aXJ0dWFsIFRyYW5zZm9ybU1hdHJpeCBnZXRTY3JlZW5DVE0oKSBjb25zdCA9IDA7CisgICAg
ICAgIFRyYW5zZm9ybU1hdHJpeCBnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQoU1ZHRWxlbWVudCosIEV4
Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgU1ZHRWxlbWVudCogbmVhcmVz
dFZpZXdwb3J0RWxlbWVudChjb25zdCBTVkdFbGVtZW50Kik7CiAgICAgICAgIHN0YXRpYyBTVkdF
bGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudChjb25zdCBTVkdFbGVtZW50Kik7CiAKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBGbG9hdFJlY3QgZ2V0QkJveChjb25zdCBTVkdF
bGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKGNvbnN0IFNW
R0VsZW1lbnQqKTsKLSAgICAgICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0o
Y29uc3QgU1ZHRWxlbWVudCopOworICAgICAgICBzdGF0aWMgVHJhbnNmb3JtTWF0cml4IGdldENU
TShjb25zdCBTVkdFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBUcmFuc2Zvcm1NYXRyaXggZ2V0
U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdNYXRyaXguaWRsIGIvV2ViQ29yZS9z
dmcvU1ZHTWF0cml4LmlkbAppbmRleCBlZmM1NDU5Li40ZTJlOWM5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3N2Zy9TVkdNYXRyaXguaWRsCisrKyBiL1dlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwKQEAg
LTI0LDkgKzI0LDkgQEAKIAogbW9kdWxlIHN2ZyB7CiAKLSAgICBpbnRlcmZhY2UgW0NvbmRpdGlv
bmFsPVNWRywgUE9EVHlwZT1BZmZpbmVUcmFuc2Zvcm1dIFNWR01hdHJpeCB7CisgICAgaW50ZXJm
YWNlIFtDb25kaXRpb25hbD1TVkcsIFBPRFR5cGU9VHJhbnNmb3JtTWF0cml4XSBTVkdNYXRyaXgg
ewogICAgICAgICAvLyBGSVhNRTogdGhlc2UgYXR0cmlidXRlcyBzaG91bGQgYWxsIGJlIGZsb2F0
cyBidXQgc2luY2Ugd2UgaW1wbGVtZW50Ci0gICAgICAgIC8vIEFmZmluZVRyYW5zZm9ybSB3aXRo
IGRvdWJsZXMgc2V0dGluZyB0aGVzZSBhcyBkb3VibGVzIG1ha2VzIG1vcmUgc2Vuc2UuCisgICAg
ICAgIC8vIFRyYW5zZm9ybU1hdHJpeCB3aXRoIGRvdWJsZXMgc2V0dGluZyB0aGVzZSBhcyBkb3Vi
bGVzIG1ha2VzIG1vcmUgc2Vuc2UuCiAgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgYTsKICAgICAg
ICAgYXR0cmlidXRlIGRvdWJsZSBiOwogICAgICAgICBhdHRyaWJ1dGUgZG91YmxlIGM7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9T
VkdQYXR0ZXJuRWxlbWVudC5jcHAKaW5kZXggZThkZGI3Yy4uMDBmNjQwMCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5j
bHVkZSAiU1ZHUGF0dGVybkVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5o
IgorI2luY2x1ZGUgIlRyYW5zZm9ybU1hdHJpeC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6YnVpbGRQYXR0ZXJu
KGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAot
ICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94Q1RNID0gdmlld0JveFRvVmlld1RyYW5zZm9ybShw
YXR0ZXJuQm91bmRhcmllcy53aWR0aCgpLCBwYXR0ZXJuQm91bmRhcmllcy5oZWlnaHQoKSk7IAor
ICAgIFRyYW5zZm9ybU1hdHJpeCB2aWV3Qm94Q1RNID0gdmlld0JveFRvVmlld1RyYW5zZm9ybShw
YXR0ZXJuQm91bmRhcmllcy53aWR0aCgpLCBwYXR0ZXJuQm91bmRhcmllcy5oZWlnaHQoKSk7IAog
ICAgIEZsb2F0UmVjdCBwYXR0ZXJuQm91bmRhcmllc0luY2x1ZGluZ092ZXJmbG93ID0gcGF0dGVy
bkJvdW5kYXJpZXM7CiAKICAgICAvLyBBcHBseSBvYmplY3RCb3VuZGluZ0JveE1vZGUgZml4dXAg
Zm9yIHBhdHRlcm5Db250ZW50VW5pdHMsIGlmIHZpZXdCb3ggaXMgbm90IHNldC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwIGIvV2ViQ29yZS9zdmcv
U1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKaW5kZXggY2RlNDk2Ni4uN2ViODc5NyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKKysrIGIvV2ViQ29y
ZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICNpZiBF
TkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKIAotI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybU1hdHJpeC5oIgogI2lu
Y2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIK
IApAQCAtMTY0LDEyICsxNjQsMTIgQEAgYmFpbF9vdXQ6CiAgICAgcmV0dXJuIHJldDsKIH0KIAot
QWZmaW5lVHJhbnNmb3JtIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUTShkb3VibGUgbG9n
aWNYLCBkb3VibGUgbG9naWNZLAorVHJhbnNmb3JtTWF0cml4IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW86OmdldENUTShkb3VibGUgbG9naWNYLCBkb3VibGUgbG9naWNZLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbG9naWNXaWR0aCwgZG91Ymxl
IGxvZ2ljSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgLypwaHlzWCovLCBkb3VibGUgLypwaHlzWSovLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgcGh5c1dpZHRoLCBkb3VibGUg
cGh5c0hlaWdodCkKIHsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdGVtcDsKKyAgICBUcmFuc2Zvcm1N
YXRyaXggdGVtcDsKIAogICAgIGlmIChhbGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElP
X1VOS05PV04pCiAgICAgICAgIHJldHVybiB0ZW1wOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcv
U1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIGIvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RS
YXRpby5oCmluZGV4IDBkZmU5NDAuLjg3MWEwN2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NW
R1ByZXNlcnZlQXNwZWN0UmF0aW8uaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNs
YXNzIFN0cmluZzsKLSAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CisgICAgY2xhc3MgVHJhbnNm
b3JtTWF0cml4OwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CiAKICAgICBjbGFzcyBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUHJlc2VydmVBc3BlY3RS
YXRpbz4geyAKQEAgLTY3LDcgKzY3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHNldE1lZXRPclNsaWNlKHVuc2lnbmVkIHNob3J0KTsKICAgICAgICAgdW5zaWduZWQgc2hv
cnQgbWVldE9yU2xpY2UoKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIEFmZmluZVRyYW5zZm9y
bSBnZXRDVE0oZG91YmxlIGxvZ2ljWCwgZG91YmxlIGxvZ2ljWSwKKyAgICAgICAgVHJhbnNmb3Jt
TWF0cml4IGdldENUTShkb3VibGUgbG9naWNYLCBkb3VibGUgbG9naWNZLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSBsb2dpY1dpZHRoLCBkb3VibGUgbG9naWNIZWlnaHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHBoeXNYLCBkb3VibGUgcGh5
c1ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHBoeXNXaWR0aCwgZG91
YmxlIHBoeXNIZWlnaHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5j
cHAgYi9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCA5MmExZGUyLi4yNmQwNjk1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2lmIEVOQUJMRShTVkcp
CiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiQ1NTSGVscGVyLmgi
CiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBA
IC0xMjIsNyArMTIyLDcgQEAgRmxvYXRSZWN0IFNWR1NWR0VsZW1lbnQ6OnZpZXdwb3J0KCkgY29u
c3QKICAgICB9CiAgICAgZmxvYXQgdyA9IHdpZHRoKCkudmFsdWUodGhpcyk7CiAgICAgZmxvYXQg
aCA9IGhlaWdodCgpLnZhbHVlKHRoaXMpOwotICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0g
dmlld0JveFRvVmlld1RyYW5zZm9ybSh3LCBoKTsKKyAgICBUcmFuc2Zvcm1NYXRyaXggdmlld0Jv
eCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0odywgaCk7CiAgICAgZG91YmxlIHdEb3VibGUgPSB3
OwogICAgIGRvdWJsZSBoRG91YmxlID0gaDsKICAgICB2aWV3Qm94Lm1hcChfeCwgX3ksICZfeCwg
Jl95KTsKQEAgLTM2MSw5ICszNjEsOSBAQCBGbG9hdFBvaW50IFNWR1NWR0VsZW1lbnQ6OmNyZWF0
ZVNWR1BvaW50KCkKICAgICByZXR1cm4gRmxvYXRQb2ludCgpOwogfQogCi1BZmZpbmVUcmFuc2Zv
cm0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KCkKK1RyYW5zZm9ybU1hdHJpeCBTVkdT
VkdFbGVtZW50OjpjcmVhdGVTVkdNYXRyaXgoKQogewotICAgIHJldHVybiBBZmZpbmVUcmFuc2Zv
cm0oKTsKKyAgICByZXR1cm4gVHJhbnNmb3JtTWF0cml4KCk7CiB9CiAKIEZsb2F0UmVjdCBTVkdT
VkdFbGVtZW50OjpjcmVhdGVTVkdSZWN0KCkKQEAgLTM3NiwyNiArMzc2LDI2IEBAIFNWR1RyYW5z
Zm9ybSBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcmFuc2Zvcm0oKQogICAgIHJldHVybiBTVkdU
cmFuc2Zvcm0oKTsKIH0KIAotU1ZHVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1Ry
YW5zZm9ybUZyb21NYXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCitTVkdUcmFu
c2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChjb25zdCBU
cmFuc2Zvcm1NYXRyaXgmIG1hdHJpeCkKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtKG1hdHJp
eCk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50OjpnZXRDVE0oKSBjb25zdAor
VHJhbnNmb3JtTWF0cml4IFNWR1NWR0VsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7Ci0gICAgQWZm
aW5lVHJhbnNmb3JtIG1hdDsKKyAgICBUcmFuc2Zvcm1NYXRyaXggbWF0OwogICAgIGlmICghaXNP
dXRlcm1vc3RTVkcoKSkKICAgICAgICAgbWF0LnRyYW5zbGF0ZSh4KCkudmFsdWUodGhpcyksIHko
KS52YWx1ZSh0aGlzKSk7CiAKICAgICBpZiAoYXR0cmlidXRlcygpLT5nZXROYW1lZEl0ZW0oU1ZH
TmFtZXM6OnZpZXdCb3hBdHRyKSkgewotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveCA9
IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS52YWx1ZSh0aGlzKSwgaGVpZ2h0KCkudmFs
dWUodGhpcykpOworICAgICAgICBUcmFuc2Zvcm1NYXRyaXggdmlld0JveCA9IHZpZXdCb3hUb1Zp
ZXdUcmFuc2Zvcm0od2lkdGgoKS52YWx1ZSh0aGlzKSwgaGVpZ2h0KCkudmFsdWUodGhpcykpOwog
ICAgICAgICBtYXQgPSB2aWV3Qm94ICogbWF0OwogICAgIH0KIAogICAgIHJldHVybiBtYXQ7CiB9
CiAKLUFmZmluZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25zdAor
VHJhbnNmb3JtTWF0cml4IFNWR1NWR0VsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiB7CiAg
ICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAg
ICAgRmxvYXRQb2ludCByb290TG9jYXRpb247ICAgIApAQCAtNDExLDExICs0MTEsMTEgQEAgQWZm
aW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiAgICAgICAg
ICAgICByb290TG9jYXRpb24ubW92ZSh4KCkudmFsdWUodGhpcyksIHkoKS52YWx1ZSh0aGlzKSk7
CiAgICAgfQogICAgIAotICAgIEFmZmluZVRyYW5zZm9ybSBtYXQgPSBTVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50OjpnZXRTY3JlZW5DVE0oKTsKKyAgICBUcmFuc2Zvcm1NYXRyaXggbWF0ID0gU1ZH
U3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCk7CiAgICAgbWF0LnRyYW5zbGF0
ZShyb290TG9jYXRpb24ueCgpLCByb290TG9jYXRpb24ueSgpKTsKIAogICAgIGlmIChhdHRyaWJ1
dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6dmlld0JveEF0dHIpKSB7Ci0gICAgICAgIEFm
ZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLnZh
bHVlKHRoaXMpLCBoZWlnaHQoKS52YWx1ZSh0aGlzKSk7CisgICAgICAgIFRyYW5zZm9ybU1hdHJp
eCB2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLnZhbHVlKHRoaXMpLCBo
ZWlnaHQoKS52YWx1ZSh0aGlzKSk7CiAgICAgICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAg
fQogCkBAIC00ODEsNyArNDgxLDcgQEAgYm9vbCBTVkdTVkdFbGVtZW50Ojppc091dGVybW9zdFNW
RygpIGNvbnN0CiAgICAgcmV0dXJuICFwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpOwogfQog
Ci1BZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShm
bG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0CitUcmFuc2Zvcm1NYXRyaXgg
U1ZHU1ZHRWxlbWVudDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZs
b2F0IHZpZXdIZWlnaHQpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHZpZXdCb3hSZWN0OwogICAg
IGlmICh1c2VDdXJyZW50VmlldygpKSB7CkBAIC00OTAsOSArNDkwLDkgQEAgQWZmaW5lVHJhbnNm
b3JtIFNWR1NWR0VsZW1lbnQ6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRo
LCBmbG9hdCB2aWUKICAgICB9IGVsc2UKICAgICAgICAgdmlld0JveFJlY3QgPSB2aWV3Qm94KCk7
CiAgICAgaWYgKCF2aWV3Qm94UmVjdC53aWR0aCgpIHx8ICF2aWV3Qm94UmVjdC5oZWlnaHQoKSkK
LSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOworICAgICAgICByZXR1cm4gVHJhbnNm
b3JtTWF0cml4KCk7CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gcHJlc2VydmVBc3BlY3RS
YXRpbygpLT5nZXRDVE0odmlld0JveFJlY3QueCgpLAorICAgIFRyYW5zZm9ybU1hdHJpeCBjdG0g
PSBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCktPmdldENUTSh2aWV3Qm94UmVjdC54KCksCiAgICAgICAg
ICAgICB2aWV3Qm94UmVjdC55KCksIHZpZXdCb3hSZWN0LndpZHRoKCksIHZpZXdCb3hSZWN0Lmhl
aWdodCgpLAogICAgICAgICAgICAgMCwgMCwgdmlld1dpZHRoLCB2aWV3SGVpZ2h0KTsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5oCmluZGV4IGJkOGI3ZjkuLjk3MmM3NjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTEx
MSwxNiArMTExLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHN0YXRpYyBTVkdMZW5n
dGggY3JlYXRlU1ZHTGVuZ3RoKCk7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuZ2xl
PiBjcmVhdGVTVkdBbmdsZSgpOwogICAgICAgICBzdGF0aWMgRmxvYXRQb2ludCBjcmVhdGVTVkdQ
b2ludCgpOwotICAgICAgICBzdGF0aWMgQWZmaW5lVHJhbnNmb3JtIGNyZWF0ZVNWR01hdHJpeCgp
OworICAgICAgICBzdGF0aWMgVHJhbnNmb3JtTWF0cml4IGNyZWF0ZVNWR01hdHJpeCgpOwogICAg
ICAgICBzdGF0aWMgRmxvYXRSZWN0IGNyZWF0ZVNWR1JlY3QoKTsKICAgICAgICAgc3RhdGljIFNW
R1RyYW5zZm9ybSBjcmVhdGVTVkdUcmFuc2Zvcm0oKTsKLSAgICAgICAgc3RhdGljIFNWR1RyYW5z
Zm9ybSBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYp
OworICAgICAgICBzdGF0aWMgU1ZHVHJhbnNmb3JtIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRy
aXgoY29uc3QgVHJhbnNmb3JtTWF0cml4Jik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogCiAgICAgICAgIC8vICd2aXJ0dWFs
IFNWR0xvY2F0YWJsZScgZnVuY3Rpb25zCi0gICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3Jt
IGdldENUTSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRTY3Jl
ZW5DVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBUcmFuc2Zvcm1NYXRyaXggZ2V0Q1RNKCkg
Y29uc3Q7CisgICAgICAgIHZpcnR1YWwgVHJhbnNmb3JtTWF0cml4IGdldFNjcmVlbkNUTSgpIGNv
bnN0OwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxl
KiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7
IH0KICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKIAotICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94VG9W
aWV3VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdodCkgY29uc3Q7Cisg
ICAgICAgIHZpcnR1YWwgVHJhbnNmb3JtTWF0cml4IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxv
YXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25zdDsKIAogICAgICAgICB2b2lkIGlu
aGVyaXRWaWV3QXR0cmlidXRlcyhTVkdWaWV3RWxlbWVudCopOwogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1N0
eWxlZExvY2F0YWJsZUVsZW1lbnQuY3BwCmluZGV4IGVhZWQzNmQuLjQxNmY0YjcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgotI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybU1hdHJpeC5oIgogI2lu
Y2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcsMTIg
KzU3LDEyIEBAIEZsb2F0UmVjdCBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRCQm94KCkg
Y29uc3QKICAgICByZXR1cm4gU1ZHTG9jYXRhYmxlOjpnZXRCQm94KHRoaXMpOwogfQogCi1BZmZp
bmVUcmFuc2Zvcm0gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKK1Ry
YW5zZm9ybU1hdHJpeCBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRDVE0oKSBjb25zdAog
ewogICAgIHJldHVybiBTVkdMb2NhdGFibGU6OmdldENUTSh0aGlzKTsKIH0KIAotQWZmaW5lVHJh
bnNmb3JtIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CitU
cmFuc2Zvcm1NYXRyaXggU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gU1ZHTG9jYXRhYmxlOjpnZXRTY3JlZW5DVE0odGhpcyk7CiB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmggYi9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmgKaW5kZXggOWFmMzMzNy4uYzQ1
OGIyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5o
CisrKyBiL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaApAQCAtNDMsOCAr
NDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudCog
ZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIEZsb2F0
UmVjdCBnZXRCQm94KCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdl
dENUTSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5D
VE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBUcmFuc2Zvcm1NYXRyaXggZ2V0Q1RNKCkgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgVHJhbnNmb3JtTWF0cml4IGdldFNjcmVlbkNUTSgpIGNvbnN0
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAppbmRleCBhN2I1YzQxLi5kZTJhNGYyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCkBAIC0yOSw3
ICsyOSw3IEBACiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJSZW5k
ZXJQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJBZmZpbmVUcmFu
c2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1NYXRyaXguaCIKICNpbmNsdWRlICJTVkdTdHls
ZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogCkBAIC00OCwyNSAr
NDgsMjUgQEAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6On5TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudCgpCiB7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKK1RyYW5zZm9ybU1hdHJpeCBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHVHJh
bnNmb3JtYWJsZTo6Z2V0Q1RNKHRoaXMpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CitUcmFuc2Zvcm1NYXRy
aXggU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldFNjcmVlbkNUTSh0aGlzKTsKIH0KIAot
QWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjphbmltYXRlZExv
Y2FsVHJhbnNmb3JtKCkgY29uc3QKK1RyYW5zZm9ybU1hdHJpeCBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtID8gdHJhbnNmb3JtKCktPmNvbmNhdGVuYXRlKCkubWF0
cml4KCkgKiAqbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gOiB0cmFuc2Zvcm0oKS0+Y29uY2F0ZW5h
dGUoKS5tYXRyaXgoKTsKIH0KICAgICAKLUFmZmluZVRyYW5zZm9ybSogU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpCitUcmFuc2Zvcm1NYXRyaXgq
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzdXBwbGVtZW50YWxUcmFuc2Zvcm0oKQog
ewogICAgIGlmICghbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0pCi0gICAgICAgIG1fc3VwcGxlbWVu
dGFsVHJhbnNmb3JtLnNldChuZXcgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICBtX3N1cHBs
ZW1lbnRhbFRyYW5zZm9ybS5zZXQobmV3IFRyYW5zZm9ybU1hdHJpeCgpKTsKICAgICByZXR1cm4g
bV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0uZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmggYi9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCmluZGV4IDQzY2NjNjguLjk0MTllNjkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgKKysrIGIvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBleHRlcm4gY2hhciBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudElkZW50aWZpZXJbXTsKIAotICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsK
KyAgICBjbGFzcyBUcmFuc2Zvcm1NYXRyaXg7CiAKICAgICBjbGFzcyBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1RyYW5zZm9ybWFi
bGUgewpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0eWxlZFRyYW5zZm9ybWFibGUoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29u
c3Q7Ci0gICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0
OworICAgICAgICB2aXJ0dWFsIFRyYW5zZm9ybU1hdHJpeCBnZXRDVE0oKSBjb25zdDsKKyAgICAg
ICAgdmlydHVhbCBUcmFuc2Zvcm1NYXRyaXggZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgU1ZHRWxlbWVudCogbmVhcmVzdFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3Q7
CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBhbmltYXRlZExvY2Fs
VHJhbnNmb3JtKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtKiBzdXBw
bGVtZW50YWxUcmFuc2Zvcm0oKTsKKyAgICAgICAgdmlydHVhbCBUcmFuc2Zvcm1NYXRyaXggYW5p
bWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFRyYW5zZm9ybU1h
dHJpeCogc3VwcGxlbWVudGFsVHJhbnNmb3JtKCk7CiAKICAgICAgICAgdmlydHVhbCBGbG9hdFJl
Y3QgZ2V0QkJveCgpIGNvbnN0OwogCkBAIC02Niw3ICs2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIFVzZWQgYnkgPGFuaW1hdGVNb3Rpb24+Ci0g
ICAgICAgIE93blB0cjxBZmZpbmVUcmFuc2Zvcm0+IG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtOwor
ICAgICAgICBPd25QdHI8VHJhbnNmb3JtTWF0cml4PiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybTsK
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRF
bGVtZW50LmNwcAppbmRleCA2MTgxOWVlLi5lYmIwZDY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250
ZW50RWxlbWVudC5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBzdHJ1Y3QgU1ZHSW5saW5lVGV4dEJv
eFF1ZXJ5V2Fsa2VyIHsKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBjaHVua1BvcnRpb25DYWxs
YmFjayhTVkdJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LCBpbnQgc3RhcnRPZmZzZXQsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgY2h1bmtDdG0sCisgICAgdm9pZCBjaHVua1BvcnRpb25DYWxsYmFjayhT
VkdJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LCBpbnQgc3RhcnRPZmZzZXQsIGNvbnN0IFRyYW5zZm9y
bU1hdHJpeCYgY2h1bmtDdG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBW
ZWN0b3I8U1ZHQ2hhcj46Oml0ZXJhdG9yJiBzdGFydCwgY29uc3QgVmVjdG9yPFNWR0NoYXI+Ojpp
dGVyYXRvciYgZW5kKQogICAgIHsKICAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gdGV4dEJv
eC0+dGV4dE9iamVjdCgpLT5zdHlsZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHVGV4
dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCmluZGV4IDFhY2Ux
YTkuLjJjMTE3ZmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICNp
ZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1RleHRFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJB
ZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1NYXRyaXguaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdUZXh0LmgiCiAjaW5jbHVkZSAiU1ZH
TGVuZ3RoTGlzdC5oIgpAQCAtODAsMjUgKzgwLDI1IEBAIEZsb2F0UmVjdCBTVkdUZXh0RWxlbWVu
dDo6Z2V0QkJveCgpIGNvbnN0CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldEJCb3go
dGhpcyk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBTVkdUZXh0RWxlbWVudDo6Z2V0U2NyZWVuQ1RN
KCkgY29uc3QKK1RyYW5zZm9ybU1hdHJpeCBTVkdUZXh0RWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0U2NyZWVuQ1RNKHRoaXMp
OwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHVGV4dEVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CitU
cmFuc2Zvcm1NYXRyaXggU1ZHVGV4dEVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldENUTSh0aGlzKTsKIH0KIAotQWZmaW5lVHJhbnNmb3Jt
IFNWR1RleHRFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKK1RyYW5zZm9y
bU1hdHJpeCBTVkdUZXh0RWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtID8gdHJhbnNmb3JtKCktPmNvbmNh
dGVuYXRlKCkubWF0cml4KCkgKiAqbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gOiB0cmFuc2Zvcm0o
KS0+Y29uY2F0ZW5hdGUoKS5tYXRyaXgoKTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtKiBTVkdUZXh0
RWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkKK1RyYW5zZm9ybU1hdHJpeCogU1ZHVGV4
dEVsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpCiB7CiAgICAgaWYgKCFtX3N1cHBsZW1l
bnRhbFRyYW5zZm9ybSkKLSAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0uc2V0KG5ldyBB
ZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtLnNldChu
ZXcgVHJhbnNmb3JtTWF0cml4KCkpOwogICAgIHJldHVybiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9y
bS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaCBi
L1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgKaW5kZXggM2FlNjEzOS4uMDgyM2M0MCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL3N2Zy9T
VkdUZXh0RWxlbWVudC5oCkBAIC00MSwxMCArNDEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50KCkgY29u
c3Q7CiAKICAgICAgICAgdmlydHVhbCBGbG9hdFJlY3QgZ2V0QkJveCgpIGNvbnN0OwotICAgICAg
ICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oKSBjb25zdDsKLSAgICAgICAgdmlydHVh
bCBBZmZpbmVUcmFuc2Zvcm0gZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwg
QWZmaW5lVHJhbnNmb3JtIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsKLSAgICAgICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOworICAgICAg
ICB2aXJ0dWFsIFRyYW5zZm9ybU1hdHJpeCBnZXRDVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVh
bCBUcmFuc2Zvcm1NYXRyaXggZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwg
VHJhbnNmb3JtTWF0cml4IGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICAgICAg
dmlydHVhbCBUcmFuc2Zvcm1NYXRyaXgqIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOwogCiAgICAg
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKE5vZGUqKSBjb25zdDsKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dEVsZW1lbnQsIFNW
R05hbWVzOjp0ZXh0VGFnU3RyaW5nLCBTVkdOYW1lczo6dHJhbnNmb3JtQXR0clN0cmluZywgU1ZH
VHJhbnNmb3JtTGlzdCwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0pCiAgICAgICAgCiAgICAgICAgLy8g
VXNlZCBieSA8YW5pbWF0ZU1vdGlvbj4KLSAgICAgICBPd25QdHI8QWZmaW5lVHJhbnNmb3JtPiBt
X3N1cHBsZW1lbnRhbFRyYW5zZm9ybTsKKyAgICAgICBPd25QdHI8VHJhbnNmb3JtTWF0cml4PiBt
X3N1cHBsZW1lbnRhbFRyYW5zZm9ybTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAppbmRleCBkOWM1ZjEzLi44NDZmYTdmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUo
U1ZHKQogI2luY2x1ZGUgIlNWR1RleHRQYXRoRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQWZmaW5l
VHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHVGV4dFBhdGguaCIKICNpbmNsdWRlICJTVkdM
ZW5ndGhMaXN0LmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwIGIv
V2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcAppbmRleCA4NjQ3N2U0Li5hNzAzM2Q5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NW
R1RyYW5zZm9ybS5jcHAKQEAgLTQzLDExICs0MywxMSBAQCBTVkdUcmFuc2Zvcm06OlNWR1RyYW5z
Zm9ybShTVkdUcmFuc2Zvcm1UeXBlIHR5cGUpCiAgICAgOiBtX3R5cGUodHlwZSkKICAgICAsIG1f
YW5nbGUoMCkKICAgICAsIG1fY2VudGVyKEZsb2F0UG9pbnQoKSkKLSAgICAsIG1fbWF0cml4KEFm
ZmluZVRyYW5zZm9ybSgpKQorICAgICwgbV9tYXRyaXgoVHJhbnNmb3JtTWF0cml4KCkpCiB7CiB9
CiAKLVNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWF0
cml4KQorU1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtTWF0cml4JiBt
YXRyaXgpCiAgICAgOiBtX3R5cGUoU1ZHX1RSQU5TRk9STV9NQVRSSVgpCiAgICAgLCBtX2FuZ2xl
KDApCiAgICAgLCBtX21hdHJpeChtYXRyaXgpCkBAIC02OCw3ICs2OCw3IEBAIFNWR1RyYW5zZm9y
bTo6U1ZHVHJhbnNmb3JtVHlwZSBTVkdUcmFuc2Zvcm06OnR5cGUoKSBjb25zdAogICAgIHJldHVy
biBtX3R5cGU7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBTVkdUcmFuc2Zvcm06Om1hdHJpeCgpIGNv
bnN0CitUcmFuc2Zvcm1NYXRyaXggU1ZHVHJhbnNmb3JtOjptYXRyaXgoKSBjb25zdAogewogICAg
IHJldHVybiBtX21hdHJpeDsKIH0KQEAgLTgzLDcgKzgzLDcgQEAgRmxvYXRQb2ludCBTVkdUcmFu
c2Zvcm06OnJvdGF0aW9uQ2VudGVyKCkgY29uc3QKICAgICByZXR1cm4gbV9jZW50ZXI7CiB9CiAK
LXZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRNYXRyaXgoQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCkgLy9j
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKK3ZvaWQgU1ZHVHJhbnNmb3JtOjpzZXRNYXRy
aXgoVHJhbnNmb3JtTWF0cml4IG1hdHJpeCkgLy9jb25zdCBUcmFuc2Zvcm1NYXRyaXgmIG1hdHJp
eCkKIHsKICAgICBtX3R5cGUgPSBTVkdfVFJBTlNGT1JNX01BVFJJWDsKICAgICBtX2FuZ2xlID0g
MDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oIGIvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtLmgKaW5kZXggYzNjMTUwYy4uYzFjYjUxZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtLmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmgKQEAg
LTI0LDcgKzI0LDcgQEAKICNkZWZpbmUgU1ZHVHJhbnNmb3JtX2gKIAogI2lmIEVOQUJMRShTVkcp
Ci0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4
LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKQEAg
LTQ2LDE4ICs0NiwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgCiAgICAgICAgIFNWR1RyYW5z
Zm9ybSgpOwogICAgICAgICBTVkdUcmFuc2Zvcm0oU1ZHVHJhbnNmb3JtVHlwZSk7Ci0gICAgICAg
IGV4cGxpY2l0IFNWR1RyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICAgICAg
ZXhwbGljaXQgU1ZHVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybU1hdHJpeCYpOwogICAgICAgICB2
aXJ0dWFsIH5TVkdUcmFuc2Zvcm0oKTsKICAgICAgICAgICAgICAgIAogICAgICAgICBTVkdUcmFu
c2Zvcm1UeXBlIHR5cGUoKSBjb25zdDsKIAotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0cml4
KCkgY29uc3Q7CisgICAgICAgIFRyYW5zZm9ybU1hdHJpeCBtYXRyaXgoKSBjb25zdDsKICAgICAK
ICAgICAgICAgZmxvYXQgYW5nbGUoKSBjb25zdDsKICAgICAgICAgRmxvYXRQb2ludCByb3RhdGlv
bkNlbnRlcigpIGNvbnN0OwogCi0vLyAgICAgICAgdm9pZCBzZXRNYXRyaXgoY29uc3QgQWZmaW5l
VHJhbnNmb3JtJik7Ci0gICAgICAgIHZvaWQgc2V0TWF0cml4KEFmZmluZVRyYW5zZm9ybSk7Cisv
LyAgICAgICAgdm9pZCBzZXRNYXRyaXgoY29uc3QgVHJhbnNmb3JtTWF0cml4Jik7CisgICAgICAg
IHZvaWQgc2V0TWF0cml4KFRyYW5zZm9ybU1hdHJpeCk7CiAKICAgICAgICAgdm9pZCBzZXRUcmFu
c2xhdGUoZmxvYXQgdHgsIGZsb2F0IHR5KTsKICAgICAgICAgdm9pZCBzZXRTY2FsZShmbG9hdCBz
eCwgZmxvYXQgc3kpOwpAQCAtNzgsNyArNzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIFNWR1RyYW5zZm9ybVR5cGUgbV90eXBlOwogICAgICAgICBmbG9hdCBtX2FuZ2xlOwogICAg
ICAgICBGbG9hdFBvaW50IG1fY2VudGVyOwotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9tYXRy
aXg7CisgICAgICAgIFRyYW5zZm9ybU1hdHJpeCBtX21hdHJpeDsKICAgICB9OwogCiAgICAgaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdUcmFuc2Zvcm0mIGEsIGNvbnN0IFNWR1RyYW5z
Zm9ybSYgYikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybURpc3RhbmNlLmNw
cCBiL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybURpc3RhbmNlLmNwcAppbmRleCA1OWMyNGE1Li4z
MGYzOGExIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAK
KysrIGIvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwCkBAIC0zOCw3ICszOCw3
IEBAIFNWR1RyYW5zZm9ybURpc3RhbmNlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZSgpCiB7CiB9CiAK
LVNWR1RyYW5zZm9ybURpc3RhbmNlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZShTVkdUcmFuc2Zvcm06
OlNWR1RyYW5zZm9ybVR5cGUgdHlwZSwgZmxvYXQgYW5nbGUsIGZsb2F0IGN4LCBmbG9hdCBjeSwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCitTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6
U1ZHVHJhbnNmb3JtRGlzdGFuY2UoU1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zvcm1UeXBlIHR5cGUs
IGZsb2F0IGFuZ2xlLCBmbG9hdCBjeCwgZmxvYXQgY3ksIGNvbnN0IFRyYW5zZm9ybU1hdHJpeCYg
dHJhbnNmb3JtKQogICAgIDogbV90eXBlKHR5cGUpCiAgICAgLCBtX2FuZ2xlKGFuZ2xlKQogICAg
ICwgbV9jeChjeCkKQEAgLTk1LDIwICs5NSwyMCBAQCBTVkdUcmFuc2Zvcm1EaXN0YW5jZSBTVkdU
cmFuc2Zvcm1EaXN0YW5jZTo6c2NhbGVkRGlzdGFuY2UoZmxvYXQgc2NhbGVGYWN0b3IpIGNvbgog
ICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1VOS05PV046CiAgICAgICAgIHJl
dHVybiBTVkdUcmFuc2Zvcm1EaXN0YW5jZSgpOwogICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdf
VFJBTlNGT1JNX1JPVEFURToKLSAgICAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybURpc3RhbmNlKG1f
dHlwZSwgbV9hbmdsZSAqIHNjYWxlRmFjdG9yLCBtX2N4ICogc2NhbGVGYWN0b3IsIG1fY3kgKiBz
Y2FsZUZhY3RvciwgQWZmaW5lVHJhbnNmb3JtKCkpOworICAgICAgICByZXR1cm4gU1ZHVHJhbnNm
b3JtRGlzdGFuY2UobV90eXBlLCBtX2FuZ2xlICogc2NhbGVGYWN0b3IsIG1fY3ggKiBzY2FsZUZh
Y3RvciwgbV9jeSAqIHNjYWxlRmFjdG9yLCBUcmFuc2Zvcm1NYXRyaXgoKSk7CiAgICAgY2FzZSBT
VkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fU0NBTEU6CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm06
OlNWR19UUkFOU0ZPUk1fTUFUUklYOgotICAgICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtRGlzdGFu
Y2UobV90eXBlLCBtX2FuZ2xlICogc2NhbGVGYWN0b3IsIG1fY3ggKiBzY2FsZUZhY3RvciwgbV9j
eSAqIHNjYWxlRmFjdG9yLCBBZmZpbmVUcmFuc2Zvcm0obV90cmFuc2Zvcm0pLnNjYWxlKHNjYWxl
RmFjdG9yKSk7CisgICAgICAgIHJldHVybiBTVkdUcmFuc2Zvcm1EaXN0YW5jZShtX3R5cGUsIG1f
YW5nbGUgKiBzY2FsZUZhY3RvciwgbV9jeCAqIHNjYWxlRmFjdG9yLCBtX2N5ICogc2NhbGVGYWN0
b3IsIFRyYW5zZm9ybU1hdHJpeChtX3RyYW5zZm9ybSkuc2NhbGUoc2NhbGVGYWN0b3IpKTsKICAg
ICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9UUkFOU0xBVEU6CiAgICAgewotICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0gbmV3VHJhbnNmb3JtKG1fdHJhbnNmb3JtKTsKKyAgICAgICAg
VHJhbnNmb3JtTWF0cml4IG5ld1RyYW5zZm9ybShtX3RyYW5zZm9ybSk7CiAgICAgICAgIG5ld1Ry
YW5zZm9ybS5zZXRFKG1fdHJhbnNmb3JtLmUoKSAqIHNjYWxlRmFjdG9yKTsKICAgICAgICAgbmV3
VHJhbnNmb3JtLnNldEYobV90cmFuc2Zvcm0uZigpICogc2NhbGVGYWN0b3IpOwogICAgICAgICBy
ZXR1cm4gU1ZHVHJhbnNmb3JtRGlzdGFuY2UobV90eXBlLCAwLCAwLCAwLCBuZXdUcmFuc2Zvcm0p
OwogICAgIH0KICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9TS0VXWDoKICAg
ICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9TS0VXWToKLSAgICAgICAgcmV0dXJu
IFNWR1RyYW5zZm9ybURpc3RhbmNlKG1fdHlwZSwgbV9hbmdsZSAqIHNjYWxlRmFjdG9yLCBtX2N4
ICogc2NhbGVGYWN0b3IsIG1fY3kgKiBzY2FsZUZhY3RvciwgQWZmaW5lVHJhbnNmb3JtKCkpOwor
ICAgICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtRGlzdGFuY2UobV90eXBlLCBtX2FuZ2xlICogc2Nh
bGVGYWN0b3IsIG1fY3ggKiBzY2FsZUZhY3RvciwgbV9jeSAqIHNjYWxlRmFjdG9yLCBUcmFuc2Zv
cm1NYXRyaXgoKSk7CiAgICAgfQogICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MjQ5LDcgKzI0OSw3IEBAIFNWR1RyYW5zZm9ybSBTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6YWRkVG9T
VkdUcmFuc2Zvcm0oY29uc3QgU1ZHVHJhbnNmb3JtJiB0cmFuc2ZvCiAKIGJvb2wgU1ZHVHJhbnNm
b3JtRGlzdGFuY2U6OmlzWmVybygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX3RyYW5zZm9ybSA9
PSBBZmZpbmVUcmFuc2Zvcm0oKSAmJiBtX2FuZ2xlID09IDApOworICAgIHJldHVybiAobV90cmFu
c2Zvcm0gPT0gVHJhbnNmb3JtTWF0cml4KCkgJiYgbV9hbmdsZSA9PSAwKTsKIH0KIAogZmxvYXQg
U1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmRpc3RhbmNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybURpc3RhbmNlLmggYi9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1E
aXN0YW5jZS5oCmluZGV4IGIzNjYzYWQuLjE1Yjk2YTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybURpc3RhbmNlLmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtRGlz
dGFuY2UuaApAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi0g
ICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworICAgIGNsYXNzIFRyYW5zZm9ybU1hdHJpeDsKICAg
ICAgICAgCiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtRGlzdGFuY2UgewogICAgIHB1YmxpYzoKQEAg
LTQ0LDEzICs0NCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBm
bG9hdCBkaXN0YW5jZSgpIGNvbnN0OwogICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR1RyYW5zZm9y
bURpc3RhbmNlKFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtVHlwZSwgZmxvYXQgYW5nbGUsIGZs
b2F0IGN4LCBmbG9hdCBjeSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgICAgIFNWR1Ry
YW5zZm9ybURpc3RhbmNlKFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtVHlwZSwgZmxvYXQgYW5n
bGUsIGZsb2F0IGN4LCBmbG9hdCBjeSwgY29uc3QgVHJhbnNmb3JtTWF0cml4Jik7CiAgICAgICAg
ICAgICAKICAgICAgICAgU1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zvcm1UeXBlIG1fdHlwZTsKICAg
ICAgICAgZmxvYXQgbV9hbmdsZTsKICAgICAgICAgZmxvYXQgbV9jeDsKICAgICAgICAgZmxvYXQg
bV9jeTsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fdHJhbnNmb3JtOyAvLyBmb3Igc3Rvcmlu
ZyBzY2FsZSwgdHJhbnNsYXRpb24gb3IgbWF0cml4IHRyYW5zZm9ybXMKKyAgICAgICAgVHJhbnNm
b3JtTWF0cml4IG1fdHJhbnNmb3JtOyAvLyBmb3Igc3RvcmluZyBzY2FsZSwgdHJhbnNsYXRpb24g
b3IgbWF0cml4IHRyYW5zZm9ybXMKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3Bw
CmluZGV4IDk4MDA5MjIuLmQ3Mjc3MDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1RyYW5z
Zm9ybUxpc3QuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuY3BwCkBAIC0y
Myw3ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoU1ZHKQotI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybU1hdHJpeC5oIgog
I2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdUcmFuc2Zvcm1EaXN0YW5jZS5oIgpAQCAtNDAsNyArNDAsNyBAQCBTVkdUcmFu
c2Zvcm1MaXN0Ojp+U1ZHVHJhbnNmb3JtTGlzdCgpCiB7CiB9CiAKLVNWR1RyYW5zZm9ybSBTVkdU
cmFuc2Zvcm1MaXN0OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgbWF0cml4KSBjb25zdAorU1ZHVHJhbnNmb3JtIFNWR1RyYW5zZm9ybUxpc3Q6OmNy
ZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3QgVHJhbnNmb3JtTWF0cml4JiBtYXRyaXgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZy
b21NYXRyaXgobWF0cml4KTsKIH0KQEAgLTU3LDcgKzU3LDcgQEAgU1ZHVHJhbnNmb3JtIFNWR1Ry
YW5zZm9ybUxpc3Q6OmNvbmNhdGVuYXRlKCkgY29uc3QKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIFNWR1RyYW5zZm9ybSgpOwogICAgICAgICAKLSAgICBBZmZpbmVUcmFuc2Zvcm0g
bWF0cml4OworICAgIFRyYW5zZm9ybU1hdHJpeCBtYXRyaXg7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKICAg
ICAgICAgbWF0cml4ID0gZ2V0SXRlbShpLCBlYykubWF0cml4KCkgKiBtYXRyaXg7CkBAIC04Nyw3
ICs4Nyw3IEBAIFN0cmluZyBTVkdUcmFuc2Zvcm1MaXN0Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QK
ICAgICAvLyBUT0RPOiBXZSBtYXkgd2FudCB0byBidWlsZCBhIHJlYWwgdHJhbnNmb3JtIHN0cmlu
ZywgaW5zdGVhZCBvZiBjb25jYXR0aW5nIHRvIGEgbWF0cml4KC4uLikuCiAgICAgU1ZHVHJhbnNm
b3JtIHRyYW5zZm9ybSA9IGNvbmNhdGVuYXRlKCk7CiAgICAgaWYgKHRyYW5zZm9ybS50eXBlKCkg
PT0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX01BVFJJWCkgewotICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gbWF0cml4ID0gdHJhbnNmb3JtLm1hdHJpeCgpOworICAgICAgICBUcmFuc2Zvcm1N
YXRyaXggbWF0cml4ID0gdHJhbnNmb3JtLm1hdHJpeCgpOwogICAgICAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIm1hdHJpeCglZiAlZiAlZiAlZiAlZiAlZikiLCBtYXRyaXguYSgpLCBtYXRyaXgu
YigpLCBtYXRyaXguYygpLCBtYXRyaXguZCgpLCBtYXRyaXguZSgpLCBtYXRyaXguZigpKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaCBiL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAppbmRleCBhNDA1YzU4Li40NzE0OTgyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZH
VHJhbnNmb3JtTGlzdC5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHVHJhbnNmb3JtTGlzdD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdUcmFu
c2Zvcm1MaXN0KGF0dHJpYnV0ZU5hbWUpKTsgfQogICAgICAgICB2aXJ0dWFsIH5TVkdUcmFuc2Zv
cm1MaXN0KCk7CiAKLSAgICAgICAgU1ZHVHJhbnNmb3JtIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21N
YXRyaXgoY29uc3QgQWZmaW5lVHJhbnNmb3JtJikgY29uc3Q7CisgICAgICAgIFNWR1RyYW5zZm9y
bSBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNvbnN0IFRyYW5zZm9ybU1hdHJpeCYpIGNv
bnN0OwogICAgICAgICBTVkdUcmFuc2Zvcm0gY29uc29saWRhdGUoKTsKIAogICAgICAgICAvLyBJ
bnRlcm5hbCB1c2Ugb25seQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJs
ZS5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAppbmRleCA4NjE0ZDU1Li5j
MThkYmYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAorKysg
Yi9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2lm
IEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgogCi0jaW5jbHVkZSAi
QWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVk
ZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtNDQsMTUgKzQ0LDE1IEBAIFNWR1RyYW5zZm9ybWFibGU6
On5TVkdUcmFuc2Zvcm1hYmxlKCkKIHsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIFNWR1RyYW5zZm9y
bWFibGU6OmdldENUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KSBjb25zdAorVHJhbnNmb3Jt
TWF0cml4IFNWR1RyYW5zZm9ybWFibGU6OmdldENUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50
KSBjb25zdAogewotICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBTVkdMb2NhdGFibGU6OmdldENU
TShlbGVtZW50KTsKKyAgICBUcmFuc2Zvcm1NYXRyaXggY3RtID0gU1ZHTG9jYXRhYmxlOjpnZXRD
VE0oZWxlbWVudCk7CiAgICAgcmV0dXJuIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSAqIGN0bTsK
IH0KIAotQWZmaW5lVHJhbnNmb3JtIFNWR1RyYW5zZm9ybWFibGU6OmdldFNjcmVlbkNUTShjb25z
dCBTVkdFbGVtZW50KiBlbGVtZW50KSBjb25zdAorVHJhbnNmb3JtTWF0cml4IFNWR1RyYW5zZm9y
bWFibGU6OmdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewot
ICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBTVkdMb2NhdGFibGU6OmdldFNjcmVlbkNUTShlbGVt
ZW50KTsKKyAgICBUcmFuc2Zvcm1NYXRyaXggY3RtID0gU1ZHTG9jYXRhYmxlOjpnZXRTY3JlZW5D
VE0oZWxlbWVudCk7CiAgICAgcmV0dXJuIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSAqIGN0bTsK
IH0KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIGJvb2wgU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFu
c2Zvcm1WYWx1ZSh1bnNpZ25lZCB0eXBlLCBjb25zdCBVQ2hhciomIHB0ciwgY29uCiAgICAgICAg
ICAgICAgICAgICB0LnNldFJvdGF0ZSh2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgdmFsdWVzWzJdKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5T
Rk9STV9NQVRSSVg6Ci0gICAgICAgICAgICB0LnNldE1hdHJpeChBZmZpbmVUcmFuc2Zvcm0odmFs
dWVzWzBdLCB2YWx1ZXNbMV0sIHZhbHVlc1syXSwgdmFsdWVzWzNdLCB2YWx1ZXNbNF0sIHZhbHVl
c1s1XSkpOworICAgICAgICAgICAgdC5zZXRNYXRyaXgoVHJhbnNmb3JtTWF0cml4KHZhbHVlc1sw
XSwgdmFsdWVzWzFdLCB2YWx1ZXNbMl0sIHZhbHVlc1szXSwgdmFsdWVzWzRdLCB2YWx1ZXNbNV0p
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtYWJsZS5oIGIvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCmluZGV4
IGRlODA2YTMuLjIwZWVlYWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFi
bGUuaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKQEAgLTMwLDcgKzMwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotICAgIGNsYXNzIEFmZmluZVRyYW5zZm9y
bTsKKyAgICBjbGFzcyBUcmFuc2Zvcm1NYXRyaXg7CiAgICAgY2xhc3MgQXRvbWljU3RyaW5nOwog
ICAgIGNsYXNzIFNWR1RyYW5zZm9ybTsKICAgICBjbGFzcyBRdWFsaWZpZWROYW1lOwpAQCAtNDQs
MTAgKzQ0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgcGFy
c2VUcmFuc2Zvcm1BdHRyaWJ1dGUoU1ZHVHJhbnNmb3JtTGlzdCosIGNvbnN0IFVDaGFyKiYgcHRy
LCBjb25zdCBVQ2hhciogZW5kKTsKICAgICAgICAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1W
YWx1ZSh1bnNpZ25lZCB0eXBlLCBjb25zdCBVQ2hhciomIHB0ciwgY29uc3QgVUNoYXIqIGVuZCwg
U1ZHVHJhbnNmb3JtJik7CiAgICAgICAgIAotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RN
KGNvbnN0IFNWR0VsZW1lbnQqKSBjb25zdDsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGdldFNj
cmVlbkNUTShjb25zdCBTVkdFbGVtZW50KikgY29uc3Q7CisgICAgICAgIFRyYW5zZm9ybU1hdHJp
eCBnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCopIGNvbnN0OworICAgICAgICBUcmFuc2Zvcm1NYXRy
aXggZ2V0U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqKSBjb25zdDsKICAgICAgICAgCi0gICAg
ICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25z
dCA9IDA7CisgICAgICAgIHZpcnR1YWwgVHJhbnNmb3JtTWF0cml4IGFuaW1hdGVkTG9jYWxUcmFu
c2Zvcm0oKSBjb25zdCA9IDA7CiAKICAgICAgICAgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHAgYi9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQ
YWludFNlcnZlckdyYWRpZW50LmNwcAppbmRleCAxM2E1OTY3Li4wZWFmOGRjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlckdyYWRpZW50LmNwcAorKysgYi9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlckdyYWRpZW50LmNwcApAQCAtMTIyLDEy
ICsxMjIsMTIgQEAgdm9pZCBTVkdQYWludFNlcnZlckdyYWRpZW50OjpzZXRCb3VuZGluZ0JveE1v
ZGUoYm9vbCBtb2RlKQogICAgIG1fYm91bmRpbmdCb3hNb2RlID0gbW9kZTsKIH0KIAotQWZmaW5l
VHJhbnNmb3JtIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OmdyYWRpZW50VHJhbnNmb3JtKCkgY29u
c3QKK1RyYW5zZm9ybU1hdHJpeCBTVkdQYWludFNlcnZlckdyYWRpZW50OjpncmFkaWVudFRyYW5z
Zm9ybSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZ3JhZGllbnRUcmFuc2Zvcm07CiB9CiAKLXZv
aWQgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6c2V0R3JhZGllbnRUcmFuc2Zvcm0oY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit2b2lkIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnNl
dEdyYWRpZW50VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybU1hdHJpeCYgdHJhbnNmb3JtKQogewog
ICAgIG1fZ3JhZGllbnRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CiB9CkBAIC0xODEsNyArMTgxLDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGNsaXBUb1RleHRNYXNrKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwKICAgICBGbG9hdFJlY3QgbWFza0JCb3ggPSBjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+
KGZpbmRUZXh0Um9vdE9iamVjdChvYmplY3QpKS0+cmVsYXRpdmVCQm94KGZhbHNlKTsKIAogICAg
IC8vIEZpeHVwIHRyYW5zZm9ybWF0aW9ucyB0byBiZSBhYmxlIHRvIGNsaXAgdG8gbWFzawotICAg
IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBvYmplY3QtPmFic29sdXRlVHJhbnNmb3JtKCk7
CisgICAgVHJhbnNmb3JtTWF0cml4IHRyYW5zZm9ybSA9IG9iamVjdC0+YWJzb2x1dGVUcmFuc2Zv
cm0oKTsKICAgICBGbG9hdFJlY3QgdGV4dEJvdW5kYXJ5ID0gdHJhbnNmb3JtLm1hcFJlY3QobWFz
a0JCb3gpOwogCiAgICAgSW50U2l6ZSBtYXNrU2l6ZShscm91bmRmKHRleHRCb3VuZGFyeS53aWR0
aCgpKSwgbHJvdW5kZih0ZXh0Qm91bmRhcnkuaGVpZ2h0KCkpKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVyR3JhZGllbnQuaCBiL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR1BhaW50U2VydmVyR3JhZGllbnQuaAppbmRleCBiNmJjYmZmLi4xMzc0YmE4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlckdyYWRpZW50LmgK
KysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudC5oCkBAIC0y
OSw3ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIK
ICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAt
NjEsOCArNjEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgYm91bmRpbmdC
b3hNb2RlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0Qm91bmRpbmdCb3hNb2RlKGJvb2wgbW9k
ZSA9IHRydWUpOwogCi0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBncmFkaWVudFRyYW5zZm9ybSgp
IGNvbnN0OwotICAgICAgICB2b2lkIHNldEdyYWRpZW50VHJhbnNmb3JtKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYpOworICAgICAgICBUcmFuc2Zvcm1NYXRyaXggZ3JhZGllbnRUcmFuc2Zvcm0oKSBj
b25zdDsKKyAgICAgICAgdm9pZCBzZXRHcmFkaWVudFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1N
YXRyaXgmKTsKIAogICAgICAgICB2b2lkIHNldEdyYWRpZW50U3RvcHMoY29uc3QgVmVjdG9yPFNW
R0dyYWRpZW50U3RvcD4mIHN0b3BzKSB7IG1fc3RvcHMgPSBzdG9wczsgfQogICAgICAgICBjb25z
dCBWZWN0b3I8U1ZHR3JhZGllbnRTdG9wPiYgZ3JhZGllbnRTdG9wcygpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcHM7IH0KQEAgLTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBSZWZQdHI8R3JhZGllbnQ+IG1fZ3JhZGllbnQ7CiAgICAgICAgIEdyYWRpZW50U3ByZWFkTWV0
aG9kIG1fc3ByZWFkTWV0aG9kOwogICAgICAgICBib29sIG1fYm91bmRpbmdCb3hNb2RlOwotICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9ncmFkaWVudFRyYW5zZm9ybTsKKyAgICAgICAgVHJhbnNm
b3JtTWF0cml4IG1fZ3JhZGllbnRUcmFuc2Zvcm07CiAgICAgICAgIGNvbnN0IFNWR0dyYWRpZW50
RWxlbWVudCogbV9vd25lckVsZW1lbnQ7CiAKICNpZiBQTEFURk9STShDRykKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVyUGF0dGVybi5jcHAgYi9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlclBhdHRlcm4uY3BwCmluZGV4IGMwZTViMDcuLjE1
MTYzMjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVyUGF0
dGVybi5jcHAKKysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJu
LmNwcApAQCAtNzQsMTIgKzc0LDEyIEBAIHZvaWQgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXRU
aWxlKGF1dG9fcHRyPEltYWdlQnVmZmVyPiB0aWxlKQogICAgIG1fdGlsZS5zZXQodGlsZS5yZWxl
YXNlKCkpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpwYXR0
ZXJuVHJhbnNmb3JtKCkgY29uc3QKK1RyYW5zZm9ybU1hdHJpeCBTVkdQYWludFNlcnZlclBhdHRl
cm46OnBhdHRlcm5UcmFuc2Zvcm0oKSBjb25zdAogewogICAgIHJldHVybiBtX3BhdHRlcm5UcmFu
c2Zvcm07CiB9CiAKLXZvaWQgU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXRQYXR0ZXJuVHJhbnNm
b3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQordm9pZCBTVkdQYWludFNlcnZl
clBhdHRlcm46OnNldFBhdHRlcm5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtTWF0cml4JiB0cmFu
c2Zvcm0pCiB7CiAgICAgbV9wYXR0ZXJuVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmggYi9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlclBhdHRlcm4uaAppbmRleCA2NWIyOGU5Li45
YTY2ZmMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlclBh
dHRlcm4uaAorKysgYi9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlclBhdHRlcm4u
aApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykKIAotI2luY2x1ZGUgIkFmZmlu
ZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybU1hdHJpeC5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIlNWR1BhaW50U2VydmVyLmgiCiAKQEAgLTU3LDggKzU3LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBJbWFnZUJ1ZmZlciogdGlsZSgpIGNvbnN0
OwogICAgICAgICB2b2lkIHNldFRpbGUoc3RkOjphdXRvX3B0cjxJbWFnZUJ1ZmZlcj4pOwogCi0g
ICAgICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtKCkgY29uc3Q7Ci0gICAgICAg
IHZvaWQgc2V0UGF0dGVyblRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICAg
ICAgVHJhbnNmb3JtTWF0cml4IHBhdHRlcm5UcmFuc2Zvcm0oKSBjb25zdDsKKyAgICAgICAgdm9p
ZCBzZXRQYXR0ZXJuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybU1hdHJpeCYpOwogCiAgICAgICAg
IHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikg
Y29uc3Q7CiAKQEAgLTcyLDcgKzcyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAK
ICAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX3RpbGU7CiAgICAgICAgIGNvbnN0IFNWR1Bh
dHRlcm5FbGVtZW50KiBtX293bmVyRWxlbWVudDsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1f
cGF0dGVyblRyYW5zZm9ybTsKKyAgICAgICAgVHJhbnNmb3JtTWF0cml4IG1fcGF0dGVyblRyYW5z
Zm9ybTsKICAgICAgICAgRmxvYXRSZWN0IG1fcGF0dGVybkJvdW5kYXJpZXM7CiAKICNpZiBQTEFU
Rk9STShDRykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlQ2xp
cHBlci5jcHAgYi9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmlu
ZGV4IGRjOWZkZTIuLmI3YTk0MjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVk
ZSAiU1ZHUmVzb3VyY2VDbGlwcGVyLmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
KyNpbmNsdWRlICJUcmFuc2Zvcm1NYXRyaXguaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAKQEAgLTcwLDcgKzcwLDcgQEAg
dm9pZCBTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgYm8KICAgICAgICAgUGF0aCBjbGlwUGF0aCA9IGNsaXBEYXRh
LnBhdGg7CiAKICAgICAgICAgaWYgKGNsaXBEYXRhLmJib3hVbml0cykgewotICAgICAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICAgICAgICAgIFRyYW5zZm9ybU1hdHJpeCB0
cmFuc2Zvcm07CiAgICAgICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGJvdW5kaW5nQm94Lngo
KSwgYm91bmRpbmdCb3gueSgpKTsKICAgICAgICAgICAgIHRyYW5zZm9ybS5zY2FsZShib3VuZGlu
Z0JveC53aWR0aCgpLCBib3VuZGluZ0JveC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBjbGlwUGF0
aC50cmFuc2Zvcm0odHJhbnNmb3JtKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR1Jlc291cmNlTWFya2VyLmNwcCBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNl
TWFya2VyLmNwcAppbmRleCAyNGMxY2RmLi42YjU2OGE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdSZXNvdXJjZU1hcmtlci5jcHAKKysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNW
RykKICNpbmNsdWRlICJTVkdSZXNvdXJjZU1hcmtlci5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaCIKICNp
bmNsdWRlICJUZXh0U3RyZWFtLmgiCkBAIC03NCwxMyArNzQsMTMgQEAgdm9pZCBTVkdSZXNvdXJj
ZU1hcmtlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgZG8KIAogICAgIGN1cnJlbnRseURyYXdpbmdNYXJrZXJzLmFkZCh0aGlzKTsKIAotICAg
IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgVHJhbnNmb3JtTWF0cml4IHRyYW5zZm9y
bTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHgsIHkpOwogICAgIHRyYW5zZm9ybS5yb3RhdGUo
bV9hbmdsZSA+IC0xID8gbV9hbmdsZSA6IGFuZ2xlKTsKIAogICAgIC8vIHJlZlggYW5kIHJlZlkg
YXJlIGdpdmVuIGluIGNvb3JkaW5hdGVzIHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydCBlc3RhYmxp
c2hlZCBieSB0aGUgbWFya2VyLCB5ZXQgdGhleSBhZmZlY3QKICAgICAvLyB0aGUgdHJhbnNsYXRp
b24gcGVyZm9ybWVkIG9uIHRoZSB2aWV3cG9ydCBpdHNlbGYuCi0gICAgQWZmaW5lVHJhbnNmb3Jt
IHZpZXdwb3J0VHJhbnNmb3JtOworICAgIFRyYW5zZm9ybU1hdHJpeCB2aWV3cG9ydFRyYW5zZm9y
bTsKICAgICBpZiAobV91c2VTdHJva2VXaWR0aCkKICAgICAgICAgdmlld3BvcnRUcmFuc2Zvcm0u
c2NhbGUoc3Ryb2tlV2lkdGgsIHN0cm9rZVdpZHRoKTsKICAgICB2aWV3cG9ydFRyYW5zZm9ybSAq
PSBtX21hcmtlci0+dmlld3BvcnRUcmFuc2Zvcm0oKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2NnL1NWR1Jlc291cmNlRmlsdGVyQ2cubW0gYi9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9jZy9TVkdSZXNvdXJjZUZpbHRlckNnLm1tCmluZGV4IGYzZGM4MTkuLjVhN2U3MzYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1Jlc291cmNlRmlsdGVyQ2cubW0KKysr
IGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbQpAQCAtMjks
NyArMjksNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNs
dWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
CisjaW5jbHVkZSAiVHJhbnNmb3JtTWF0cml4LmgiCiAjaW5jbHVkZSAiRm91bmRhdGlvbkV4dHJh
cy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCg==
</data>
<flag name="review"
          id="12355"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26446</attachid>
            <date>2009-01-05 16:39:50 -0800</date>
            <delta_ts>2009-01-05 16:57:26 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>affinerename.patch</filename>
            <type>text/plain</type>
            <size>237832</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTYyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDUzIEBACisyMDA5LTAxLTA1ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5h
bWUgQWZmaW5lVHJhbnNmb3JtIHRvIFRyYW5zZm9ybU1hdHJpeCBpbgorICAgICAgICBwcmVwYXJh
dGlvbiBmb3IgZnV0dXJlIGVuaGFuY2VtZW50cyAobm9uLWFmZmluZSBtYXRyaWNlcykKKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NDMKKworICAg
ICAgICBXQVJOSU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNv
cmUuc2NvbnM6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNv
cmVTb3VyY2VzLmJrbDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR01hdHJpeEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR01hdHJpeDo6bXVsdGlwbHkpOgorICAgICAgICAo
V2ViQ29yZTo6SlNTVkdNYXRyaXg6OmludmVyc2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdN
YXRyaXg6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR01hdHJpeDo6c2NhbGUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdNYXRyaXg6OnNjYWxlTm9uVW5pZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1NWR01hdHJpeDo6cm90YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
U1ZHTWF0cml4Ojpyb3RhdGVGcm9tVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTWF0
cml4OjpmbGlwWCk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR01hdHJpeDo6ZmxpcFkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTVkdNYXRyaXg6OnNrZXdYKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
U1ZHTWF0cml4Ojpza2V3WSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTVkdQT0RUeXBlV3Jh
cHBlci5oOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZWRUcmFuc2Zv
cm0pOgorICAgICAgICAqIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2NhbGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyb3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0cmFuc2xhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0cmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6d2lsbERyYXcpOgorICAgICAg
ICAqIGh0bWwvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6
YmFzZVRyYW5zZm9ybSk6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAg
ICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZUNHV2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdSZWN0SW50b0NvbnRleHQpOgorICAgICAgICAqIHBhZ2Uvd2luL0Zy
YW1lV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmxvYXRQb2ludDo6bWF0cml4VHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFBvaW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJh
dGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6YmFzZVRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9BZmZpbmVUcmFuc2Zvcm1DYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6VHJhbnNmb3JtYXRpb25NYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldE1hdHJpeCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4Ojppc0lkZW50aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4OjphKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
OjpzZXRBKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpiKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRCKToKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpjKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpzZXRDKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4OjpkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRE
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjplKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRFKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpmKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4OjpzZXRGKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2NhbGUp
OgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dHJhbnNsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzaGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZGV0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4OjppbnZlcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4OjpvcGVyYXRvciBjYWlyb19tYXRyaXhfdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3I9PSApOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXg6Om9wZXJhdG9yKj0gKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4OjpvcGVyYXRvciogKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmdldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZp
bGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
Q2Fpcm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0
ZTo6Y29uY2F0Q1RNKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNh
aXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhdGg6OnRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGF0dGVybkNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRm
b3JtUGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQWZmaW5lVHJhbnNm
b3JtQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
OjpzZXRNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJZGVudGl0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YSk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0QSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6Yik6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6c2V0Qik6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6Yyk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0Qyk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6c2V0RCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0
RSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6Zik6CisgICAgICAg
IChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0Rik6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXg6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4Ojpyb3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6
OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2hl
YXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmRldCk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aW52ZXJzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3IgUGxhdGZvcm1UcmFuc2Zvcm1h
dGlvbk1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3Bl
cmF0b3I9PSApOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om9wZXJh
dG9yKj0gKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRv
ciogKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmdldENUTSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6Y29uY2F0Q1RNKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUGF0aENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OnRyYW5zZm9ybSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvQWZmaW5lVHJhbnNmb3JtUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXg6OlRyYW5zZm9ybWF0aW9uTWF0cml4KToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6bWFwUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6aXNJZGVudGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6YSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0QSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6Yik6CisgICAgICAgIChXZWJD
b3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0Qik6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6Yyk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6c2V0Qyk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0RCk6CisgICAgICAg
IChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0RSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6Zik6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
c2V0Rik6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Ojpyb3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2hlYXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmRldCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6aW52ZXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3Bl
cmF0b3IgUU1hdHJpeCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3Bl
cmF0b3IqPSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0
b3IqKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmdldENUTSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
Y29uY2F0Q1RNKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L1BhdGhRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjp0cmFuc2Zvcm0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdHRlcm5RdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFu
c2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklkZW50aXR5VHJhbnNmb3JtT3Bl
cmF0aW9uOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9N
YXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0cml4VHJh
bnNmb3JtT3BlcmF0aW9uOjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1h
dHJpeFRyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2tld1RyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmg6
CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25zOjphcHBseSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6
IENvcGllZCBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVU
cmFuc2Zvcm0uY3BwLgorICAgICAgICAoV2ViQ29yZTo6YWZmaW5lVHJhbnNmb3JtRGVjb21wb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OmFmZmluZVRyYW5zZm9ybUNvbXBvc2UpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OmlzSW52ZXJ0aWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpzY2FsZU5vblVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZUZyb21WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg6OmZsaXBYKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4OjpmbGlwWSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6c2tldyk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2tl
d1gpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNrZXdZKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1ha2VNYXBCZXR3ZWVuUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4OjptYXBRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4OjpibGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oOiBDb3BpZWQgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmguCisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3IhPSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YXBwbHkpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0dESUdseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFBsYXRm
b3JtUHJpdmF0ZTo6Y29uY2F0Q1RNKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjb25jYXRDVE0pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3d4L0FmZmluZVRyYW5zZm9ybVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aW52ZXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6c2V0TWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4OjptYXApOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXg6Om1hcFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNj
YWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZXNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cm90YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0cmFuc2xhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6OnNoZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
YW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvcio9KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvcj09ICk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6b3BlcmF0b3IqICk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6ZGV0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
OjpvcGVyYXRvciB3eEdyYXBoaWNzTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4OjphKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
OjpzZXRBKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpiKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRCKToKKyAgICAgICAgKFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpjKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpzZXRDKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4OjpkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRE
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjplKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRFKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpmKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4OjpzZXRGKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGlj
c0NvbnRleHRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmdldENU
TSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3d4L1BhdGhXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjp0cmFuc2Zvcm0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYWludE1veldpZGdldCk6CisgICAgICAgICogcGxhdGZvcm0vd3gvVGVtcG9yYXJ5TGlua1N0
dWJzLmNwcDoKKyAgICAgICAgKEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRm9y
ZWlnbk9iamVjdDo6dHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZv
cmVpZ25PYmplY3Q6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6OmNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZvcmVpZ25PYmplY3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRm9yZWlnbk9iamVjdDo6bG9jYWxUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zcGFyZW5jeUNsaXBCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnRyYW5zZm9ybSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6YWJzb2x1dGVUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJQYXRoOjpsb2NhbFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQ
YXRoOjpjYWxjdWxhdGVMb2NhbFRyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clBhdGguaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6bG9jYWxUcmFuc2Zvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjp2aWV3cG9ydFRyYW5zZm9ybSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjphYnNvbHV0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OmxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdl
OjpjYWxjdWxhdGVMb2NhbFRyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNW
R0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bG9jYWxUcmFuc2Zv
cm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6OmNvbXB1dGVBYnNvbHV0ZVJlY3RGb3JS
YW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6YXBwbHlDb250ZW50VHJhbnNmb3Jtcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjphYnNvbHV0ZVRyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSb290Ojpsb2NhbFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSb290Ojpub2RlQXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR1Jvb3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpjYWxjdWxhdGVMb2NhbFRyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpub2RlQXRQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1RleHQ6OmFic29sdXRlUXVhZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTVkdUZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpsb2NhbFRyYW5z
Zm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5l
cjo6Y2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lcjo6YXBwbHlDb250ZW50VHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6dmlld3BvcnRUcmFuc2Zvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmFic29sdXRlVHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpub2RlQXRQ
b2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1NWR0NoYXJhY3RlckxheW91dEluZm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQ2hhcjo6Y2hhcmFjdGVyVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvU1ZHQ2hhcmFjdGVyTGF5b3V0SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4
dENodW5rV2Fsa2VyOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHSW5saW5l
VGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpjYWxjdWxh
dGVHbHlwaEJvdW5kYXJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveENs
b3Nlc3RDaGFyYWN0ZXJUb1Bvc2l0aW9uV2Fsa2VyOjpjaHVua1BvcnRpb25DYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94U2VsZWN0aW9uUmVjdFdhbGtlcjo6Y2h1
bmtQb3J0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6
cGFpbnRDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBh
aW50RGVjb3JhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3Bw
OgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJUcmVl
QXNUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveFBhaW50V2Fsa2VyOjpjaHVua1BvcnRpb25D
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjphcHBseVRleHRMZW5ndGhDb3JyZWN0aW9uVG9U
ZXh0Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveDo6YnVpbGRMYXlv
dXRJbmZvcm1hdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogc3ZnL0dyYWRp
ZW50QXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRBdHRyaWJ1dGVzOjpn
cmFkaWVudFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEF0dHJpYnV0ZXM6
OnNldEdyYWRpZW50VHJhbnNmb3JtKToKKyAgICAgICAgKiBzdmcvUGF0dGVybkF0dHJpYnV0ZXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm5BdHRyaWJ1dGVzOjpwYXR0ZXJuVHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm5BdHRyaWJ1dGVzOjpzZXRQYXR0ZXJuVHJhbnNm
b3JtKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFw
cGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzdXBwbGVtZW50YWxU
cmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKToKKyAgICAg
ICAgKiBzdmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0xvY2F0YWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
b2NhdGFibGU6OmdldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMb2NhdGFibGU6OmdldFNj
cmVlbkNUTSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMb2NhdGFibGU6OmdldFRyYW5zZm9ybVRv
RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0xvY2F0YWJsZS5oOgorICAgICAgICAqIHN2Zy9T
VkdNYXRyaXguaWRsOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAg
KiBzdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0pOgorICAgICAgICAqIHN2Zy9TVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvLmg6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0Vs
ZW1lbnQ6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU1ZHRWxlbWVudDo6Z2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6
OmdldFNjcmVlbkNUTSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojp2aWV3Qm94
VG9WaWV3VHJhbnNmb3JtKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0pOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50OjpnZXRDVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3VwcGxlbWVudGFsVHJh
bnNmb3JtKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0lubGluZVRleHRCb3hRdWVyeVdhbGtlcjo6Y2h1bmtQb3J0aW9uQ2FsbGJhY2spOgor
ICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0RWxlbWVudDo6Z2V0U2NyZWVuQ1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVt
ZW50OjpnZXRDVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OmFuaW1hdGVk
TG9jYWxUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dEVsZW1lbnQ6OnN1cHBs
ZW1lbnRhbFRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL1NWR1RleHRFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR1RyYW5z
Zm9ybS5jcHA6CisgICAgICAgIChTVkdUcmFuc2Zvcm06OlNWR1RyYW5zZm9ybSk6CisgICAgICAg
IChTVkdUcmFuc2Zvcm06Om1hdHJpeCk6CisgICAgICAgIChTVkdUcmFuc2Zvcm06OnNldE1hdHJp
eCk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybS5oOgorICAgICAgICAqIHN2Zy9TVkdUcmFu
c2Zvcm1EaXN0YW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1EaXN0YW5j
ZTo6U1ZHVHJhbnNmb3JtRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3Jt
RGlzdGFuY2U6OnNjYWxlZERpc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9y
bURpc3RhbmNlOjppc1plcm8pOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5o
OgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcDoKKyAgICAgICAgKFNWR1RyYW5z
Zm9ybUxpc3Q6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgpOgorICAgICAgICAoU1ZHVHJh
bnNmb3JtTGlzdDo6Y29uY2F0ZW5hdGUpOgorICAgICAgICAoU1ZHVHJhbnNmb3JtTGlzdDo6dmFs
dWVBc1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaDoKKyAgICAgICAg
KiBzdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zv
cm1hYmxlOjpnZXRDVE0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtYWJsZTo6Z2V0
U2NyZWVuQ1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJh
bnNmb3JtVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVyR3JhZGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6Z3JhZGllbnRUcmFuc2Zvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6c2V0R3JhZGllbnRUcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6Y2xpcFRvVGV4dE1hc2spOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9TVkdQYWludFNlcnZlckdyYWRpZW50Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NW
R1BhaW50U2VydmVyUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYWludFNlcnZl
clBhdHRlcm46OnBhdHRlcm5UcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGFpbnRT
ZXJ2ZXJQYXR0ZXJuOjpzZXRQYXR0ZXJuVHJhbnNmb3JtKToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jl
c291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUNsaXBwZXI6
OmFwcGx5Q2xpcCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlTWFya2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlTWFya2VyOjpkcmF3KToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvY2cvU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvcXQvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuUXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuOjpzZXR1cCk6CisKIDIwMDktMDEtMDUgIE9saXZlciBI
dW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKEJ1
aWxkIGZpeCkuCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTMzOCw4ICsxMzM4LDggQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJp
eC5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFu
c2Zlci5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
aCBcCi0JV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9y
bS5jcHAgXAotCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFu
c2Zvcm0uaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9JZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oIFwKIAlXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlv
bi5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnBybwkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3Jr
aW5nIGNvcHkpCkBAIC04ODEsNyArODgxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUGVuLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERh
dGEuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5jcHAgXAotICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcCBcCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9u
LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1P
cGVyYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxlVHJh
bnNmb3JtT3BlcmF0aW9uLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuc2NvbnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnNjb25zCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNv
cmUvV2ViQ29yZS5zY29ucwkod29ya2luZyBjb3B5KQpAQCAtNzI1LDcgKzcyNSw3IEBAIHNvdXJj
ZXNbJ3BsYXRmb3JtL3NxbCddID0gWwogICAgICdwbGF0Zm9ybS9zcWwvU1FMVmFsdWUuY3BwJwog
XQogc291cmNlc1sncGxhdGZvcm0vZ3JhcGhpY3MnXSA9IFsKLSAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvQWZmaW5lVHJhbnNmb3JtLmNwcCcsCisgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcCcsCiAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cCcsCiAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcCcsCiAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0UG9pbnQuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmts
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCShyZXZpc2lvbiAzOTYx
MCkKKysrIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC03NjUs
NyArNzY1LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bl
bi5jcHAKLSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zv
cm0uY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NDEyLDExICs1
NDEyLDExIEBACiAJCQkJCU5hbWU9InRyYW5zZm9ybXMiDQogCQkJCQk+DQogCQkJCQk8RmlsZQ0K
LQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3Jtc1xBZmZp
bmVUcmFuc2Zvcm0uY3BwIg0KKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcdHJhbnNmb3Jtc1xUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAiDQogCQkJCQkJPg0KIAkJCQkJ
PC9GaWxlPg0KIAkJCQkJPEZpbGUNCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXHRyYW5zZm9ybXNcQWZmaW5lVHJhbnNmb3JtLmgiDQorCQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zXFRyYW5zZm9ybWF0aW9uTWF0cml4Lmgi
DQogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzk2MTApCisrKyBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NTkzLDggKzU5Myw4IEBACiAJCTQ2RjlENUREMEIwRDYwMTcwMDI4RUUzNiAvKiBhbGlhc0N1cnNv
ci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
RjlENURBMEIwRDYwMTcwMDI4RUUzNiAvKiBhbGlhc0N1cnNvci5wbmcgKi87IH07CiAJCTQ2RjlE
NURFMEIwRDYwMTcwMDI4RUUzNiAvKiBub0Ryb3BDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5RDVEQjBCMEQ2MDE3MDAyOEVFMzYg
Lyogbm9Ecm9wQ3Vyc29yLnBuZyAqLzsgfTsKIAkJNDZGOUQ1REYwQjBENjAxNzAwMjhFRTM2IC8q
IHByb2dyZXNzQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZGOUQ1REMwQjBENjAxNzAwMjhFRTM2IC8qIHByb2dyZXNzQ3Vyc29yLnBu
ZyAqLzsgfTsKLQkJNDlFOTExQzMwRUY4NkQ0NzAwOUQwQ0FGIC8qIEFmZmluZVRyYW5zZm9ybS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUU5MTFC
MzBFRjg2RDQ3MDA5RDBDQUYgLyogQWZmaW5lVHJhbnNmb3JtLmNwcCAqLzsgfTsKLQkJNDlFOTEx
QzQwRUY4NkQ0NzAwOUQwQ0FGIC8qIEFmZmluZVRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFOTExQjQwRUY4NkQ0NzAwOUQwQ0FGIC8q
IEFmZmluZVRyYW5zZm9ybS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTQ5RTkxMUMzMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUU5MTFCMzBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwICovOyB9
OworCQk0OUU5MTFDNDBFRjg2RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RTkxMUI0MEVG
ODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5RTkxMUM1MEVGODZENDcwMDlEMENB
RiAvKiBJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFOTExQjUwRUY4NkQ0NzAwOUQwQ0FGIC8qIElkZW50
aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggKi87IH07CiAJCTQ5RTkxMUM2MEVGODZENDcwMDlEMENB
RiAvKiBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFOTExQjYwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJp
eFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgKi87IH07CiAJCTQ5RTkxMUM3MEVGODZENDcwMDlEMENB
RiAvKiBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RTkxMUI3MEVGODZENDcwMDlEMENBRiAvKiBNYXRyaXhU
cmFuc2Zvcm1PcGVyYXRpb24uaCAqLzsgfTsKQEAgLTU0NDgsOCArNTQ0OCw4IEBACiAJCTQ2RjlE
NURBMEIwRDYwMTcwMDI4RUUzNiAvKiBhbGlhc0N1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBhbGlhc0N1
cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjlENURCMEIwRDYwMTcw
MDI4RUUzNiAvKiBub0Ryb3BDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gbm9Ecm9wQ3Vyc29yLnBuZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGOUQ1REMwQjBENjAxNzAwMjhFRTM2IC8q
IHByb2dyZXNzQ3Vyc29yLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9IHByb2dyZXNzQ3Vyc29yLnBuZzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDlFOTExQjMwRUY4NkQ0NzAwOUQwQ0FGIC8qIEFmZmlu
ZVRyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBZmZp
bmVUcmFuc2Zvcm0uY3BwOyBwYXRoID0gdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OUU5MTFCNDBFRjg2RDQ3MDA5RDBDQUYgLyog
QWZmaW5lVHJhbnNmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFmZmlu
ZVRyYW5zZm9ybS5oOyBwYXRoID0gdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlFOTExQjMwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5z
Zm9ybWF0aW9uTWF0cml4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDsgcGF0aCA9IHRyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUU5MTFCNDBFRjg2
RDQ3MDA5RDBDQUYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gVHJhbnNmb3JtYXRpb25NYXRyaXguaDsgcGF0aCA9IHRyYW5zZm9ybXMv
VHJhbnNmb3JtYXRpb25NYXRyaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlF
OTExQjUwRUY4NkQ0NzAwOUQwQ0FGIC8qIElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9u
Lmg7IHBhdGggPSB0cmFuc2Zvcm1zL0lkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RTkxMUI2MEVGODZENDcwMDlEMENBRiAvKiBNYXRy
aXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcDsgcGF0aCA9IHRyYW5zZm9ybXMvTWF0
cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlFOTExQjcwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24u
aDsgcGF0aCA9IHRyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTk0LDggKzk1OTQsOCBAQAogCQk0OUU5MTFCMjBFRjg2
RDI3MDA5RDBDQUYgLyogdHJhbnNmb3JtcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJNDlFOTExQjMwRUY4NkQ0NzAwOUQwQ0FGIC8qIEFmZmluZVRyYW5z
Zm9ybS5jcHAgKi8sCi0JCQkJNDlFOTExQjQwRUY4NkQ0NzAwOUQwQ0FGIC8qIEFmZmluZVRyYW5z
Zm9ybS5oICovLAorCQkJCTQ5RTkxMUIzMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5jcHAgKi8sCisJCQkJNDlFOTExQjQwRUY4NkQ0NzAwOUQwQ0FGIC8qIFRyYW5zZm9y
bWF0aW9uTWF0cml4LmggKi8sCiAJCQkJNDlFOTExQjUwRUY4NkQ0NzAwOUQwQ0FGIC8qIElkZW50
aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggKi8sCiAJCQkJNDlFOTExQjYwRUY4NkQ0NzAwOUQwQ0FG
IC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgKi8sCiAJCQkJNDlFOTExQjcwRUY4NkQ0
NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oICovLApAQCAtMTQzNDAsNyAr
MTQzNDAsNyBAQAogCQkJCTI5QUFDNTFGMEU1Mzk2M0IwMDhGOUIzQiAvKiBBY2Nlc3NpYmlsaXR5
VGFibGVIZWFkZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5ODAwQzk1MEU1MjRD
OEIwMDAyNTUzNiAvKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxQzRERTY5MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBBZmZpbmVUcmFuc2Zvcm0uaCBp
biBIZWFkZXJzICovLAorCQkJCTQ5RTkxMUM0MEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEyQUIwRUZBQzkwNjAwOUQwQ0FG
IC8qIEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTIwRTZFMURBNzAwQkY2
MDg4IC8qIEFuaW1hdGlvbkJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE0MEU2RTFE
QTcwMEJGNjA4OCAvKiBBbmltYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE2
NzkxLDcgKzE2NzkxLDcgQEAKIAkJCQkyOUFBQzUyMDBFNTM5NjNCMDA4RjlCM0IgLyogQWNjZXNz
aWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5ODAw
Qzk2MEU1MjRDOEIwMDAyNTUzNiAvKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFDNERFNkUwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk0OUU5MTFDMzBFRjg2RDQ3MDA5RDBDQUYgLyogQWZmaW5l
VHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5RTkxMUMzMEVGODZENDcwMDlEMENB
RiAvKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU1
ODBCMDUzODE0MDAyQ0U2NEYgLyogQWZmaW5lVHJhbnNmb3JtQ0cuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDlFOTEyQUEwRUZBQzkwNjAwOUQwQ0FGIC8qIEFuaW1hdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMTZGRTExMTBFNkUxREE3MDBCRjYwODggLyogQW5pbWF0aW9uQmFzZS5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRyaXhDdXN0
b20uY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdNYXRy
aXhDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAjaWYgRU5BQkxF
KFNWRykKICNpbmNsdWRlICJKU1NWR01hdHJpeC5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJTVkdF
eGNlcHRpb24uaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTMxLDE2ICszMSwxNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUqIEpTU1ZHTWF0cml4OjptdWx0aXBseShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0gICAgQWZmaW5lVHJhbnNmb3Jt
IGltcCgqaW1wbCgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbXAoKmltcGwoKSk7CiAK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gc2Vjb25kTWF0cml4ID0gdG9TVkdNYXRyaXgoYXJncy5hdChl
eGVjLCAwKSk7ICAgIAotICAgIHJldHVybiB0b0pTKGV4ZWMsIEpTU1ZHU3RhdGljUE9EVHlwZVdy
YXBwZXI8QWZmaW5lVHJhbnNmb3JtPjo6Y3JlYXRlKGltcC5tdWx0aXBseShzZWNvbmRNYXRyaXgp
KS5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzZWNv
bmRNYXRyaXggPSB0b1NWR01hdHJpeChhcmdzLmF0KGV4ZWMsIDApKTsgICAgCisgICAgcmV0dXJu
IHRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD46OmNyZWF0ZShpbXAubXVsdGlwbHkoc2Vjb25kTWF0cml4KSkuZ2V0KCksIG1fY29udGV4dC5n
ZXQoKSk7CiB9CiAKIEpTVmFsdWUqIEpTU1ZHTWF0cml4OjppbnZlcnNlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYpCiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGltcCgqaW1wbCgpKTsK
LSAgICBKU0M6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBl
V3JhcHBlcjxBZmZpbmVUcmFuc2Zvcm0+OjpjcmVhdGUoaW1wLmludmVyc2UoKSkuZ2V0KCksIG1f
Y29udGV4dC5nZXQoKSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW1wKCppbXBsKCkpOwor
ICAgIEpTQzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBKU1NWR1N0YXRpY1BPRFR5cGVX
cmFwcGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6Y3JlYXRlKGltcC5pbnZlcnNlKCkpLmdldCgp
LCBtX2NvbnRleHQuZ2V0KCkpOwogCiAgICAgaWYgKCFpbXAuaXNJbnZlcnRpYmxlKCkpCiAgICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBTVkdFeGNlcHRpb246OlNWR19NQVRSSVhfTk9UX0lO
VkVSVEFCTEUpOwpAQCAtNTAsNDggKzUwLDQ4IEBAIEpTVmFsdWUqIEpTU1ZHTWF0cml4OjppbnZl
cnNlKEV4ZWNTdGF0ZSoKIAogSlNWYWx1ZSogSlNTVkdNYXRyaXg6OnRyYW5zbGF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGlt
cCgqaW1wbCgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbXAoKmltcGwoKSk7CiAKICAg
ICBmbG9hdCB4ID0gYXJncy5hdChleGVjLCAwKS0+dG9GbG9hdChleGVjKTsKICAgICBmbG9hdCB5
ID0gYXJncy5hdChleGVjLCAxKS0+dG9GbG9hdChleGVjKTsKIAotICAgIHJldHVybiB0b0pTKGV4
ZWMsIEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8QWZmaW5lVHJhbnNmb3JtPjo6Y3JlYXRlKGlt
cC50cmFuc2xhdGUoeCwgeSkpLmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOworICAgIHJldHVybiB0
b0pTKGV4ZWMsIEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+
OjpjcmVhdGUoaW1wLnRyYW5zbGF0ZSh4LCB5KSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiB9
CiAKIEpTVmFsdWUqIEpTU1ZHTWF0cml4OjpzY2FsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGltcCgqaW1wbCgpKTsKKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBpbXAoKmltcGwoKSk7CiAKICAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IGFyZ3MuYXQoZXhlYywgMCktPnRvRmxvYXQoZXhlYyk7Ci0gICAgcmV0dXJuIHRvSlMoZXhl
YywgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxBZmZpbmVUcmFuc2Zvcm0+OjpjcmVhdGUoaW1w
LnNjYWxlKHNjYWxlRmFjdG9yKSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CisgICAgcmV0dXJu
IHRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxUcmFuc2Zvcm1hdGlvbk1hdHJp
eD46OmNyZWF0ZShpbXAuc2NhbGUoc2NhbGVGYWN0b3IpKS5nZXQoKSwgbV9jb250ZXh0LmdldCgp
KTsKIH0KIAogSlNWYWx1ZSogSlNTVkdNYXRyaXg6OnNjYWxlTm9uVW5pZm9ybShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGltcCgq
aW1wbCgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbXAoKmltcGwoKSk7CiAKICAgICBm
bG9hdCBzY2FsZUZhY3RvclggPSBhcmdzLmF0KGV4ZWMsIDApLT50b0Zsb2F0KGV4ZWMpOwogICAg
IGZsb2F0IHNjYWxlRmFjdG9yWSA9IGFyZ3MuYXQoZXhlYywgMSktPnRvRmxvYXQoZXhlYyk7CiAK
LSAgICByZXR1cm4gdG9KUyhleGVjLCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPEFmZmluZVRy
YW5zZm9ybT46OmNyZWF0ZShpbXAuc2NhbGVOb25Vbmlmb3JtKHNjYWxlRmFjdG9yWCwgc2NhbGVG
YWN0b3JZKSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywg
SlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmNyZWF0ZShp
bXAuc2NhbGVOb25Vbmlmb3JtKHNjYWxlRmFjdG9yWCwgc2NhbGVGYWN0b3JZKSkuZ2V0KCksIG1f
Y29udGV4dC5nZXQoKSk7CiB9CiAKIEpTVmFsdWUqIEpTU1ZHTWF0cml4Ojpyb3RhdGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIEFmZmluZVRyYW5zZm9ybSBp
bXAoKmltcGwoKSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW1wKCppbXBsKCkpOwogCiAg
ICAgZmxvYXQgYW5nbGUgPSBhcmdzLmF0KGV4ZWMsIDApLT50b0Zsb2F0KGV4ZWMpOwotICAgIHJl
dHVybiB0b0pTKGV4ZWMsIEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8QWZmaW5lVHJhbnNmb3Jt
Pjo6Y3JlYXRlKGltcC5yb3RhdGUoYW5nbGUpKS5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKKyAg
ICByZXR1cm4gdG9KUyhleGVjLCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPFRyYW5zZm9ybWF0
aW9uTWF0cml4Pjo6Y3JlYXRlKGltcC5yb3RhdGUoYW5nbGUpKS5nZXQoKSwgbV9jb250ZXh0Lmdl
dCgpKTsKIH0KIAogSlNWYWx1ZSogSlNTVkdNYXRyaXg6OnJvdGF0ZUZyb21WZWN0b3IoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIEFmZmluZVRyYW5zZm9ybSBp
bXAoKmltcGwoKSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW1wKCppbXBsKCkpOwogIAog
ICAgIGZsb2F0IHggPSBhcmdzLmF0KGV4ZWMsIDApLT50b0Zsb2F0KGV4ZWMpOwogICAgIGZsb2F0
IHkgPSBhcmdzLmF0KGV4ZWMsIDEpLT50b0Zsb2F0KGV4ZWMpOwogCi0gICAgSlNDOjpKU1ZhbHVl
KiByZXN1bHQgPSB0b0pTKGV4ZWMsIEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8QWZmaW5lVHJh
bnNmb3JtPjo6Y3JlYXRlKGltcC5yb3RhdGVGcm9tVmVjdG9yKHgsIHkpKS5nZXQoKSwgbV9jb250
ZXh0LmdldCgpKTsKKyAgICBKU0M6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgSlNTVkdT
dGF0aWNQT0RUeXBlV3JhcHBlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmNyZWF0ZShpbXAucm90
YXRlRnJvbVZlY3Rvcih4LCB5KSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiAKICAgICBpZiAo
eCA9PSAwLjAgfHwgeSA9PSAwLjApCiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBTVkdF
eGNlcHRpb246OlNWR19JTlZBTElEX1ZBTFVFX0VSUik7CkBAIC0xMDEsMzAgKzEwMSwzMCBAQCBK
U1ZhbHVlKiBKU1NWR01hdHJpeDo6cm90YXRlRnJvbVZlY3RvcihFCiAKIEpTVmFsdWUqIEpTU1ZH
TWF0cml4OjpmbGlwWChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmKQogewotICAgIEFm
ZmluZVRyYW5zZm9ybSBpbXAoKmltcGwoKSk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgSlNTVkdT
dGF0aWNQT0RUeXBlV3JhcHBlcjxBZmZpbmVUcmFuc2Zvcm0+OjpjcmVhdGUoaW1wLmZsaXBYKCkp
LmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGltcCgq
aW1wbCgpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVy
PFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6Y3JlYXRlKGltcC5mbGlwWCgpKS5nZXQoKSwgbV9jb250
ZXh0LmdldCgpKTsKIH0KIAogSlNWYWx1ZSogSlNTVkdNYXRyaXg6OmZsaXBZKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYpCiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGltcCgqaW1wbCgp
KTsKLSAgICByZXR1cm4gdG9KUyhleGVjLCBKU1NWR1N0YXRpY1BPRFR5cGVXcmFwcGVyPEFmZmlu
ZVRyYW5zZm9ybT46OmNyZWF0ZShpbXAuZmxpcFkoKSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7
CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW1wKCppbXBsKCkpOworICAgIHJldHVybiB0b0pT
KGV4ZWMsIEpTU1ZHU3RhdGljUE9EVHlwZVdyYXBwZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+Ojpj
cmVhdGUoaW1wLmZsaXBZKCkpLmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOwogfQogCiBKU1ZhbHVl
KiBKU1NWR01hdHJpeDo6c2tld1goRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdz
KQogewotICAgIEFmZmluZVRyYW5zZm9ybSBpbXAoKmltcGwoKSk7CisgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggaW1wKCppbXBsKCkpOwogCiAgICAgZmxvYXQgYW5nbGUgPSBhcmdzLmF0KGV4ZWMs
IDApLT50b0Zsb2F0KGV4ZWMpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIEpTU1ZHU3RhdGljUE9E
VHlwZVdyYXBwZXI8QWZmaW5lVHJhbnNmb3JtPjo6Y3JlYXRlKGltcC5za2V3WChhbmdsZSkpLmdl
dCgpLCBtX2NvbnRleHQuZ2V0KCkpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIEpTU1ZHU3RhdGlj
UE9EVHlwZVdyYXBwZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjpjcmVhdGUoaW1wLnNrZXdYKGFu
Z2xlKSkuZ2V0KCksIG1fY29udGV4dC5nZXQoKSk7CiB9CiAKIEpTVmFsdWUqIEpTU1ZHTWF0cml4
Ojpza2V3WShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0gICAgQWZm
aW5lVHJhbnNmb3JtIGltcCgqaW1wbCgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbXAo
KmltcGwoKSk7CiAKICAgICBmbG9hdCBhbmdsZSA9IGFyZ3MuYXQoZXhlYywgMCktPnRvRmxvYXQo
ZXhlYyk7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBlcjxB
ZmZpbmVUcmFuc2Zvcm0+OjpjcmVhdGUoaW1wLnNrZXdZKGFuZ2xlKSkuZ2V0KCksIG1fY29udGV4
dC5nZXQoKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgSlNTVkdTdGF0aWNQT0RUeXBlV3JhcHBl
cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmNyZWF0ZShpbXAuc2tld1koYW5nbGUpKS5nZXQoKSwg
bV9jb250ZXh0LmdldCgpKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NW
R1BPRFR5cGVXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NW
R1BPRFR5cGVXcmFwcGVyLmgJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEzICs0NCwxMyBA
QCBwdWJsaWM6CiB9OwogCiAvLyBUaGlzIGZpbGUgY29udGFpbnMgSlMgd3JhcHBlciBvYmplY3Rz
IGZvciBTVkcgZGF0YXR5cGVzLCB0aGF0IGFyZSBwYXNzZWQgYXJvdW5kIGJ5IHZhbHVlCi0vLyBp
biBXZWJDb3JlL3N2ZyAoYWthLiAnUE9EIHR5cGVzJykuIEZvciBpbnN0YW5jZSBTVkdNYXRyaXgg
aXMgbWFwcGVkIHRvIEFmZmluZVRyYW5zZm9ybSwgYW5kCisvLyBpbiBXZWJDb3JlL3N2ZyAoYWth
LiAnUE9EIHR5cGVzJykuIEZvciBpbnN0YW5jZSBTVkdNYXRyaXggaXMgbWFwcGVkIHRvIFRyYW5z
Zm9ybWF0aW9uTWF0cml4LCBhbmQKIC8vIHBhc3NlZCBhcm91bmQgYXMgY29uc3QgcmVmZXJlbmNl
LiBTVkcgRE9NIGRlbWFuZHMgdGhlc2Ugb2JqZWN0cyB0byBiZSAibGl2ZSIsIGNoYW5nZXMgdG8g
YW55CiAvLyBvZiB0aGUgd3JpdGFibGUgYXR0cmlidXRlcyBvZiBTVkdNYXRyaXggbmVlZCB0byBi
ZSByZWZsZWN0ZWQgaW4gdGhlIG9iamVjdCB3aGljaCBleHBvc2VkIHRoZQogLy8gU1ZHTWF0cml4
IG9iamVjdCAoaWUuICdzb21lRWxlbWVudC50cmFuc2Zvcm0ubWF0cml4LmEgPSA1MC4wJywgaW4g
dGhhdCBjYXNlICdTVkdUcmFuc2Zvcm0nKS4KLS8vIFRoZSBTVkdUcmFuc2Zvcm0gY2xhc3Mgc3Rv
cmVzIGl0cyAiQWZmaW5lVHJhbnNmb3JtIG1fbWF0cml4IiBvYmplY3Qgb24gdGhlIHN0YWNrLiBJ
ZiBpdCB3b3VsZAorLy8gVGhlIFNWR1RyYW5zZm9ybSBjbGFzcyBzdG9yZXMgaXRzICJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX21hdHJpeCIgb2JqZWN0IG9uIHRoZSBzdGFjay4gSWYgaXQgd291bGQK
IC8vIGJlIHN0b3JlZCBhcyBwb2ludGVyIHdlIGNvdWxkIGp1c3QgYnVpbGQgYW4gYXV0by1nZW5l
cmF0ZWQgSlNTVkcqIHdyYXBwZXIgb2JqZWN0IGFyb3VuZCBpdAotLy8gYW5kIGFsbCBjaGFuZ2Vz
IHRvIHRoYXQgb2JqZWN0IHdvdWxkIGF1dG9tYXRpY2FsbHkgYWZmZWN0IHRoZSBBZmZpbmVUcmFu
c2Zvcm0qIG9iamVjdCBzdG9yZWQKKy8vIGFuZCBhbGwgY2hhbmdlcyB0byB0aGF0IG9iamVjdCB3
b3VsZCBhdXRvbWF0aWNhbGx5IGFmZmVjdCB0aGUgVHJhbnNmb3JtYXRpb25NYXRyaXgqIG9iamVj
dCBzdG9yZWQKIC8vIGluIHRoZSBTVkdUcmFuc2Zvcm0gb2JqZWN0LiBGb3IgdGhlIHNha2Ugb2Yg
ZWZmaWNpZW5jeSBhbmQgbWVtb3J5IHdlIGRvbid0IHBhc3MgYXJvdW5kIGFueQogLy8gcHJpbWl0
aXZlIHZhbHVlcyBhcyBwb2ludGVycywgc28gYSBjdXN0b20gSlMgd3JhcHBlciBvYmplY3QgaXMg
bmVlZGVkIGZvciBhbGwgU1ZHIHR5cGVzLCB0aGF0CiAvLyBhcmUgaW50ZXJuYWxseSByZXByZXNl
bnRlZCBieSBQT0QgdHlwZXMgKFNWR1JlY3QgPC0+IEZsb2F0UmVjdCwgU1ZHUG9pbnQgPC0+IEZs
b2F0UG9pbnQsIC4uLikuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAkocmV2
aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NSW50ZXJuYWwuaAkod29y
a2luZyBjb3B5KQpAQCAtMjk5LDcgKzI5OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBOb2RlRmlsdGVyOwogCiAjaWYgRU5BQkxFKFNWRykKLSAgICBjbGFzcyBBZmZpbmVUcmFu
c2Zvcm07CisgICAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAgICAgY2xhc3MgRmxvYXRQ
b2ludDsKICAgICBjbGFzcyBGbG9hdFJlY3Q7CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24g
Mzk2MTApCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTQ1LDcgKzE1NDUsNyBAQCBteSAlbmF0aXZlVHlwZSA9ICgKICAg
ICAiRXZlbnRUYXJnZXQiID0+ICJFdmVudFRhcmdldE5vZGUqIiwKICAgICAiTm9kZUZpbHRlciIg
PT4gIlJlZlB0cjxOb2RlRmlsdGVyPiIsCiAgICAgIlNWR0xlbmd0aCIgPT4gIlNWR0xlbmd0aCIs
Ci0gICAgIlNWR01hdHJpeCIgPT4gIkFmZmluZVRyYW5zZm9ybSIsCisgICAgIlNWR01hdHJpeCIg
PT4gIlRyYW5zZm9ybWF0aW9uTWF0cml4IiwKICAgICAiU1ZHTnVtYmVyIiA9PiAiZmxvYXQiLAog
ICAgICJTVkdQYWludFR5cGUiID0+ICJTVkdQYWludDo6U1ZHUGFpbnRUeXBlIiwKICAgICAiU1ZH
UG9pbnQiID0+ICJGbG9hdFBvaW50IiwKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yT2JqQy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCSh3b3JraW5nIGNvcHkpCkBAIC02NDcs
NyArNjQ3LDcgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAgIH0KIAogICAgIGlmICgkdHlw
ZSBlcSAiU1ZHTWF0cml4IikgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJBZmZpbmVUcmFuc2Zv
cm0uaCJ9ID0gMTsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCJ9ID0gMTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NJHR5cGUuaCJ9ID0gMTsKICAgICAg
ICAgJGltcGxJbmNsdWRlc3siU1ZHRXhjZXB0aW9uLmgifSA9IDE7CiAgICAgICAgIHJldHVybjsK
QEAgLTE0NDQsOCArMTQ0NCw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICMgRklYTUUhIFdlIG5lZWQgW0N1c3RvbV0gc3VwcG9ydCBm
b3IgT2JqQywgdG8gbW92ZSB0aGVzZSBoYWNrcyBpbnRvIERPTVNWR0xlbmd0aC9NYXRyaXhDdXN0
b20ubW0KLSAgICAgICAgICAgIG15ICRzdmdNYXRyaXhSb3RhdGVGcm9tVmVjdG9yID0gKCRwb2RU
eXBlIGFuZCAkcG9kVHlwZSBlcSAiQWZmaW5lVHJhbnNmb3JtIiBhbmQgJGZ1bmN0aW9uTmFtZSBl
cSAicm90YXRlRnJvbVZlY3RvciIpOwotICAgICAgICAgICAgbXkgJHN2Z01hdHJpeEludmVyc2Ug
PSAoJHBvZFR5cGUgYW5kICRwb2RUeXBlIGVxICJBZmZpbmVUcmFuc2Zvcm0iIGFuZCAkZnVuY3Rp
b25OYW1lIGVxICJpbnZlcnNlIik7CisgICAgICAgICAgICBteSAkc3ZnTWF0cml4Um90YXRlRnJv
bVZlY3RvciA9ICgkcG9kVHlwZSBhbmQgJHBvZFR5cGUgZXEgIlRyYW5zZm9ybWF0aW9uTWF0cml4
IiBhbmQgJGZ1bmN0aW9uTmFtZSBlcSAicm90YXRlRnJvbVZlY3RvciIpOworICAgICAgICAgICAg
bXkgJHN2Z01hdHJpeEludmVyc2UgPSAoJHBvZFR5cGUgYW5kICRwb2RUeXBlIGVxICJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCIgYW5kICRmdW5jdGlvbk5hbWUgZXEgImludmVyc2UiKTsKICAgICAgICAg
ICAgIG15ICRzdmdMZW5ndGhDb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA9ICgkcG9kVHlwZSBhbmQg
JHBvZFR5cGUgZXEgIlNWR0xlbmd0aCIgYW5kICRmdW5jdGlvbk5hbWUgZXEgImNvbnZlcnRUb1Nw
ZWNpZmllZFVuaXRzIik7CiAKICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlck5hbWVzLCAiZWMi
KSBpZiAkcmFpc2VzRXhjZXB0aW9ucyBhbmQgISgkc3ZnTWF0cml4Um90YXRlRnJvbVZlY3RvciB8
fCAkc3ZnTWF0cml4SW52ZXJzZSk7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA1LDcgKzQwNSw3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjb21wdXRlZFRyYW4KICAgICAKICAgICBJ
bnRSZWN0IGJveCA9IHNpemluZ0JveChyZW5kZXJlcik7CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0g
dHJhbnNmb3JtOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAgICByZW5k
ZXJlci0+c3R5bGUoKS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBib3guc2l6ZSgpLCBmYWxz
ZSk7CiAKICAgICBSZWZQdHI8V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IHRyYW5zZm9ybVZhbCA9
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpjcmVhdGUoV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6
Ok1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbik7CkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL2h0bWwvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3Jt
YXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDYWNoZWRJ
bWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc0dyYWRpZW50LmgiCkBAIC0zNTUsNyArMzU1LDcgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNjYWxlKGZsbwogICAgIGlmICghc3RhdGUo
KS5tX2ludmVydGlibGVDVE0pCiAgICAgICAgIHJldHVybjsKIAotICAgIEFmZmluZVRyYW5zZm9y
bSBuZXdUcmFuc2Zvcm0gPSBzdGF0ZSgpLm1fdHJhbnNmb3JtOworICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG5ld1RyYW5zZm9ybSA9IHN0YXRlKCkubV90cmFuc2Zvcm07CiAgICAgbmV3VHJhbnNm
b3JtLnNjYWxlKHN4LCBzeSk7CiAgICAgaWYgKCFuZXdUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkp
IHsKICAgICAgICAgc3RhdGUoKS5tX2ludmVydGlibGVDVE0gPSBmYWxzZTsKQEAgLTM2NCw3ICsz
NjQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2NhbGUoZmxvCiAKICAgICBz
dGF0ZSgpLm1fdHJhbnNmb3JtID0gbmV3VHJhbnNmb3JtOwogICAgIGMtPnNjYWxlKEZsb2F0U2l6
ZShzeCwgc3kpKTsKLSAgICBtX3BhdGgudHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSgpLnNjYWxl
KDEuMC9zeCwgMS4wL3N5KSk7CisgICAgbV9wYXRoLnRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLnNjYWxlKDEuMC9zeCwgMS4wL3N5KSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpyb3RhdGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpCkBAIC0zNzUsNyArMzc1LDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJvdGF0ZShmbAogICAgIGlmICghc3Rh
dGUoKS5tX2ludmVydGlibGVDVE0pCiAgICAgICAgIHJldHVybjsKIAotICAgIEFmZmluZVRyYW5z
Zm9ybSBuZXdUcmFuc2Zvcm0gPSBzdGF0ZSgpLm1fdHJhbnNmb3JtOworICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IG5ld1RyYW5zZm9ybSA9IHN0YXRlKCkubV90cmFuc2Zvcm07CiAgICAgbmV3VHJh
bnNmb3JtLnJvdGF0ZShhbmdsZUluUmFkaWFucyAvIHBpRG91YmxlICogMTgwLjApOwogICAgIGlm
ICghbmV3VHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKSB7CiAgICAgICAgIHN0YXRlKCkubV9pbnZl
cnRpYmxlQ1RNID0gZmFsc2U7CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OnJvdGF0ZShmbAogCiAgICAgc3RhdGUoKS5tX3RyYW5zZm9ybSA9IG5ld1Ry
YW5zZm9ybTsKICAgICBjLT5yb3RhdGUoYW5nbGVJblJhZGlhbnMpOwotICAgIG1fcGF0aC50cmFu
c2Zvcm0oQWZmaW5lVHJhbnNmb3JtKCkucm90YXRlKC1hbmdsZUluUmFkaWFucyAvIHBpRG91Ymxl
ICogMTgwLjApKTsKKyAgICBtX3BhdGgudHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCku
cm90YXRlKC1hbmdsZUluUmFkaWFucyAvIHBpRG91YmxlICogMTgwLjApKTsKIH0KIAogdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRyYW5zbGF0ZShmbG9hdCB0eCwgZmxvYXQgdHkpCkBA
IC0zOTUsNyArMzk1LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRyYW5zbGF0
ZQogICAgIGlmICghc3RhdGUoKS5tX2ludmVydGlibGVDVE0pCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFmZmluZVRyYW5zZm9ybSBuZXdUcmFuc2Zvcm0gPSBzdGF0ZSgpLm1fdHJhbnNmb3JtOwor
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5ld1RyYW5zZm9ybSA9IHN0YXRlKCkubV90cmFuc2Zv
cm07CiAgICAgbmV3VHJhbnNmb3JtLnRyYW5zbGF0ZSh0eCwgdHkpOwogICAgIGlmICghbmV3VHJh
bnNmb3JtLmlzSW52ZXJ0aWJsZSgpKSB7CiAgICAgICAgIHN0YXRlKCkubV9pbnZlcnRpYmxlQ1RN
ID0gZmFsc2U7CkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnRyYW5zbGF0ZQogCiAgICAgc3RhdGUoKS5tX3RyYW5zZm9ybSA9IG5ld1RyYW5zZm9ybTsK
ICAgICBjLT50cmFuc2xhdGUodHgsIHR5KTsKLSAgICBtX3BhdGgudHJhbnNmb3JtKEFmZmluZVRy
YW5zZm9ybSgpLnRyYW5zbGF0ZSgtdHgsIC10eSkpOworICAgIG1fcGF0aC50cmFuc2Zvcm0oVHJh
bnNmb3JtYXRpb25NYXRyaXgoKS50cmFuc2xhdGUoLXR4LCAtdHkpKTsKIH0KIAogdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRyYW5zZm9ybShmbG9hdCBtMTEsIGZsb2F0IG0xMiwgZmxv
YXQgbTIxLCBmbG9hdCBtMjIsIGZsb2F0IGR4LCBmbG9hdCBkeSkKQEAgLTQyMCw5ICs0MjAsOSBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6dHJhbnNmb3JtCiAgICAgICAgICFpc2Zp
bml0ZShtMTIpIHwgIWlzZmluaXRlKG0yMikgfCAhaXNmaW5pdGUoZHkpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKG0xMSwgbTEyLCBtMjEsIG0yMiwg
ZHgsIGR5KTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0obTExLCBtMTIsIG0y
MSwgbTIyLCBkeCwgZHkpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIG5ld1RyYW5zZm9ybSA9IHN0
YXRlKCkubV90cmFuc2Zvcm07CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmV3VHJhbnNmb3Jt
ID0gc3RhdGUoKS5tX3RyYW5zZm9ybTsKICAgICBuZXdUcmFuc2Zvcm0ubXVsdGlwbHkodHJhbnNm
b3JtKTsKICAgICBpZiAoIW5ld1RyYW5zZm9ybS5pc0ludmVydGlibGUoKSkgewogICAgICAgICBz
dGF0ZSgpLm1faW52ZXJ0aWJsZUNUTSA9IGZhbHNlOwpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRUcmFuc2YKICAgICAgICAgIWlzZmluaXRlKG0x
MikgfCAhaXNmaW5pdGUobTIyKSB8ICFpc2Zpbml0ZShkeSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBzdGF0ZSgpLm1fdHJhbnNmb3JtOworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGN0bSA9IHN0YXRlKCkubV90cmFuc2Zvcm07CiAgICAgaWYgKCFjdG0u
aXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBjLT5jb25jYXRDVE0oYy0+Z2V0
Q1RNKCkuaW52ZXJzZSgpKTsKQEAgLTY5NSw3ICs2OTUsNyBAQCBib29sIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6aXNQb2ludEluCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEZsb2F0
UG9pbnQgcG9pbnQoeCwgeSk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IHN0YXRlKCkubV90
cmFuc2Zvcm07CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY3RtID0gc3RhdGUoKS5tX3RyYW5z
Zm9ybTsKICAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkUG9pbnQgPSBjdG0uaW52ZXJzZSgpLm1h
cFBvaW50KHBvaW50KTsKICAgICByZXR1cm4gbV9wYXRoLmNvbnRhaW5zKHRyYW5zZm9ybWVkUG9p
bnQpOwogfQpAQCAtMTE0Myw3ICsxMTQzLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OndpbGxEcmF3KAogCiAgICAgRmxvYXRSZWN0IGRpcnR5UmVjdCA9IHI7CiAgICAgaWYgKG9w
dGlvbnMgJiBDYW52YXNXaWxsRHJhd0FwcGx5VHJhbnNmb3JtKSB7Ci0gICAgICAgIEFmZmluZVRy
YW5zZm9ybSBjdG0gPSBzdGF0ZSgpLm1fdHJhbnNmb3JtOworICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBjdG0gPSBzdGF0ZSgpLm1fdHJhbnNmb3JtOwogICAgICAgICBkaXJ0eVJlY3QgPSBj
dG0ubWFwUmVjdChyKTsKICAgICB9CiAgICAgCkluZGV4OiBXZWJDb3JlL2h0bWwvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvaHRtbC9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lm
bmRlZiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRfaAogI2RlZmluZSBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRfaAogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJh
bnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJG
b250LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgpAQCAtMjEyLDcgKzIxMiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFN0cmluZyBtX3NoYWRvd0NvbG9yOwogICAg
ICAgICAgICAgZmxvYXQgbV9nbG9iYWxBbHBoYTsKICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJh
dG9yIG1fZ2xvYmFsQ29tcG9zaXRlOwotICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fdHJh
bnNmb3JtOworICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CiAg
ICAgICAgICAgICBib29sIG1faW52ZXJ0aWJsZUNUTTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgLy8gVGV4dCBzdGF0ZS4KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkocmV2
aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzMsMTIgKzI3MywxMiBAQCBJbWFnZUJ1ZmZlciogSFRNTENhbnZhc0Vs
ZW1lbnQ6OmJ1ZmZlcigpCiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiB9CiAgICAg
Ci1BZmZpbmVUcmFuc2Zvcm0gSFRNTENhbnZhc0VsZW1lbnQ6OmJhc2VUcmFuc2Zvcm0oKSBjb25z
dAorVHJhbnNmb3JtYXRpb25NYXRyaXggSFRNTENhbnZhc0VsZW1lbnQ6OmJhc2VUcmFuc2Zvcm0o
KSBjb25zdAogewogICAgIEFTU0VSVChtX2NyZWF0ZWRJbWFnZUJ1ZmZlcik7CiAgICAgRmxvYXRT
aXplIHVuc2NhbGVkU2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7CiAgICAgSW50U2l6ZSBzaXplID0g
Y29udmVydExvZ2ljYWxUb0RldmljZSh1bnNjYWxlZFNpemUpOwotICAgIEFmZmluZVRyYW5zZm9y
bSB0cmFuc2Zvcm07CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwogICAgIGlm
IChzaXplLndpZHRoKCkgJiYgc2l6ZS5oZWlnaHQoKSkKICAgICAgICAgdHJhbnNmb3JtLnNjYWxl
KHNpemUud2lkdGgoKSAvIHVuc2NhbGVkU2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpIC8gdW5z
Y2FsZWRTaXplLmhlaWdodCgpKTsKICAgICB0cmFuc2Zvcm0ubXVsdGlwbHkobV9pbWFnZUJ1ZmZl
ci0+YmFzZVRyYW5zZm9ybSgpKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCShyZXZp
c2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaWZuZGVmIEhUTUxDYW52YXNFbGVtZW50X2gKICNk
ZWZpbmUgSFRNTENhbnZhc0VsZW1lbnRfaAogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
CisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKQEAgLTEw
Niw3ICsxMDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE9ic2VydmVyKENhbnZhc09ic2Vy
dmVyKiBvKSB7IG1fb2JzZXJ2ZXIgPSBvOyB9CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gYmFzZVRy
YW5zZm9ybSgpIGNvbnN0OworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGJhc2VUcmFuc2Zvcm0o
KSBjb25zdDsKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcigpIGNvbnN0Owog
ICAgIHZvaWQgcmVzZXQoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOCArMTMwLDggQEAgc3RhdGljIGlu
bGluZSBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kRgogICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
IENvbnZlcnQgdGhlIFRyYW5zZm9ybU9wZXJhdGlvbnMgaW50byBtYXRyaWNlcwogICAgICAgICBJ
bnRTaXplIHNpemUgPSBhbmltLT5yZW5kZXJlcigpLT5ib3JkZXJCb3goKS5zaXplKCk7Ci0gICAg
ICAgIEFmZmluZVRyYW5zZm9ybSBmcm9tVDsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRvVDsK
KyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbVQ7CisgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHRvVDsKICAgICAgICAgZnJvbS5hcHBseShzaXplLCBmcm9tVCk7CiAgICAgICAg
IHRvLmFwcGx5KHNpemUsIHRvVCk7CiAgICAgICAgIApJbmRleDogV2ViQ29yZS9wYWdlL3dpbi9G
cmFtZUNHV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4u
Y3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIHZvaWQgZHJhd1JlY3RJbnRv
Q29udGV4dChJbnRSZWN0IAogICAgIHJlY3QubW92ZSgtb2Zmc2V0LndpZHRoKCksIC1vZmZzZXQu
aGVpZ2h0KCkpOwogICAgIHJlY3QgPSB2aWV3LT5jb252ZXJ0VG9Db250YWluaW5nV2luZG93KHJl
Y3QpOwogCi0gICAgZ2MtPmNvbmNhdENUTShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoLXJl
Y3QueCgpLCAtcmVjdC55KCkpKTsKKyAgICBnYy0+Y29uY2F0Q1RNKFRyYW5zZm9ybWF0aW9uTWF0
cml4KCkudHJhbnNsYXRlKC1yZWN0LngoKSwgLXJlY3QueSgpKSk7CiAKICAgICB2aWV3LT5wYWlu
dChnYywgcmVjdCk7CiB9CkluZGV4OiBXZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcAkocmV2aXNpb24gMzk2MTAp
CisrKyBXZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNyBAQAogI2luY2x1ZGUgInJ1bnRpbWUuaCIKICNpbmNsdWRlICJGcmFtZVdpbi5oIgog
Ci0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25N
YXRyaXguaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lUHJpdmF0ZS5oIgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcm90
ZWN0ZWQ6CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IpOwogI2lmIFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShXWCkKLSAgICB2aXJ0
dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCisgICAgdmly
dHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21w
b3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAjZW5kaWYgICAgCiAg
ICAgc2l6ZV90IGN1cnJlbnRGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEZyYW1lOyB9
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5jcHAJKHJldmlzaW9u
IDM5NjEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkZsb2F0UG9pbnQuaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1
ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgi
CiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKIApAQCAtMzcsNyArMzcsNyBAQCBGbG9hdFBvaW50OjpG
bG9hdFBvaW50KGNvbnN0IEludFBvaW50JiBwCiB7CiB9CiAKLUZsb2F0UG9pbnQgRmxvYXRQb2lu
dDo6bWF0cml4VHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKSBjb25z
dAorRmxvYXRQb2ludCBGbG9hdFBvaW50OjptYXRyaXhUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSkgY29uc3QKIHsKICAgICBkb3VibGUgbmV3WCwgbmV3WTsK
ICAgICB0cmFuc2Zvcm0ubWFwKHN0YXRpY19jYXN0PGRvdWJsZT4obV94KSwgc3RhdGljX2Nhc3Q8
ZG91YmxlPihtX3kpLCAmbmV3WCwgJm5ld1kpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFBvaW50LmgJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0
IFNrUG9pbnQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQWZmaW5lVHJhbnNmb3Jt
OworY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiBjbGFzcyBJbnRQb2ludDsKIAogY2xhc3Mg
RmxvYXRQb2ludCB7CkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIEZsb2F0UG9pbnQo
Y29uc3QgU2tQb2ludCYpOwogI2VuZGlmCiAKLSAgICBGbG9hdFBvaW50IG1hdHJpeFRyYW5zZm9y
bShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdDsKKyAgICBGbG9hdFBvaW50IG1hdHJpeFRy
YW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIGZsb2F0IG1feCwgbV95OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
ZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgdm9pZCBHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleAogICAgIGNvbnRleHQt
PnJlc3RvcmUoKTsKIH0KIAotdm9pZCBHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKK3ZvaWQgR2VuZXJhdGVkSW1hZ2U6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKICAg
ICAvLyBDcmVhdGUgYSBCaXRtYXBJbWFnZSBhbmQgY2FsbCBkcmF3UGF0dGVybiBvbiBpdC4KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9u
IDM5NjEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvcik7Ci0gICAg
dmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3Jt
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Q29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOwogICAgIAogICAg
IEdlbmVyYXRlZEltYWdlKFBhc3NSZWZQdHI8R2VuZXJhdG9yPiBnZW5lcmF0b3IsIGNvbnN0IElu
dFNpemUmIHNpemUpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY29uc3QgaW50IGNNaXNzcGVsbGluZ0xpbmVQYXR0ZXJuV2lkdGgg
PSA0OwogICAgIGNvbnN0IGludCBjTWlzc3BlbGxpbmdMaW5lUGF0dGVybkdhcFdpZHRoID0gMTsK
IAotICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKKyAgICBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKICAgICBjbGFzcyBGb250OwogICAgIGNsYXNzIEdlbmVyYXRvcjsKICAgICBjbGFzcyBH
cmFkaWVudDsKQEAgLTI2OCw4ICsyNjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IAogICAgICAgICB2b2lkIHNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3Qm
KTsKIAotICAgICAgICB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIGdldENUTSgpIGNvbnN0OworICAgICAgICB2b2lkIGNvbmNh
dENUTShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBnZXRDVE0oKSBjb25zdDsKIAogICAgICAgICB2b2lkIHNldFVzZUFudGlhbGlhc2lu
Zyhib29sID0gdHJ1ZSk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIEdyYXBoaWNzQ29udGV4dFByaXZhdGVfaAogI2Rl
ZmluZSBHcmFwaGljc0NvbnRleHRQcml2YXRlX2gKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiRm9udC5o
IgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBA
IC03Myw3ICs3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9STShDQUlSTykK
ICAgICAgICAgZmxvYXQgZ2xvYmFsQWxwaGE7CiAjZWxpZiBQTEFURk9STShRVCkKLSAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIHBhdGhUcmFuc2Zvcm07CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHBhdGhUcmFuc2Zvcm07CiAjZW5kaWYKICAgICAgICAgQ29sb3JTcGFjZSBzdHJva2VDb2xv
clNwYWNlOwogICAgICAgICBDb2xvciBzdHJva2VDb2xvcjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5z
Zm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiQml0
bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCogYwogCiAgICAgRmxvYXRTaXplIHNjYWxlKHNjYWxlZFRpbGVTaXplLndpZHRoKCkg
LyBpbnRyaW5zaWNUaWxlU2l6ZS53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICBzY2FsZWRU
aWxlU2l6ZS5oZWlnaHQoKSAvIGludHJpbnNpY1RpbGVTaXplLmhlaWdodCgpKTsKLSAgICBBZmZp
bmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybSgpLnNjYWxlKHNj
YWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBw
YXR0ZXJuVHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKS5zY2FsZShzY2FsZS53aWR0
aCgpLCBzY2FsZS5oZWlnaHQoKSk7CiAKICAgICBGbG9hdFJlY3Qgb25lVGlsZVJlY3Q7CiAgICAg
b25lVGlsZVJlY3Quc2V0WChkZXN0UmVjdC54KCkgKyBmbW9kZihmbW9kZigtc3JjUG9pbnQueCgp
LCBzY2FsZWRUaWxlU2l6ZS53aWR0aCgpKSAtIHNjYWxlZFRpbGVTaXplLndpZHRoKCksIHNjYWxl
ZFRpbGVTaXplLndpZHRoKCkpKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjCiAgICAgICAgIHZSdWxlID0gUmVwZWF0VGlsZTsKIAog
ICAgIEZsb2F0U2l6ZSBzY2FsZSA9IGNhbGN1bGF0ZVBhdHRlcm5TY2FsZShkc3RSZWN0LCBzcmNS
ZWN0LCBoUnVsZSwgdlJ1bGUpOwotICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3Jt
ID0gQWZmaW5lVHJhbnNmb3JtKCkuc2NhbGUoc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkp
OworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhdHRlcm5UcmFuc2Zvcm0gPSBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLnNjYWxlKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKIAogICAg
IC8vIFdlIHdhbnQgdG8gY29uc3RydWN0IHRoZSBwaGFzZSBzdWNoIHRoYXQgdGhlIHBhdHRlcm4g
aXMgY2VudGVyZWQgKHdoZW4gc3RyZXRjaCBpcyBub3QKICAgICAvLyBzZXQgZm9yIGEgcGFydGlj
dWxhciBydWxlKS4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHJldmlzaW9uIDM5
NjEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIE5hdGl2ZUltYWdlU2tpYTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBBZmZpbmVUcmFuc2Zvcm07CitjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBGbG9hdFNp
emU7CkBAIC0xNjEsNyArMTYxLDcgQEAgcHJvdGVjdGVkOgogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBzdGFydEFuaW1hdGlvbihib29sIC8qY2F0Y2hVcElmTmVjZXNzYXJ5Ki8gPSB0cnVlKSB7IH0K
ICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRl
cm5UcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7
CiAjaWYgUExBVEZPUk0oQ0cpCiAgICAgLy8gVGhlc2UgYXJlIHByaXZhdGUgdG8gQ0cuICBJZGVh
bGx5IHRoZXkgd291bGQgYmUgb25seSBpbiB0aGUgLmNwcCBmaWxlLCBidXQgdGhlIGNhbGxiYWNr
IHJlcXVpcmVzIGFjY2VzcwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpZm5kZWYgSW1hZ2VC
dWZmZXJfaAogI2RlZmluZSBJbWFnZUJ1ZmZlcl9oCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zv
cm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgpA
QCAtNjksOSArNjksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgU3RyaW5nIHRv
RGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKICNpZiAhUExBVEZPUk0oQ0cp
Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
QWZmaW5lVHJhbnNmb3JtKCk7IH0KKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYmFzZVRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7IH0KICNlbHNl
Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBiYXNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
QWZmaW5lVHJhbnNmb3JtKDEsIDAsIDAsIC0xLCAwLCBtX3NpemUuaGVpZ2h0KCkpOyB9CisgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGJhc2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgbV9zaXplLmhlaWdodCgpKTsgfQog
I2VuZGlmCiAgICAgcHJpdmF0ZToKICAgICAgICAgSW1hZ2VCdWZmZXJEYXRhIG1fZGF0YTsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
IHR5cGVkZWYgdm9pZCBQbGF0Zm9ybVBhdGg7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAg
IGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKKyAgICBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsK
ICAgICBjbGFzcyBGbG9hdFBvaW50OwogICAgIGNsYXNzIEZsb2F0U2l6ZTsKICAgICBjbGFzcyBG
bG9hdFJlY3Q7CkBAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBzdGF0aWMgUGF0aCBjcmVhdGVMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBv
aW50Jik7CiAKICAgICAgICAgdm9pZCBhcHBseSh2b2lkKiBpbmZvLCBQYXRoQXBwbGllckZ1bmN0
aW9uKSBjb25zdDsKLSAgICAgICAgdm9pZCB0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
Jik7CisgICAgICAgIHZvaWQgdHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBQbGF0Zm9ybVBhdGgqIG1fcGF0aDsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3
IEBAIHR5cGVkZWYgd3hCcnVzaCogUGxhdGZvcm1QYXR0ZXJuUHRyOwogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CisgICAgY2xhc3MgVHJh
bnNmb3JtYXRpb25NYXRyaXg7CiAgICAgY2xhc3MgSW1hZ2U7CiAKICAgICBjbGFzcyBQYXR0ZXJu
IDogcHVibGljIFJlZkNvdW50ZWQ8UGF0dGVybj4gewpAQCAtNjcsNyArNjcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgSW1hZ2UqIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGlsZUltYWdlLmdldCgpOyB9CiAKLSAgICAgICAgUGxhdGZvcm1QYXR0ZXJuUHRyIGNyZWF0
ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0p
IGNvbnN0OworICAgICAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZvcm1QYXR0ZXJu
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtKSBjb25zdDsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIFBhdHRlcm4oSW1hZ2UqLCBib29sIHJlcGVhdFgsIGJvb2wg
cmVwZWF0WSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0FmZmluZVRy
YW5zZm9ybUNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0FmZmluZVRyYW5zZm9ybUNhaXJvLmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0FmZmluZVRyYW5zZm9ybUNhaXJvLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oIgogCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgpA
QCAtMzQsMzQgKzM0LDM0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGRv
dWJsZSBkZWcycmFkID0gMC4wMTc0NTMyOTI1MTk5NDMyOTU3Njk7IC8vIHBpLzE4MAogCi1BZmZp
bmVUcmFuc2Zvcm06OkFmZmluZVRyYW5zZm9ybSgpCitUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6VHJh
bnNmb3JtYXRpb25NYXRyaXgoKQogewogICAgIGNhaXJvX21hdHJpeF9pbml0X2lkZW50aXR5KCZt
X3RyYW5zZm9ybSk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybTo6QWZmaW5lVHJhbnNmb3JtKGRvdWJs
ZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgdHgsIGRvdWJsZSB0eSkK
K1RyYW5zZm9ybWF0aW9uTWF0cml4OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeChkb3VibGUgYSwgZG91
YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIHR4LCBkb3VibGUgdHkpCiB7CiAgICAg
Y2Fpcm9fbWF0cml4X2luaXQoJm1fdHJhbnNmb3JtLCBhLCBiLCBjLCBkLCB0eCwgdHkpOwogfQog
Ci1BZmZpbmVUcmFuc2Zvcm06OkFmZmluZVRyYW5zZm9ybShjb25zdCBQbGF0Zm9ybUFmZmluZVRy
YW5zZm9ybSYgbWF0cml4KQorVHJhbnNmb3JtYXRpb25NYXRyaXg6OlRyYW5zZm9ybWF0aW9uTWF0
cml4KGNvbnN0IFBsYXRmb3JtQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCiB7CiAgICAgbV90cmFu
c2Zvcm0gPSBtYXRyaXg7CiB9CiAKLXZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRNYXRyaXgoZG91
YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSB0eCwgZG91YmxlIHR5
KQordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2V0TWF0cml4KGRvdWJsZSBhLCBkb3VibGUg
YiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgdHgsIGRvdWJsZSB0eSkKIHsKICAgICBjYWly
b19tYXRyaXhfaW5pdCgmbV90cmFuc2Zvcm0sIGEsIGIsIGMsIGQsIHR4LCB0eSk7CiB9CiAKLXZv
aWQgQWZmaW5lVHJhbnNmb3JtOjptYXAoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUqIHgyLCBk
b3VibGUqIHkyKSBjb25zdAordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwKGRvdWJsZSB4
LCBkb3VibGUgeSwgZG91YmxlKiB4MiwgZG91YmxlKiB5MikgY29uc3QKIHsKICAgICAqeDIgPSB4
OwogICAgICp5MiA9IHk7CiAgICAgY2Fpcm9fbWF0cml4X3RyYW5zZm9ybV9wb2ludCgmbV90cmFu
c2Zvcm0sIHgyLCB5Mik7CiB9CiAKLUludFJlY3QgQWZmaW5lVHJhbnNmb3JtOjptYXBSZWN0KGNv
bnN0IEludFJlY3QgJnJlY3QpIGNvbnN0CitJbnRSZWN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpt
YXBSZWN0KGNvbnN0IEludFJlY3QgJnJlY3QpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IGZsb2F0
UmVjdChyZWN0KTsKICAgICBGbG9hdFJlY3QgZW5jbG9zaW5nRmxvYXRSZWN0ID0gdGhpcy0+bWFw
UmVjdChmbG9hdFJlY3QpOwpAQCAtNjksNyArNjksNyBAQCBJbnRSZWN0IEFmZmluZVRyYW5zZm9y
bTo6bWFwUmVjdChjb25zdCBJCiAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoZW5jbG9zaW5n
RmxvYXRSZWN0KTsKIH0KIAotRmxvYXRSZWN0IEFmZmluZVRyYW5zZm9ybTo6bWFwUmVjdChjb25z
dCBGbG9hdFJlY3QgJnJlY3QpIGNvbnN0CitGbG9hdFJlY3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6
Om1hcFJlY3QoY29uc3QgRmxvYXRSZWN0ICZyZWN0KSBjb25zdAogewogICAgIGRvdWJsZSByZWN0
TWluWCA9IHJlY3QueCgpOwogICAgIGRvdWJsZSByZWN0TWF4WCA9IHJlY3QueCgpICsgcmVjdC53
aWR0aCgpOwpAQCAtMTI4LDk3ICsxMjgsOTcgQEAgRmxvYXRSZWN0IEFmZmluZVRyYW5zZm9ybTo6
bWFwUmVjdChjb25zdAogICAgIHJldHVybiBGbG9hdFJlY3QoZW5jbG9zaW5nUmVjdE1pblgsIGVu
Y2xvc2luZ1JlY3RNaW5ZLCBlbmNsb3NpbmdSZWN0V2lkdGgsIGVuY2xvc2luZ1JlY3RIZWlnaHQp
OwogfQogCi1ib29sIEFmZmluZVRyYW5zZm9ybTo6aXNJZGVudGl0eSgpIGNvbnN0Citib29sIFRy
YW5zZm9ybWF0aW9uTWF0cml4Ojppc0lkZW50aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gKCht
X3RyYW5zZm9ybS54eCA9PSAxKSAmJiAobV90cmFuc2Zvcm0ueXkgPT0gMSkKICAgICAgICAgICYm
IChtX3RyYW5zZm9ybS54eSA9PSAwKSAmJiAobV90cmFuc2Zvcm0ueXggPT0gMCkKICAgICAgICAg
ICYmIChtX3RyYW5zZm9ybS54MCA9PSAwKSAmJiAobV90cmFuc2Zvcm0ueTAgPT0gMCkpOwogfQog
Ci1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjphKCkgY29uc3QKK2RvdWJsZSBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLnh4OwogfQogCi12
b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0QShkb3VibGUgYSkKK3ZvaWQgVHJhbnNmb3JtYXRpb25N
YXRyaXg6OnNldEEoZG91YmxlIGEpCiB7CiAgICAgbV90cmFuc2Zvcm0ueHggPSBhOwogfQogCi1k
b3VibGUgQWZmaW5lVHJhbnNmb3JtOjpiKCkgY29uc3QKK2RvdWJsZSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6YigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLnl4OwogfQogCi12b2lk
IEFmZmluZVRyYW5zZm9ybTo6c2V0Qihkb3VibGUgYikKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRy
aXg6OnNldEIoZG91YmxlIGIpCiB7CiAgICAgbV90cmFuc2Zvcm0ueXggPSBiOwogfQogCi1kb3Vi
bGUgQWZmaW5lVHJhbnNmb3JtOjpjKCkgY29uc3QKK2RvdWJsZSBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6YygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLnh5OwogfQogCi12b2lkIEFm
ZmluZVRyYW5zZm9ybTo6c2V0Qyhkb3VibGUgYykKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnNldEMoZG91YmxlIGMpCiB7CiAgICAgbV90cmFuc2Zvcm0ueHkgPSBjOwogfQogCi1kb3VibGUg
QWZmaW5lVHJhbnNmb3JtOjpkKCkgY29uc3QKK2RvdWJsZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
ZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLnl5OwogfQogCi12b2lkIEFmZmlu
ZVRyYW5zZm9ybTo6c2V0RChkb3VibGUgZCkKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNl
dEQoZG91YmxlIGQpCiB7CiAgICAgbV90cmFuc2Zvcm0ueXkgPSBkOwogfQogCi1kb3VibGUgQWZm
aW5lVHJhbnNmb3JtOjplKCkgY29uc3QKK2RvdWJsZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLngwOwogfQogCi12b2lkIEFmZmluZVRy
YW5zZm9ybTo6c2V0RShkb3VibGUgZSkKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEUo
ZG91YmxlIGUpCiB7CiAgICAgbV90cmFuc2Zvcm0ueDAgPSBlOwogfQogCi1kb3VibGUgQWZmaW5l
VHJhbnNmb3JtOjpmKCkgY29uc3QKK2RvdWJsZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLnkwOwogfQogCi12b2lkIEFmZmluZVRyYW5z
Zm9ybTo6c2V0Rihkb3VibGUgZikKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEYoZG91
YmxlIGYpCiB7CiAgICAgbV90cmFuc2Zvcm0ueTAgPSBmOwogfQogCi12b2lkIEFmZmluZVRyYW5z
Zm9ybTo6cmVzZXQoKQordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVzZXQoKQogewogICAg
IGNhaXJvX21hdHJpeF9pbml0X2lkZW50aXR5KCZtX3RyYW5zZm9ybSk7CiB9CiAKLUFmZmluZVRy
YW5zZm9ybSAmQWZmaW5lVHJhbnNmb3JtOjpzY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSkKK1Ry
YW5zZm9ybWF0aW9uTWF0cml4ICZUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2NhbGUoZG91YmxlIHN4
LCBkb3VibGUgc3kpCiB7CiAgICAgY2Fpcm9fbWF0cml4X3NjYWxlKCZtX3RyYW5zZm9ybSwgc3gs
IHN5KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSAmQWZmaW5lVHJh
bnNmb3JtOjpyb3RhdGUoZG91YmxlIGQpCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCAmVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OnJvdGF0ZShkb3VibGUgZCkKIHsKICAgICBjYWlyb19tYXRyaXhfcm90YXRl
KCZtX3RyYW5zZm9ybSwgZCAqIGRlZzJyYWQpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotQWZm
aW5lVHJhbnNmb3JtICZBZmZpbmVUcmFuc2Zvcm06OnRyYW5zbGF0ZShkb3VibGUgdHgsIGRvdWJs
ZSB0eSkKK1RyYW5zZm9ybWF0aW9uTWF0cml4ICZUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dHJhbnNs
YXRlKGRvdWJsZSB0eCwgZG91YmxlIHR5KQogewogICAgIGNhaXJvX21hdHJpeF90cmFuc2xhdGUo
Jm1fdHJhbnNmb3JtLCB0eCwgdHkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotQWZmaW5lVHJh
bnNmb3JtICZBZmZpbmVUcmFuc2Zvcm06OnNoZWFyKGRvdWJsZSBzeCwgZG91YmxlIHN5KQorVHJh
bnNmb3JtYXRpb25NYXRyaXggJlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzaGVhcihkb3VibGUgc3gs
IGRvdWJsZSBzeSkKIHsKICAgICBjYWlyb19tYXRyaXhfdCBzaGVhcjsKICAgICBjYWlyb19tYXRy
aXhfaW5pdCgmc2hlYXIsIDEsIHN5LCBzeCwgMSwgMCwgMCk7CkBAIC0yMzAsMjYgKzIzMCwyNiBA
QCBBZmZpbmVUcmFuc2Zvcm0gJkFmZmluZVRyYW5zZm9ybTo6c2hlYXIoCiAgICAgcmV0dXJuICp0
aGlzOwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpkZXQoKSBjb25zdAorZG91YmxlIFRy
YW5zZm9ybWF0aW9uTWF0cml4OjpkZXQoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9y
bS54eCAqIG1fdHJhbnNmb3JtLnl5IC0gbV90cmFuc2Zvcm0ueHkgKiBtX3RyYW5zZm9ybS55eDsK
IH0KIAotQWZmaW5lVHJhbnNmb3JtIEFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgpIGNvbnN0CitU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aW52ZXJzZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKCFpc0ludmVydGlibGUoKSkgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwor
ICAgIGlmICghaXNJbnZlcnRpYmxlKCkpIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwog
CiAgICAgY2Fpcm9fbWF0cml4X3QgcmVzdWx0ID0gbV90cmFuc2Zvcm07CiAgICAgY2Fpcm9fbWF0
cml4X2ludmVydCgmcmVzdWx0KTsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKHJlc3VsdCk7
CisgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KHJlc3VsdCk7CiB9CiAKLUFmZmluZVRy
YW5zZm9ybTo6b3BlcmF0b3IgY2Fpcm9fbWF0cml4X3QoKSBjb25zdAorVHJhbnNmb3JtYXRpb25N
YXRyaXg6Om9wZXJhdG9yIGNhaXJvX21hdHJpeF90KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90
cmFuc2Zvcm07CiB9CiAKLWJvb2wgQWZmaW5lVHJhbnNmb3JtOjpvcGVyYXRvcj09IChjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0gJm0yKSBjb25zdAorYm9vbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3Bl
cmF0b3I9PSAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggJm0yKSBjb25zdAogewogICAgIHJl
dHVybiAoKG1fdHJhbnNmb3JtLnh4ID09IG0yLm1fdHJhbnNmb3JtLnh4KQogICAgICAgICAgJiYg
KG1fdHJhbnNmb3JtLnl5ID09IG0yLm1fdHJhbnNmb3JtLnl5KQpAQCAtMjYwLDcgKzI2MCw3IEBA
IGJvb2wgQWZmaW5lVHJhbnNmb3JtOjpvcGVyYXRvcj09IChjb25zdCAKIAogfQogCi1BZmZpbmVU
cmFuc2Zvcm0gJkFmZmluZVRyYW5zZm9ybTo6b3BlcmF0b3IqPSAoY29uc3QgQWZmaW5lVHJhbnNm
b3JtICZtMikKK1RyYW5zZm9ybWF0aW9uTWF0cml4ICZUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3Bl
cmF0b3IqPSAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggJm0yKQogewogICAgIGNhaXJvX21h
dHJpeF90IHJlc3VsdDsKICAgICBjYWlyb19tYXRyaXhfbXVsdGlwbHkoJnJlc3VsdCwgJm1fdHJh
bnNmb3JtLCAmbTIubV90cmFuc2Zvcm0pOwpAQCAtMjY5LDcgKzI2OSw3IEBAIEFmZmluZVRyYW5z
Zm9ybSAmQWZmaW5lVHJhbnNmb3JtOjpvcGVyYXQKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLUFm
ZmluZVRyYW5zZm9ybSBBZmZpbmVUcmFuc2Zvcm06Om9wZXJhdG9yKiAoY29uc3QgQWZmaW5lVHJh
bnNmb3JtICZtMikKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpv
cGVyYXRvciogKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4ICZtMikKIHsKICAgICBjYWlyb19t
YXRyaXhfdCByZXN1bHQ7CiAgICAgY2Fpcm9fbWF0cml4X211bHRpcGx5KCZyZXN1bHQsICZtX3Ry
YW5zZm9ybSwgJm0yLm1fdHJhbnNmb3JtKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCShyZXZpc2lv
biAzOTYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKICNpZiBQTEFU
Rk9STShDQUlSTykKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRy
YW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiQ2Fpcm9QYXRoLmgiCiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udC5oIgpAQCAtMTE3LDcgKzExNyw3IEBAIEdyYXBo
aWNzQ29udGV4dDo6fkdyYXBoaWNzQ29udGV4dCgpCiAgICAgZGVsZXRlIG1fZGF0YTsKIH0KIAot
QWZmaW5lVHJhbnNmb3JtIEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNKCkgY29uc3QKK1RyYW5zZm9y
bWF0aW9uTWF0cml4IEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNKCkgY29uc3QKIHsKICAgICBjYWly
b190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIGNhaXJvX21hdHJpeF90IG07CkBAIC00
NTUsNyArNDU1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKCkKICAgICAgICAg
Y2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjciwgbV9jb21tb24tPnN0YXRlLmdsb2JhbEFscGhhKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXR0ZXJuQ29sb3JTcGFjZTogewotICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gYWZmaW5lOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZmZp
bmU7CiAgICAgICAgIGNhaXJvX3NldF9zb3VyY2UoY3IsIG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0
dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGFmZmluZSkpOwogICAgICAgICBjYWlyb19jbGlw
KGNyKTsKICAgICAgICAgY2Fpcm9fcGFpbnRfd2l0aF9hbHBoYShjciwgbV9jb21tb24tPnN0YXRl
Lmdsb2JhbEFscGhhKTsKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlUGF0aCgpCiAgICAgICAgIGNhaXJvX3N0cm9rZShjcik7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgUGF0dGVybkNvbG9yU3BhY2U6IHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGFm
ZmluZTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWZmaW5lOwogICAgICAgICBjYWly
b19zZXRfc291cmNlKGNyLCBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlUGF0dGVybi0+Y3JlYXRlUGxh
dGZvcm1QYXR0ZXJuKGFmZmluZSkpOwogICAgICAgICBpZiAobV9jb21tb24tPnN0YXRlLmdsb2Jh
bEFscGhhIDwgMS4wZikgewogICAgICAgICAgICAgY2Fpcm9fcHVzaF9ncm91cChjcik7CkBAIC03
NDQsNyArNzQ0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29ucwog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpjb25jYXRD
VE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6Y29uY2F0Q1RNKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVD
YWlyby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaAkocmV2aXNpb24gMzk2MTApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJp
dmF0ZUNhaXJvLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJik7CiAgICAgdm9pZCByb3RhdGUoZmxvYXQpOwog
ICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0LCBmbG9hdCk7Ci0gICAgdm9pZCBjb25jYXRDVE0oY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgdm9pZCBjb25jYXRDVE0oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmKTsKICAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoKSB7IG1fdHJh
bnNwYXJlbmN5Q291bnQrKzsgfQogICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKSB7IG1f
dHJhbnNwYXJlbmN5Q291bnQtLTsgfQogI2Vsc2UKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJikge30KICAgICB2b2lkIHJvdGF0ZShmbG9h
dCkge30KICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCwgZmxvYXQpIHt9Ci0gICAgdm9pZCBjb25j
YXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikge30KKyAgICB2b2lkIGNvbmNhdENUTShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIHt9CiAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxh
eWVyKCkge30KICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCkge30KICNlbmRpZgpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCShy
ZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VD
YWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2lmIFBMQVRGT1JN
KENBSVJPKQogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNm
b3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCkBAIC0xMzksNyArMTM5
LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIAogICAgICAgICBp
bWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CiB9CiAKLXZvaWQgSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAordm9pZCBJbWFnZTo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBjYWlyb19zdXJmYWNl
X3QqIGltYWdlID0gbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAJKHJldmlzaW9uIDM5NjEw
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUGF0aC5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJh
bnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJDYWlyb1BhdGguaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTMyNCw3ICszMjQs
NyBAQCB2b2lkIFBhdGg6OmFwcGx5KHZvaWQqIGluZm8sIFBhdGhBcHBsaWVyCiAgICAgY2Fpcm9f
cGF0aF9kZXN0cm95KHBhdGgpOwogfQogCi12b2lkIFBhdGg6OnRyYW5zZm9ybShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zKQordm9pZCBQYXRoOjp0cmFuc2Zvcm0oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zKQogewogICAgIGNhaXJvX3QqIG1fY3IgPSBwbGF0Zm9ybVBhdGgo
KS0+bV9jcjsKICAgICBjYWlyb19tYXRyaXhfdCBjX21hdHJpeCA9IGNhaXJvX21hdHJpeF90KHRy
YW5zKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJv
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRl
cm5DYWlyby5jcHAJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyMSArMjYsMjEg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAKLSNpbmNsdWRl
ICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jYWlyb19wYXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRm
b3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0pIGNvbnN0
CitjYWlyb19wYXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSkgY29uc3QKIHsKICAgICBjYWly
b19zdXJmYWNlX3QqIHN1cmZhY2UgPSB0aWxlSW1hZ2UoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50
RnJhbWUoKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgY2Fp
cm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZhY2Uo
c3VyZmFjZSk7Ci0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbnZlcnNlID0gcGF0dGVyblRy
YW5zZm9ybS5pbnZlcnNlKCk7CisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGludmVy
c2UgPSBwYXR0ZXJuVHJhbnNmb3JtLmludmVyc2UoKTsKICAgICBjb25zdCBjYWlyb19tYXRyaXhf
dCogcGF0dGVybl9tYXRyaXggPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNhaXJvX21hdHJpeF90
Kj4oJmludmVyc2UpOwogICAgIGNhaXJvX3BhdHRlcm5fc2V0X21hdHJpeChwYXR0ZXJuLCBwYXR0
ZXJuX21hdHJpeCk7CiAgICAgaWYgKG1fcmVwZWF0WCB8fCBtX3JlcGVhdFkpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0FmZmluZVRyYW5zZm9ybUNHLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0FmZmluZVRyYW5zZm9ybUNHLmNwcAko
cmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0FmZmluZVRy
YW5zZm9ybUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRl
ICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogCiAjaWYgUExBVEZPUk0oQ0cpCiAKQEAgLTM2LDEy
ICszNiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFmZmluZVRyYW5zZm9ybTo6QWZm
aW5lVHJhbnNmb3JtKCkKK1RyYW5zZm9ybWF0aW9uTWF0cml4OjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpCiAgICAgOiBtX3RyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5KQogewogfQog
Ci1BZmZpbmVUcmFuc2Zvcm06OkFmZmluZVRyYW5zZm9ybShkb3VibGUgYSwgZG91YmxlIGIsIGRv
dWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIHR4LCBkb3VibGUgdHkpCitUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6VHJhbnNmb3JtYXRpb25NYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywg
ZG91YmxlIGQsIGRvdWJsZSB0eCwgZG91YmxlIHR5KQogewogICAgIG1fdHJhbnNmb3JtID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1NYWtlKG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChhKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQo
YiksCkBAIC01MSwxMiArNTEsMTIgQEAgQWZmaW5lVHJhbnNmb3JtOjpBZmZpbmVUcmFuc2Zvcm0o
ZG91YmxlIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hcnJvd1By
ZWNpc2lvblRvQ0dGbG9hdCh0eSkpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm06OkFmZmluZVRyYW5z
Zm9ybShjb25zdCBQbGF0Zm9ybUFmZmluZVRyYW5zZm9ybSYgdCkKK1RyYW5zZm9ybWF0aW9uTWF0
cml4OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25zdCBQbGF0Zm9ybVRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0KQogICAgIDogbV90cmFuc2Zvcm0odCkKIHsKIH0KIAotdm9pZCBBZmZpbmVUcmFuc2Zv
cm06OnNldE1hdHJpeChkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91
YmxlIHR4LCBkb3VibGUgdHkpCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNYXRyaXgo
ZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSB0eCwgZG91Ymxl
IHR5KQogewogICAgIG1fdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKG5hcnJvd1By
ZWNpc2lvblRvQ0dGbG9hdChhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQoYiksCkBAIC02NiwxNDcgKzY2LDE0NyBAQCB2
b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0TWF0cml4KGRvdWJsZSBhCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KHR5KSk7CiB9
CiAKLXZvaWQgQWZmaW5lVHJhbnNmb3JtOjptYXAoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUg
KngyLCBkb3VibGUgKnkyKSBjb25zdAordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwKGRv
dWJsZSB4LCBkb3VibGUgeSwgZG91YmxlICp4MiwgZG91YmxlICp5MikgY29uc3QKIHsKICAgICBD
R1BvaW50IHJlc3VsdCA9IENHUG9pbnRBcHBseUFmZmluZVRyYW5zZm9ybShDR1BvaW50TWFrZShu
YXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQoeCksIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdCh5KSks
IG1fdHJhbnNmb3JtKTsKICAgICAqeDIgPSByZXN1bHQueDsKICAgICAqeTIgPSByZXN1bHQueTsK
IH0KIAotSW50UmVjdCBBZmZpbmVUcmFuc2Zvcm06Om1hcFJlY3QoY29uc3QgSW50UmVjdCAmcmVj
dCkgY29uc3QKK0ludFJlY3QgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFJlY3QoY29uc3QgSW50
UmVjdCAmcmVjdCkgY29uc3QKIHsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChDR1JlY3RB
cHBseUFmZmluZVRyYW5zZm9ybShDR1JlY3QocmVjdCksIG1fdHJhbnNmb3JtKSk7CiB9CiAKLUZs
b2F0UmVjdCBBZmZpbmVUcmFuc2Zvcm06Om1hcFJlY3QoY29uc3QgRmxvYXRSZWN0ICZyZWN0KSBj
b25zdAorRmxvYXRSZWN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBSZWN0KGNvbnN0IEZsb2F0
UmVjdCAmcmVjdCkgY29uc3QKIHsKICAgICByZXR1cm4gRmxvYXRSZWN0KENHUmVjdEFwcGx5QWZm
aW5lVHJhbnNmb3JtKENHUmVjdChyZWN0KSwgbV90cmFuc2Zvcm0pKTsKIH0KIAotYm9vbCBBZmZp
bmVUcmFuc2Zvcm06OmlzSWRlbnRpdHkoKSBjb25zdAorYm9vbCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6aXNJZGVudGl0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtSXNJ
ZGVudGl0eShtX3RyYW5zZm9ybSk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmEoKSBj
b25zdAorZG91YmxlIFRyYW5zZm9ybWF0aW9uTWF0cml4OjphKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV90cmFuc2Zvcm0uYTsKIH0KIAotdm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEEoZG91Ymxl
IGEpCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRBKGRvdWJsZSBhKQogewogICAgIG1f
dHJhbnNmb3JtLmEgPSBuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQoYSk7CiB9CiAKLWRvdWJsZSBB
ZmZpbmVUcmFuc2Zvcm06OmIoKSBjb25zdAorZG91YmxlIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpi
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0uYjsKIH0KIAotdm9pZCBBZmZpbmVU
cmFuc2Zvcm06OnNldEIoZG91YmxlIGIpCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRC
KGRvdWJsZSBiKQogewogICAgIG1fdHJhbnNmb3JtLmIgPSBuYXJyb3dQcmVjaXNpb25Ub0NHRmxv
YXQoYik7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmMoKSBjb25zdAorZG91YmxlIFRy
YW5zZm9ybWF0aW9uTWF0cml4OjpjKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0u
YzsKIH0KIAotdm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEMoZG91YmxlIGMpCit2b2lkIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpzZXRDKGRvdWJsZSBjKQogewogICAgIG1fdHJhbnNmb3JtLmMgPSBu
YXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQoYyk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06
OmQoKSBjb25zdAorZG91YmxlIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpkKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV90cmFuc2Zvcm0uZDsKIH0KIAotdm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEQo
ZG91YmxlIGQpCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXREKGRvdWJsZSBkKQogewog
ICAgIG1fdHJhbnNmb3JtLmQgPSBuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQoZCk7CiB9CiAKLWRv
dWJsZSBBZmZpbmVUcmFuc2Zvcm06OmUoKSBjb25zdAorZG91YmxlIFRyYW5zZm9ybWF0aW9uTWF0
cml4OjplKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0udHg7CiB9CiAKLXZvaWQg
QWZmaW5lVHJhbnNmb3JtOjpzZXRFKGRvdWJsZSBlKQordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6c2V0RShkb3VibGUgZSkKIHsKICAgICBtX3RyYW5zZm9ybS50eCA9IG5hcnJvd1ByZWNpc2lv
blRvQ0dGbG9hdChlKTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZigpIGNvbnN0Citk
b3VibGUgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmYoKSBjb25zdAogewogICAgIHJldHVybiBtX3Ry
YW5zZm9ybS50eTsKIH0KIAotdm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEYoZG91YmxlIGYpCit2
b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRGKGRvdWJsZSBmKQogewogICAgIG1fdHJhbnNm
b3JtLnR5ID0gbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KGYpOwogfQogCi12b2lkIEFmZmluZVRy
YW5zZm9ybTo6cmVzZXQoKQordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVzZXQoKQogewog
ICAgIG1fdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKIH0KIAotQWZmaW5l
VHJhbnNmb3JtICZBZmZpbmVUcmFuc2Zvcm06OnNjYWxlKGRvdWJsZSBzeCwgZG91YmxlIHN5KQor
VHJhbnNmb3JtYXRpb25NYXRyaXggJlRyYW5zZm9ybWF0aW9uTWF0cml4OjpzY2FsZShkb3VibGUg
c3gsIGRvdWJsZSBzeSkKIHsKICAgICBtX3RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtU2Nh
bGUobV90cmFuc2Zvcm0sIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChzeCksIG5hcnJvd1ByZWNp
c2lvblRvQ0dGbG9hdChzeSkpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotQWZmaW5lVHJhbnNm
b3JtICZBZmZpbmVUcmFuc2Zvcm06OnJvdGF0ZShkb3VibGUgZCkKK1RyYW5zZm9ybWF0aW9uTWF0
cml4ICZUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cm90YXRlKGRvdWJsZSBkKQogewogICAgIG1fdHJh
bnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1Sb3RhdGUobV90cmFuc2Zvcm0sIG5hcnJvd1ByZWNp
c2lvblRvQ0dGbG9hdChkZWcycmFkKGQpKSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1BZmZp
bmVUcmFuc2Zvcm0gJkFmZmluZVRyYW5zZm9ybTo6dHJhbnNsYXRlKGRvdWJsZSB0eCwgZG91Ymxl
IHR5KQorVHJhbnNmb3JtYXRpb25NYXRyaXggJlRyYW5zZm9ybWF0aW9uTWF0cml4Ojp0cmFuc2xh
dGUoZG91YmxlIHR4LCBkb3VibGUgdHkpCiB7CiAgICAgbV90cmFuc2Zvcm0gPSBDR0FmZmluZVRy
YW5zZm9ybVRyYW5zbGF0ZShtX3RyYW5zZm9ybSwgbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KHR4
KSwgbmFycm93UHJlY2lzaW9uVG9DR0Zsb2F0KHR5KSk7CiAgICAgcmV0dXJuICp0aGlzOwogfQog
Ci1BZmZpbmVUcmFuc2Zvcm0gJkFmZmluZVRyYW5zZm9ybTo6c2hlYXIoZG91YmxlIHN4LCBkb3Vi
bGUgc3kpCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCAmVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNoZWFy
KGRvdWJsZSBzeCwgZG91YmxlIHN5KQogewogICAgIENHQWZmaW5lVHJhbnNmb3JtIHNoZWFyID0g
Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlKDEuMGYsIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChzeSks
IG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdChzeCksIDEuMGYsIDAuMGYsIDAuMGYpOwogICAgIG1f
dHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQoc2hlYXIsIG1fdHJhbnNmb3JtKTsK
ICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmRldCgpIGNv
bnN0Citkb3VibGUgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmRldCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fdHJhbnNmb3JtLmEgKiBtX3RyYW5zZm9ybS5kIC0gbV90cmFuc2Zvcm0uYiAqIG1fdHJh
bnNmb3JtLmM7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBBZmZpbmVUcmFuc2Zvcm06OmludmVyc2Uo
KSBjb25zdAorVHJhbnNmb3JtYXRpb25NYXRyaXggVHJhbnNmb3JtYXRpb25NYXRyaXg6OmludmVy
c2UoKSBjb25zdAogewogICAgIGlmIChpc0ludmVydGlibGUoKSkKLSAgICAgICAgcmV0dXJuIEFm
ZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybUludmVydChtX3RyYW5zZm9ybSkpOwotICAg
IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9u
TWF0cml4KENHQWZmaW5lVHJhbnNmb3JtSW52ZXJ0KG1fdHJhbnNmb3JtKSk7CisgICAgcmV0dXJu
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybTo6b3BlcmF0b3Ig
UGxhdGZvcm1BZmZpbmVUcmFuc2Zvcm0oKSBjb25zdAorVHJhbnNmb3JtYXRpb25NYXRyaXg6Om9w
ZXJhdG9yIFBsYXRmb3JtVHJhbnNmb3JtYXRpb25NYXRyaXgoKSBjb25zdAogewogICAgIHJldHVy
biBtX3RyYW5zZm9ybTsKIH0KIAotYm9vbCBBZmZpbmVUcmFuc2Zvcm06Om9wZXJhdG9yPT0gKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSAmbTIpIGNvbnN0Citib29sIFRyYW5zZm9ybWF0aW9uTWF0cml4
OjpvcGVyYXRvcj09IChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCAmbTIpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtRXF1YWxUb1RyYW5zZm9ybShtX3RyYW5zZm9ybSwg
Q0dBZmZpbmVUcmFuc2Zvcm0obTIpKTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtICZBZmZpbmVUcmFu
c2Zvcm06Om9wZXJhdG9yKj0gKGNvbnN0IEFmZmluZVRyYW5zZm9ybSAmbTIpCitUcmFuc2Zvcm1h
dGlvbk1hdHJpeCAmVHJhbnNmb3JtYXRpb25NYXRyaXg6Om9wZXJhdG9yKj0gKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4ICZtMikKIHsKICAgICBtX3RyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNm
b3JtQ29uY2F0KG1fdHJhbnNmb3JtLCBDR0FmZmluZVRyYW5zZm9ybShtMikpOwogICAgIHJldHVy
biAqdGhpczsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIEFmZmluZVRyYW5zZm9ybTo6b3BlcmF0b3Iq
IChjb25zdCBBZmZpbmVUcmFuc2Zvcm0gJm0yKQorVHJhbnNmb3JtYXRpb25NYXRyaXggVHJhbnNm
b3JtYXRpb25NYXRyaXg6Om9wZXJhdG9yKiAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggJm0y
KQogewogICAgIHJldHVybiBDR0FmZmluZVRyYW5zZm9ybUNvbmNhdChtX3RyYW5zZm9ybSwgQ0dB
ZmZpbmVUcmFuc2Zvcm0obTIpKTsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIgpAQCAtODkwLDcgKzg5MCw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0Ojp0cmFuc2xhdGUoZmxvYXQgeCwKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2
aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0Ojpjb25jYXRDVE0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CkBAIC04OTksNyArODk5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTShj
b25zdCBBZgogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVu
dGl0eSA9IGZhbHNlOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gR3JhcGhpY3NDb250ZXh0OjpnZXRD
VE0oKSBjb25zdAorVHJhbnNmb3JtYXRpb25NYXRyaXggR3JhcGhpY3NDb250ZXh0OjpnZXRDVE0o
KSBjb25zdAogewogICAgIHJldHVybiBDR0NvbnRleHRHZXRDVE0ocGxhdGZvcm1Db250ZXh0KCkp
OwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGVDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaAkocmV2aXNpb24gMzk2MTAp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dFBsYXRmb3Jt
UHJpdmF0ZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJikge30KICAgICB2b2lkIHJvdGF0ZShmbG9hdCkg
e30KICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCwgZmxvYXQpIHt9Ci0gICAgdm9pZCBjb25jYXRD
VE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikge30KKyAgICB2b2lkIGNvbmNhdENUTShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpIHt9CiAgICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVy
KCkge30KICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCkge30KICNlbmRpZgpAQCAtNjgs
NyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsKICAg
ICB2b2lkIHJvdGF0ZShmbG9hdCk7CiAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQsIGZsb2F0KTsK
LSAgICB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICB2b2lkIGNv
bmNhdENUTShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogICAgIHZvaWQgYmVnaW5UcmFu
c3BhcmVuY3lMYXllcigpIHsgbV90cmFuc3BhcmVuY3lDb3VudCsrOyB9CiAgICAgdm9pZCBlbmRU
cmFuc3BhcmVuY3lMYXllcigpIHsgbV90cmFuc3BhcmVuY3lDb3VudC0tOyB9CiAKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAkocmV2aXNpb24gMzk2MTApCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShDRykKIAotI2luY2x1ZGUgIkFmZmlu
ZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVk
ZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1Bh
dHRlcm5DYWxsYmFjayh2b2lkKiBpbgogICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBH
cmFwaGljc0NvbnRleHQoY29udGV4dCkucm91bmRUb0RldmljZVBpeGVscyhGbG9hdFJlY3QoMCwg
MCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkpKSwgaW1h
Z2UpOwogfQogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpCiB7CiAgICAgaWYgKCFuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDcgQEAKIAogI2lmIFBMQVRGT1JNKENHKQogCi0jaW5jbHVkZSAiQWZmaW5lVHJh
bnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlIDxB
cHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTMyNCw3ICszMjQsNyBA
QCB2b2lkIFBhdGg6OmFwcGx5KHZvaWQqIGluZm8sIFBhdGhBcHBsaWVyCiAgICAgQ0dQYXRoQXBw
bHkobV9wYXRoLCAmcGluZm8sIENHUGF0aEFwcGxpZXJUb1BhdGhBcHBsaWVyKTsKIH0KIAotdm9p
ZCBQYXRoOjp0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit2b2lk
IFBhdGg6OnRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQog
ewogICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKICAg
ICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1DRyA9IHRyYW5zZm9ybTsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAJKHJldmlzaW9uIDM5NjEwKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGF0
dGVybi5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNm
b3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAogI2luY2x1
ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgpAQCAtNTAsMTEg
KzUwLDExIEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCoKICAgICBz
dGF0aWNfY2FzdDxJbWFnZSo+KGluZm8pLT5kZXJlZigpOwogfQogCi1DR1BhdHRlcm5SZWYgUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtKSBjb25zdAorQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKSBjb25zdAogewogICAgIEludFJl
Y3QgdGlsZVJlY3QgPSB0aWxlSW1hZ2UoKS0+cmVjdCgpOwogCi0gICAgQWZmaW5lVHJhbnNmb3Jt
IHBhdHRlcm5UcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
cGF0dGVyblRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxl
KDEsIC0xKTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVp
Z2h0KCkpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0FmZmluZVRyYW5z
Zm9ybVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0Fm
ZmluZVRyYW5zZm9ybVF0LmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0FmZmluZVRyYW5zZm9ybVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
MzQgKzI0LDM0IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFmZmlu
ZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAKICNpbmNs
dWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotQWZmaW5lVHJhbnNmb3JtOjpBZmZpbmVUcmFuc2Zvcm0oKQorVHJhbnNmb3JtYXRp
b25NYXRyaXg6OlRyYW5zZm9ybWF0aW9uTWF0cml4KCkKICAgICA6IG1fdHJhbnNmb3JtKCkKIHsK
IH0KIAotQWZmaW5lVHJhbnNmb3JtOjpBZmZpbmVUcmFuc2Zvcm0oZG91YmxlIGEsIGRvdWJsZSBi
LCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSB0eCwgZG91YmxlIHR5KQorVHJhbnNmb3JtYXRp
b25NYXRyaXg6OlRyYW5zZm9ybWF0aW9uTWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91Ymxl
IGMsIGRvdWJsZSBkLCBkb3VibGUgdHgsIGRvdWJsZSB0eSkKICAgICA6IG1fdHJhbnNmb3JtKGEs
IGIsIGMsIGQsIHR4LCB0eSkKIHsKIH0KIAotQWZmaW5lVHJhbnNmb3JtOjpBZmZpbmVUcmFuc2Zv
cm0oY29uc3QgUGxhdGZvcm1BZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKK1RyYW5zZm9ybWF0aW9u
TWF0cml4OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25zdCBQbGF0Zm9ybUFmZmluZVRyYW5zZm9y
bSYgbWF0cml4KQogICAgIDogbV90cmFuc2Zvcm0obWF0cml4KQogewogfQogCi12b2lkIEFmZmlu
ZVRyYW5zZm9ybTo6c2V0TWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJs
ZSBkLCBkb3VibGUgdHgsIGRvdWJsZSB0eSkKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNl
dE1hdHJpeChkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIHR4
LCBkb3VibGUgdHkpCiB7CiAgICAgbV90cmFuc2Zvcm0uc2V0TWF0cml4KGEsIGIsIGMsIGQsIHR4
LCB0eSk7CiB9CiAKLXZvaWQgQWZmaW5lVHJhbnNmb3JtOjptYXAoZG91YmxlIHgsIGRvdWJsZSB5
LCBkb3VibGUqIHgyLCBkb3VibGUqIHkyKSBjb25zdAordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6bWFwKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlKiB4MiwgZG91YmxlKiB5MikgY29uc3QK
IHsKICAgICBxcmVhbCB0eDIsIHR5MjsKICAgICBtX3RyYW5zZm9ybS5tYXAocXJlYWwoeCksIHFy
ZWFsKHkpLCAmdHgyLCAmdHkyKTsKQEAgLTU5LDE0MCArNTksMTQwIEBAIHZvaWQgQWZmaW5lVHJh
bnNmb3JtOjptYXAoZG91YmxlIHgsIGRvdWIKICAgICAqeTIgPSB0eTI7CiB9CiAKLUludFJlY3Qg
QWZmaW5lVHJhbnNmb3JtOjptYXBSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CitJbnRS
ZWN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLm1hcFJlY3QocmVjdCk7CiB9CiAKLUZsb2F0
UmVjdCBBZmZpbmVUcmFuc2Zvcm06Om1hcFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25z
dAorRmxvYXRSZWN0IFRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0ubWFwUmVjdChyZWN0KTsK
IH0KIAotYm9vbCBBZmZpbmVUcmFuc2Zvcm06OmlzSWRlbnRpdHkoKSBjb25zdAorYm9vbCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6aXNJZGVudGl0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJh
bnNmb3JtLmlzSWRlbnRpdHkoKTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6YSgpIGNv
bnN0Citkb3VibGUgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmEoKSBjb25zdAogewogICAgIHJldHVy
biBtX3RyYW5zZm9ybS5tMTEoKTsKIH0KIAotdm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEEoZG91
YmxlIGEpCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRBKGRvdWJsZSBhKQogewogICAg
IG1fdHJhbnNmb3JtLnNldE1hdHJpeChhLCBiKCksIGMoKSwgZCgpLCBlKCksIGYoKSk7CiB9CiAK
LWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmIoKSBjb25zdAorZG91YmxlIFRyYW5zZm9ybWF0aW9u
TWF0cml4OjpiKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0ubTEyKCk7CiB9CiAK
LXZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRCKGRvdWJsZSBiKQordm9pZCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6c2V0Qihkb3VibGUgYikKIHsKICAgICBtX3RyYW5zZm9ybS5zZXRNYXRyaXgoYSgp
LCBiLCBjKCksIGQoKSwgZSgpLCBmKCkpOwogfQogCi1kb3VibGUgQWZmaW5lVHJhbnNmb3JtOjpj
KCkgY29uc3QKK2RvdWJsZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6YygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fdHJhbnNmb3JtLm0yMSgpOwogfQogCi12b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0
Qyhkb3VibGUgYykKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEMoZG91YmxlIGMpCiB7
CiAgICAgbV90cmFuc2Zvcm0uc2V0TWF0cml4KGEoKSwgYigpLCBjLCBkKCksIGUoKSwgZigpKTsK
IH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZCgpIGNvbnN0Citkb3VibGUgVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmQoKSBjb25zdAogewogICAgIHJldHVybiBtX3RyYW5zZm9ybS5tMjIoKTsK
IH0KIAotdm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEQoZG91YmxlIGQpCit2b2lkIFRyYW5zZm9y
bWF0aW9uTWF0cml4OjpzZXREKGRvdWJsZSBkKQogewogICAgIG1fdHJhbnNmb3JtLnNldE1hdHJp
eChhKCksIGIoKSwgYygpLCBkLCBlKCksIGYoKSk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zv
cm06OmUoKSBjb25zdAorZG91YmxlIFRyYW5zZm9ybWF0aW9uTWF0cml4OjplKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV90cmFuc2Zvcm0uZHgoKTsKIH0KIAotdm9pZCBBZmZpbmVUcmFuc2Zvcm06
OnNldEUoZG91YmxlIGUpCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRFKGRvdWJsZSBl
KQogewogICAgIG1fdHJhbnNmb3JtLnNldE1hdHJpeChhKCksIGIoKSwgYygpLCBkKCksIGUsIGYo
KSk7CiB9CiAKLWRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmYoKSBjb25zdAorZG91YmxlIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpmKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0uZHko
KTsKIH0KIAotdm9pZCBBZmZpbmVUcmFuc2Zvcm06OnNldEYoZG91YmxlIGYpCit2b2lkIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpzZXRGKGRvdWJsZSBmKQogewogICAgIG1fdHJhbnNmb3JtLnNldE1h
dHJpeChhKCksIGIoKSwgYygpLCBkKCksIGUoKSwgZik7CiB9CiAKLXZvaWQgQWZmaW5lVHJhbnNm
b3JtOjpyZXNldCgpCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZXNldCgpCiB7CiAgICAg
bV90cmFuc2Zvcm0ucmVzZXQoKTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zv
cm06OnNjYWxlKGRvdWJsZSBzeCwgZG91YmxlIHN5KQorVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRy
YW5zZm9ybWF0aW9uTWF0cml4OjpzY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSkKIHsKICAgICBt
X3RyYW5zZm9ybS5zY2FsZShzeCwgc3kpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotQWZmaW5l
VHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zvcm06OnJvdGF0ZShkb3VibGUgZCkKK1RyYW5zZm9ybWF0
aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cm90YXRlKGRvdWJsZSBkKQogewogICAg
IG1fdHJhbnNmb3JtLnJvdGF0ZShkKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLUFmZmluZVRy
YW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xhdGUoZG91YmxlIHR4LCBkb3VibGUgdHkp
CitUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRyYW5zbGF0ZShk
b3VibGUgdHgsIGRvdWJsZSB0eSkKIHsKICAgICBtX3RyYW5zZm9ybS50cmFuc2xhdGUodHgsIHR5
KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNm
b3JtOjpzaGVhcihkb3VibGUgc3gsIGRvdWJsZSBzeSkKK1RyYW5zZm9ybWF0aW9uTWF0cml4JiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2hlYXIoZG91YmxlIHN4LCBkb3VibGUgc3kpCiB7CiAgICAg
bV90cmFuc2Zvcm0uc2hlYXIoc3gsIHN5KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLWRvdWJs
ZSBBZmZpbmVUcmFuc2Zvcm06OmRldCgpIGNvbnN0Citkb3VibGUgVHJhbnNmb3JtYXRpb25NYXRy
aXg6OmRldCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJhbnNmb3JtLmRldCgpOwogfQogCi1B
ZmZpbmVUcmFuc2Zvcm0gQWZmaW5lVHJhbnNmb3JtOjppbnZlcnNlKCkgY29uc3QKK1RyYW5zZm9y
bWF0aW9uTWF0cml4IFRyYW5zZm9ybWF0aW9uTWF0cml4OjppbnZlcnNlKCkgY29uc3QKIHsKICAg
ICBpZighaXNJbnZlcnRpYmxlKCkpCi0gICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsK
KyAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiAKICAgICByZXR1cm4gbV90
cmFuc2Zvcm0uaW52ZXJ0ZWQoKTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtOjpvcGVyYXRvciBRTWF0
cml4KCkgY29uc3QKK1RyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvciBRTWF0cml4KCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm07CiB9CiAKLWJvb2wgQWZmaW5lVHJhbnNmb3Jt
OjpvcGVyYXRvcj09KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgb3RoZXIpIGNvbnN0Citib29sIFRy
YW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0gPT0gb3RoZXIubV90cmFu
c2Zvcm07CiB9CiAKLUFmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjpvcGVyYXRvcio9
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgb3RoZXIpCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJh
bnNmb3JtYXRpb25NYXRyaXg6Om9wZXJhdG9yKj0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG90aGVyKQogewogICAgIG1fdHJhbnNmb3JtICo9IG90aGVyLm1fdHJhbnNmb3JtOwogICAgIHJl
dHVybiAqdGhpczsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIEFmZmluZVRyYW5zZm9ybTo6b3BlcmF0
b3IqKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgb3RoZXIpCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3IqKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBvdGhlcikKIHsKICAgICByZXR1cm4gbV90cmFuc2Zvcm0gKiBvdGhlci5tX3RyYW5zZm9ybTsK
IH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0UXQuY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFu
c2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkNv
bG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRm9udC5oIgpA
QCAtMjgwLDcgKzI4MCw3IEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBHcmFwaGljc0NvbnRl
eHQKICAgICByZXR1cm4gbV9kYXRhLT5wKCk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBHcmFwaGlj
c0NvbnRleHQ6OmdldENUTSgpIGNvbnN0CitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBHcmFwaGljc0Nv
bnRleHQ6OmdldENUTSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtQ29udGV4dCgpLT5j
b21iaW5lZE1hdHJpeCgpOwogfQpAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpmaWxsUGF0aCgpCiAgICAgICAgICAgICBwLT5maWxsUGF0aChwYXRoLCBwLT5icnVzaCgp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXR0ZXJuQ29sb3JTcGFjZTogewotICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gYWZmaW5lOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBh
ZmZpbmU7CiAgICAgICAgIHAtPmZpbGxQYXRoKHBhdGgsIFFCcnVzaChtX2NvbW1vbi0+c3RhdGUu
ZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihhZmZpbmUpKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ry
b2tlUGF0aCgpCiAgICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBhdGgsIHBlbik7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUGF0dGVybkNvbG9yU3BhY2U6IHsKLSAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIGFmZmluZTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWZmaW5lOwogICAg
ICAgICBwZW4uc2V0QnJ1c2goUUJydXNoKG1fY29tbW9uLT5zdGF0ZS5zdHJva2VQYXR0ZXJuLT5j
cmVhdGVQbGF0Zm9ybVBhdHRlcm4oYWZmaW5lKSkpOwogICAgICAgICBwLT5zZXRQZW4ocGVuKTsK
ICAgICAgICAgcC0+c3Ryb2tlUGF0aChwYXRoLCBwZW4pOwpAQCAtNjA3LDcgKzYwNyw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG8KICAgICAgICAgICAgIHAtPmZp
bGxSZWN0KHJlY3QsIHAtPmJydXNoKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhdHRl
cm5Db2xvclNwYWNlOiB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBhZmZpbmU7CisgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGFmZmluZTsKICAgICAgICAgcC0+ZmlsbFJlY3QocmVjdCwg
UUJydXNoKG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJu
KGFmZmluZSkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTAzNiw3ICsxMDM2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZElubmVyUm91bmRlZFJlYwogICAgIG1fZGF0YS0+cCgp
LT5zZXRDbGlwUGF0aChwYXRoLCBRdDo6SW50ZXJzZWN0Q2xpcCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0Ojpjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit2
b2lkIEdyYXBoaWNzQ29udGV4dDo6Y29uY2F0Q1RNKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCShyZXZp
c2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9u
TWF0cml4LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTdGlsbElt
YWdlUXQuaCIKICNpbmNsdWRlICJxd2Vic2V0dGluZ3MuaCIKQEAgLTkxLDcgKzkxLDcgQEAgUGFz
c1JlZlB0cjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlcwogfQogCiAgICAgCi12b2lkIElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKK3ZvaWQg
SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0s
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCogCiAgICAgY3R4dC0+cmVzdG9yZSgpOwogfQogCi12b2lkIEJpdG1hcElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKK3ZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFu
c2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7
CiAgICAgUVBpeG1hcCogZnJhbWVQaXhtYXAgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0aFF0LmNwcAkocmV2aXNpb24g
Mzk2MTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdGhRdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJQYXRoLmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCkBAIC0yOTEsNyArMjkx
LDcgQEAgdm9pZCBQYXRoOjphcHBseSh2b2lkKiBpbmZvLCBQYXRoQXBwbGllcgogICAgIH0KIH0K
IAotdm9pZCBQYXRoOjp0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0p
Cit2b2lkIFBhdGg6OnRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKQogewogICAgIGlmIChtX3BhdGgpIHsKICAgICAgICAgUU1hdHJpeCBtYXQgPSB0cmFuc2Zv
cm07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1BhdHRlcm5RdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9QYXR0ZXJuUXQuY3BwCShy
ZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvUGF0dGVyblF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
CisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1RQnJ1c2ggUGF0dGVybjo6Y3JlYXRl
UGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKSBjb25zdAor
UUJydXNoIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtKSBjb25zdAogewogICAgIFFQaXhtYXAqIHBpeG1hcCA9IHRpbGVJ
bWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghcGl4bWFwKQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9y
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L0FmZmluZVRyYW5zZm9ybS5jcHAJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsMjA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLQotI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgotI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLQot
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Rh
dGljIHZvaWQgYWZmaW5lVHJhbnNmb3JtRGVjb21wb3NlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
bWF0cml4LCBkb3VibGUgc3JbOV0pCi17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG0obWF0cml4KTsK
LQotICAgIC8vIENvbXB1dGUgc2NhbGluZyBmYWN0b3JzCi0gICAgZG91YmxlIHN4ID0gc3FydCht
LmEoKSAqIG0uYSgpICsgbS5iKCkgKiBtLmIoKSk7Ci0gICAgZG91YmxlIHN5ID0gc3FydChtLmMo
KSAqIG0uYygpICsgbS5kKCkgKiBtLmQoKSk7Ci0KLSAgICAvKiBDb21wdXRlIGNyb3NzIHByb2R1
Y3Qgb2YgdHJhbnNmb3JtZWQgdW5pdCB2ZWN0b3JzLiBJZiBuZWdhdGl2ZSwKLSAgICAgICAgb25l
IGF4aXMgd2FzIGZsaXBwZWQuICovCi0KLSAgICBpZiAobS5hKCkgKiBtLmQoKSAtIG0uYygpICog
bS5iKCkgPCAwLjApIHsKLSAgICAgICAgLy8gRmxpcCBheGlzIHdpdGggbWluaW11bSB1bml0IHZl
Y3RvciBkb3QgcHJvZHVjdAotCi0gICAgICAgIGlmIChtLmEoKSA8IG0uZCgpKQotICAgICAgICAg
ICAgc3ggPSAtc3g7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN5ID0gLXN5OwotICAgIH0K
LQotICAgIC8vIFJlbW92ZSBzY2FsZSBmcm9tIG1hdHJpeAotCi0gICAgbS5zY2FsZSgxLjAgLyBz
eCwgMS4wIC8gc3kpOwotCi0gICAgLy8gQ29tcHV0ZSByb3RhdGlvbgotCi0gICAgZG91YmxlIGFu
Z2xlID0gYXRhbjIobS5iKCksIG0uYSgpKTsKLQotICAgIC8vIFJlbW92ZSByb3RhdGlvbiBmcm9t
IG1hdHJpeAotCi0gICAgbS5yb3RhdGUocmFkMmRlZygtYW5nbGUpKTsKLQotICAgIC8vIFJldHVy
biByZXN1bHRzCi0KLSAgICBzclswXSA9IHN4OyBzclsxXSA9IHN5OyBzclsyXSA9IGFuZ2xlOwot
ICAgIHNyWzNdID0gbS5hKCk7IHNyWzRdID0gbS5iKCk7Ci0gICAgc3JbNV0gPSBtLmMoKTsgc3Jb
Nl0gPSBtLmQoKTsKLSAgICBzcls3XSA9IG0uZSgpOyBzcls4XSA9IG0uZigpOwotfQotCi1zdGF0
aWMgdm9pZCBhZmZpbmVUcmFuc2Zvcm1Db21wb3NlKEFmZmluZVRyYW5zZm9ybSYgbSwgY29uc3Qg
ZG91YmxlIHNyWzldKQotewotICAgIG0uc2V0QShzclszXSk7Ci0gICAgbS5zZXRCKHNyWzRdKTsK
LSAgICBtLnNldEMoc3JbNV0pOwotICAgIG0uc2V0RChzcls2XSk7Ci0gICAgbS5zZXRFKHNyWzdd
KTsKLSAgICBtLnNldEYoc3JbOF0pOwotICAgIG0ucm90YXRlKHJhZDJkZWcoc3JbMl0pKTsKLSAg
ICBtLnNjYWxlKHNyWzBdLCBzclsxXSk7Ci19Ci0KLWJvb2wgQWZmaW5lVHJhbnNmb3JtOjppc0lu
dmVydGlibGUoKSBjb25zdAotewotICAgIHJldHVybiBkZXQoKSAhPSAwLjA7Ci19Ci0KLUFmZmlu
ZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjptdWx0aXBseShjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIG90aGVyKQotewotICAgIHJldHVybiAoKnRoaXMpICo9IG90aGVyOwotfQotCi1BZmZpbmVU
cmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6c2NhbGUoZG91YmxlIHMpCi17Ci0gICAgcmV0dXJu
IHNjYWxlKHMsIHMpOwotfQotCi1BZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6c2Nh
bGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwgZG91YmxlIHN5KQotewotICAgIHJldHVybiBzY2FsZShz
eCwgc3kpOwotfQotCi1BZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6cm90YXRlRnJv
bVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHkpCi17Ci0gICAgcmV0dXJuIHJvdGF0ZShyYWQyZGVn
KGF0YW4yKHksIHgpKSk7Ci19Ci0KLUFmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjpm
bGlwWCgpCi17Ci0gICAgcmV0dXJuIHNjYWxlKC0xLjBmLCAxLjBmKTsKLX0KLQotQWZmaW5lVHJh
bnNmb3JtJiBBZmZpbmVUcmFuc2Zvcm06OmZsaXBZKCkKLXsKLSAgICByZXR1cm4gc2NhbGUoMS4w
ZiwgLTEuMGYpOwotfQotCi1BZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6c2tldyhk
b3VibGUgYW5nbGVYLCBkb3VibGUgYW5nbGVZKQotewotICAgIHJldHVybiBzaGVhcih0YW4oZGVn
MnJhZChhbmdsZVgpKSwgdGFuKGRlZzJyYWQoYW5nbGVZKSkpOwotfQotCi1BZmZpbmVUcmFuc2Zv
cm0mIEFmZmluZVRyYW5zZm9ybTo6c2tld1goZG91YmxlIGFuZ2xlKQotewotICAgIHJldHVybiBz
aGVhcih0YW4oZGVnMnJhZChhbmdsZSkpLCAwLjBmKTsKLX0KLQotQWZmaW5lVHJhbnNmb3JtJiBB
ZmZpbmVUcmFuc2Zvcm06OnNrZXdZKGRvdWJsZSBhbmdsZSkKLXsKLSAgICByZXR1cm4gc2hlYXIo
MC4wZiwgdGFuKGRlZzJyYWQoYW5nbGUpKSk7Ci19Ci0KLUFmZmluZVRyYW5zZm9ybSBtYWtlTWFw
QmV0d2VlblJlY3RzKGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3QpCi17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlKGRlc3QueCgpIC0gc291cmNlLngoKSwgZGVzdC55KCkgLSBzb3VyY2UueSgpKTsKLSAg
ICB0cmFuc2Zvcm0uc2NhbGUoZGVzdC53aWR0aCgpIC8gc291cmNlLndpZHRoKCksIGRlc3QuaGVp
Z2h0KCkgLyBzb3VyY2UuaGVpZ2h0KCkpOwotICAgIHJldHVybiB0cmFuc2Zvcm07Ci19Ci0KLUlu
dFBvaW50IEFmZmluZVRyYW5zZm9ybTo6bWFwUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAotewotICAgIGRvdWJsZSB4MiwgeTI7Ci0gICAgbWFwKHBvaW50LngoKSwgcG9pbnQueSgp
LCAmeDIsICZ5Mik7Ci0gICAgCi0gICAgLy8gUm91bmQgdGhlIHBvaW50LgotICAgIHJldHVybiBJ
bnRQb2ludChscm91bmQoeDIpLCBscm91bmQoeTIpKTsKLX0KLQotRmxvYXRQb2ludCBBZmZpbmVU
cmFuc2Zvcm06Om1hcFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAotewotICAg
IGRvdWJsZSB4MiwgeTI7Ci0gICAgbWFwKHBvaW50LngoKSwgcG9pbnQueSgpLCAmeDIsICZ5Mik7
Ci0KLSAgICByZXR1cm4gRmxvYXRQb2ludChzdGF0aWNfY2FzdDxmbG9hdD4oeDIpLCBzdGF0aWNf
Y2FzdDxmbG9hdD4oeTIpKTsKLX0KLQotRmxvYXRRdWFkIEFmZmluZVRyYW5zZm9ybTo6bWFwUXVh
ZChjb25zdCBGbG9hdFF1YWQmIHF1YWQpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IGF2b2lkIDQg
c2VwZXJhdGUgbGlicmFyeSBjYWxscy4gUG9pbnQgbWFwcGluZyByZWFsbHkgbmVlZHMKLSAgICAv
LyB0byBiZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBjb2RlLgotICAgIHJldHVybiBGbG9hdFF1YWQo
bWFwUG9pbnQocXVhZC5wMSgpKSwKLSAgICAgICAgICAgICAgICAgICAgIG1hcFBvaW50KHF1YWQu
cDIoKSksCi0gICAgICAgICAgICAgICAgICAgICBtYXBQb2ludChxdWFkLnAzKCkpLAotICAgICAg
ICAgICAgICAgICAgICAgbWFwUG9pbnQocXVhZC5wNCgpKSk7Ci19Ci0KLXZvaWQgQWZmaW5lVHJh
bnNmb3JtOjpibGVuZChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGZyb20sIGRvdWJsZSBwcm9ncmVz
cykKLXsKLSAgICBkb3VibGUgc3JBWzldLCBzckJbOV07Ci0KLSAgICBhZmZpbmVUcmFuc2Zvcm1E
ZWNvbXBvc2UoZnJvbSwgc3JBKTsKLSAgICBhZmZpbmVUcmFuc2Zvcm1EZWNvbXBvc2UoKnRoaXMs
IHNyQik7Ci0KLSAgICAvLyBJZiB4LWF4aXMgb2Ygb25lIGlzIGZsaXBwZWQsIGFuZCB5LWF4aXMg
b2YgdGhlIG90aGVyLCBjb252ZXJ0IHRvIGFuIHVuZmxpcHBlZCByb3RhdGlvbi4KLSAgICBpZiAo
KHNyQVswXSA8IDAuMCAmJiBzckJbMV0gPCAwLjApIHx8IChzckFbMV0gPCAwLjAgJiYgIHNyQlsw
XSA8IDAuMCkpIHsKLSAgICAgICAgc3JBWzBdID0gLXNyQVswXTsKLSAgICAgICAgc3JBWzFdID0g
LXNyQVsxXTsKLSAgICAgICAgc3JBWzJdICs9IHNyQVsyXSA8IDAgPyBwaURvdWJsZSA6IC1waURv
dWJsZTsKLSAgICB9Ci0KLSAgICAvLyBEb24ndCByb3RhdGUgdGhlIGxvbmcgd2F5IGFyb3VuZC4K
LSAgICBzckFbMl0gPSBmbW9kKHNyQVsyXSwgMi4wICogcGlEb3VibGUpOwotICAgIHNyQlsyXSA9
IGZtb2Qoc3JCWzJdLCAyLjAgKiBwaURvdWJsZSk7Ci0KLSAgICBpZiAoZmFicyhzckFbMl0gLSBz
ckJbMl0pID4gcGlEb3VibGUpIHsKLSAgICAgICAgaWYgKHNyQVsyXSA+IHNyQlsyXSkKLSAgICAg
ICAgICAgIHNyQVsyXSAtPSBwaURvdWJsZSAqIDIuMDsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc3JCWzJdIC09IHBpRG91YmxlICogMi4wOwotICAgIH0KLQotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgOTsgaSsrKQotICAgICAgICBzckFbaV0gPSBzckFbaV0gKyBwcm9ncmVzcyAqIChzckJb
aV0gLSBzckFbaV0pOwotCi0gICAgYWZmaW5lVHJhbnNmb3JtQ29tcG9zZSgqdGhpcywgc3JBKTsK
LX0KLQotfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmlu
ZVRyYW5zZm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYg
QWZmaW5lVHJhbnNmb3JtX2gKLSNkZWZpbmUgQWZmaW5lVHJhbnNmb3JtX2gKLQotI2lmIFBMQVRG
T1JNKENHKQotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0FmZmluZVRyYW5zZm9ybS5oPgotdHlw
ZWRlZiBDR0FmZmluZVRyYW5zZm9ybSBQbGF0Zm9ybUFmZmluZVRyYW5zZm9ybTsKLSNlbGlmIFBM
QVRGT1JNKFFUKQotI2luY2x1ZGUgPFFNYXRyaXg+Ci10eXBlZGVmIFFNYXRyaXggUGxhdGZvcm1B
ZmZpbmVUcmFuc2Zvcm07Ci0jZWxpZiBQTEFURk9STShDQUlSTykKLSNpbmNsdWRlIDxjYWlyby5o
PgotdHlwZWRlZiBjYWlyb19tYXRyaXhfdCBQbGF0Zm9ybUFmZmluZVRyYW5zZm9ybTsKLSNlbGlm
IFBMQVRGT1JNKFNLSUEpCi0jaW5jbHVkZSAiU2tNYXRyaXguaCIKLXR5cGVkZWYgU2tNYXRyaXgg
UGxhdGZvcm1BZmZpbmVUcmFuc2Zvcm07Ci0jZWxpZiBQTEFURk9STShXWCkgJiYgVVNFKFdYR0Mp
Ci0jaW5jbHVkZSA8d3gvZGVmcy5oPgotI2luY2x1ZGUgPHd4L2dyYXBoaWNzLmg+Ci10eXBlZGVm
IHd4R3JhcGhpY3NNYXRyaXggUGxhdGZvcm1BZmZpbmVUcmFuc2Zvcm07Ci0jZW5kaWYKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnRQb2ludDsKLWNsYXNzIEludFJlY3Q7Ci1jbGFz
cyBGbG9hdFBvaW50OwotY2xhc3MgRmxvYXRSZWN0OwotY2xhc3MgRmxvYXRRdWFkOwotCi1jbGFz
cyBBZmZpbmVUcmFuc2Zvcm0gewotcHVibGljOgotICAgIEFmZmluZVRyYW5zZm9ybSgpOwotICAg
IEFmZmluZVRyYW5zZm9ybShkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwg
ZG91YmxlIGUsIGRvdWJsZSBmKTsKLSNpZiAhUExBVEZPUk0oV1gpIHx8IFVTRShXWEdDKQotICAg
IEFmZmluZVRyYW5zZm9ybShjb25zdCBQbGF0Zm9ybUFmZmluZVRyYW5zZm9ybSYpOwotI2VuZGlm
Ci0KLSAgICB2b2lkIHNldE1hdHJpeChkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3Vi
bGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKTsKLSAgICB2b2lkIG1hcChkb3VibGUgeCwgZG91Ymxl
IHksIGRvdWJsZSAqeDIsIGRvdWJsZSAqeTIpIGNvbnN0OwotCi0gICAgLy8gUm91bmRzIHRoZSBt
YXBwZWQgcG9pbnQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciB2YWx1ZS4KLSAgICBJbnRQb2ludCBt
YXBQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotCi0gICAgRmxvYXRQb2ludCBtYXBQb2lu
dChjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7Ci0KLSAgICAvLyBSb3VuZHMgdGhlIHJlc3VsdGlu
ZyBtYXBwZWQgcmVjdGFuZ2xlIG91dC4gVGhpcyBpcyBoZWxwZnVsIGZvciBib3VuZGluZwotICAg
IC8vIGJveCBjb21wdXRhdGlvbnMgYnV0IG1heSBub3QgYmUgd2hhdCBpcyB3YW50ZWQgaW4gb3Ro
ZXIgY29udGV4dHMuCi0gICAgSW50UmVjdCBtYXBSZWN0KGNvbnN0IEludFJlY3QmKSBjb25zdDsK
LQotICAgIEZsb2F0UmVjdCBtYXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwotCi0gICAg
RmxvYXRRdWFkIG1hcFF1YWQoY29uc3QgRmxvYXRRdWFkJikgY29uc3Q7Ci0KLSAgICBib29sIGlz
SWRlbnRpdHkoKSBjb25zdDsKLQotICAgIGRvdWJsZSBhKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRB
KGRvdWJsZSBhKTsKLQotICAgIGRvdWJsZSBiKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRCKGRvdWJs
ZSBiKTsKLQotICAgIGRvdWJsZSBjKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDKGRvdWJsZSBjKTsK
LQotICAgIGRvdWJsZSBkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXREKGRvdWJsZSBkKTsKLQotICAg
IGRvdWJsZSBlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRFKGRvdWJsZSBlKTsKLQotICAgIGRvdWJs
ZSBmKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRGKGRvdWJsZSBmKTsKLQotICAgIHZvaWQgcmVzZXQo
KTsKLQotICAgIEFmZmluZVRyYW5zZm9ybSYgbXVsdGlwbHkoY29uc3QgQWZmaW5lVHJhbnNmb3Jt
Jik7Ci0gICAgQWZmaW5lVHJhbnNmb3JtJiBzY2FsZShkb3VibGUpOyAKLSAgICBBZmZpbmVUcmFu
c2Zvcm0mIHNjYWxlKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsgCi0gICAgQWZmaW5lVHJhbnNmb3Jt
JiBzY2FsZU5vblVuaWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kpOwotICAgIEFmZmluZVRyYW5z
Zm9ybSYgcm90YXRlKGRvdWJsZSBkKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0mIHJvdGF0ZUZyb21W
ZWN0b3IoZG91YmxlIHgsIGRvdWJsZSB5KTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zbGF0
ZShkb3VibGUgdHgsIGRvdWJsZSB0eSk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtJiBzaGVhcihkb3Vi
bGUgc3gsIGRvdWJsZSBzeSk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtJiBmbGlwWCgpOwotICAgIEFm
ZmluZVRyYW5zZm9ybSYgZmxpcFkoKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0mIHNrZXcoZG91Ymxl
IGFuZ2xlWCwgZG91YmxlIGFuZ2xlWSk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtJiBza2V3WChkb3Vi
bGUgYW5nbGUpOwotICAgIEFmZmluZVRyYW5zZm9ybSYgc2tld1koZG91YmxlIGFuZ2xlKTsKLSAK
LSAgICBkb3VibGUgZGV0KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0ludmVydGlibGUoKSBjb25zdDsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZSgpIGNvbnN0OwotCi0gICAgdm9pZCBibGVuZChj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGZyb20sIGRvdWJsZSBwcm9ncmVzcyk7Ci0KLSNpZiAhUExB
VEZPUk0oV1gpIHx8IFVTRShXWEdDKQotICAgIG9wZXJhdG9yIFBsYXRmb3JtQWZmaW5lVHJhbnNm
b3JtKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAgICBBZmZp
bmVUcmFuc2Zvcm0mIG9wZXJhdG9yKj0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgQWZm
aW5lVHJhbnNmb3JtIG9wZXJhdG9yKihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICAKLXBy
aXZhdGU6Ci0jaWYgIVBMQVRGT1JNKFdYKSB8fCBVU0UoV1hHQykKLSAgICBQbGF0Zm9ybUFmZmlu
ZVRyYW5zZm9ybSBtX3RyYW5zZm9ybTsKLSNlbmRpZgotfTsKLQotQWZmaW5lVHJhbnNmb3JtIG1h
a2VNYXBCZXR3ZWVuUmVjdHMoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEFmZmluZVRy
YW5zZm9ybV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRl
bnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaAkocmV2aXNp
b24gMzk2MTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRp
dHlUcmFuc2Zvcm1PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gaXNTYW1lVHlwZShvKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgYXBwbHkoQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0Cisg
ICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgSW50U2l6
ZSYpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAgUGFzc1JlZlB0cjxUcmFuc2Zvcm1P
cGVyYXRpb24+IE1hdHJpeFRyYQogCiAgICAgLy8gY29udmVydCB0aGUgVHJhbnNmb3JtT3BlcmF0
aW9ucyBpbnRvIG1hdHJpY2VzCiAgICAgSW50U2l6ZSBzaXplOwotICAgIEFmZmluZVRyYW5zZm9y
bSBmcm9tVDsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdG9UKG1fYSwgbV9iLCBtX2MsIG1fZCwgbV9l
LCBtX2YpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb21UOworICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHRvVChtX2EsIG1fYiwgbV9jLCBtX2QsIG1fZSwgbV9mKTsKICAgICBpZiAoZnJv
bSkgewogICAgICAgICBjb25zdCBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24qIG0gPSBzdGF0aWNf
Y2FzdDxjb25zdCBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24qPihmcm9tKTsKICAgICAgICAgZnJv
bVQuc2V0TWF0cml4KG0tPm1fYSwgbS0+bV9iLCBtLT5tX2MsIG0tPm1fZCwgbS0+bV9lLCBtLT5t
X2YpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRy
YW5zZm9ybU9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaAkocmV2aXNpb24gMzk2MTAp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3Jt
T3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgcmV0dXJuIG1fYSA9PSBtLT5tX2EgJiYgbV9iID09IG0tPm1fYiAmJiBtX2MgPT0gbS0+
bV9jICYmIG1fZCA9PSBtLT5tX2QgJiYgbV9lID09IG0tPm1fZSAmJiBtX2YgPT0gbS0+bV9mOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBhcHBseShBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSwgY29uc3QgSW50U2l6ZSYpIGNvbnN0CisgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUmKSBjb25zdAogICAgIHsKLSAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeChtX2EsIG1fYiwgbV9jLCBtX2QsIG1fZSwgbV9m
KTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4KG1fYSwgbV9iLCBtX2MsIG1f
ZCwgbV9lLCBtX2YpOwogICAgICAgICB0cmFuc2Zvcm0gPSBtYXRyaXggKiB0cmFuc2Zvcm07CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbi5oCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2FuZ2xlID09IHItPm1fYW5nbGU7
CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGFwcGx5KEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLCBjb25zdCBJbnRTaXplJiAvKmJvcmRlckJveFNpemUqLykgY29uc3QKKyAgICB2aXJ0dWFs
IGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6
ZSYgLypib3JkZXJCb3hTaXplKi8pIGNvbnN0CiAgICAgewogICAgICAgICB0cmFuc2Zvcm0ucm90
YXRlKG1fYW5nbGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb24uaAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV94ID09IHMtPm1feCAm
JiBtX3kgPT0gcy0+bV95OwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBhcHBseShBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYpIGNvbnN0CisgICAgdmlydHVhbCBi
b29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUm
KSBjb25zdAogICAgIHsKICAgICAgICAgdHJhbnNmb3JtLnNjYWxlKG1feCwgbV95KTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oCShyZXZpc2lv
biAzOTYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Ta2V3VHJh
bnNmb3JtT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIG1fYW5nbGVYID09IHMtPm1fYW5nbGVYICYmIG1fYW5nbGVZID09
IHMtPm1fYW5nbGVZOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBhcHBseShBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYpIGNvbnN0CisgICAgdmlydHVhbCBib29s
IGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUmKSBj
b25zdAogICAgIHsKICAgICAgICAgdHJhbnNmb3JtLnNrZXcobV9hbmdsZVgsIG1fYW5nbGVZKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24uaAkocmV2aXNpb24g
Mzk2MTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
T3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpZm5kZWYgVHJh
bnNmb3JtT3BlcmF0aW9uX2gKICNkZWZpbmUgVHJhbnNmb3JtT3BlcmF0aW9uX2gKIAotI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4Lmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
YXBwbHkoQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNv
bnN0IEludFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSA9
IDA7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1PcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gbyk7CiAgICAgfQogICAgIAotICAgIHZvaWQgYXBwbHkoY29uc3QgSW50U2l6ZSYg
c3osIEFmZmluZVRyYW5zZm9ybSYgdCkgY29uc3QKKyAgICB2b2lkIGFwcGx5KGNvbnN0IEludFNp
emUmIHN6LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkgY29uc3QKICAgICB7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX29wZXJhdGlvbnMuc2l6ZSgpOyArK2kpCiAgICAgICAg
ICAgICBtX29wZXJhdGlvbnNbaV0tPmFwcGx5KHQsIHN6KTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9u
TWF0cml4LmNwcAkocmV2aXNpb24gMzk2MTApCShmcm9tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwOjM5NjEwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
NiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorCisjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAiSW50UmVj
dC5oIgorCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGF0aWMgdm9pZCBhZmZpbmVUcmFuc2Zvcm1EZWNvbXBvc2UoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBtYXRyaXgsIGRvdWJsZSBzcls5XSkKK3sKKyAgICBBZmZpbmVUcmFuc2Zvcm0gbSht
YXRyaXgpOworCisgICAgLy8gQ29tcHV0ZSBzY2FsaW5nIGZhY3RvcnMKKyAgICBkb3VibGUgc3gg
PSBzcXJ0KG0uYSgpICogbS5hKCkgKyBtLmIoKSAqIG0uYigpKTsKKyAgICBkb3VibGUgc3kgPSBz
cXJ0KG0uYygpICogbS5jKCkgKyBtLmQoKSAqIG0uZCgpKTsKKworICAgIC8qIENvbXB1dGUgY3Jv
c3MgcHJvZHVjdCBvZiB0cmFuc2Zvcm1lZCB1bml0IHZlY3RvcnMuIElmIG5lZ2F0aXZlLAorICAg
ICAgICBvbmUgYXhpcyB3YXMgZmxpcHBlZC4gKi8KKworICAgIGlmIChtLmEoKSAqIG0uZCgpIC0g
bS5jKCkgKiBtLmIoKSA8IDAuMCkgeworICAgICAgICAvLyBGbGlwIGF4aXMgd2l0aCBtaW5pbXVt
IHVuaXQgdmVjdG9yIGRvdCBwcm9kdWN0CisKKyAgICAgICAgaWYgKG0uYSgpIDwgbS5kKCkpCisg
ICAgICAgICAgICBzeCA9IC1zeDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3kgPSAtc3k7
CisgICAgfQorCisgICAgLy8gUmVtb3ZlIHNjYWxlIGZyb20gbWF0cml4CisKKyAgICBtLnNjYWxl
KDEuMCAvIHN4LCAxLjAgLyBzeSk7CisKKyAgICAvLyBDb21wdXRlIHJvdGF0aW9uCisKKyAgICBk
b3VibGUgYW5nbGUgPSBhdGFuMihtLmIoKSwgbS5hKCkpOworCisgICAgLy8gUmVtb3ZlIHJvdGF0
aW9uIGZyb20gbWF0cml4CisKKyAgICBtLnJvdGF0ZShyYWQyZGVnKC1hbmdsZSkpOworCisgICAg
Ly8gUmV0dXJuIHJlc3VsdHMKKworICAgIHNyWzBdID0gc3g7IHNyWzFdID0gc3k7IHNyWzJdID0g
YW5nbGU7CisgICAgc3JbM10gPSBtLmEoKTsgc3JbNF0gPSBtLmIoKTsKKyAgICBzcls1XSA9IG0u
YygpOyBzcls2XSA9IG0uZCgpOworICAgIHNyWzddID0gbS5lKCk7IHNyWzhdID0gbS5mKCk7Cit9
CisKK3N0YXRpYyB2b2lkIGFmZmluZVRyYW5zZm9ybUNvbXBvc2UoQWZmaW5lVHJhbnNmb3JtJiBt
LCBjb25zdCBkb3VibGUgc3JbOV0pCit7CisgICAgbS5zZXRBKHNyWzNdKTsKKyAgICBtLnNldEIo
c3JbNF0pOworICAgIG0uc2V0Qyhzcls1XSk7CisgICAgbS5zZXREKHNyWzZdKTsKKyAgICBtLnNl
dEUoc3JbN10pOworICAgIG0uc2V0Rihzcls4XSk7CisgICAgbS5yb3RhdGUocmFkMmRlZyhzclsy
XSkpOworICAgIG0uc2NhbGUoc3JbMF0sIHNyWzFdKTsKK30KKworYm9vbCBBZmZpbmVUcmFuc2Zv
cm06OmlzSW52ZXJ0aWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRldCgpICE9IDAuMDsKK30K
KworQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zvcm06Om11bHRpcGx5KGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgb3RoZXIpCit7CisgICAgcmV0dXJuICgqdGhpcykgKj0gb3RoZXI7Cit9CisK
K0FmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjpzY2FsZShkb3VibGUgcykKK3sKKyAg
ICByZXR1cm4gc2NhbGUocywgcyk7Cit9CisKK0FmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNm
b3JtOjpzY2FsZU5vblVuaWZvcm0oZG91YmxlIHN4LCBkb3VibGUgc3kpCit7CisgICAgcmV0dXJu
IHNjYWxlKHN4LCBzeSk7Cit9CisKK0FmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjpy
b3RhdGVGcm9tVmVjdG9yKGRvdWJsZSB4LCBkb3VibGUgeSkKK3sKKyAgICByZXR1cm4gcm90YXRl
KHJhZDJkZWcoYXRhbjIoeSwgeCkpKTsKK30KKworQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFu
c2Zvcm06OmZsaXBYKCkKK3sKKyAgICByZXR1cm4gc2NhbGUoLTEuMGYsIDEuMGYpOworfQorCitB
ZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6ZmxpcFkoKQoreworICAgIHJldHVybiBz
Y2FsZSgxLjBmLCAtMS4wZik7Cit9CisKK0FmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3Jt
Ojpza2V3KGRvdWJsZSBhbmdsZVgsIGRvdWJsZSBhbmdsZVkpCit7CisgICAgcmV0dXJuIHNoZWFy
KHRhbihkZWcycmFkKGFuZ2xlWCkpLCB0YW4oZGVnMnJhZChhbmdsZVkpKSk7Cit9CisKK0FmZmlu
ZVRyYW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjpza2V3WChkb3VibGUgYW5nbGUpCit7CisgICAg
cmV0dXJuIHNoZWFyKHRhbihkZWcycmFkKGFuZ2xlKSksIDAuMGYpOworfQorCitBZmZpbmVUcmFu
c2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6c2tld1koZG91YmxlIGFuZ2xlKQoreworICAgIHJldHVy
biBzaGVhcigwLjBmLCB0YW4oZGVnMnJhZChhbmdsZSkpKTsKK30KKworQWZmaW5lVHJhbnNmb3Jt
IG1ha2VNYXBCZXR3ZWVuUmVjdHMoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdCkKK3sKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgIHRyYW5z
Zm9ybS50cmFuc2xhdGUoZGVzdC54KCkgLSBzb3VyY2UueCgpLCBkZXN0LnkoKSAtIHNvdXJjZS55
KCkpOworICAgIHRyYW5zZm9ybS5zY2FsZShkZXN0LndpZHRoKCkgLyBzb3VyY2Uud2lkdGgoKSwg
ZGVzdC5oZWlnaHQoKSAvIHNvdXJjZS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIHRyYW5zZm9ybTsK
K30KKworSW50UG9pbnQgQWZmaW5lVHJhbnNmb3JtOjptYXBQb2ludChjb25zdCBJbnRQb2ludCYg
cG9pbnQpIGNvbnN0Cit7CisgICAgZG91YmxlIHgyLCB5MjsKKyAgICBtYXAocG9pbnQueCgpLCBw
b2ludC55KCksICZ4MiwgJnkyKTsKKyAgICAKKyAgICAvLyBSb3VuZCB0aGUgcG9pbnQuCisgICAg
cmV0dXJuIEludFBvaW50KGxyb3VuZCh4MiksIGxyb3VuZCh5MikpOworfQorCitGbG9hdFBvaW50
IEFmZmluZVRyYW5zZm9ybTo6bWFwUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0
Cit7CisgICAgZG91YmxlIHgyLCB5MjsKKyAgICBtYXAocG9pbnQueCgpLCBwb2ludC55KCksICZ4
MiwgJnkyKTsKKworICAgIHJldHVybiBGbG9hdFBvaW50KHN0YXRpY19jYXN0PGZsb2F0Pih4Miks
IHN0YXRpY19jYXN0PGZsb2F0Pih5MikpOworfQorCitGbG9hdFF1YWQgQWZmaW5lVHJhbnNmb3Jt
OjptYXBRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTog
YXZvaWQgNCBzZXBlcmF0ZSBsaWJyYXJ5IGNhbGxzLiBQb2ludCBtYXBwaW5nIHJlYWxseSBuZWVk
cworICAgIC8vIHRvIGJlIHBsYXRmb3JtLWluZGVwZW5kZW50IGNvZGUuCisgICAgcmV0dXJuIEZs
b2F0UXVhZChtYXBQb2ludChxdWFkLnAxKCkpLAorICAgICAgICAgICAgICAgICAgICAgbWFwUG9p
bnQocXVhZC5wMigpKSwKKyAgICAgICAgICAgICAgICAgICAgIG1hcFBvaW50KHF1YWQucDMoKSks
CisgICAgICAgICAgICAgICAgICAgICBtYXBQb2ludChxdWFkLnA0KCkpKTsKK30KKwordm9pZCBB
ZmZpbmVUcmFuc2Zvcm06OmJsZW5kKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZnJvbSwgZG91Ymxl
IHByb2dyZXNzKQoreworICAgIGRvdWJsZSBzckFbOV0sIHNyQls5XTsKKworICAgIGFmZmluZVRy
YW5zZm9ybURlY29tcG9zZShmcm9tLCBzckEpOworICAgIGFmZmluZVRyYW5zZm9ybURlY29tcG9z
ZSgqdGhpcywgc3JCKTsKKworICAgIC8vIElmIHgtYXhpcyBvZiBvbmUgaXMgZmxpcHBlZCwgYW5k
IHktYXhpcyBvZiB0aGUgb3RoZXIsIGNvbnZlcnQgdG8gYW4gdW5mbGlwcGVkIHJvdGF0aW9uLgor
ICAgIGlmICgoc3JBWzBdIDwgMC4wICYmIHNyQlsxXSA8IDAuMCkgfHwgKHNyQVsxXSA8IDAuMCAm
JiAgc3JCWzBdIDwgMC4wKSkgeworICAgICAgICBzckFbMF0gPSAtc3JBWzBdOworICAgICAgICBz
ckFbMV0gPSAtc3JBWzFdOworICAgICAgICBzckFbMl0gKz0gc3JBWzJdIDwgMCA/IHBpRG91Ymxl
IDogLXBpRG91YmxlOworICAgIH0KKworICAgIC8vIERvbid0IHJvdGF0ZSB0aGUgbG9uZyB3YXkg
YXJvdW5kLgorICAgIHNyQVsyXSA9IGZtb2Qoc3JBWzJdLCAyLjAgKiBwaURvdWJsZSk7CisgICAg
c3JCWzJdID0gZm1vZChzckJbMl0sIDIuMCAqIHBpRG91YmxlKTsKKworICAgIGlmIChmYWJzKHNy
QVsyXSAtIHNyQlsyXSkgPiBwaURvdWJsZSkgeworICAgICAgICBpZiAoc3JBWzJdID4gc3JCWzJd
KQorICAgICAgICAgICAgc3JBWzJdIC09IHBpRG91YmxlICogMi4wOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzckJbMl0gLT0gcGlEb3VibGUgKiAyLjA7CisgICAgfQorCisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCA5OyBpKyspCisgICAgICAgIHNyQVtpXSA9IHNyQVtpXSArIHByb2dyZXNz
ICogKHNyQltpXSAtIHNyQVtpXSk7CisKKyAgICBhZmZpbmVUcmFuc2Zvcm1Db21wb3NlKCp0aGlz
LCBzckEpOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAJKHJldmlzaW9u
IDM5NjEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAj
aW5jbHVkZSAiRmxvYXRRdWFkLmgiCkBAIC0zNCw5ICszNCw5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIHZvaWQgYWZmaW5lVHJhbnNmb3JtRGVjb21wb3NlKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgbWF0cml4LCBkb3VibGUgc3JbOV0pCitzdGF0aWMgdm9pZCBhZmZpbmVUcmFu
c2Zvcm1EZWNvbXBvc2UoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZG91Ymxl
IHNyWzldKQogewotICAgIEFmZmluZVRyYW5zZm9ybSBtKG1hdHJpeCk7CisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbShtYXRyaXgpOwogCiAgICAgLy8gQ29tcHV0ZSBzY2FsaW5nIGZhY3RvcnMK
ICAgICBkb3VibGUgc3ggPSBzcXJ0KG0uYSgpICogbS5hKCkgKyBtLmIoKSAqIG0uYigpKTsKQEAg
LTc0LDcgKzc0LDcgQEAgc3RhdGljIHZvaWQgYWZmaW5lVHJhbnNmb3JtRGVjb21wb3NlKGNvbgog
ICAgIHNyWzddID0gbS5lKCk7IHNyWzhdID0gbS5mKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFmZmlu
ZVRyYW5zZm9ybUNvbXBvc2UoQWZmaW5lVHJhbnNmb3JtJiBtLCBjb25zdCBkb3VibGUgc3JbOV0p
CitzdGF0aWMgdm9pZCBhZmZpbmVUcmFuc2Zvcm1Db21wb3NlKFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtLCBjb25zdCBkb3VibGUgc3JbOV0pCiB7CiAgICAgbS5zZXRBKHNyWzNdKTsKICAgICBtLnNl
dEIoc3JbNF0pOwpAQCAtODYsNjUgKzg2LDY1IEBAIHN0YXRpYyB2b2lkIGFmZmluZVRyYW5zZm9y
bUNvbXBvc2UoQWZmaW4KICAgICBtLnNjYWxlKHNyWzBdLCBzclsxXSk7CiB9CiAKLWJvb2wgQWZm
aW5lVHJhbnNmb3JtOjppc0ludmVydGlibGUoKSBjb25zdAorYm9vbCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6aXNJbnZlcnRpYmxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gZGV0KCkgIT0gMC4wOwog
fQogCi1BZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6bXVsdGlwbHkoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBvdGhlcikKK1RyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6bXVsdGlwbHkoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG90aGVyKQogewog
ICAgIHJldHVybiAoKnRoaXMpICo9IG90aGVyOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0mIEFmZmlu
ZVRyYW5zZm9ybTo6c2NhbGUoZG91YmxlIHMpCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNm
b3JtYXRpb25NYXRyaXg6OnNjYWxlKGRvdWJsZSBzKQogewogICAgIHJldHVybiBzY2FsZShzLCBz
KTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zvcm06OnNjYWxlTm9uVW5pZm9y
bShkb3VibGUgc3gsIGRvdWJsZSBzeSkKK1RyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6c2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwgZG91YmxlIHN5KQogewogICAg
IHJldHVybiBzY2FsZShzeCwgc3kpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5z
Zm9ybTo6cm90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHkpCitUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJvdGF0ZUZyb21WZWN0b3IoZG91YmxlIHgs
IGRvdWJsZSB5KQogewogICAgIHJldHVybiByb3RhdGUocmFkMmRlZyhhdGFuMih5LCB4KSkpOwog
fQogCi1BZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6ZmxpcFgoKQorVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpmbGlwWCgpCiB7CiAgICAgcmV0dXJu
IHNjYWxlKC0xLjBmLCAxLjBmKTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zv
cm06OmZsaXBZKCkKK1RyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
ZmxpcFkoKQogewogICAgIHJldHVybiBzY2FsZSgxLjBmLCAtMS4wZik7CiB9CiAKLUFmZmluZVRy
YW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjpza2V3KGRvdWJsZSBhbmdsZVgsIGRvdWJsZSBhbmds
ZVkpCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNrZXcoZG91
YmxlIGFuZ2xlWCwgZG91YmxlIGFuZ2xlWSkKIHsKICAgICByZXR1cm4gc2hlYXIodGFuKGRlZzJy
YWQoYW5nbGVYKSksIHRhbihkZWcycmFkKGFuZ2xlWSkpKTsKIH0KIAotQWZmaW5lVHJhbnNmb3Jt
JiBBZmZpbmVUcmFuc2Zvcm06OnNrZXdYKGRvdWJsZSBhbmdsZSkKK1RyYW5zZm9ybWF0aW9uTWF0
cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2tld1goZG91YmxlIGFuZ2xlKQogewogICAgIHJl
dHVybiBzaGVhcih0YW4oZGVnMnJhZChhbmdsZSkpLCAwLjBmKTsKIH0KIAotQWZmaW5lVHJhbnNm
b3JtJiBBZmZpbmVUcmFuc2Zvcm06OnNrZXdZKGRvdWJsZSBhbmdsZSkKK1RyYW5zZm9ybWF0aW9u
TWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2tld1koZG91YmxlIGFuZ2xlKQogewogICAg
IHJldHVybiBzaGVhcigwLjBmLCB0YW4oZGVnMnJhZChhbmdsZSkpKTsKIH0KIAotQWZmaW5lVHJh
bnNmb3JtIG1ha2VNYXBCZXR3ZWVuUmVjdHMoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdCkKK1RyYW5zZm9ybWF0aW9uTWF0cml4IG1ha2VNYXBCZXR3ZWVuUmVj
dHMoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCkKIHsKLSAg
ICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRy
YW5zZm9ybTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGRlc3QueCgpIC0gc291cmNlLngoKSwg
ZGVzdC55KCkgLSBzb3VyY2UueSgpKTsKICAgICB0cmFuc2Zvcm0uc2NhbGUoZGVzdC53aWR0aCgp
IC8gc291cmNlLndpZHRoKCksIGRlc3QuaGVpZ2h0KCkgLyBzb3VyY2UuaGVpZ2h0KCkpOwogICAg
IHJldHVybiB0cmFuc2Zvcm07CiB9CiAKLUludFBvaW50IEFmZmluZVRyYW5zZm9ybTo6bWFwUG9p
bnQoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAorSW50UG9pbnQgVHJhbnNmb3JtYXRpb25N
YXRyaXg6Om1hcFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBkb3Vi
bGUgeDIsIHkyOwogICAgIG1hcChwb2ludC54KCksIHBvaW50LnkoKSwgJngyLCAmeTIpOwpAQCAt
MTUzLDcgKzE1Myw3IEBAIEludFBvaW50IEFmZmluZVRyYW5zZm9ybTo6bWFwUG9pbnQoY29uc3QK
ICAgICByZXR1cm4gSW50UG9pbnQobHJvdW5kKHgyKSwgbHJvdW5kKHkyKSk7CiB9CiAKLUZsb2F0
UG9pbnQgQWZmaW5lVHJhbnNmb3JtOjptYXBQb2ludChjb25zdCBGbG9hdFBvaW50JiBwb2ludCkg
Y29uc3QKK0Zsb2F0UG9pbnQgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFBvaW50KGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIGRvdWJsZSB4MiwgeTI7CiAgICAgbWFwKHBv
aW50LngoKSwgcG9pbnQueSgpLCAmeDIsICZ5Mik7CkBAIC0xNjEsNyArMTYxLDcgQEAgRmxvYXRQ
b2ludCBBZmZpbmVUcmFuc2Zvcm06Om1hcFBvaW50KGNvbgogICAgIHJldHVybiBGbG9hdFBvaW50
KHN0YXRpY19jYXN0PGZsb2F0Pih4MiksIHN0YXRpY19jYXN0PGZsb2F0Pih5MikpOwogfQogCi1G
bG9hdFF1YWQgQWZmaW5lVHJhbnNmb3JtOjptYXBRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkg
Y29uc3QKK0Zsb2F0UXVhZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUXVhZChjb25zdCBGbG9h
dFF1YWQmIHF1YWQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IGF2b2lkIDQgc2VwZXJhdGUgbGli
cmFyeSBjYWxscy4gUG9pbnQgbWFwcGluZyByZWFsbHkgbmVlZHMKICAgICAvLyB0byBiZSBwbGF0
Zm9ybS1pbmRlcGVuZGVudCBjb2RlLgpAQCAtMTcxLDcgKzE3MSw3IEBAIEZsb2F0UXVhZCBBZmZp
bmVUcmFuc2Zvcm06Om1hcFF1YWQoY29uc3QKICAgICAgICAgICAgICAgICAgICAgIG1hcFBvaW50
KHF1YWQucDQoKSkpOwogfQogCi12b2lkIEFmZmluZVRyYW5zZm9ybTo6YmxlbmQoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpCit2b2lkIFRyYW5zZm9ybWF0aW9u
TWF0cml4OjpibGVuZChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnJvbSwgZG91YmxlIHBy
b2dyZXNzKQogewogICAgIGRvdWJsZSBzckFbOV0sIHNyQls5XTsKIApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0
aW9uTWF0cml4LmgJKHJldmlzaW9uIDM5NjEwKQkoZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmg6Mzk2MTApCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBB
cHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBBZmZpbmVUcmFuc2Zvcm1faAorI2RlZmluZSBBZmZpbmVUcmFuc2Zvcm1faAorCisjaWYgUExB
VEZPUk0oQ0cpCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQWZmaW5lVHJhbnNmb3JtLmg+Cit0
eXBlZGVmIENHQWZmaW5lVHJhbnNmb3JtIFBsYXRmb3JtQWZmaW5lVHJhbnNmb3JtOworI2VsaWYg
UExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UU1hdHJpeD4KK3R5cGVkZWYgUU1hdHJpeCBQbGF0Zm9y
bUFmZmluZVRyYW5zZm9ybTsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorI2luY2x1ZGUgPGNhaXJv
Lmg+Cit0eXBlZGVmIGNhaXJvX21hdHJpeF90IFBsYXRmb3JtQWZmaW5lVHJhbnNmb3JtOworI2Vs
aWYgUExBVEZPUk0oU0tJQSkKKyNpbmNsdWRlICJTa01hdHJpeC5oIgordHlwZWRlZiBTa01hdHJp
eCBQbGF0Zm9ybUFmZmluZVRyYW5zZm9ybTsKKyNlbGlmIFBMQVRGT1JNKFdYKSAmJiBVU0UoV1hH
QykKKyNpbmNsdWRlIDx3eC9kZWZzLmg+CisjaW5jbHVkZSA8d3gvZ3JhcGhpY3MuaD4KK3R5cGVk
ZWYgd3hHcmFwaGljc01hdHJpeCBQbGF0Zm9ybUFmZmluZVRyYW5zZm9ybTsKKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEludFBvaW50OworY2xhc3MgSW50UmVjdDsKK2Ns
YXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFzcyBGbG9hdFF1YWQ7CisKK2Ns
YXNzIEFmZmluZVRyYW5zZm9ybSB7CitwdWJsaWM6CisgICAgQWZmaW5lVHJhbnNmb3JtKCk7Cisg
ICAgQWZmaW5lVHJhbnNmb3JtKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBk
LCBkb3VibGUgZSwgZG91YmxlIGYpOworI2lmICFQTEFURk9STShXWCkgfHwgVVNFKFdYR0MpCisg
ICAgQWZmaW5lVHJhbnNmb3JtKGNvbnN0IFBsYXRmb3JtQWZmaW5lVHJhbnNmb3JtJik7CisjZW5k
aWYKKworICAgIHZvaWQgc2V0TWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRv
dWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpOworICAgIHZvaWQgbWFwKGRvdWJsZSB4LCBkb3Vi
bGUgeSwgZG91YmxlICp4MiwgZG91YmxlICp5MikgY29uc3Q7CisKKyAgICAvLyBSb3VuZHMgdGhl
IG1hcHBlZCBwb2ludCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIHZhbHVlLgorICAgIEludFBvaW50
IG1hcFBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisKKyAgICBGbG9hdFBvaW50IG1hcFBv
aW50KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKworICAgIC8vIFJvdW5kcyB0aGUgcmVzdWx0
aW5nIG1hcHBlZCByZWN0YW5nbGUgb3V0LiBUaGlzIGlzIGhlbHBmdWwgZm9yIGJvdW5kaW5nCisg
ICAgLy8gYm94IGNvbXB1dGF0aW9ucyBidXQgbWF5IG5vdCBiZSB3aGF0IGlzIHdhbnRlZCBpbiBv
dGhlciBjb250ZXh0cy4KKyAgICBJbnRSZWN0IG1hcFJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0
OworCisgICAgRmxvYXRSZWN0IG1hcFJlY3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CisKKyAg
ICBGbG9hdFF1YWQgbWFwUXVhZChjb25zdCBGbG9hdFF1YWQmKSBjb25zdDsKKworICAgIGJvb2wg
aXNJZGVudGl0eSgpIGNvbnN0OworCisgICAgZG91YmxlIGEoKSBjb25zdDsKKyAgICB2b2lkIHNl
dEEoZG91YmxlIGEpOworCisgICAgZG91YmxlIGIoKSBjb25zdDsKKyAgICB2b2lkIHNldEIoZG91
YmxlIGIpOworCisgICAgZG91YmxlIGMoKSBjb25zdDsKKyAgICB2b2lkIHNldEMoZG91YmxlIGMp
OworCisgICAgZG91YmxlIGQoKSBjb25zdDsKKyAgICB2b2lkIHNldEQoZG91YmxlIGQpOworCisg
ICAgZG91YmxlIGUoKSBjb25zdDsKKyAgICB2b2lkIHNldEUoZG91YmxlIGUpOworCisgICAgZG91
YmxlIGYoKSBjb25zdDsKKyAgICB2b2lkIHNldEYoZG91YmxlIGYpOworCisgICAgdm9pZCByZXNl
dCgpOworCisgICAgQWZmaW5lVHJhbnNmb3JtJiBtdWx0aXBseShjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlKGRvdWJsZSk7IAorICAgIEFmZmluZVRy
YW5zZm9ybSYgc2NhbGUoZG91YmxlIHN4LCBkb3VibGUgc3kpOyAKKyAgICBBZmZpbmVUcmFuc2Zv
cm0mIHNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeSk7CisgICAgQWZmaW5lVHJh
bnNmb3JtJiByb3RhdGUoZG91YmxlIGQpOworICAgIEFmZmluZVRyYW5zZm9ybSYgcm90YXRlRnJv
bVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHkpOworICAgIEFmZmluZVRyYW5zZm9ybSYgdHJhbnNs
YXRlKGRvdWJsZSB0eCwgZG91YmxlIHR5KTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIHNoZWFyKGRv
dWJsZSBzeCwgZG91YmxlIHN5KTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIGZsaXBYKCk7CisgICAg
QWZmaW5lVHJhbnNmb3JtJiBmbGlwWSgpOworICAgIEFmZmluZVRyYW5zZm9ybSYgc2tldyhkb3Vi
bGUgYW5nbGVYLCBkb3VibGUgYW5nbGVZKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0mIHNrZXdYKGRv
dWJsZSBhbmdsZSk7CisgICAgQWZmaW5lVHJhbnNmb3JtJiBza2V3WShkb3VibGUgYW5nbGUpOwor
IAorICAgIGRvdWJsZSBkZXQoKSBjb25zdDsKKyAgICBib29sIGlzSW52ZXJ0aWJsZSgpIGNvbnN0
OworICAgIEFmZmluZVRyYW5zZm9ybSBpbnZlcnNlKCkgY29uc3Q7CisKKyAgICB2b2lkIGJsZW5k
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZnJvbSwgZG91YmxlIHByb2dyZXNzKTsKKworI2lmICFQ
TEFURk9STShXWCkgfHwgVVNFKFdYR0MpCisgICAgb3BlcmF0b3IgUGxhdGZvcm1BZmZpbmVUcmFu
c2Zvcm0oKSBjb25zdDsKKyNlbmRpZgorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIEFm
ZmluZVRyYW5zZm9ybSYgb3BlcmF0b3IqPShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICBB
ZmZpbmVUcmFuc2Zvcm0gb3BlcmF0b3IqKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgIAor
cHJpdmF0ZToKKyNpZiAhUExBVEZPUk0oV1gpIHx8IFVTRShXWEdDKQorICAgIFBsYXRmb3JtQWZm
aW5lVHJhbnNmb3JtIG1fdHJhbnNmb3JtOworI2VuZGlmCit9OworCitBZmZpbmVUcmFuc2Zvcm0g
bWFrZU1hcEJldHdlZW5SZWN0cyhjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQWZmaW5l
VHJhbnNmb3JtX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCShyZXZpc2lvbiAzOTYxMCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyNSArMjMsMjUgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAogICovCiAKLSNpZm5kZWYgQWZmaW5lVHJhbnNmb3JtX2gKLSNkZWZpbmUgQWZmaW5lVHJhbnNm
b3JtX2gKKyNpZm5kZWYgVHJhbnNmb3JtYXRpb25NYXRyaXhfaAorI2RlZmluZSBUcmFuc2Zvcm1h
dGlvbk1hdHJpeF9oCiAKICNpZiBQTEFURk9STShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3Mv
Q0dBZmZpbmVUcmFuc2Zvcm0uaD4KLXR5cGVkZWYgQ0dBZmZpbmVUcmFuc2Zvcm0gUGxhdGZvcm1B
ZmZpbmVUcmFuc2Zvcm07Cit0eXBlZGVmIENHQWZmaW5lVHJhbnNmb3JtIFBsYXRmb3JtVHJhbnNm
b3JtYXRpb25NYXRyaXg7CiAjZWxpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRTWF0cml4Pgot
dHlwZWRlZiBRTWF0cml4IFBsYXRmb3JtQWZmaW5lVHJhbnNmb3JtOwordHlwZWRlZiBRTWF0cml4
IFBsYXRmb3JtVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAjZWxpZiBQTEFURk9STShDQUlSTykKICNp
bmNsdWRlIDxjYWlyby5oPgotdHlwZWRlZiBjYWlyb19tYXRyaXhfdCBQbGF0Zm9ybUFmZmluZVRy
YW5zZm9ybTsKK3R5cGVkZWYgY2Fpcm9fbWF0cml4X3QgUGxhdGZvcm1UcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKICNlbGlmIFBMQVRGT1JNKFNLSUEpCiAjaW5jbHVkZSAiU2tNYXRyaXguaCIKLXR5cGVk
ZWYgU2tNYXRyaXggUGxhdGZvcm1BZmZpbmVUcmFuc2Zvcm07Cit0eXBlZGVmIFNrTWF0cml4IFBs
YXRmb3JtVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAjZWxpZiBQTEFURk9STShXWCkgJiYgVVNFKFdY
R0MpCiAjaW5jbHVkZSA8d3gvZGVmcy5oPgogI2luY2x1ZGUgPHd4L2dyYXBoaWNzLmg+Ci10eXBl
ZGVmIHd4R3JhcGhpY3NNYXRyaXggUGxhdGZvcm1BZmZpbmVUcmFuc2Zvcm07Cit0eXBlZGVmIHd4
R3JhcGhpY3NNYXRyaXggUGxhdGZvcm1UcmFuc2Zvcm1hdGlvbk1hdHJpeDsKICNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MiwxMiArNTIsMTIgQEAgY2xhc3MgRmxvYXRQb2ludDsK
IGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0UXVhZDsKIAotY2xhc3MgQWZmaW5lVHJhbnNm
b3JtIHsKK2NsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4IHsKIHB1YmxpYzoKLSAgICBBZmZpbmVU
cmFuc2Zvcm0oKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0oZG91YmxlIGEsIGRvdWJsZSBiLCBkb3Vi
bGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZik7CisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXgoKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeChkb3VibGUgYSwgZG91YmxlIGIsIGRv
dWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKTsKICNpZiAhUExBVEZPUk0oV1gp
IHx8IFVTRShXWEdDKQotICAgIEFmZmluZVRyYW5zZm9ybShjb25zdCBQbGF0Zm9ybUFmZmluZVRy
YW5zZm9ybSYpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IFBsYXRmb3JtVHJhbnNm
b3JtYXRpb25NYXRyaXgmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRNYXRyaXgoZG91YmxlIGEs
IGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZik7CkBAIC05
OCw0MyArOTgsNDMgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXNldCgpOwogCi0gICAgQWZmaW5l
VHJhbnNmb3JtJiBtdWx0aXBseShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICBBZmZpbmVU
cmFuc2Zvcm0mIHNjYWxlKGRvdWJsZSk7IAotICAgIEFmZmluZVRyYW5zZm9ybSYgc2NhbGUoZG91
YmxlIHN4LCBkb3VibGUgc3kpOyAKLSAgICBBZmZpbmVUcmFuc2Zvcm0mIHNjYWxlTm9uVW5pZm9y
bShkb3VibGUgc3gsIGRvdWJsZSBzeSk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtJiByb3RhdGUoZG91
YmxlIGQpOwotICAgIEFmZmluZVRyYW5zZm9ybSYgcm90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwg
ZG91YmxlIHkpOwotICAgIEFmZmluZVRyYW5zZm9ybSYgdHJhbnNsYXRlKGRvdWJsZSB0eCwgZG91
YmxlIHR5KTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0mIHNoZWFyKGRvdWJsZSBzeCwgZG91YmxlIHN5
KTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0mIGZsaXBYKCk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtJiBm
bGlwWSgpOwotICAgIEFmZmluZVRyYW5zZm9ybSYgc2tldyhkb3VibGUgYW5nbGVYLCBkb3VibGUg
YW5nbGVZKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0mIHNrZXdYKGRvdWJsZSBhbmdsZSk7Ci0gICAg
QWZmaW5lVHJhbnNmb3JtJiBza2V3WShkb3VibGUgYW5nbGUpOworICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtdWx0aXBseShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBzY2FsZShkb3VibGUpOyAKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgc2NhbGUoZG91YmxlIHN4LCBkb3VibGUgc3kpOyAKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgc2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwgZG91YmxlIHN5KTsKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgcm90YXRlKGRvdWJsZSBkKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
cm90YXRlRnJvbVZlY3Rvcihkb3VibGUgeCwgZG91YmxlIHkpOworICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2xhdGUoZG91YmxlIHR4LCBkb3VibGUgdHkpOworICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBzaGVhcihkb3VibGUgc3gsIGRvdWJsZSBzeSk7CisgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGZsaXBYKCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZsaXBZKCk7Cisg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNrZXcoZG91YmxlIGFuZ2xlWCwgZG91YmxlIGFuZ2xl
WSk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNrZXdYKGRvdWJsZSBhbmdsZSk7CisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHNrZXdZKGRvdWJsZSBhbmdsZSk7CiAgCiAgICAgZG91Ymxl
IGRldCgpIGNvbnN0OwogICAgIGJvb2wgaXNJbnZlcnRpYmxlKCkgY29uc3Q7Ci0gICAgQWZmaW5l
VHJhbnNmb3JtIGludmVyc2UoKSBjb25zdDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZl
cnNlKCkgY29uc3Q7CiAKLSAgICB2b2lkIGJsZW5kKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZnJv
bSwgZG91YmxlIHByb2dyZXNzKTsKKyAgICB2b2lkIGJsZW5kKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MpOwogCiAjaWYgIVBMQVRGT1JNKFdYKSB8fCBV
U0UoV1hHQykKLSAgICBvcGVyYXRvciBQbGF0Zm9ybUFmZmluZVRyYW5zZm9ybSgpIGNvbnN0Owor
ICAgIG9wZXJhdG9yIFBsYXRmb3JtVHJhbnNmb3JtYXRpb25NYXRyaXgoKSBjb25zdDsKICNlbmRp
ZgogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0Owot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG90aGVyKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotICAgIEFmZmluZVRyYW5zZm9ybSYgb3BlcmF0
b3IqPShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gb3BlcmF0
b3IqKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG9wZXJhdG9yKj0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcGVyYXRvciooY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKICAgICAKIHByaXZhdGU6CiAjaWYgIVBMQVRGT1JN
KFdYKSB8fCBVU0UoV1hHQykKLSAgICBQbGF0Zm9ybUFmZmluZVRyYW5zZm9ybSBtX3RyYW5zZm9y
bTsKKyAgICBQbGF0Zm9ybVRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwogI2VuZGlm
CiB9OwogCi1BZmZpbmVUcmFuc2Zvcm0gbWFrZU1hcEJldHdlZW5SZWN0cyhjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0KTsKK1RyYW5zZm9ybWF0aW9uTWF0cml4
IG1ha2VNYXBCZXR3ZWVuUmVjdHMoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEFmZmlu
ZVRyYW5zZm9ybV9oCisjZW5kaWYgLy8gVHJhbnNmb3JtYXRpb25NYXRyaXhfaApJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbV94ID09IHQtPm1feCAmJiBtX3kgPT0gdC0+bV95OwogICAgIH0KIAotICAgIHZpcnR1
YWwgYm9vbCBhcHBseShBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYg
Ym9yZGVyQm94U2l6ZSkgY29uc3QKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QK
ICAgICB7CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUobV94LmNhbGNGbG9hdFZhbHVlKGJv
cmRlckJveFNpemUud2lkdGgoKSksIG1feS5jYWxjRmxvYXRWYWx1ZShib3JkZXJCb3hTaXplLmhl
aWdodCgpKSk7CiAgICAgICAgIHJldHVybiBtX3gudHlwZSgpID09IFBlcmNlbnQgfHwgbV95LnR5
cGUoKSA9PSBQZXJjZW50OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dENHV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250LmgiCiAKLSNpbmNsdWRlICJBZmZpbmVU
cmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUg
IkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIHZvaWQgZHJhd0dE
SUdseXBocyhHcmFwaGljc0NvbnRleAogCiAgICAgICAgIFhGT1JNIHhmb3JtOwogICAgICAgICBH
ZXRXb3JsZFRyYW5zZm9ybShoZGMsICZ4Zm9ybSk7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBo
ZGNUcmFuc2Zvcm0oeGZvcm0uZU0xMSwgeGZvcm0uZU0yMSwgeGZvcm0uZU0xMiwgeGZvcm0uZU0y
MiwgeGZvcm0uZUR4LCB4Zm9ybS5lRHkpOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBo
ZGNUcmFuc2Zvcm0oeGZvcm0uZU0xMSwgeGZvcm0uZU0yMSwgeGZvcm0uZU0xMiwgeGZvcm0uZU0y
MiwgeGZvcm0uZUR4LCB4Zm9ybS5lRHkpOwogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSBpbml0
aWFsR2x5cGhUcmFuc2Zvcm0gPSBoZGNUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkgPyBoZGNUcmFu
c2Zvcm0uaW52ZXJzZSgpIDogQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKICAgICAgICAgaWYg
KGZvbnQtPnBsYXRmb3JtRGF0YSgpLnN5bnRoZXRpY09ibGlxdWUoKSkKICAgICAgICAgICAgIGlu
aXRpYWxHbHlwaFRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KGluaXRpYWxHbHlw
aFRyYW5zZm9ybSwgQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKDEsIDAsIHRhbmYoc3ludGhldGljT2Js
aXF1ZUFuZ2xlICogcGlGbG9hdCAvIDE4MC4wZiksIDEsIDAsIDApKTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5j
cHAJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0Q0dXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKLSNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogCkBAIC0y
MzEsNyArMjMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdXaW5kb3dzQml0bWFwKAog
ICAgIENHQ29udGV4dERyYXdJbWFnZShtX2RhdGEtPm1fY2dDb250ZXh0LCBDR1JlY3RNYWtlKHBv
aW50LngoKSwgcG9pbnQueSgpLCBpbWFnZS0+c2l6ZSgpLndpZHRoKCksIGltYWdlLT5zaXplKCku
aGVpZ2h0KCkpLCBjZ0ltYWdlLmdldCgpKTsgICAKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGU6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpjb25jYXRDVE0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKIHsKICAgICBpZiAoIW1faGRjKQogICAg
ICAgICByZXR1cm47CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRDYWlyb1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q2Fpcm9XaW4uY3BwCShyZXZpc2lvbiAzOTYxMCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENhaXJvV2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3Jt
LmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhdGguaCIKIApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnQKICAgICBjYWlyb19zdXJmYWNlX21h
cmtfZGlydHkoc3VyZmFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2
YXRlOjpjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit2b2lkIEdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6Y29uY2F0Q1RNKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0pCiB7CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0g
Y2Fpcm9fZ2V0X3RhcmdldChjcik7CiAgICAgSERDIGhkYyA9IGNhaXJvX3dpbjMyX3N1cmZhY2Vf
Z2V0X2RjKHN1cmZhY2UpOyAgIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRXaW4uY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGVDYWlyby5oIgogI2VuZGlmCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0u
aCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0FmZmluZVRyYW5zZm9ybVd4LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0FmZmluZVRyYW5z
Zm9ybVd4LmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3d4L0FmZmluZVRyYW5zZm9ybVd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0u
aCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtMzcsMTMgKzM3LDEzIEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoV1hHQykKLUFmZmluZVRyYW5zZm9ybTo6QWZmaW5lVHJh
bnNmb3JtKGNvbnN0IFBsYXRmb3JtQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCitUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6VHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgUGxhdGZvcm1BZmZpbmVUcmFu
c2Zvcm0mIG1hdHJpeCkKIHsKICAgICBtX3RyYW5zZm9ybSA9IG1hdHJpeDsKIH0KICNlbmRpZgog
Ci1BZmZpbmVUcmFuc2Zvcm06OkFmZmluZVRyYW5zZm9ybShkb3VibGUgYSwgZG91YmxlIGIsIGRv
dWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKQorVHJhbnNmb3JtYXRpb25NYXRy
aXg6OlRyYW5zZm9ybWF0aW9uTWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRv
dWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYpCiB7CiAjaWYgVVNFKFdYR0MpCiAgICAgd3hHcmFw
aGljc1JlbmRlcmVyKiByZW5kZXJlciA9IHd4R3JhcGhpY3NSZW5kZXJlcjo6R2V0RGVmYXVsdFJl
bmRlcmVyKCk7IApAQCAtNTIsNyArNTIsNyBAQCBBZmZpbmVUcmFuc2Zvcm06OkFmZmluZVRyYW5z
Zm9ybShkb3VibGUgCiAgICAgc2V0TWF0cml4KGEsIGIsIGMsIGQsIGUsIGYpOwogfQogCi1BZmZp
bmVUcmFuc2Zvcm06OkFmZmluZVRyYW5zZm9ybSgpIAorVHJhbnNmb3JtYXRpb25NYXRyaXg6OlRy
YW5zZm9ybWF0aW9uTWF0cml4KCkgCiB7IAogICAgIC8vIE5COiBJZiB3ZSBldmVyIHN1cHBvcnQg
dXNpbmcgQ2Fpcm8gYmFja2VuZCBvbiBXaW4vTWFjLCB0aGlzIHdpbGwgbmVlZCB0byBiZQogICAg
IC8vIGNoYW5nZWQgc29tZWhvdyAodGhvdWdoIEknbSBub3Qgc3VyZSBob3cgYXMgd2UgZG9uJ3Qg
aGF2ZSBhIHJlZmVyZW5jZSB0byB0aGUKQEAgLTYzLDI1ICs2MywyNSBAQCBBZmZpbmVUcmFuc2Zv
cm06OkFmZmluZVRyYW5zZm9ybSgpIAogI2VuZGlmCiB9CiAKLUFmZmluZVRyYW5zZm9ybSBBZmZp
bmVUcmFuc2Zvcm06OmludmVyc2UoKSBjb25zdAorVHJhbnNmb3JtYXRpb25NYXRyaXggVHJhbnNm
b3JtYXRpb25NYXRyaXg6OmludmVyc2UoKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi12b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0TWF0cml4
KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91Ymxl
IGYpCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRNYXRyaXgoZG91YmxlIGEsIGRvdWJs
ZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZikKIHsKICNpZiBVU0Uo
V1hHQykKICAgICBtX3RyYW5zZm9ybS5TZXQoYSwgYiwgYywgZCwgZSwgZik7CiAjZW5kaWYKIH0K
IAotdm9pZCBBZmZpbmVUcmFuc2Zvcm06Om1hcChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSAq
eDIsIGRvdWJsZSAqeTIpIGNvbnN0IAordm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwKGRv
dWJsZSB4LCBkb3VibGUgeSwgZG91YmxlICp4MiwgZG91YmxlICp5MikgY29uc3QgCiB7IAogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLUludFJlY3QgQWZmaW5lVHJhbnNmb3JtOjptYXBSZWN0
KGNvbnN0IEludFJlY3QgJnJlY3QpIGNvbnN0CitJbnRSZWN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
OjptYXBSZWN0KGNvbnN0IEludFJlY3QgJnJlY3QpIGNvbnN0CiB7CiAjaWYgVVNFKFdYR0MpCiAg
ICAgZG91YmxlIHgsIHksIHdpZHRoLCBoZWlnaHQ7CkBAIC05Nyw3ICs5Nyw3IEBAIEludFJlY3Qg
QWZmaW5lVHJhbnNmb3JtOjptYXBSZWN0KGNvbnN0IEkKICAgICByZXR1cm4gSW50UmVjdCgpOwog
fQogCi1GbG9hdFJlY3QgQWZmaW5lVHJhbnNmb3JtOjptYXBSZWN0KGNvbnN0IEZsb2F0UmVjdCAm
cmVjdCkgY29uc3QKK0Zsb2F0UmVjdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUmVjdChjb25z
dCBGbG9hdFJlY3QgJnJlY3QpIGNvbnN0CiB7CiAjaWYgVVNFKFdYR0MpCiAgICAgZG91YmxlIHgs
IHksIHdpZHRoLCBoZWlnaHQ7CkBAIC0xMTQsNyArMTE0LDcgQEAgRmxvYXRSZWN0IEFmZmluZVRy
YW5zZm9ybTo6bWFwUmVjdChjb25zdAogfQogCiAKLUFmZmluZVRyYW5zZm9ybSYgQWZmaW5lVHJh
bnNmb3JtOjpzY2FsZShkb3VibGUgc3gsIGRvdWJsZSBzeSkgCitUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNjYWxlKGRvdWJsZSBzeCwgZG91YmxlIHN5KSAKIHsK
ICNpZiBVU0UoV1hHQykKICAgICBtX3RyYW5zZm9ybS5TY2FsZSgod3hEb3VibGUpc3gsICh3eERv
dWJsZSlzeSk7IApAQCAtMTIyLDEyICsxMjIsMTIgQEAgQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVU
cmFuc2Zvcm06OnNjYWxlKAogICAgIHJldHVybiAqdGhpczsgCiB9CiAKLXZvaWQgQWZmaW5lVHJh
bnNmb3JtOjpyZXNldCgpCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZXNldCgpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zv
cm06OnJvdGF0ZShkb3VibGUgZCkgCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRp
b25NYXRyaXg6OnJvdGF0ZShkb3VibGUgZCkgCiB7IAogI2lmIFVTRShXWEdDKQogICAgIG1fdHJh
bnNmb3JtLlJvdGF0ZSgod3hEb3VibGUpZCk7IApAQCAtMTM1LDcgKzEzNSw3IEBAIEFmZmluZVRy
YW5zZm9ybSYgQWZmaW5lVHJhbnNmb3JtOjpyb3RhdGUKICAgICByZXR1cm4gKnRoaXM7IAogfQog
Ci1BZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6dHJhbnNsYXRlKGRvdWJsZSB0eCwg
ZG91YmxlIHR5KSAKK1RyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
dHJhbnNsYXRlKGRvdWJsZSB0eCwgZG91YmxlIHR5KSAKIHsgCiAjaWYgVVNFKFdYR0MpCiAgICAg
bV90cmFuc2Zvcm0uVHJhbnNsYXRlKCh3eERvdWJsZSl0eCwgKHd4RG91YmxlKXR5KTsgCkBAIC0x
NDMsMTkgKzE0MywxOSBAQCBBZmZpbmVUcmFuc2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6dHJhbnNs
CiAgICAgcmV0dXJuICp0aGlzOyAKIH0KIAotQWZmaW5lVHJhbnNmb3JtJiBBZmZpbmVUcmFuc2Zv
cm06OnNoZWFyKGRvdWJsZSBzeCwgZG91YmxlIHN5KSAKK1RyYW5zZm9ybWF0aW9uTWF0cml4JiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6c2hlYXIoZG91YmxlIHN4LCBkb3VibGUgc3kpIAogeyAKICAg
ICBub3RJbXBsZW1lbnRlZCgpOyAKICAgICByZXR1cm4gKnRoaXM7IAogfQogCi1BZmZpbmVUcmFu
c2Zvcm0mIEFmZmluZVRyYW5zZm9ybTo6b3BlcmF0b3IqPShjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IG90aGVyKSAKK1RyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3Bl
cmF0b3IqPShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3RoZXIpIAogeyAKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAqdGhpczsgCiB9CiAKLWJvb2wgQWZmaW5lVHJhbnNm
b3JtOjpvcGVyYXRvcj09IChjb25zdCBBZmZpbmVUcmFuc2Zvcm0gJm90aGVyKSBjb25zdAorYm9v
bCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6b3BlcmF0b3I9PSAoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXggJm90aGVyKSBjb25zdAogewogI2lmIFVTRShXWEdDKQogICAgIHJldHVybiBtX3RyYW5z
Zm9ybS5Jc0VxdWFsKCh3eEdyYXBoaWNzTWF0cml4KW90aGVyKTsKQEAgLTE2NSwyNiArMTY1LDI2
IEBAIGJvb2wgQWZmaW5lVHJhbnNmb3JtOjpvcGVyYXRvcj09IChjb25zdCAKICNlbmRpZgogfQog
Ci1BZmZpbmVUcmFuc2Zvcm0gQWZmaW5lVHJhbnNmb3JtOjpvcGVyYXRvciogKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSAmb3RoZXIpCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6b3BlcmF0b3IqIChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCAmb3RoZXIpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gKnRoaXM7IC8vbV90cmFuc2Zvcm0gKiBv
dGhlci5tX3RyYW5zZm9ybTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZGV0KCkgY29u
c3QgCitkb3VibGUgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmRldCgpIGNvbnN0IAogeyAKICAgICBu
b3RJbXBsZW1lbnRlZCgpOyAKICAgICByZXR1cm4gMDsKIH0KIAogI2lmIFVTRShXWEdDKQotQWZm
aW5lVHJhbnNmb3JtOjpvcGVyYXRvciB3eEdyYXBoaWNzTWF0cml4KCkgY29uc3QKK1RyYW5zZm9y
bWF0aW9uTWF0cml4OjpvcGVyYXRvciB3eEdyYXBoaWNzTWF0cml4KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV90cmFuc2Zvcm07CiB9CiAjZW5kaWYKIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6
YSgpIGNvbnN0Citkb3VibGUgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmEoKSBjb25zdAogewogICAg
IGRvdWJsZSBhID0gMDsKICNpZiBVU0UoV1hHQykKQEAgLTE5MywxMiArMTkzLDEyIEBAIGRvdWJs
ZSBBZmZpbmVUcmFuc2Zvcm06OmEoKSBjb25zdAogICAgIHJldHVybiBhOwogfQogCi12b2lkIEFm
ZmluZVRyYW5zZm9ybTo6c2V0QShkb3VibGUgYSkKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6
OnNldEEoZG91YmxlIGEpCiB7CiAgICAgc2V0TWF0cml4KGEsIGIoKSwgYygpLCBkKCksIGUoKSwg
ZigpKTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6YigpIGNvbnN0Citkb3VibGUgVHJh
bnNmb3JtYXRpb25NYXRyaXg6OmIoKSBjb25zdAogewogICAgIGRvdWJsZSBiID0gMDsKICNpZiBV
U0UoV1hHQykKQEAgLTIwNywxMiArMjA3LDEyIEBAIGRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmIo
KSBjb25zdAogICAgIHJldHVybiBiOwogfQogCi12b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0Qihk
b3VibGUgYikKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEIoZG91YmxlIGIpCiB7CiAg
ICAgc2V0TWF0cml4KGEoKSwgYiwgYygpLCBkKCksIGUoKSwgZigpKTsKIH0KIAotZG91YmxlIEFm
ZmluZVRyYW5zZm9ybTo6YygpIGNvbnN0Citkb3VibGUgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmMo
KSBjb25zdAogewogICAgIGRvdWJsZSBjID0gMDsKICNpZiBVU0UoV1hHQykKQEAgLTIyMSwxMiAr
MjIxLDEyIEBAIGRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmMoKSBjb25zdAogICAgIHJldHVybiBj
OwogfQogCi12b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0Qyhkb3VibGUgYykKK3ZvaWQgVHJhbnNm
b3JtYXRpb25NYXRyaXg6OnNldEMoZG91YmxlIGMpCiB7CiAgICAgc2V0TWF0cml4KGEoKSwgYigp
LCBjLCBkKCksIGUoKSwgZigpKTsKIH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZCgpIGNv
bnN0Citkb3VibGUgVHJhbnNmb3JtYXRpb25NYXRyaXg6OmQoKSBjb25zdAogewogICAgIGRvdWJs
ZSBkID0gMDsKICNpZiBVU0UoV1hHQykKQEAgLTIzNSwxMiArMjM1LDEyIEBAIGRvdWJsZSBBZmZp
bmVUcmFuc2Zvcm06OmQoKSBjb25zdAogICAgIHJldHVybiBkOwogfQogCi12b2lkIEFmZmluZVRy
YW5zZm9ybTo6c2V0RChkb3VibGUgZCkKK3ZvaWQgVHJhbnNmb3JtYXRpb25NYXRyaXg6OnNldEQo
ZG91YmxlIGQpCiB7CiAgICAgc2V0TWF0cml4KGEoKSwgYigpLCBjKCksIGQsIGUoKSwgZigpKTsK
IH0KIAotZG91YmxlIEFmZmluZVRyYW5zZm9ybTo6ZSgpIGNvbnN0Citkb3VibGUgVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmUoKSBjb25zdAogewogICAgIGRvdWJsZSBlID0gMDsKICNpZiBVU0UoV1hH
QykKQEAgLTI0OSwxMiArMjQ5LDEyIEBAIGRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmUoKSBjb25z
dAogICAgIHJldHVybiBlOwogfQogCi12b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0RShkb3VibGUg
ZSkgCit2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpzZXRFKGRvdWJsZSBlKSAKIHsKICAgICBz
ZXRNYXRyaXgoYSgpLCBiKCksIGMoKSwgZCgpLCBlLCBmKCkpOwogfQogCi1kb3VibGUgQWZmaW5l
VHJhbnNmb3JtOjpmKCkgY29uc3QKK2RvdWJsZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6ZigpIGNv
bnN0CiB7CiAgICAgZG91YmxlIGYgPSAwOwogI2lmIFVTRShXWEdDKQpAQCAtMjYzLDcgKzI2Myw3
IEBAIGRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmYoKSBjb25zdAogICAgIHJldHVybiBmOwogfQog
Ci12b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0Rihkb3VibGUgZikKK3ZvaWQgVHJhbnNmb3JtYXRp
b25NYXRyaXg6OnNldEYoZG91YmxlIGYpCiB7CiAgICAgc2V0TWF0cml4KGEoKSwgYigpLCBjKCks
IGQoKSwgZSgpLCBmKTsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3Jh
cGhpY3NDb250ZXh0V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0V3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IkZvbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC0zNDksMTAgKzM0OSwxMCBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNKCkgY29uc3QK
K1RyYW5zZm9ybWF0aW9uTWF0cml4IEdyYXBoaWNzQ29udGV4dDo6Z2V0Q1RNKCkgY29uc3QKIHsg
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7Cisg
ICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0Ojp0cmFuc2xhdGUoZmxvYXQgdHgsIGZsb2F0IHR5KSAKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1GaWxsQ29sCiAgICAgICAgIG1fZGF0YS0+
Y29udGV4dC0+U2V0QnJ1c2god3hCcnVzaChjb2xvcikpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcAkocmV2aXNpb24g
Mzk2MTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRy
YW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTE2OSw3ICsx
NjksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogCiAgICAgY3R4
dC0+cmVzdG9yZSgpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29tcG9z
aXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKK3ZvaWQgQml0bWFwSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QpCiB7CiAgICAgaWYgKCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQogICAgICAgICByZXR1
cm47CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L1BhdGhXeC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9QYXRoV3guY3BwCShyZXZpc2lv
biAzOTYxMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvUGF0aFd4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlBhdGguaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRy
YW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC0xOTcsNyArMTk3
LDcgQEAgdm9pZCBQYXRoOjphZGRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcgogI2VuZGlmCiB9
CiAKLXZvaWQgUGF0aDo6dHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
KSAKK3ZvaWQgUGF0aDo6dHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0pIAogewogI2lmIFVTRShXWEdDKQogICAgIGlmIChtX3BhdGgpCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NyArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lR3Rr
LmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCkBAIC0xNjEsNyArMTYx
LDcgQEAgc3RhdGljIGJvb2wgcGFpbnRNb3pXaWRnZXQoUmVuZGVyVGhlbWUqIAogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IGkuY29udGV4dC0+
Z2V0Q1RNKCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY3RtID0gaS5jb250ZXh0LT5nZXRD
VE0oKTsKIAogICAgIEludFBvaW50IHBvcyA9IGN0bS5tYXBQb2ludChyZWN0LmxvY2F0aW9uKCkp
OwogICAgIEdka1JlY3RhbmdsZSBnZGtSZWN0ID0gSW50UmVjdChwb3MueCgpLCBwb3MueSgpLCBy
ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93eC9U
ZW1wb3JhcnlMaW5rU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd3gv
VGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3BsYXRm
b3JtL3d4L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDcgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxmbG9hdC5oPgogCi0jaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIK
ICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRBbHBoYShmbG9hdCkgeyAKIAogQ29sb3IgV2ViQ29yZTo6Zm9jdXNSaW5n
Q29sb3IoKSB7IHJldHVybiAweEZGMDAwMEZGOyB9CiAKLXZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpIHsgbm90SW1wbGVtZW50
ZWQoKTsgfSAKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9IAogCiBTY3JvbGxi
YXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkgeyBub3RJbXBsZW1lbnRlZCgp
OyBzdGF0aWMgU2Nyb2xsYmFyVGhlbWUgdGhlbWU7IHJldHVybiAmdGhlbWU7IH0KIApJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHJldmlzaW9uIDM5NjEw
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDEwICszOCwxMCBAQCBSZW5kZXJGb3JlaWduT2JqZWN0OjpSZW5kZXJGb3Jl
aWduT2JqZWN0CiB7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBSZW5kZXJGb3JlaWduT2JqZWN0Ojp0
cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKQorVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyRm9y
ZWlnbk9iamVjdDo6dHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCkKIHsKICAgICBTVkdGb3JlaWdu
T2JqZWN0RWxlbWVudCogZm9yZWlnbiA9IHN0YXRpY19jYXN0PFNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50Kj4oZWxlbWVudCgpKTsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRl
KGZvcmVpZ24tPngoKS52YWx1ZShmb3JlaWduKSwgZm9yZWlnbi0+eSgpLnZhbHVlKGZvcmVpZ24p
KTsKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoKS50cmFuc2xhdGUoZm9yZWlnbi0+
eCgpLnZhbHVlKGZvcmVpZ24pLCBmb3JlaWduLT55KCkudmFsdWUoZm9yZWlnbikpOwogfQogCiB2
b2lkIFJlbmRlckZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQg
cGFyZW50WCwgaW50IHBhcmVudFkpCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgUmVuZGVyRm9yZWln
bk9iamVjdDo6cGFpbnQoUGFpbnRJbmYKICAgICAgICAgcmV0dXJuOwogCiAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNhdmUoKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKEFmZmlu
ZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShwYXJlbnRYLCBwYXJlbnRZKSk7CisgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmNvbmNhdENUTShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLnRyYW5zbGF0ZShwYXJl
bnRYLCBwYXJlbnRZKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNvbmNhdENUTShsb2NhbFRy
YW5zZm9ybSgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKHRyYW5zbGF0aW9u
Rm9yQXR0cmlidXRlcygpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChnZXRDbGlwUmVj
dChwYXJlbnRYLCBwYXJlbnRZKSk7CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgUmVuZGVyRm9yZWln
bk9iamVjdDo6cGFpbnQoUGFpbnRJbmYKIAogdm9pZCBSZW5kZXJGb3JlaWduT2JqZWN0Ojpjb21w
dXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0JiByLCBib29sIGYpCiB7Ci0gICAgQWZmaW5l
VHJhbnNmb3JtIHRyYW5zZm9ybSA9IHRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpICogbG9jYWxU
cmFuc2Zvcm0oKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSB0cmFuc2xh
dGlvbkZvckF0dHJpYnV0ZXMoKSAqIGxvY2FsVHJhbnNmb3JtKCk7CiAgICAgciA9IHRyYW5zZm9y
bS5tYXBSZWN0KHIpOwogCiAgICAgUmVuZGVyQmxvY2s6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRS
ZWN0KHIsIGYpOwpAQCAtODUsNyArODUsNyBAQCBib29sIFJlbmRlckZvcmVpZ25PYmplY3Q6OnJl
cXVpcmVzTGF5ZXIoCiAKIGJvb2wgUmVuZGVyRm9yZWlnbk9iamVjdDo6Y2FsY3VsYXRlTG9jYWxU
cmFuc2Zvcm0oKQogewotICAgIEFmZmluZVRyYW5zZm9ybSBvbGRUcmFuc2Zvcm0gPSBtX2xvY2Fs
VHJhbnNmb3JtOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG9sZFRyYW5zZm9ybSA9IG1fbG9j
YWxUcmFuc2Zvcm07CiAgICAgbV9sb2NhbFRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PFNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50Kj4oZWxlbWVudCgpKS0+YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpOwog
ICAgIHJldHVybiAob2xkVHJhbnNmb3JtICE9IG1fbG9jYWxUcmFuc2Zvcm0pOwogfQpAQCAtMTIw
LDcgKzEyMCw3IEBAIHZvaWQgUmVuZGVyRm9yZWlnbk9iamVjdDo6bGF5b3V0KCkKIAogYm9vbCBS
ZW5kZXJGb3JlaWduT2JqZWN0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVx
dWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5
LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRv
dGFsVHJhbnNmb3JtID0gYWJzb2x1dGVUcmFuc2Zvcm0oKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCB0b3RhbFRyYW5zZm9ybSA9IGFic29sdXRlVHJhbnNmb3JtKCk7CiAgICAgdG90YWxUcmFu
c2Zvcm0gKj0gdHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCk7CiAgICAgZG91YmxlIGxvY2FsWCwg
bG9jYWxZOwogICAgIHRvdGFsVHJhbnNmb3JtLmludmVyc2UoKS5tYXAoeCwgeSwgJmxvY2FsWCwg
JmxvY2FsWSk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5oCShy
ZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogI2RlZmluZSBSZW5kZXJGb3JlaWdu
T2JqZWN0X2gKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZPUkVJR05fT0JKRUNUKQog
Ci0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25N
YXRyaXguaCIKICNpbmNsdWRlICJSZW5kZXJTVkdCbG9jay5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQ
YWludEluZm8mLCBpbnQgcGFyZW50WCwgaW50IHBhcmVudFkpOwogCi0gICAgdmlydHVhbCBBZmZp
bmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVHJhbnNm
b3JtOyB9CisgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsb2NhbFRyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KICAgICB2aXJ0dWFsIGJvb2wgY2Fs
Y3VsYXRlTG9jYWxUcmFuc2Zvcm0oKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlQWJzb2x1
dGVSZXBhaW50UmVjdChJbnRSZWN0JiwgYm9vbCBmaXhlZCk7CkBAIC00OSw5ICs0OSw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBIaXRUZXN0UmVzdWx0JiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFj
dGlvbik7CiAKICBwcml2YXRlOgotICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2xhdGlvbkZvckF0
dHJpYnV0ZXMoKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2xhdGlvbkZvckF0dHJp
YnV0ZXMoKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVHJhbnNmb3JtOworICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1fbG9jYWxUcmFuc2Zvcm07CiAgICAgSW50UmVjdCBtX2Fic29s
dXRlQm91bmRzOwogfTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNp
b24gMzk2MTApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVUcmFuc2Zv
cm0oKQogICAgIGJvb2wgaGFkVHJhbnNmb3JtID0gbV90cmFuc2Zvcm07CiAgICAgaWYgKGhhc1Ry
YW5zZm9ybSAhPSBoYWRUcmFuc2Zvcm0pIHsKICAgICAgICAgaWYgKGhhc1RyYW5zZm9ybSkKLSAg
ICAgICAgICAgIG1fdHJhbnNmb3JtLnNldChuZXcgQWZmaW5lVHJhbnNmb3JtKTsKKyAgICAgICAg
ICAgIG1fdHJhbnNmb3JtLnNldChuZXcgVHJhbnNmb3JtYXRpb25NYXRyaXgpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX3RyYW5zZm9ybS5jbGVhcigpOwogICAgIH0KQEAgLTQ5MCwyMCAr
NDkwLDIwIEBAIFJlbmRlckxheWVyOjp0cmFuc3BhcmVudEFuY2VzdG9yKCkKICAgICByZXR1cm4g
Y3VycjsKIH0KIAotc3RhdGljIEludFJlY3QgdHJhbnNwYXJlbmN5Q2xpcEJveChjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGVuY2xvc2luZ1RyYW5zZm9ybSwgY29uc3QgUmVuZGVyTGF5ZXIqIGwsIGNv
bnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIpCitzdGF0aWMgSW50UmVjdCB0cmFuc3BhcmVuY3lD
bGlwQm94KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBlbmNsb3NpbmdUcmFuc2Zvcm0sIGNv
bnN0IFJlbmRlckxheWVyKiBsLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyKQogewogICAg
IC8vIEZJWE1FOiBBbHRob3VnaCB0aGlzIGZ1bmN0aW9uIGNvbXBsZXRlbHkgaWdub3JlcyBDU1Mt
aW1wb3NlZCBjbGlwcGluZywgd2UgZGlkIGFscmVhZHkgaW50ZXJzZWN0IHdpdGggdGhlCiAgICAg
Ly8gcGFpbnREaXJ0eVJlY3QsIGFuZCB0aGF0IHNob3VsZCBjdXQgZG93biBvbiB0aGUgYW1vdW50
IHdlIGhhdmUgdG8gcGFpbnQuICBTdGlsbCBpdAogICAgIC8vIHdvdWxkIGJlIGJldHRlciB0byBy
ZXNwZWN0IGNsaXBzLgogICAgIAotICAgIEFmZmluZVRyYW5zZm9ybSogdCA9IGwtPnRyYW5zZm9y
bSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KiB0ID0gbC0+dHJhbnNmb3JtKCk7CiAgICAg
aWYgKHQgJiYgcm9vdExheWVyICE9IGwpIHsKICAgICAgICAgLy8gVGhlIGJlc3Qgd2UgY2FuIGRv
IGhlcmUgaXMgdG8gdXNlIGVuY2xvc2VkIGJvdW5kaW5nIGJveGVzIHRvIGVzdGFibGlzaCBhICJm
dXp6eSIgZW5vdWdoIGNsaXAgdG8gZW5jb21wYXNzCiAgICAgICAgIC8vIHRoZSB0cmFuc2Zvcm1l
ZCBsYXllciBhbmQgYWxsIG9mIGl0cyBjaGlsZHJlbi4KICAgICAgICAgaW50IHggPSAwOwogICAg
ICAgICBpbnQgeSA9IDA7CiAgICAgICAgIGwtPmNvbnZlcnRUb0xheWVyQ29vcmRzKHJvb3RMYXll
ciwgeCwgeSk7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0
ZSh4LCB5KTsKICAgICAgICAgdHJhbnNmb3JtID0gKnQgKiB0cmFuc2Zvcm07CiAgICAgICAgIHRy
YW5zZm9ybSA9IHRyYW5zZm9ybSAqIGVuY2xvc2luZ1RyYW5zZm9ybTsKQEAgLTU0OSw3ICs1NDks
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyCiAgICAgaWYgKGlz
VHJhbnNwYXJlbnQoKSkgewogICAgICAgICBtX3VzZWRUcmFuc3BhcmVuY3kgPSB0cnVlOwogICAg
ICAgICBwLT5zYXZlKCk7Ci0gICAgICAgIHAtPmNsaXAodHJhbnNwYXJlbmN5Q2xpcEJveChBZmZp
bmVUcmFuc2Zvcm0oKSwgdGhpcywgcm9vdExheWVyKSk7CisgICAgICAgIHAtPmNsaXAodHJhbnNw
YXJlbmN5Q2xpcEJveChUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCB0aGlzLCByb290TGF5ZXIpKTsK
ICAgICAgICAgcC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihyZW5kZXJlcigpLT5vcGFjaXR5KCkp
OwogICAgIH0KIH0KQEAgLTE2ODksNyArMTY4OSw3IEBAIFJlbmRlckxheWVyOjpwYWludExheWVy
KFJlbmRlckxheWVyKiByb28KICAgICAgICAgaW50IHggPSAwOwogICAgICAgICBpbnQgeSA9IDA7
CiAgICAgICAgIGNvbnZlcnRUb0xheWVyQ29vcmRzKHJvb3RMYXllciwgeCwgeSk7Ci0gICAgICAg
IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybTsKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSh4LCB5KTsKICAgICAgICAg
dHJhbnNmb3JtID0gKm1fdHJhbnNmb3JtICogdHJhbnNmb3JtOwogICAgICAgICAKQEAgLTE5MDAs
NyArMTkwMCw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKFIKICAg
ICAgICAgaW50IHggPSAwOwogICAgICAgICBpbnQgeSA9IDA7CiAgICAgICAgIGNvbnZlcnRUb0xh
eWVyQ29vcmRzKHJvb3RMYXllciwgeCwgeSk7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm07CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAgICAgICAg
dHJhbnNmb3JtLnRyYW5zbGF0ZSh4LCB5KTsKICAgICAgICAgdHJhbnNmb3JtID0gKm1fdHJhbnNm
b3JtICogdHJhbnNmb3JtOwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAko
cmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZTsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBSZW5kZXJGcmFtZVNl
dDsKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aWNZKGludCBz
dGF0aWNZKSB7IG1fc3RhdGljWSA9IHN0YXRpY1k7IH0KIAogICAgIGJvb2wgaGFzVHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3QtPmhhc1RyYW5zZm9ybSgpOyB9Ci0gICAgQWZmaW5l
VHJhbnNmb3JtKiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybS5nZXQoKTsg
fQorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBt
X3RyYW5zZm9ybS5nZXQoKTsgfQogCiAgICAgdm9pZCBkZXN0cm95KFJlbmRlckFyZW5hKik7CiAK
QEAgLTUwNSw3ICs1MDUsNyBAQCBwcm90ZWN0ZWQ6ICAgCiAgICAgaW50IG1fc3RhdGljWDsKICAg
ICBpbnQgbV9zdGF0aWNZOwogICAgIAotICAgIE93blB0cjxBZmZpbmVUcmFuc2Zvcm0+IG1fdHJh
bnNmb3JtOworICAgIE93blB0cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gbV90cmFuc2Zvcm07CiAg
ICAgCiAgICAgLy8gTWF5IHVsdGltYXRlbHkgYmUgZXh0ZW5kZWQgdG8gbWFueSByZXBsaWNhcyAo
d2l0aCB0aGVpciBvd24gcGFpbnQgb3JkZXIpLgogICAgIFJlbmRlclJlcGxpY2EqIG1fcmVmbGVj
dGlvbjsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMzk2MTAp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAKICNpbmNsdWRlICJB
WE9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAi
VHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJBbmltYXRpb25Db250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CkBAIC0zMjc2LDEyICszMjc2LDEyIEBAIEZsb2F0UmVjdCBSZW5kZXJPYmplY3Q6OnJlbGF0aXZl
QkJveChib28KICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBS
ZW5kZXJPYmplY3Q6OmxvY2FsVHJhbnNmb3JtKCkgY29uc3QKK1RyYW5zZm9ybWF0aW9uTWF0cml4
IFJlbmRlck9iamVjdDo6bG9jYWxUcmFuc2Zvcm0oKSBjb25zdAogewotICAgIHJldHVybiBBZmZp
bmVUcmFuc2Zvcm0oMSwgMCwgMCwgMSwgeFBvcygpLCB5UG9zKCkpOworICAgIHJldHVybiBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCB4UG9zKCksIHlQb3MoKSk7CiB9CiAKLUFmZmlu
ZVRyYW5zZm9ybSBSZW5kZXJPYmplY3Q6OmFic29sdXRlVHJhbnNmb3JtKCkgY29uc3QKK1RyYW5z
Zm9ybWF0aW9uTWF0cml4IFJlbmRlck9iamVjdDo6YWJzb2x1dGVUcmFuc2Zvcm0oKSBjb25zdAog
ewogICAgIGlmIChwYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIGxvY2FsVHJhbnNmb3JtKCkgKiBw
YXJlbnQoKS0+YWJzb2x1dGVUcmFuc2Zvcm0oKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiBj
bGFzcyBBbmltYXRpb25Db250cm9sbGVyOwogY2xhc3MgQ29sb3I7CiBjbGFzcyBEb2N1bWVudDsK
QEAgLTMxMiw4ICszMTIsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZWxh
dGl2ZUJCb3goYm9vbCBpbmNsdWRlU3Ryb2tlID0gdHJ1ZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWZm
aW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtKCkgY29uc3Q7CisgICAgdmlydHVhbCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0OworICAgIHZpcnR1YWwgVHJh
bnNmb3JtYXRpb25NYXRyaXggYWJzb2x1dGVUcmFuc2Zvcm0oKSBjb25zdDsKICNlbmRpZgogCiAg
ICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clBhdGguY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBh
dGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIFJlbmRlclBhdGg6On5SZW5k
ZXJQYXRoKCkKIHsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIFJlbmRlclBhdGg6OmxvY2FsVHJhbnNm
b3JtKCkgY29uc3QKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlclBhdGg6OmxvY2FsVHJhbnNm
b3JtKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsKIH0KQEAgLTE0NSw3
ICsxNDUsNyBAQCBjb25zdCBQYXRoJiBSZW5kZXJQYXRoOjpwYXRoKCkgY29uc3QKIAogYm9vbCBS
ZW5kZXJQYXRoOjpjYWxjdWxhdGVMb2NhbFRyYW5zZm9ybSgpCiB7Ci0gICAgQWZmaW5lVHJhbnNm
b3JtIG9sZFRyYW5zZm9ybSA9IG1fbG9jYWxUcmFuc2Zvcm07CisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggb2xkVHJhbnNmb3JtID0gbV9sb2NhbFRyYW5zZm9ybTsKICAgICBtX2xvY2FsVHJhbnNm
b3JtID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihlbGVtZW50
KCkpLT5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7CiAgICAgcmV0dXJuIChtX2xvY2FsVHJhbnNm
b3JtICE9IG9sZFRyYW5zZm9ybSk7CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
YXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5oCShyZXZp
c2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykKIAotI2luY2x1ZGUgIkFm
ZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCiAKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTU5LDcg
KzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IHsgcmV0dXJuICJSZW5kZXJQYXRoIjsgfQogICAgIAogICAgIGJvb2wgY2FsY3VsYXRlTG9j
YWxUcmFuc2Zvcm0oKTsKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9y
bSgpIGNvbnN0OworICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggbG9jYWxUcmFuc2Zv
cm0oKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgdmlydHVh
bCBJbnRSZWN0IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOwpAQCAtODMsNyArODMsNyBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgRmxvYXRSZWN0IG1fZmlsbEJCb3g7CiAgICAgbXV0YWJs
ZSBGbG9hdFJlY3QgbV9zdHJva2VCYm94OwogICAgIEZsb2F0UmVjdCBtX21hcmtlckJvdW5kczsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRyYW5zZm9ybTsKKyAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtX2xvY2FsVHJhbnNmb3JtOwogICAgIEludFJlY3QgbV9hYnNvbHV0ZUJvdW5kczsK
IH07CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkocmV2
aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBSZW5kZXJTVkdDb250YWlu
ZXI6OnNldERyYXdzQ29udGVudAogICAgIG1fZHJhd3NDb250ZW50cyA9IGRyYXdzQ29udGVudHM7
CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdDb250YWluZXI6OmxvY2FsVHJhbnNmb3Jt
KCkgY29uc3QKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlclNWR0NvbnRhaW5lcjo6bG9jYWxU
cmFuc2Zvcm0oKSBjb25zdAogewogICAgIHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOwogfQpAQCAt
MzU4LDkgKzM1OCw5IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8K
ICAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250ZXh0LCBtX2Fic29sdXRlQm91bmRz
LngoKSwgbV9hYnNvbHV0ZUJvdW5kcy55KCksIG1fYWJzb2x1dGVCb3VuZHMud2lkdGgoKSwgbV9h
YnNvbHV0ZUJvdW5kcy5oZWlnaHQoKSwgc3R5bGUoKSk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBS
ZW5kZXJTVkdDb250YWluZXI6OnZpZXdwb3J0VHJhbnNmb3JtKCkgY29uc3QKK1RyYW5zZm9ybWF0
aW9uTWF0cml4IFJlbmRlclNWR0NvbnRhaW5lcjo6dmlld3BvcnRUcmFuc2Zvcm0oKSBjb25zdAog
ewotICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CisgICAgIHJldHVybiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpOwogfQogCiBJbnRSZWN0IFJlbmRlclNWR0NvbnRhaW5lcjo6YWJzb2x1dGVD
bGlwcGVkT3ZlcmZsb3dSZWN0KCkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0Nv
bnRhaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRh
aW5lci5oCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0Nv
bnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw4ICs4NCw4IEBAIHB1YmxpYzoKICAgICBG
bG9hdFJlY3QgcmVsYXRpdmVCQm94KGJvb2wgaW5jbHVkZVN0cm9rZSA9IHRydWUpIGNvbnN0Owog
CiAgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCk7Ci0gICAgdmlydHVh
bCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFm
ZmluZVRyYW5zZm9ybSB2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0OworICAgIHZpcnR1YWwgVHJh
bnNmb3JtYXRpb25NYXRyaXggbG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHZpZXdwb3J0VHJhbnNmb3JtKCkgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0
JiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbik7CiAKQEAgLTEx
MSw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIAogcHJvdGVjdGVkOiAgICAKICAgICBJbnRSZWN0
IG1fYWJzb2x1dGVCb3VuZHM7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG1fbG9jYWxUcmFuc2Zvcm07
CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9sb2NhbFRyYW5zZm9ybTsKIH07CiAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdIaWRkZW5Db250YWluZXIuY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDE0
ICs5MSwxNCBAQCB2b2lkIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVRCiAgICAg
Ly8gVGhpcyBzdWJ0cmVlIGRvZXMgbm90IHRha2UgdXAgc3BhY2Ugb3IgcGFpbnQKIH0KIAotQWZm
aW5lVHJhbnNmb3JtIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0o
KSBjb25zdAorVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjph
YnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgp
OworICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwogfQogCi1BZmZpbmVUcmFuc2Zv
cm0gUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyOjpsb2NhbFRyYW5zZm9ybSgpIGNvbnN0CitUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OmxvY2FsVHJhbnNmb3Jt
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CisgICAgcmV0dXJuIFRy
YW5zZm9ybWF0aW9uTWF0cml4KCk7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBpbnQs
IGludCwgaW50LCBpbnQsIEhpdFRlc3RBY3Rpb24pCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTUsOCArNTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB0eCwgaW50IHR5LCBib29s
IHRvcExldmVsID0gdHJ1ZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCB0b3BMZXZlbCA9IHRydWUpOwogICAgICAgICAKLSAgICAg
ICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0oKSBjb25zdDsKLSAg
ICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhYnNvbHV0ZVRyYW5zZm9ybSgpIGNv
bnN0OworICAgICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxvY2FsVHJhbnNmb3Jt
KCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVsYXRpdmVCQm94KGJvb2wg
aW5jbHVkZVN0cm9rZSA9IHRydWUpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgaW50IHgsIGludCB5
LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbik7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQg
UmVuZGVyU1ZHSW1hZ2U6OmFkanVzdFJlY3RzRm9yQXNwZWMKIAogYm9vbCBSZW5kZXJTVkdJbWFn
ZTo6Y2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKQogewotICAgIEFmZmluZVRyYW5zZm9ybSBvbGRU
cmFuc2Zvcm0gPSBtX2xvY2FsVHJhbnNmb3JtOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG9s
ZFRyYW5zZm9ybSA9IG1fbG9jYWxUcmFuc2Zvcm07CiAgICAgbV9sb2NhbFRyYW5zZm9ybSA9IHN0
YXRpY19jYXN0PFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Kj4oZWxlbWVudCgpKS0+YW5p
bWF0ZWRMb2NhbFRyYW5zZm9ybSgpOwogICAgIHJldHVybiAobV9sb2NhbFRyYW5zZm9ybSAhPSBv
bGRUcmFuc2Zvcm0pOwogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oCShyZXZp
c2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2lmIEVOQUJMRShTVkcpCiAKLSNpbmNsdWRl
ICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAKQEAgLTQw
LDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZW5kZXJTVkdJbWFnZShT
VkdJbWFnZUVsZW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+UmVuZGVyU1ZHSW1hZ2UoKTsKICAg
ICAgICAgCi0gICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsVHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQorICAgICAgICB2aXJ0dWFsIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRy
YW5zZm9ybTsgfQogICAgICAgICAKICAgICAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVsYXRpdmVC
Qm94KGJvb2wgaW5jbHVkZVN0cm9rZSA9IHRydWUpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIElu
dFJlY3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7CkBAIC02Miw3ICs2Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY2FsY3VsYXRl
QWJzb2x1dGVCb3VuZHMoKTsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fbG9jYWxUcmFuc2Zv
cm07CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fbG9jYWxUcmFuc2Zvcm07CiAgICAg
ICAgIEZsb2F0UmVjdCBtX2xvY2FsQm91bmRzOwogICAgICAgICBJbnRSZWN0IG1fYWJzb2x1dGVC
b3VuZHM7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lubGluZVRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lubGluZVRl
eHQuY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lu
bGluZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgSW50UmVjdCBS
ZW5kZXJTVkdJbmxpbmVUZXh0Ojpjb21wdXRlQWJzbwogCiAgICAgLy8gUmVtb3ZlIEhUTUwgcGFy
ZW50IHRyYW5zbGF0aW9uIG9mZnNldHMgaGVyZSEgVGhlc2UgbmVlZCB0byBiZSByZXRyaWV2ZWQg
ZnJvbSB0aGUgUmVuZGVyU1ZHUm9vdCBvYmplY3QuCiAgICAgLy8gQnV0IGRvIHRha2UgdGhlIGNv
bnRhaW5pbmdCbG9ja3MncyBjb250YWluZXIgcG9zaXRpb24gaW50byBhY2NvdW50LCBpZS4gU1ZH
IHRleHQgaW4gc2Nyb2xsYWJsZSA8ZGl2Pi4KLSAgICBBZmZpbmVUcmFuc2Zvcm0gaHRtbFBhcmVu
dEN0bSA9IHJvb3QtPlJlbmRlckNvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKTsKKyAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBodG1sUGFyZW50Q3RtID0gcm9vdC0+UmVuZGVyQ29udGFpbmVy
OjphYnNvbHV0ZVRyYW5zZm9ybSgpOwogCiAgICAgRmxvYXRSZWN0IGZpeGVkUmVjdChuYXJyb3dQ
cmVjaXNpb25Ub0Zsb2F0KHJlY3QueCgpICsgYWJzUG9zLngoKSAtIHhQb3MoKSAtIGh0bWxQYXJl
bnRDdG0uZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgIG5hcnJvd1ByZWNpc2lvblRvRmxv
YXQocmVjdC55KCkgKyBhYnNQb3MueSgpIC0geVBvcygpIC0gaHRtbFBhcmVudEN0bS5mKCkpLCBy
ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHUm9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
Um9vdC5jcHAJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
Um9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCwyNSArMTMwLDI1IEBAIHZvaWQgUmVuZGVy
U1ZHUm9vdDo6YXBwbHlDb250ZW50VHJhbnNmb3IKICAgICBvcmlnaW4ubW92ZShwYWRkaW5nTGVm
dCgpLCBwYWRkaW5nVG9wKCkpOwogCiAgICAgaWYgKG9yaWdpbi54KCkgfHwgb3JpZ2luLnkoKSkg
ewotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKEFmZmluZVRyYW5zZm9ybSgp
LnRyYW5zbGF0ZShvcmlnaW4ueCgpLCBvcmlnaW4ueSgpKSk7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5jb25jYXRDVE0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKS50cmFuc2xhdGUob3JpZ2lu
LngoKSwgb3JpZ2luLnkoKSkpOwogICAgICAgICBwYWludEluZm8ucmVjdC5tb3ZlKC1vcmlnaW4u
eCgpLCAtb3JpZ2luLnkoKSk7CiAgICAgfQogCiAgICAgLy8gUmVzcGVjdCBzY3JvbGwgb2Zmc2V0
IGNhdXNlZCBieSBodG1sIHBhcmVudHMKLSAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gUmVuZGVy
Q29udGFpbmVyOjphYnNvbHV0ZVRyYW5zZm9ybSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGN0bSA9IFJlbmRlckNvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKTsKICAgICBwYWludElu
Zm8ucmVjdC5tb3ZlKHN0YXRpY19jYXN0PGludD4oY3RtLmUoKSksIHN0YXRpY19jYXN0PGludD4o
Y3RtLmYoKSkpOwogCiAgICAgU1ZHU1ZHRWxlbWVudCogc3ZnID0gc3RhdGljX2Nhc3Q8U1ZHU1ZH
RWxlbWVudCo+KGVsZW1lbnQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNvbmNhdENUTShB
ZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZShzdmctPmN1cnJlbnRTY2FsZSgpKSk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNvbmNhdENUTShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLnNjYWxlKHN2Zy0+
Y3VycmVudFNjYWxlKCkpKTsKIAogICAgIGlmICghdmlld3BvcnQoKS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgaWYgKHN0eWxlKCktPm92ZXJmbG93WCgpICE9IE9WSVNJQkxFKQogICAgICAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoZW5jbG9zaW5nSW50UmVjdCh2aWV3cG9ydCgpKSk7IC8v
IEZJWE1FOiBFdmVudHVhbGx5IHdlJ2xsIHdhbnQgZmxvYXQtcHJlY2lzaW9uIGNsaXBwaW5nCiAg
ICAgICAgIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKEFmZmluZVRyYW5z
Zm9ybSgpLnRyYW5zbGF0ZSh2aWV3cG9ydCgpLngoKSwgdmlld3BvcnQoKS55KCkpKTsKKyAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmNvbmNhdENUTShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLnRy
YW5zbGF0ZSh2aWV3cG9ydCgpLngoKSwgdmlld3BvcnQoKS55KCkpKTsKICAgICB9CiAKLSAgICBw
YWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKEFmZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShz
dmctPmN1cnJlbnRUcmFuc2xhdGUoKS54KCksIHN2Zy0+Y3VycmVudFRyYW5zbGF0ZSgpLnkoKSkp
OworICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0oVHJhbnNmb3JtYXRpb25NYXRyaXgo
KS50cmFuc2xhdGUoc3ZnLT5jdXJyZW50VHJhbnNsYXRlKCkueCgpLCBzdmctPmN1cnJlbnRUcmFu
c2xhdGUoKS55KCkpKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdSb290OjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgaW50IHBhcmVudFgsIGludCBwYXJlbnRZKQpAQCAtMjY1LDkgKzI2NSw5IEBA
IHZvaWQgUmVuZGVyU1ZHUm9vdDo6YWJzb2x1dGVRdWFkcyhWZWN0b3IKICAgICAgICAgY3VycmVu
dC0+YWJzb2x1dGVRdWFkcyhxdWFkcyk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdS
b290OjphYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0CitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5k
ZXJTVkdSb290OjphYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0CiB7Ci0gICAgQWZmaW5lVHJhbnNm
b3JtIGN0bSA9IFJlbmRlckNvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKTsKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBjdG0gPSBSZW5kZXJDb250YWluZXI6OmFic29sdXRlVHJhbnNmb3Jt
KCk7CiAgICAgY3RtLnRyYW5zbGF0ZShtX3gsIG1feSk7CiAgICAgU1ZHU1ZHRWxlbWVudCogc3Zn
ID0gc3RhdGljX2Nhc3Q8U1ZHU1ZHRWxlbWVudCo+KGVsZW1lbnQoKSk7CiAgICAgY3RtLnNjYWxl
KHN2Zy0+Y3VycmVudFNjYWxlKCkpOwpAQCAtMjkzLDE0ICsyOTMsMTQgQEAgRmxvYXRSZWN0IFJl
bmRlclNWR1Jvb3Q6OnJlbGF0aXZlQkJveChibwogICAgIHJldHVybiByZWN0OwogfQogCi1BZmZp
bmVUcmFuc2Zvcm0gUmVuZGVyU1ZHUm9vdDo6bG9jYWxUcmFuc2Zvcm0oKSBjb25zdAorVHJhbnNm
b3JtYXRpb25NYXRyaXggUmVuZGVyU1ZHUm9vdDo6bG9jYWxUcmFuc2Zvcm0oKSBjb25zdAogewot
ICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25N
YXRyaXgoKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdSb290Ojpub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBpbnQgX3gsIGludCBf
eSwgaW50IF90eCwgaW50IF90eSwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQogewotICAg
IEFmZmluZVRyYW5zZm9ybSBjdG0gPSBSZW5kZXJDb250YWluZXI6OmFic29sdXRlVHJhbnNmb3Jt
KCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY3RtID0gUmVuZGVyQ29udGFpbmVyOjphYnNv
bHV0ZVRyYW5zZm9ybSgpOwogCiAgICAgaW50IHN4ID0gKF90eCAtIHN0YXRpY19jYXN0PGludD4o
Y3RtLmUoKSkpOyAvLyBzY3JvbGwgb2Zmc2V0CiAgICAgaW50IHN5ID0gKF90eSAtIHN0YXRpY19j
YXN0PGludD4oY3RtLmYoKSkpOyAvLyBzY3JvbGwgb2Zmc2V0CkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdSb290LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHUm9vdC5oCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR1Jvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBTVkdTdHlsZWRFbGVtZW50OwotY2xhc3MgQWZmaW5lVHJhbnNmb3Jt
OworY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIGNsYXNzIFJlbmRlclNWR1Jvb3QgOiBw
dWJsaWMgUmVuZGVyQ29udGFpbmVyIHsKIHB1YmxpYzoKQEAgLTUyLDEzICs1MiwxMyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sIHRvcExldmVsID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3Rz
KEdyYXBoaWNzQ29udGV4dCosIGludCB0eCwgaW50IHR5KTsKIAotICAgIHZpcnR1YWwgQWZmaW5l
VHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtKCkgY29uc3Q7CisgICAgdmlydHVhbCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBhYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0OwogCiAgICAgYm9vbCBmaWxs
Q29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgc3Ryb2tlQ29udGFp
bnMoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIEZsb2F0UmVjdCByZWxhdGl2ZUJCb3go
Ym9vbCBpbmNsdWRlU3Ryb2tlID0gdHJ1ZSkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBBZmZp
bmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGxvY2FsVHJhbnNmb3JtKCkgY29uc3Q7CiAgICAKICAgICBGbG9hdFJlY3Qg
dmlld3BvcnQoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJ
KHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgYm9vbCBSZW5kZXJTVkdUZXh0OjpyZXF1
aXJlc0xheWVyKCkKIAogYm9vbCBSZW5kZXJTVkdUZXh0OjpjYWxjdWxhdGVMb2NhbFRyYW5zZm9y
bSgpCiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG9sZFRyYW5zZm9ybSA9IG1fbG9jYWxUcmFuc2Zv
cm07CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggb2xkVHJhbnNmb3JtID0gbV9sb2NhbFRyYW5z
Zm9ybTsKICAgICBtX2xvY2FsVHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8U1ZHVGV4dEVsZW1lbnQq
PihlbGVtZW50KCkpLT5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7CiAgICAgcmV0dXJuIChvbGRU
cmFuc2Zvcm0gIT0gbV9sb2NhbFRyYW5zZm9ybSk7CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgYm9v
bCBSZW5kZXJTVkdUZXh0Ojpub2RlQXRQb2ludChjb25zdCBIaQogICAgIGlmIChpc1Zpc2libGUg
fHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7CiAgICAgICAgIGlmICgoaGl0UnVsZXMuY2Fu
SGl0U3Ryb2tlICYmIChzdHlsZSgpLT5zdmdTdHlsZSgpLT5oYXNTdHJva2UoKSB8fCAhaGl0UnVs
ZXMucmVxdWlyZVN0cm9rZSkpCiAgICAgICAgICAgICB8fCAoaGl0UnVsZXMuY2FuSGl0RmlsbCAm
JiAoc3R5bGUoKS0+c3ZnU3R5bGUoKS0+aGFzRmlsbCgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlRmls
bCkpKSB7Ci0gICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdG90YWxUcmFuc2Zvcm0gPSBhYnNv
bHV0ZVRyYW5zZm9ybSgpOworICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdG90YWxU
cmFuc2Zvcm0gPSBhYnNvbHV0ZVRyYW5zZm9ybSgpOwogICAgICAgICAgICAgZG91YmxlIGxvY2Fs
WCwgbG9jYWxZOwogICAgICAgICAgICAgdG90YWxUcmFuc2Zvcm0uaW52ZXJzZSgpLm1hcChfeCwg
X3ksICZsb2NhbFgsICZsb2NhbFkpOwogICAgICAgICAgICAgRmxvYXRQb2ludCBoaXRQb2ludChf
eCwgX3kpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVS
ZWN0cyhWZWN0b3IKIAogICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gbG9jYWxUb0Fic29sdXRlKCk7
CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gaHRtbFBhcmVudEN0bSA9IHJvb3QtPlJlbmRlckNvbnRh
aW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBodG1s
UGFyZW50Q3RtID0gcm9vdC0+UmVuZGVyQ29udGFpbmVyOjphYnNvbHV0ZVRyYW5zZm9ybSgpOwog
IAogICAgIC8vIERvbid0IHVzZSByZWxhdGl2ZUJCb3ggaGVyZSwgYXMgaXQncyB1bml0ZXMgdGhl
IHNlbGVjdGlvbiByZWN0cy4gTWFrZXMgaXQgaGFyZAogICAgIC8vIHRvIHNwb3QgZXJyb3JzLCBp
ZiB0aGVyZSBhcmUgYW55IHVzaW5nIFdlYkluc3BlY3Rvci4gSW5kaXZpZHVhbGx5IGZlZWQgdGhl
bSBpbnRvICdyZWN0cycuCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0Ojph
YnNvbHV0ZVF1YWRzKFZlY3RvcgogCiAgICAgRmxvYXRQb2ludCBhYnNQb3MgPSBsb2NhbFRvQWJz
b2x1dGUoKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBodG1sUGFyZW50Q3RtID0gcm9vdC0+UmVu
ZGVyQ29udGFpbmVyOjphYnNvbHV0ZVRyYW5zZm9ybSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGh0bWxQYXJlbnRDdG0gPSByb290LT5SZW5kZXJDb250YWluZXI6OmFic29sdXRlVHJhbnNm
b3JtKCk7CiAgCiAgICAgLy8gRG9uJ3QgdXNlIHJlbGF0aXZlQkJveCBoZXJlLCBhcyBpdCdzIHVu
aXRlcyB0aGUgc2VsZWN0aW9uIHJlY3RzLiBNYWtlcyBpdCBoYXJkCiAgICAgLy8gdG8gc3BvdCBl
cnJvcnMsIGlmIHRoZXJlIGFyZSBhbnkgdXNpbmcgV2ViSW5zcGVjdG9yLiBJbmRpdmlkdWFsbHkg
ZmVlZCB0aGVtIGludG8gJ3JlY3RzJy4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R1RleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmgJ
KHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogCi0jaW5j
bHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCIKICNpbmNsdWRlICJSZW5kZXJTVkdCbG9jay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdUZXh0KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zv
cm0oKTsKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGxvY2FsVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsg
fQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBpbnQgdHgsIGludCB0
eSk7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rp
b24pOwpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbmxpbmVCb3gqIGNy
ZWF0ZUlubGluZUJveChib29sIG1ha2VQbGFjZUhvbGRlckJveCwgYm9vbCBpc1Jvb3RMaW5lQm94
LCBib29sIGlzT25seVJ1biA9IGZhbHNlKTsKIAogcHJpdmF0ZToKLSAgICBBZmZpbmVUcmFuc2Zv
cm0gbV9sb2NhbFRyYW5zZm9ybTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2xvY2FsVHJh
bnNmb3JtOwogICAgIEludFJlY3QgbV9hYnNvbHV0ZUJvdW5kczsKIH07CiAKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIu
Y3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RyYW5z
Zm9ybWFibGVDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIFJl
bmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OlJlbmRlclMKIAogYm9vbCBSZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyOjpjYWxjdWxhdGVMb2NhbFRyYW5zZm9ybSgpCiB7Ci0gICAg
QWZmaW5lVHJhbnNmb3JtIG9sZFRyYW5zZm9ybSA9IG1fbG9jYWxUcmFuc2Zvcm07CisgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggb2xkVHJhbnNmb3JtID0gbV9sb2NhbFRyYW5zZm9ybTsKICAgICBt
X2xvY2FsVHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQqPihlbGVtZW50KCkpLT5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7CiAgICAgcmV0dXJuICht
X2xvY2FsVHJhbnNmb3JtICE9IG9sZFRyYW5zZm9ybSk7CiB9CkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwCShyZXZpc2lvbiAzOTYx
MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFJlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyOjphcHBseUNvCiAgICAgICAgIGlmIChzdHlsZSgpLT5vdmVyZmxvd1goKSAhPSBPVklT
SUJMRSkKICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGVuY2xvc2luZ0ludFJl
Y3Qodmlld3BvcnQoKSkpOyAvLyBGSVhNRTogRXZlbnR1YWxseSB3ZSdsbCB3YW50IGZsb2F0LXBy
ZWNpc2lvbiBjbGlwcGluZwogICAgICAgICAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNv
bmNhdENUTShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUodmlld3BvcnQoKS54KCksIHZpZXdw
b3J0KCkueSgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0oVHJhbnNm
b3JtYXRpb25NYXRyaXgoKS50cmFuc2xhdGUodmlld3BvcnQoKS54KCksIHZpZXdwb3J0KCkueSgp
KSk7CiAgICAgfQogCiAgICAgUmVuZGVyU1ZHQ29udGFpbmVyOjphcHBseUNvbnRlbnRUcmFuc2Zv
cm1zKHBhaW50SW5mbyk7CkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBSZW5kZXJTVkdWaWV3cG9y
dENvbnRhaW5lcjo6Y2FsY1ZpZQogICAgIH0KIH0KIAotQWZmaW5lVHJhbnNmb3JtIFJlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyOjp2aWV3cG9ydFRyYW5zZm9ybSgpIGNvbnN0CitUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6dmlld3BvcnRUcmFuc2Zvcm0o
KSBjb25zdAogewogICAgIGlmIChlbGVtZW50KCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN2Z1Rh
ZykpIHsKICAgICAgICAgU1ZHU1ZHRWxlbWVudCogc3ZnID0gc3RhdGljX2Nhc3Q8U1ZHU1ZHRWxl
bWVudCo+KGVsZW1lbnQoKSk7CkBAIC0xNDMsMTIgKzE0MywxMiBAQCBBZmZpbmVUcmFuc2Zvcm0g
UmVuZGVyU1ZHVmlld3BvcnRDb250YWluCiAgICAgICAgIHJldHVybiBtYXJrZXItPnZpZXdCb3hU
b1ZpZXdUcmFuc2Zvcm0odmlld3BvcnQoKS53aWR0aCgpLCB2aWV3cG9ydCgpLmhlaWdodCgpKTsK
ICAgICB9CiAgCi0gICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICAgcmV0dXJuIFRy
YW5zZm9ybWF0aW9uTWF0cml4KCk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKSBjb25zdAorVHJhbnNmb3JtYXRpb25N
YXRyaXggUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmFic29sdXRlVHJhbnNmb3JtKCkgY29u
c3QKIHsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRy
YW5zZm9ybSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGN0bSA9IFJlbmRlck9iamVjdDo6
YWJzb2x1dGVUcmFuc2Zvcm0oKTsKICAgICBjdG0udHJhbnNsYXRlKHZpZXdwb3J0KCkueCgpLCB2
aWV3cG9ydCgpLnkoKSk7CiAgICAgcmV0dXJuIHZpZXdwb3J0VHJhbnNmb3JtKCkgKiBjdG07CiB9
CkBAIC0xNjEsNyArMTYxLDcgQEAgYm9vbCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6bm9k
ZUF0UAogICAgICAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIGRvIGFueXRoaW5nIGF0IGFsbC4K
ICAgICAgICAgSW50UmVjdCBvdmVyZmxvd0JveCA9IG92ZXJmbG93UmVjdChmYWxzZSk7CiAgICAg
ICAgIG92ZXJmbG93Qm94Lm1vdmUoX3R4LCBfdHkpOwotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0g
Y3RtID0gUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRyYW5zZm9ybSgpOworICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBjdG0gPSBSZW5kZXJPYmplY3Q6OmFic29sdXRlVHJhbnNmb3JtKCk7CiAg
ICAgICAgIGN0bS50cmFuc2xhdGUodmlld3BvcnQoKS54KCksIHZpZXdwb3J0KCkueSgpKTsKICAg
ICAgICAgZG91YmxlIGxvY2FsWCwgbG9jYWxZOwogICAgICAgICBjdG0uaW52ZXJzZSgpLm1hcChf
eCAtIF90eCwgX3kgLSBfdHksICZsb2NhbFgsICZsb2NhbFkpOwpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oCShyZXZpc2lvbiAzOTYxMCkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHBhcmVudFgsIGlu
dCBwYXJlbnRZKTsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNm
b3JtKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gdmlld3BvcnRUcmFuc2Zv
cm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFic29sdXRlVHJh
bnNmb3JtKCkgY29uc3Q7CisgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB2aWV3cG9y
dFRyYW5zZm9ybSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwgaW50IHR4LCBp
bnQgdHksIEhpdFRlc3RBY3Rpb24pOwogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdDaGFy
YWN0ZXJMYXlvdXRJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdD
aGFyYWN0ZXJMYXlvdXRJbmZvLmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9TVkdDaGFyYWN0ZXJMYXlvdXRJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEyLDkg
KzUxMiw5IEBAIGJvb2wgU1ZHQ2hhcjo6aXNIaWRkZW4oKSBjb25zdAogICAgIHJldHVybiBwYXRo
RGF0YSAmJiBwYXRoRGF0YS0+aGlkZGVuOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHQ2hhcjo6
Y2hhcmFjdGVyVHJhbnNmb3JtKCkgY29uc3QKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFNWR0NoYXI6
OmNoYXJhY3RlclRyYW5zZm9ybSgpIGNvbnN0CiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsK
KyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjdG07CiAKICAgICAvLyBSb3RhdGUgY2hhcmFjdGVy
IGFyb3VuZCBhbmdsZSwgYW5kIHBvc3NpYmx5IHNjYWxlLgogICAgIGN0bS50cmFuc2xhdGUoeCwg
eSk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdDaGFyYWN0ZXJMYXlvdXRJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHQ2hhcmFjdGVyTGF5b3V0SW5mby5oCShy
ZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR0NoYXJhY3RlckxheW91dElu
Zm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmgiCkBAIC0yMzUsNyArMjM1LDcgQEAgc3RydWN0IFNWR0NoYXIg
ewogCiAgICAgLy8gSGVscGVyIG1ldGhvZHMKICAgICBib29sIGlzSGlkZGVuKCkgY29uc3Q7Ci0g
ICAgQWZmaW5lVHJhbnNmb3JtIGNoYXJhY3RlclRyYW5zZm9ybSgpIGNvbnN0OworICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGNoYXJhY3RlclRyYW5zZm9ybSgpIGNvbnN0OwogfTsKIAogc3RydWN0
IFNWR0lubGluZUJveENoYXJhY3RlclJhbmdlIHsKQEAgLTI3Niw3ICsyNzYsNyBAQCBzdHJ1Y3Qg
U1ZHVGV4dENodW5rIHsKICAgICAvLyB0ZXh0TGVuZ3RoICYgbGVuZ3RoQWRqdXN0IHN1cHBvcnQK
ICAgICBmbG9hdCB0ZXh0TGVuZ3RoOwogICAgIEVMZW5ndGhBZGp1c3QgbGVuZ3RoQWRqdXN0Owot
ICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY3RtOwog
CiAgICAgLy8gc3RhdHVzIGZsYWdzCiAgICAgYm9vbCBpc1ZlcnRpY2FsVGV4dCA6IDE7CkBAIC0y
OTIsNyArMjkyLDcgQEAgc3RydWN0IFNWR1RleHRDaHVuayB7CiBzdHJ1Y3QgU1ZHVGV4dENodW5r
V2Fsa2VyQmFzZSB7CiAgICAgdmlydHVhbCB+U1ZHVGV4dENodW5rV2Fsa2VyQmFzZSgpIHsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIG9wZXJhdG9yKCkoU1ZHSW5saW5lVGV4dEJveCogdGV4dEJveCwg
aW50IHN0YXJ0T2Zmc2V0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGNodW5rQ3RtLAorICAgIHZp
cnR1YWwgdm9pZCBvcGVyYXRvcigpKFNWR0lubGluZVRleHRCb3gqIHRleHRCb3gsIGludCBzdGFy
dE9mZnNldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNodW5rQ3RtLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTVkdDaGFyPjo6aXRlcmF0b3ImIHN0YXJ0
LCBjb25zdCBWZWN0b3I8U1ZHQ2hhcj46Oml0ZXJhdG9yJiBlbmQpID0gMDsKIAogICAgIC8vIEZv
bGxvd2luZ3MgbWV0aG9kcyBhcmUgb25seSB1c2VkIGZvciBwYWludGluZyB0ZXh0IGNodW5rcwpA
QCAtMzA4LDcgKzMwOCw3IEBAIHN0cnVjdCBTVkdUZXh0Q2h1bmtXYWxrZXIgOiBwdWJsaWMgU1ZH
VGUKIHB1YmxpYzoKICAgICB0eXBlZGVmIHZvaWQgKENhbGxiYWNrQ2xhc3M6OipTVkdUZXh0Q2h1
bmtXYWxrZXJDYWxsYmFjaykoU1ZHSW5saW5lVGV4dEJveCogdGV4dEJveCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0
YXJ0T2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGNodW5rQ3RtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY2h1bmtDdG0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxT
VkdDaGFyPjo6aXRlcmF0b3ImIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U1ZHQ2hhcj46Oml0
ZXJhdG9yJiBlbmQpOwogCkBAIC0zMzYsNyArMzM2LDcgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQod2Fsa2VyKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3BlcmF0b3IoKShTVkdJbmxp
bmVUZXh0Qm94KiB0ZXh0Qm94LCBpbnQgc3RhcnRPZmZzZXQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgY2h1bmtDdG0sCisgICAgdmlydHVhbCB2b2lkIG9wZXJhdG9yKCkoU1ZHSW5saW5lVGV4dEJv
eCogdGV4dEJveCwgaW50IHN0YXJ0T2Zmc2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
Y2h1bmtDdG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFNWR0No
YXI+OjppdGVyYXRvciYgc3RhcnQsIGNvbnN0IFZlY3RvcjxTVkdDaGFyPjo6aXRlcmF0b3ImIGVu
ZCkKICAgICB7CiAgICAgICAgICgqbV9vYmplY3QuKm1fd2Fsa2VyQ2FsbGJhY2spKHRleHRCb3gs
IHN0YXJ0T2Zmc2V0LCBjaHVua0N0bSwgc3RhcnQsIGVuZCk7CkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9TVkdJbmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9TVkdJbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3
IEBAIEZsb2F0UmVjdCBTVkdJbmxpbmVUZXh0Qm94OjpjYWxjdWxhdGVHbHkKICAgICBGbG9hdFJl
Y3QgZ2x5cGhSZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSk7CiAKICAgICAvLyBUYWtlIHBl
ci1jaGFyYWN0ZXIgdHJhbnNmb3JtYXRpb25zIGludG8gYWNjb3VudAotICAgIEFmZmluZVRyYW5z
Zm9ybSBjdG0gPSBzdmdDaGFyLmNoYXJhY3RlclRyYW5zZm9ybSgpOworICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGN0bSA9IHN2Z0NoYXIuY2hhcmFjdGVyVHJhbnNmb3JtKCk7CiAgICAgaWYgKCFj
dG0uaXNJZGVudGl0eSgpKQogICAgICAgICBnbHlwaFJlY3QgPSBjdG0ubWFwUmVjdChnbHlwaFJl
Y3QpOwogCkBAIC0xMjksNyArMTI5LDcgQEAgc3RydWN0IFNWR0lubGluZVRleHRCb3hDbG9zZXN0
Q2hhcmFjdGVyVAogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGNodW5rUG9ydGlvbkNhbGxiYWNr
KFNWR0lubGluZVRleHRCb3gqIHRleHRCb3gsIGludCBzdGFydE9mZnNldCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBjaHVua0N0bSwKKyAgICB2b2lkIGNodW5rUG9ydGlvbkNhbGxiYWNrKFNWR0lu
bGluZVRleHRCb3gqIHRleHRCb3gsIGludCBzdGFydE9mZnNldCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGNodW5rQ3RtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPFNWR0NoYXI+OjppdGVyYXRvciYgc3RhcnQsIGNvbnN0IFZlY3RvcjxTVkdDaGFyPjo6
aXRlcmF0b3ImIGVuZCkKICAgICB7CiAgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHRleHRC
b3gtPnRleHRPYmplY3QoKS0+c3R5bGUoKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCBzdHJ1Y3QgU1ZH
SW5saW5lVGV4dEJveFNlbGVjdGlvblJlY3RXYWxrCiAgICAgewogICAgIH0KIAotICAgIHZvaWQg
Y2h1bmtQb3J0aW9uQ2FsbGJhY2soU1ZHSW5saW5lVGV4dEJveCogdGV4dEJveCwgaW50IHN0YXJ0
T2Zmc2V0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGNodW5rQ3RtLAorICAgIHZvaWQgY2h1bmtQ
b3J0aW9uQ2FsbGJhY2soU1ZHSW5saW5lVGV4dEJveCogdGV4dEJveCwgaW50IHN0YXJ0T2Zmc2V0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY2h1bmtDdG0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U1ZHQ2hhcj46Oml0ZXJhdG9yJiBzdGFydCwgY29u
c3QgVmVjdG9yPFNWR0NoYXI+OjppdGVyYXRvciYgZW5kKQogICAgIHsKICAgICAgICAgUmVuZGVy
U3R5bGUqIHN0eWxlID0gdGV4dEJveC0+dGV4dE9iamVjdCgpLT5zdHlsZSgpOwpAQCAtMzUwLDcg
KzM1MCw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRDaGFyYWN0ZXJzKFIKICAgICBp
ZiAoKmZvbnQgIT0gcGFpbnRJbmZvLmNvbnRleHQtPmZvbnQoKSkKICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNldEZvbnQoKmZvbnQpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IHN2
Z0NoYXIuY2hhcmFjdGVyVHJhbnNmb3JtKCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY3Rt
ID0gc3ZnQ2hhci5jaGFyYWN0ZXJUcmFuc2Zvcm0oKTsKICAgICBpZiAoIWN0bS5pc0lkZW50aXR5
KCkpCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0oY3RtKTsKIApAQCAtNTE4
LDcgKzUxOCw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEUKICAg
ICBjb250ZXh0LT5zYXZlKCk7CiAgICAgY29udGV4dC0+YmVnaW5QYXRoKCk7CiAKLSAgICBBZmZp
bmVUcmFuc2Zvcm0gY3RtID0gc3ZnQ2hhci5jaGFyYWN0ZXJUcmFuc2Zvcm0oKTsKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBjdG0gPSBzdmdDaGFyLmNoYXJhY3RlclRyYW5zZm9ybSgpOwogICAg
IGlmICghY3RtLmlzSWRlbnRpdHkoKSkKICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGN0bSk7
CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCShyZXZpc2lvbiAz
OTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdS
ZW5kZXJTdXBwb3J0LmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRl
ICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24g
Mzk2MTApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGMKICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQorVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSkKIHsKICAgICBpZiAodHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKICAg
ICAgICAgdHMgPDwgImlkZW50aXR5IjsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRl
clRyZWVBc1RleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmgJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKKyAgICBjbGFzcyBU
cmFuc2Zvcm1hdGlvbk1hdHJpeDsKICAgICBjbGFzcyBDb2xvcjsKICAgICBjbGFzcyBGbG9hdFBv
aW50OwogICAgIGNsYXNzIEZsb2F0UmVjdDsKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCB3cml0ZShU
ZXh0U3RyZWFtJiwgY29uc3QgUmVuZGVyU1ZHVAogdm9pZCB3cml0ZVJlbmRlclJlc291cmNlcyhU
ZXh0U3RyZWFtJiwgTm9kZSogcGFyZW50KTsKIAogLy8gaGVscGVyIG9wZXJhdG9ycyBkZWZpbmVk
IHVzZWQgaW4gdmFyaW91cyBjbGFzc2VzIHRvIGR1bXAgdGhlIHJlbmRlciB0cmVlLgotVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CitU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpOwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgSW50UmVj
dCYpOwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3ImKTsK
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEludFBvaW50Jik7Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmNwcAkocmV2aXNpb24gMzk2MTAp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0cnVjdCBTVkdSb290SW5saW5lQm94UGFpbnRXYWxrZXIg
ewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdm9pZCBjaHVua1BvcnRpb25D
YWxsYmFjayhTVkdJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LCBpbnQgc3RhcnRPZmZzZXQsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgY2h1bmtDdG0sCisgICAgdm9pZCBjaHVua1BvcnRpb25DYWxsYmFj
ayhTVkdJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LCBpbnQgc3RhcnRPZmZzZXQsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBjaHVua0N0bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFZlY3RvcjxTVkdDaGFyPjo6aXRlcmF0b3ImIHN0YXJ0LCBjb25zdCBWZWN0b3I8U1ZH
Q2hhcj46Oml0ZXJhdG9yJiBlbmQpCiAgICAgewogICAgICAgICBSZW5kZXJUZXh0KiB0ZXh0ID0g
dGV4dEJveC0+dGV4dE9iamVjdCgpOwpAQCAtODQyLDcgKzg0Miw3IEBAIHN0YXRpYyB2b2lkIGFw
cGx5VGV4dExlbmd0aENvcnJlY3Rpb25Ub1QKICAgICAgICAgU1ZHQ2hhciYgZmlyc3RDaGFyID0g
KihjaHVuay5zdGFydCk7CiAKICAgICAgICAgLy8gQXNzdXJlIHdlIGFwcGx5IHRoZSBjaHVuayBz
Y2FsaW5nIGluIHRoZSByaWdodCBvcmlnaW4KLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG5ld0No
dW5rQ3RtOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuZXdDaHVua0N0bTsKICAgICAg
ICAgbmV3Q2h1bmtDdG0udHJhbnNsYXRlKGZpcnN0Q2hhci54LCBmaXJzdENoYXIueSk7CiAgICAg
ICAgIG5ld0NodW5rQ3RtID0gY2h1bmsuY3RtICogbmV3Q2h1bmtDdG07CiAgICAgICAgIG5ld0No
dW5rQ3RtLnRyYW5zbGF0ZSgtZmlyc3RDaGFyLngsIC1maXJzdENoYXIueSk7CkBAIC05NTUsNyAr
OTU1LDcgQEAgdm9pZCBTVkdSb290SW5saW5lQm94OjpidWlsZExheW91dEluZm9ybQogICAgICAg
ICAgICAgICAgIFZlY3RvcjxTVkdUZXh0Q2h1bms+OjppdGVyYXRvciBpdCA9IHRlbXBDaHVua3Mu
YmVnaW4oKTsKICAgICAgICAgICAgICAgICBWZWN0b3I8U1ZHVGV4dENodW5rPjo6aXRlcmF0b3Ig
ZW5kID0gdGVtcENodW5rcy5lbmQoKTsKIAotICAgICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9y
bSBjdG07CisgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY3RtOwogICAgICAg
ICAgICAgICAgIGZsb2F0IGNvbXB1dGVkTGVuZ3RoID0gMC4wZjsKICAKICAgICAgICAgICAgICAg
ICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM2LDcgKzYzNiw3IEBAIHZv
aWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoQ291bnRlckNvbnQKICAgICBuZXdDb250ZW50RGF0
YS0+bV90eXBlID0gQ09OVEVOVF9DT1VOVEVSOwogfQogCi12b2lkIFJlbmRlclN0eWxlOjphcHBs
eVRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYgYm9y
ZGVyQm94U2l6ZSwgYm9vbCBpbmNsdWRlVHJhbnNmb3JtT3JpZ2luKSBjb25zdAordm9pZCBSZW5k
ZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwg
Y29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSwgYm9vbCBpbmNsdWRlVHJhbnNmb3JtT3JpZ2lu
KSBjb25zdAogewogICAgIC8vIHRyYW5zZm9ybS1vcmlnaW4gYnJhY2tldHMgdGhlIHRyYW5zZm9y
bSB3aXRoIHRyYW5zbGF0ZSBvcGVyYXRpb25zLgogICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2Fz
ZSB3aGVyZSB0aGUgb25seSB0cmFuc2Zvcm0gaXMgYSB0cmFuc2xhdGlvbiwgc2luY2UgdGhlIHRy
YW5zZm9ybS1vcmlnaW4gaXMgaXJyZWxldmFudApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpZm5kZWYg
UmVuZGVyU3R5bGVfaAogI2RlZmluZSBSZW5kZXJTdHlsZV9oCiAKLSNpbmNsdWRlICJBZmZpbmVU
cmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUg
IkFuaW1hdGlvbkxpc3QuaCIKICNpbmNsdWRlICJCb3JkZXJEYXRhLmgiCiAjaW5jbHVkZSAiQm9y
ZGVyVmFsdWUuaCIKQEAgLTYyNSw3ICs2MjUsNyBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIHRyYW5z
Zm9ybU9yaWdpblgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFu
c2Zvcm0tPm1feDsgfQogICAgIExlbmd0aCB0cmFuc2Zvcm1PcmlnaW5ZKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX3k7IH0KICAgICBib29sIGhh
c1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuICFyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFu
c2Zvcm0tPm1fb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuaXNFbXB0eSgpOyB9Ci0gICAgdm9pZCBh
cHBseVRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hT
aXplLCBib29sIGluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4gPSB0cnVlKSBjb25zdDsKKyAgICB2b2lk
IGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgSW50U2l6ZSYgYm9y
ZGVyQm94U2l6ZSwgYm9vbCBpbmNsdWRlVHJhbnNmb3JtT3JpZ2luID0gdHJ1ZSkgY29uc3Q7CiAg
ICAgYm9vbCBoYXNNYXNrKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
bWFzay5oYXNJbWFnZSgpIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFnZS5o
YXNJbWFnZSgpOyB9CiAgICAgLy8gRW5kIENTUzMgR2V0dGVycwogCkluZGV4OiBXZWJDb3JlL3N2
Zy9HcmFkaWVudEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9HcmFkaWVu
dEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3N2Zy9HcmFkaWVudEF0
dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICAgICAgICAgR3JhZGllbnRTcHJlYWRNZXRob2Qgc3ByZWFkTWV0aG9kKCkgY29u
c3QgeyByZXR1cm4gbV9zcHJlYWRNZXRob2Q7IH0KICAgICAgICAgYm9vbCBib3VuZGluZ0JveE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kaW5nQm94TW9kZTsgfQotICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gZ3JhZGllbnRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50VHJh
bnNmb3JtOyB9CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGdyYWRpZW50VHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFRyYW5zZm9ybTsgfQogICAgICAgICBjb25zdCBW
ZWN0b3I8U1ZHR3JhZGllbnRTdG9wPiYgc3RvcHMoKSBjb25zdCB7IHJldHVybiBtX3N0b3BzOyB9
CiAKICAgICAgICAgdm9pZCBzZXRTcHJlYWRNZXRob2QoR3JhZGllbnRTcHJlYWRNZXRob2QgdmFs
dWUpIHsgbV9zcHJlYWRNZXRob2QgPSB2YWx1ZTsgbV9zcHJlYWRNZXRob2RTZXQgPSB0cnVlOyB9
CiAgICAgICAgIHZvaWQgc2V0Qm91bmRpbmdCb3hNb2RlKGJvb2wgdmFsdWUpIHsgbV9ib3VuZGlu
Z0JveE1vZGUgPSB2YWx1ZTsgbV9ib3VuZGluZ0JveE1vZGVTZXQgPSB0cnVlOyB9Ci0gICAgICAg
IHZvaWQgc2V0R3JhZGllbnRUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB2YWx1ZSkg
eyBtX2dyYWRpZW50VHJhbnNmb3JtID0gdmFsdWU7IG1fZ3JhZGllbnRUcmFuc2Zvcm1TZXQgPSB0
cnVlOyB9CisgICAgICAgIHZvaWQgc2V0R3JhZGllbnRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHZhbHVlKSB7IG1fZ3JhZGllbnRUcmFuc2Zvcm0gPSB2YWx1ZTsgbV9ncmFk
aWVudFRyYW5zZm9ybVNldCA9IHRydWU7IH0KICAgICAgICAgdm9pZCBzZXRTdG9wcyhjb25zdCBW
ZWN0b3I8U1ZHR3JhZGllbnRTdG9wPiYgdmFsdWUpIHsgbV9zdG9wcyA9IHZhbHVlOyBtX3N0b3Bz
U2V0ID0gdHJ1ZTsgfSAKIAogICAgICAgICBib29sIGhhc1NwcmVhZE1ldGhvZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3ByZWFkTWV0aG9kU2V0OyB9CkBAIC01Niw3ICs1Niw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAgICAgICAgIC8vIFByb3BlcnRpZXMKICAgICAgICAgR3JhZGllbnRTcHJlYWRNZXRo
b2QgbV9zcHJlYWRNZXRob2Q7CiAgICAgICAgIGJvb2wgbV9ib3VuZGluZ0JveE1vZGU7Ci0gICAg
ICAgIEFmZmluZVRyYW5zZm9ybSBtX2dyYWRpZW50VHJhbnNmb3JtOworICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX2dyYWRpZW50VHJhbnNmb3JtOwogICAgICAgICBWZWN0b3I8U1ZHR3Jh
ZGllbnRTdG9wPiBtX3N0b3BzOwogCiAgICAgICAgIC8vIFByb3BlcnR5IHN0YXRlcwpJbmRleDog
V2ViQ29yZS9zdmcvUGF0dGVybkF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9QYXR0ZXJuQXR0cmlidXRlcy5oCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvc3ZnL1Bh
dHRlcm5BdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKICAgICAgICAgU1ZHTGVuZ3RoIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGVpZ2h0OyB9CiAgICAgICAgIGJvb2wgYm91bmRpbmdCb3hNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9ib3VuZGluZ0JveE1vZGU7IH0KICAgICAgICAgYm9vbCBib3VuZGluZ0JveE1vZGVDb250ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGluZ0JveE1vZGVDb250ZW50OyB9Ci0gICAgICAgIEFm
ZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJu
VHJhbnNmb3JtOyB9CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhdHRlcm5UcmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5UcmFuc2Zvcm07IH0KICAgICAgICAgY29uc3Qg
U1ZHUGF0dGVybkVsZW1lbnQqIHBhdHRlcm5Db250ZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF0dGVybkNvbnRlbnRFbGVtZW50OyB9CiAKICAgICAgICAgdm9pZCBzZXRYKGNvbnN0IFNW
R0xlbmd0aCYgdmFsdWUpIHsgbV94ID0gdmFsdWU7IG1feFNldCA9IHRydWU7IH0KQEAgLTYxLDcg
KzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdm9pZCBzZXRIZWlnaHQoY29uc3Qg
U1ZHTGVuZ3RoJiB2YWx1ZSkgeyBtX2hlaWdodCA9IHZhbHVlOyBtX2hlaWdodFNldCA9IHRydWU7
IH0KICAgICAgICAgdm9pZCBzZXRCb3VuZGluZ0JveE1vZGUoYm9vbCB2YWx1ZSkgeyBtX2JvdW5k
aW5nQm94TW9kZSA9IHZhbHVlOyBtX2JvdW5kaW5nQm94TW9kZVNldCA9IHRydWU7IH0KICAgICAg
ICAgdm9pZCBzZXRCb3VuZGluZ0JveE1vZGVDb250ZW50KGJvb2wgdmFsdWUpIHsgbV9ib3VuZGlu
Z0JveE1vZGVDb250ZW50ID0gdmFsdWU7IG1fYm91bmRpbmdCb3hNb2RlQ29udGVudFNldCA9IHRy
dWU7IH0KLSAgICAgICAgdm9pZCBzZXRQYXR0ZXJuVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdmFsdWUpIHsgbV9wYXR0ZXJuVHJhbnNmb3JtID0gdmFsdWU7IG1fcGF0dGVyblRyYW5z
Zm9ybVNldCA9IHRydWU7IH0KKyAgICAgICAgdm9pZCBzZXRQYXR0ZXJuVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB2YWx1ZSkgeyBtX3BhdHRlcm5UcmFuc2Zvcm0gPSB2YWx1
ZTsgbV9wYXR0ZXJuVHJhbnNmb3JtU2V0ID0gdHJ1ZTsgfQogICAgICAgICB2b2lkIHNldFBhdHRl
cm5Db250ZW50RWxlbWVudChjb25zdCBTVkdQYXR0ZXJuRWxlbWVudCogdmFsdWUpIHsgbV9wYXR0
ZXJuQ29udGVudEVsZW1lbnQgPSB2YWx1ZTsgbV9wYXR0ZXJuQ29udGVudEVsZW1lbnRTZXQgPSB0
cnVlOyB9CiAKICAgICAgICAgYm9vbCBoYXNYKCkgY29uc3QgeyByZXR1cm4gbV94U2V0OyB9CkBA
IC04MSw3ICs4MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFNWR0xlbmd0aCBtX2hl
aWdodDsKICAgICAgICAgYm9vbCBtX2JvdW5kaW5nQm94TW9kZTsKICAgICAgICAgYm9vbCBtX2Jv
dW5kaW5nQm94TW9kZUNvbnRlbnQ7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBtX3BhdHRlcm5U
cmFuc2Zvcm07CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcGF0dGVyblRyYW5zZm9y
bTsKICAgICAgICAgY29uc3QgU1ZHUGF0dGVybkVsZW1lbnQqIG1fcGF0dGVybkNvbnRlbnRFbGVt
ZW50OwogCiAgICAgICAgIC8vIFByb3BlcnR5IHN0YXRlcwpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3N2Zy9T
VkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcs
NyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpyZXNldFRvQmFzCiAgICAgaWYgKCFo
YXNWYWxpZFRhcmdldCgpKQogICAgICAgICByZXR1cm47CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0
ID0gdGFyZ2V0RWxlbWVudCgpOwotICAgIEFmZmluZVRyYW5zZm9ybSogdHJhbnNmb3JtID0gdGFy
Z2V0LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCog
dHJhbnNmb3JtID0gdGFyZ2V0LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKTsKICAgICBpZiAoIXRy
YW5zZm9ybSkKICAgICAgICAgcmV0dXJuOwogICAgIHRyYW5zZm9ybS0+cmVzZXQoKTsKQEAgLTE3
NCw3ICsxNzQsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBCiAg
ICAgU1ZHRWxlbWVudCogdGFyZ2V0ID0gdGFyZ2V0RWxlbWVudCgpOwogICAgIGlmICghdGFyZ2V0
KQogICAgICAgICByZXR1cm47Ci0gICAgQWZmaW5lVHJhbnNmb3JtKiB0cmFuc2Zvcm0gPSB0YXJn
ZXQtPnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KiB0
cmFuc2Zvcm0gPSB0YXJnZXQtPnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOwogICAgIGlmICghdHJh
bnNmb3JtKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0yMTgsOCArMjE4LDggQEAgdm9pZCBT
VkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlSZXN1bAogICAgIGZvciAoSGFzaFNldDxTVkdF
bGVtZW50SW5zdGFuY2UqPjo6aXRlcmF0b3IgaXQgPSBpbnN0YW5jZXMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CiAgICAgICAgIFNWR0VsZW1lbnQqIHNoYWRvd1RyZWVFbGVtZW50ID0gKCpp
dCktPnNoYWRvd1RyZWVFbGVtZW50KCk7CiAgICAgICAgIEFTU0VSVChzaGFkb3dUcmVlRWxlbWVu
dCk7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSogdHJhbnNmb3JtID0gc2hhZG93VHJlZUVsZW1l
bnQtPnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOwotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0qIHQg
PSB0YXJnZXRFbGVtZW50LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKTsKKyAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXgqIHRyYW5zZm9ybSA9IHNoYWRvd1RyZWVFbGVtZW50LT5zdXBwbGVtZW50
YWxUcmFuc2Zvcm0oKTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgqIHQgPSB0YXJnZXRF
bGVtZW50LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKTsKICAgICAgICAgdHJhbnNmb3JtLT5zZXRN
YXRyaXgodC0+YSgpLCB0LT5iKCksIHQtPmMoKSwgdC0+ZCgpLCB0LT5lKCksIHQtPmYoKSk7CiAg
ICAgICAgIGlmIChzaGFkb3dUcmVlRWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHNo
YWRvd1RyZWVFbGVtZW50LT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAkocmV2aXNpb24gMzk2MTApCisrKyBX
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiAKICNpbmNsdWRlICJTVkdB
bmltYXRpb25FbGVtZW50LmgiCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVk
ZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJQYXRoLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9y
bUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZVRyYW5z
Zm9ybUVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUg
IlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5j
bHVkZSAiU1ZHQW5nbGUuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaAkocmV2aXNpb24gMzk2MTAp
CisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNz
IEFmZmluZVRyYW5zZm9ybTsKKyAgICBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogICAg
IGNsYXNzIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IDogcHVibGljIFNWR0FuaW1hdGlvbkVs
ZW1lbnQgewogICAgIHB1YmxpYzoKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9uIDM5NjEwKQorKysg
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKKyAg
ICBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKICAgICBjbGFzcyBDU1NDdXJzb3JJbWFnZVZh
bHVlOwogICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNzIFNWR0N1cnNvckVsZW1lbnQ7CkBA
IC04NCw3ICs4NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNlbmRT
VkdMb2FkRXZlbnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRFdmVudHMgPSBmYWxzZSk7
CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSogc3VwcGxlbWVudGFs
VHJhbnNmb3JtKCkgeyByZXR1cm4gMDsgfQorICAgICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9u
TWF0cml4KiBzdXBwbGVtZW50YWxUcmFuc2Zvcm0oKSB7IHJldHVybiAwOyB9CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0U3luY2hyb25pemVkU1ZHQXR0cmlidXRlcyhi
b29sKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkocmV2aXNpb24gMzk2MTAp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3gu
aCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0
aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtODAsMTEgKzgwLDExIEBAIGJvb2wgU1ZHRml0
VG9WaWV3Qm94OjpwYXJzZVZpZXdCb3goY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQWZm
aW5lVHJhbnNmb3JtIFNWR0ZpdFRvVmlld0JveDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9h
dCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0CitUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBTVkdGaXRUb1ZpZXdCb3g6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRo
LCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25zdAogewogICAgIEZsb2F0UmVjdCB2aWV3Qm94UmVjdCA9
IHZpZXdCb3goKTsKICAgICBpZiAoIXZpZXdCb3hSZWN0LndpZHRoKCkgfHwgIXZpZXdCb3hSZWN0
LmhlaWdodCgpKQotICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CisgICAgICAgIHJl
dHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwogCiAgICAgcmV0dXJuIHByZXNlcnZlQXNwZWN0
UmF0aW8oKS0+Z2V0Q1RNKHZpZXdCb3hSZWN0LngoKSwKICAgICAgICAgICAgIHZpZXdCb3hSZWN0
LnkoKSwgdmlld0JveFJlY3Qud2lkdGgoKSwgdmlld0JveFJlY3QuaGVpZ2h0KCksCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGaXRUb1ZpZXdCb3guaAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3N2Zy9TVkdGaXRU
b1ZpZXdCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBleHRlcm4gY2hhciBTVkdGaXRUb1ZpZXdCb3hJZGVudGlmaWVyW107CiAK
LSAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CisgICAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRy
aXg7CiAKICAgICBjbGFzcyBTVkdGaXRUb1ZpZXdCb3ggewogICAgIHB1YmxpYzoKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TVkdGaXRUb1Zp
ZXdCb3goKTsKIAogICAgICAgICBib29sIHBhcnNlVmlld0JveChjb25zdCBVQ2hhciomIHN0YXJ0
LCBjb25zdCBVQ2hhciogZW5kLCBmbG9hdCYgeCwgZmxvYXQmIHksIGZsb2F0JiB3LCBmbG9hdCYg
aCwgYm9vbCB2YWxpZGF0ZSA9IHRydWUpOwotICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9y
bSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdo
dCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggdmlld0JveFRv
Vmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0Owog
CiAgICAgICAgIGJvb2wgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAg
ICAgICAgIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0dFbGVtZW50LmgJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU1ZHVXNlRWxlbWVudDsKLSAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIGxvY2FsTWF0cml4KCkgY29uc3Q7CisgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGxvY2FsTWF0cml4KCkgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMb2NhdGFibGUuY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdl
YkNvcmUvc3ZnL1NWR0xvY2F0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI2luY2x1ZGUgIlNWR0xvY2F0YWJsZS5oIgogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJSZW5k
ZXJQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxl
bWVudC5oIgpAQCAtOTgsMTggKzk4LDE4IEBAIEZsb2F0UmVjdCBTVkdMb2NhdGFibGU6OmdldEJC
b3goY29uc3QgU1YKICAgICByZXR1cm4gYmJveFJlY3Q7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBT
VkdMb2NhdGFibGU6OmdldENUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQorVHJhbnNmb3Jt
YXRpb25NYXRyaXggU1ZHTG9jYXRhYmxlOjpnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVu
dCkKIHsKICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0o
KTsKKyAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiAKLSAgICBBZmZpbmVU
cmFuc2Zvcm0gY3RtOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGN0bTsKIAogICAgIE5vZGUq
IHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudE5vZGUoKTsKICAgICBpZiAocGFyZW50ICYmIHBhcmVu
dC0+aXNTVkdFbGVtZW50KCkpIHsKICAgICAgICAgU1ZHRWxlbWVudCogcGFyZW50RWxlbWVudCA9
IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihwYXJlbnQpOwogICAgICAgICBpZiAocGFyZW50RWxl
bWVudCAmJiBwYXJlbnRFbGVtZW50LT5pc1N0eWxlZExvY2F0YWJsZSgpKSB7Ci0gICAgICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gcGFyZW50Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRh
YmxlRWxlbWVudCo+KHBhcmVudEVsZW1lbnQpLT5nZXRDVE0oKTsKKyAgICAgICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHBhcmVudENUTSA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQqPihwYXJlbnRFbGVtZW50KS0+Z2V0Q1RNKCk7CiAgICAgICAgICAgICBjdG0gPSBw
YXJlbnRDVE0gKiBjdG07CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTcsMTggKzExNywxOCBAQCBB
ZmZpbmVUcmFuc2Zvcm0gU1ZHTG9jYXRhYmxlOjpnZXRDVE0oY29uCiAgICAgcmV0dXJuIGN0bTsK
IH0KIAotQWZmaW5lVHJhbnNmb3JtIFNWR0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKGNvbnN0IFNW
R0VsZW1lbnQqIGVsZW1lbnQpCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBTVkdMb2NhdGFibGU6Omdl
dFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmICghZWxlbWVu
dCkKLSAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOworICAgICAgICByZXR1cm4gVHJh
bnNmb3JtYXRpb25NYXRyaXgoKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBjdG07CisgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggY3RtOwogCiAgICAgTm9kZSogcGFyZW50ID0gZWxlbWVudC0+cGFy
ZW50Tm9kZSgpOwogICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc1NWR0VsZW1lbnQoKSkgewog
ICAgICAgICBTVkdFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVu
dCo+KHBhcmVudCk7CiAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50ICYmIHBhcmVudEVsZW1lbnQt
PmlzU3R5bGVkTG9jYXRhYmxlKCkpIHsKLSAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBwYXJl
bnRDVE0gPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50Kj4ocGFyZW50RWxl
bWVudCktPmdldFNjcmVlbkNUTSgpOworICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
cGFyZW50Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHBhcmVu
dEVsZW1lbnQpLT5nZXRTY3JlZW5DVE0oKTsKICAgICAgICAgICAgIGN0bSA9IHBhcmVudENUTSAq
IGN0bTsKICAgICAgICAgfQogICAgIH0KQEAgLTEzNiwxMiArMTM2LDEyIEBAIEFmZmluZVRyYW5z
Zm9ybSBTVkdMb2NhdGFibGU6OmdldFNjcmVlbkMKICAgICByZXR1cm4gY3RtOwogfQogCi1BZmZp
bmVUcmFuc2Zvcm0gU1ZHTG9jYXRhYmxlOjpnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQoU1ZHRWxlbWVu
dCogdGFyZ2V0LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK1RyYW5zZm9ybWF0aW9uTWF0cml4
IFNWR0xvY2F0YWJsZTo6Z2V0VHJhbnNmb3JtVG9FbGVtZW50KFNWR0VsZW1lbnQqIHRhcmdldCwg
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9IGdl
dENUTSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGN0bSA9IGdldENUTSgpOwogCiAgICAg
aWYgKHRhcmdldCAmJiB0YXJnZXQtPmlzU3R5bGVkTG9jYXRhYmxlKCkpIHsKLSAgICAgICAgQWZm
aW5lVHJhbnNmb3JtIHRhcmdldENUTSA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQqPih0YXJnZXQpLT5nZXRDVE0oKTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dGFyZ2V0Q1RNID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCo+KHRhcmdl
dCktPmdldENUTSgpOwogICAgICAgICBpZiAoIXRhcmdldENUTS5pc0ludmVydGlibGUoKSkgewog
ICAgICAgICAgICAgZWMgPSBTVkdFeGNlcHRpb246OlNWR19NQVRSSVhfTk9UX0lOVkVSVEFCTEU7
CiAgICAgICAgICAgICByZXR1cm4gY3RtOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmgJKHJldmlzaW9uIDM5
NjEwKQorKysgV2ViQ29yZS9zdmcvU1ZHTG9jYXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgQWZmaW5lVHJh
bnNmb3JtOworICAgIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogICAgIGNsYXNzIEZsb2F0
UmVjdDsKICAgICBjbGFzcyBTVkdFbGVtZW50OwogCkBAIC00MywxNyArNDMsMTcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIGZhcnRoZXN0Vmlld3Bv
cnRFbGVtZW50KCkgY29uc3QgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJC
b3goKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldENUTSgp
IGNvbnN0ID0gMDsKLSAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0U2NyZWVuQ1RN
KCkgY29uc3QgPSAwOwotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0VHJhbnNmb3JtVG9FbGVt
ZW50KFNWR0VsZW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgICAgIHZpcnR1YWwg
VHJhbnNmb3JtYXRpb25NYXRyaXggZ2V0Q1RNKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFs
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGdldFNjcmVlbkNUTSgpIGNvbnN0ID0gMDsKKyAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggZ2V0VHJhbnNmb3JtVG9FbGVtZW50KFNWR0VsZW1lbnQqLCBF
eGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIFNWR0VsZW1lbnQqIG5lYXJl
c3RWaWV3cG9ydEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCopOwogICAgICAgICBzdGF0aWMgU1ZH
RWxlbWVudCogZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCopOwogCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgRmxvYXRSZWN0IGdldEJCb3goY29uc3QgU1ZH
RWxlbWVudCopOwotICAgICAgICBzdGF0aWMgQWZmaW5lVHJhbnNmb3JtIGdldENUTShjb25zdCBT
VkdFbGVtZW50Kik7Ci0gICAgICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gZ2V0U2NyZWVuQ1RN
KGNvbnN0IFNWR0VsZW1lbnQqKTsKKyAgICAgICAgc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGdldENUTShjb25zdCBTVkdFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBnZXRTY3JlZW5DVE0oY29uc3QgU1ZHRWxlbWVudCopOwogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hdHJpeC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTWF0cml4LmlkbAkocmV2aXNpb24gMzk2MTApCisrKyBX
ZWJDb3JlL3N2Zy9TVkdNYXRyaXguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5ICsyNCw5IEBA
CiAKIG1vZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcsIFBPRFR5
cGU9QWZmaW5lVHJhbnNmb3JtXSBTVkdNYXRyaXggeworICAgIGludGVyZmFjZSBbQ29uZGl0aW9u
YWw9U1ZHLCBQT0RUeXBlPVRyYW5zZm9ybWF0aW9uTWF0cml4XSBTVkdNYXRyaXggewogICAgICAg
ICAvLyBGSVhNRTogdGhlc2UgYXR0cmlidXRlcyBzaG91bGQgYWxsIGJlIGZsb2F0cyBidXQgc2lu
Y2Ugd2UgaW1wbGVtZW50Ci0gICAgICAgIC8vIEFmZmluZVRyYW5zZm9ybSB3aXRoIGRvdWJsZXMg
c2V0dGluZyB0aGVzZSBhcyBkb3VibGVzIG1ha2VzIG1vcmUgc2Vuc2UuCisgICAgICAgIC8vIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHdpdGggZG91YmxlcyBzZXR0aW5nIHRoZXNlIGFzIGRvdWJsZXMg
bWFrZXMgbW9yZSBzZW5zZS4KICAgICAgICAgYXR0cmlidXRlIGRvdWJsZSBhOwogICAgICAgICBh
dHRyaWJ1dGUgZG91YmxlIGI7CiAgICAgICAgIGF0dHJpYnV0ZSBkb3VibGUgYzsKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9zdmcv
U1ZHUGF0dGVybkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAj
aWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYXR0ZXJuRWxlbWVudC5oIgogCi0jaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgU1ZHUGF0
dGVybkVsZW1lbnQ6OmJ1aWxkUGF0dGVybihjb24KICAgICAgICAgfQogICAgIH0KIAotICAgIEFm
ZmluZVRyYW5zZm9ybSB2aWV3Qm94Q1RNID0gdmlld0JveFRvVmlld1RyYW5zZm9ybShwYXR0ZXJu
Qm91bmRhcmllcy53aWR0aCgpLCBwYXR0ZXJuQm91bmRhcmllcy5oZWlnaHQoKSk7IAorICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHZpZXdCb3hDVE0gPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHBh
dHRlcm5Cb3VuZGFyaWVzLndpZHRoKCksIHBhdHRlcm5Cb3VuZGFyaWVzLmhlaWdodCgpKTsgCiAg
ICAgRmxvYXRSZWN0IHBhdHRlcm5Cb3VuZGFyaWVzSW5jbHVkaW5nT3ZlcmZsb3cgPSBwYXR0ZXJu
Qm91bmRhcmllczsKIAogICAgIC8vIEFwcGx5IG9iamVjdEJvdW5kaW5nQm94TW9kZSBmaXh1cCBm
b3IgcGF0dGVybkNvbnRlbnRVbml0cywgaWYgdmlld0JveCBpcyBub3Qgc2V0LgpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAJKHJldmlzaW9uIDM5NjEwKQorKysgV2Vi
Q29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDcgKzI1LDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0
UmF0aW8uaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5z
Zm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCkBAIC0xNjQsMTIgKzE2NCwxMiBAQCBiYWlsX291dDoK
ICAgICByZXR1cm4gcmV0OwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbzo6Z2V0Q1RNKGRvdWJsZSBsb2dpY1gsIGRvdWJsZSBsb2dpY1ksCitUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0oZG91YmxlIGxvZ2ljWCwgZG91
YmxlIGxvZ2ljWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIGxvZ2ljV2lkdGgsIGRvdWJsZSBsb2dpY0hlaWdodCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIC8qcGh5c1gqLywgZG91Ymxl
IC8qcGh5c1kqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIHBoeXNXaWR0aCwgZG91YmxlIHBoeXNIZWlnaHQpCiB7Ci0gICAgQWZmaW5lVHJh
bnNmb3JtIHRlbXA7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdGVtcDsKIAogICAgIGlmIChh
bGlnbigpID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV04pCiAgICAgICAgIHJldHVy
biB0ZW1wOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaAkocmV2aXNpb24g
Mzk2MTApCisrKyBXZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IFN0cmluZzsKLSAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CisgICAgY2xhc3MgVHJhbnNmb3Jt
YXRpb25NYXRyaXg7CiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudDsKIAogICAgIGNsYXNzIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8gOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvPiB7IApAQCAtNjcsNyArNjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgc2V0TWVldE9yU2xpY2UodW5zaWduZWQgc2hvcnQpOwogICAgICAgICB1bnNpZ25lZCBz
aG9ydCBtZWV0T3JTbGljZSgpIGNvbnN0OwogICAgICAgICAKLSAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIGdldENUTShkb3VibGUgbG9naWNYLCBkb3VibGUgbG9naWNZLAorICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBnZXRDVE0oZG91YmxlIGxvZ2ljWCwgZG91YmxlIGxvZ2ljWSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbG9naWNXaWR0aCwgZG91YmxlIGxvZ2lj
SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBwaHlzWCwgZG91
YmxlIHBoeXNZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBwaHlzV2lk
dGgsIGRvdWJsZSBwaHlzSGVpZ2h0KTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lv
biAzOTYxMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdTVkdFbGVt
ZW50LmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkNTU1By
b3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTIyLDcgKzEyMiw3IEBA
IEZsb2F0UmVjdCBTVkdTVkdFbGVtZW50Ojp2aWV3cG9ydCgpIGNvbnMKICAgICB9CiAgICAgZmxv
YXQgdyA9IHdpZHRoKCkudmFsdWUodGhpcyk7CiAgICAgZmxvYXQgaCA9IGhlaWdodCgpLnZhbHVl
KHRoaXMpOwotICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5z
Zm9ybSh3LCBoKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB2aWV3Qm94ID0gdmlld0JveFRv
Vmlld1RyYW5zZm9ybSh3LCBoKTsKICAgICBkb3VibGUgd0RvdWJsZSA9IHc7CiAgICAgZG91Ymxl
IGhEb3VibGUgPSBoOwogICAgIHZpZXdCb3gubWFwKF94LCBfeSwgJl94LCAmX3kpOwpAQCAtMzYx
LDkgKzM2MSw5IEBAIEZsb2F0UG9pbnQgU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHUG9pbnQKICAg
ICByZXR1cm4gRmxvYXRQb2ludCgpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVu
dDo6Y3JlYXRlU1ZHTWF0cml4KCkKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFNWR1NWR0VsZW1lbnQ6
OmNyZWF0ZVNWR01hdHJpeCgpCiB7Ci0gICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOworICAg
IHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOwogfQogCiBGbG9hdFJlY3QgU1ZHU1ZHRWxl
bWVudDo6Y3JlYXRlU1ZHUmVjdCgpCkBAIC0zNzYsMjYgKzM3NiwyNiBAQCBTVkdUcmFuc2Zvcm0g
U1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHJhCiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybSgpOwog
fQogCi1TVkdUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1h
dHJpeChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKK1NWR1RyYW5zZm9ybSBTVkdTVkdF
bGVtZW50OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXRyaXgpCiB7CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybShtYXRyaXgpOwogfQog
Ci1BZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKK1RyYW5zZm9y
bWF0aW9uTWF0cml4IFNWR1NWR0VsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7Ci0gICAgQWZmaW5l
VHJhbnNmb3JtIG1hdDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXQ7CiAgICAgaWYgKCFp
c091dGVybW9zdFNWRygpKQogICAgICAgICBtYXQudHJhbnNsYXRlKHgoKS52YWx1ZSh0aGlzKSwg
eSgpLnZhbHVlKHRoaXMpKTsKIAogICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShT
VkdOYW1lczo6dmlld0JveEF0dHIpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94
ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLnZhbHVlKHRoaXMpLCBoZWlnaHQoKS52
YWx1ZSh0aGlzKSk7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHZpZXdCb3ggPSB2aWV3
Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCkudmFsdWUodGhpcyksIGhlaWdodCgpLnZhbHVlKHRo
aXMpKTsKICAgICAgICAgbWF0ID0gdmlld0JveCAqIG1hdDsKICAgICB9CiAKICAgICByZXR1cm4g
bWF0OwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkg
Y29uc3QKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFNWR1NWR0VsZW1lbnQ6OmdldFNjcmVlbkNUTSgp
IGNvbnN0CiB7CiAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKCk7CiAgICAgRmxvYXRQb2ludCByb290TG9jYXRpb247ICAgIApAQCAtNDExLDExICs0
MTEsMTEgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OmdldFNjcmVlbgogICAgICAg
ICAgICAgcm9vdExvY2F0aW9uLm1vdmUoeCgpLnZhbHVlKHRoaXMpLCB5KCkudmFsdWUodGhpcykp
OwogICAgIH0KICAgICAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0ID0gU1ZHU3R5bGVkTG9jYXRh
YmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0
ID0gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCk7CiAgICAgbWF0LnRy
YW5zbGF0ZShyb290TG9jYXRpb24ueCgpLCByb290TG9jYXRpb24ueSgpKTsKIAogICAgIGlmIChh
dHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6dmlld0JveEF0dHIpKSB7Ci0gICAg
ICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0
aCgpLnZhbHVlKHRoaXMpLCBoZWlnaHQoKS52YWx1ZSh0aGlzKSk7CisgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCkudmFs
dWUodGhpcyksIGhlaWdodCgpLnZhbHVlKHRoaXMpKTsKICAgICAgICAgbWF0ID0gdmlld0JveCAq
IG1hdDsKICAgICB9CiAKQEAgLTQ4MSw3ICs0ODEsNyBAQCBib29sIFNWR1NWR0VsZW1lbnQ6Omlz
T3V0ZXJtb3N0U1ZHKCkgY29uCiAgICAgcmV0dXJuICFwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVu
dCgpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6dmlld0JveFRvVmlld1Ry
YW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0CitUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBTVkdTVkdFbGVtZW50Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0
IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdodCkgY29uc3QKIHsKICAgICBGbG9hdFJlY3Qgdmll
d0JveFJlY3Q7CiAgICAgaWYgKHVzZUN1cnJlbnRWaWV3KCkpIHsKQEAgLTQ5MCw5ICs0OTAsOSBA
QCBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6dmlld0JveFRvCiAgICAgfSBlbHNlCiAg
ICAgICAgIHZpZXdCb3hSZWN0ID0gdmlld0JveCgpOwogICAgIGlmICghdmlld0JveFJlY3Qud2lk
dGgoKSB8fCAhdmlld0JveFJlY3QuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybiBBZmZpbmVUcmFu
c2Zvcm0oKTsKKyAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiAKLSAgICBB
ZmZpbmVUcmFuc2Zvcm0gY3RtID0gcHJlc2VydmVBc3BlY3RSYXRpbygpLT5nZXRDVE0odmlld0Jv
eFJlY3QueCgpLAorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGN0bSA9IHByZXNlcnZlQXNwZWN0
UmF0aW8oKS0+Z2V0Q1RNKHZpZXdCb3hSZWN0LngoKSwKICAgICAgICAgICAgIHZpZXdCb3hSZWN0
LnkoKSwgdmlld0JveFJlY3Qud2lkdGgoKSwgdmlld0JveFJlY3QuaGVpZ2h0KCksCiAgICAgICAg
ICAgICAwLCAwLCB2aWV3V2lkdGgsIHZpZXdIZWlnaHQpOwogCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5o
CShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTExLDE2ICsxMTEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAg
c3RhdGljIFNWR0xlbmd0aCBjcmVhdGVTVkdMZW5ndGgoKTsKICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1ZHQW5nbGU+IGNyZWF0ZVNWR0FuZ2xlKCk7CiAgICAgICAgIHN0YXRpYyBGbG9hdFBv
aW50IGNyZWF0ZVNWR1BvaW50KCk7Ci0gICAgICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gY3Jl
YXRlU1ZHTWF0cml4KCk7CisgICAgICAgIHN0YXRpYyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjcmVh
dGVTVkdNYXRyaXgoKTsKICAgICAgICAgc3RhdGljIEZsb2F0UmVjdCBjcmVhdGVTVkdSZWN0KCk7
CiAgICAgICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm0gY3JlYXRlU1ZHVHJhbnNmb3JtKCk7Ci0gICAg
ICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm0gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICAgICAgc3RhdGljIFNWR1RyYW5zZm9ybSBjcmVhdGVT
VkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSop
OwogCiAgICAgICAgIC8vICd2aXJ0dWFsIFNWR0xvY2F0YWJsZScgZnVuY3Rpb25zCi0gICAgICAg
IHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldENUTSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IEFmZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRDVE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBnZXRTY3JlZW5DVE0oKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxl
ZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkBA
IC0xMzAsNyArMTMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICAgICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3
V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRoLCBmbG9h
dCB2aWV3SGVpZ2h0KSBjb25zdDsKIAogICAgICAgICB2b2lkIGluaGVyaXRWaWV3QXR0cmlidXRl
cyhTVkdWaWV3RWxlbWVudCopOwogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRM
b2NhdGFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiAj
aW5jbHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNpbmNsdWRl
ICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgog
I2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcs
MTIgKzU3LDEyIEBAIEZsb2F0UmVjdCBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXQKICAg
ICByZXR1cm4gU1ZHTG9jYXRhYmxlOjpnZXRCQm94KHRoaXMpOwogfQogCi1BZmZpbmVUcmFuc2Zv
cm0gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKK1RyYW5zZm9ybWF0
aW9uTWF0cml4IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFNWR0xvY2F0YWJsZTo6Z2V0Q1RNKHRoaXMpOwogfQogCi1BZmZpbmVUcmFuc2Zv
cm0gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QKK1RyYW5z
Zm9ybWF0aW9uTWF0cml4IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR0xvY2F0YWJsZTo6Z2V0U2NyZWVuQ1RNKHRoaXMpOwog
fQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaAkocmV2aXNpb24g
Mzk2MTApCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDggKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIFNWR0VsZW1lbnQqIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3Q7CiAKICAg
ICAgICAgdmlydHVhbCBGbG9hdFJlY3QgZ2V0QkJveCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFs
IEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBBZmZpbmVU
cmFuc2Zvcm0gZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgVHJhbnNmb3Jt
YXRpb25NYXRyaXggZ2V0Q1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRp
b25NYXRyaXggZ2V0U2NyZWVuQ1RNKCkgY29uc3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50LmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNs
dWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKICNpbmNs
dWRlICJTVkdEb2N1bWVudC5oIgotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1
ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5o
IgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybUxpc3QuaCIKIApAQCAtNDgsMjUgKzQ4LDI1IEBAIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojp+U1ZHU3R5bGUKIHsKIH0KIAotQWZmaW5lVHJh
bnNmb3JtIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpnZXRDVE0oKSBjb25zdAorVHJh
bnNmb3JtYXRpb25NYXRyaXggU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmdldENUTSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGU6OmdldENUTSh0aGlzKTsKIH0K
IAotQWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpnZXRTY3Jl
ZW5DVE0oKSBjb25zdAorVHJhbnNmb3JtYXRpb25NYXRyaXggU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNWR1RyYW5zZm9y
bWFibGU6OmdldFNjcmVlbkNUTSh0aGlzKTsKIH0KIAotQWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKK1Ry
YW5zZm9ybWF0aW9uTWF0cml4IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjphbmltYXRl
ZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdXBwbGVtZW50YWxUcmFu
c2Zvcm0gPyB0cmFuc2Zvcm0oKS0+Y29uY2F0ZW5hdGUoKS5tYXRyaXgoKSAqICptX3N1cHBsZW1l
bnRhbFRyYW5zZm9ybSA6IHRyYW5zZm9ybSgpLT5jb25jYXRlbmF0ZSgpLm1hdHJpeCgpOwogfQog
ICAgIAotQWZmaW5lVHJhbnNmb3JtKiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3Vw
cGxlbWVudGFsVHJhbnNmb3JtKCkKK1RyYW5zZm9ybWF0aW9uTWF0cml4KiBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudDo6c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkKIHsKICAgICBpZiAoIW1f
c3VwcGxlbWVudGFsVHJhbnNmb3JtKQotICAgICAgICBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybS5z
ZXQobmV3IEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zv
cm0uc2V0KG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKICAgICByZXR1cm4gbV9zdXBwbGVt
ZW50YWxUcmFuc2Zvcm0uZ2V0KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQuaAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3N2Zy9T
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGV4dGVybiBjaGFyIFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50SWRlbnRpZmllcltdOwogCi0gICAgY2xhc3MgQWZmaW5lVHJhbnNm
b3JtOworICAgIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiAgICAgY2xhc3MgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdU
cmFuc2Zvcm1hYmxlIHsKQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdl
dENUTSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5D
VE0oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRDVE0o
KSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRTY3JlZW5D
VE0oKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBuZWFyZXN0Vmlld3BvcnRF
bGVtZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudCogZmFydGhlc3RWaWV3
cG9ydEVsZW1lbnQoKSBjb25zdDsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgQWZmaW5lVHJh
bnNmb3JtIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBB
ZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOworICAgICAgICB2aXJ0dWFs
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCogc3VwcGxlbWVudGFsVHJhbnNmb3Jt
KCk7CiAKICAgICAgICAgdmlydHVhbCBGbG9hdFJlY3QgZ2V0QkJveCgpIGNvbnN0OwogCkBAIC02
Niw3ICs2Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IC8vIFVzZWQgYnkgPGFuaW1hdGVNb3Rpb24+Ci0gICAgICAgIE93blB0cjxBZmZpbmVUcmFuc2Zv
cm0+IG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtOworICAgICAgICBPd25QdHI8VHJhbnNmb3JtYXRp
b25NYXRyaXg+IG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkocmV2
aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RydWN0IFNWR0lubGluZVRleHRCb3hR
dWVyeVdhbGtlciB7CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgY2h1bmtQb3J0aW9uQ2FsbGJh
Y2soU1ZHSW5saW5lVGV4dEJveCogdGV4dEJveCwgaW50IHN0YXJ0T2Zmc2V0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLAorICAgIHZvaWQgY2h1bmtQb3J0aW9uQ2FsbGJhY2soU1ZHSW5saW5lVGV4
dEJveCogdGV4dEJveCwgaW50IHN0YXJ0T2Zmc2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U1ZHQ2hhcj46
Oml0ZXJhdG9yJiBzdGFydCwgY29uc3QgVmVjdG9yPFNWR0NoYXI+OjppdGVyYXRvciYgZW5kKQog
ICAgIHsKICAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gdGV4dEJveC0+dGV4dE9iamVjdCgp
LT5zdHlsZSgpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24gMzk2MTApCisr
KyBXZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1RleHRFbGVtZW50LmgiCiAK
LSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1RleHQu
aCIKICNpbmNsdWRlICJTVkdMZW5ndGhMaXN0LmgiCkBAIC04MCwyNSArODAsMjUgQEAgRmxvYXRS
ZWN0IFNWR1RleHRFbGVtZW50OjpnZXRCQm94KCkgY29ucwogICAgIHJldHVybiBTVkdUcmFuc2Zv
cm1hYmxlOjpnZXRCQm94KHRoaXMpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHVGV4dEVsZW1l
bnQ6OmdldFNjcmVlbkNUTSgpIGNvbnN0CitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBTVkdUZXh0RWxl
bWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJs
ZTo6Z2V0U2NyZWVuQ1RNKHRoaXMpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHVGV4dEVsZW1l
bnQ6OmdldENUTSgpIGNvbnN0CitUcmFuc2Zvcm1hdGlvbk1hdHJpeCBTVkdUZXh0RWxlbWVudDo6
Z2V0Q1RNKCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0Q1RNKHRo
aXMpOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHVGV4dEVsZW1lbnQ6OmFuaW1hdGVkTG9jYWxU
cmFuc2Zvcm0oKSBjb25zdAorVHJhbnNmb3JtYXRpb25NYXRyaXggU1ZHVGV4dEVsZW1lbnQ6OmFu
aW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdAogewogICAgIHJldHVybiBtX3N1cHBsZW1lbnRh
bFRyYW5zZm9ybSA/IHRyYW5zZm9ybSgpLT5jb25jYXRlbmF0ZSgpLm1hdHJpeCgpICogKm1fc3Vw
cGxlbWVudGFsVHJhbnNmb3JtIDogdHJhbnNmb3JtKCktPmNvbmNhdGVuYXRlKCkubWF0cml4KCk7
CiB9CiAKLUFmZmluZVRyYW5zZm9ybSogU1ZHVGV4dEVsZW1lbnQ6OnN1cHBsZW1lbnRhbFRyYW5z
Zm9ybSgpCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCogU1ZHVGV4dEVsZW1lbnQ6OnN1cHBsZW1lbnRh
bFRyYW5zZm9ybSgpCiB7CiAgICAgaWYgKCFtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKLSAgICAg
ICAgbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0uc2V0KG5ldyBBZmZpbmVUcmFuc2Zvcm0oKSk7Cisg
ICAgICAgIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtLnNldChuZXcgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSk7CiAgICAgcmV0dXJuIG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtLmdldCgpOwogfQogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1RleHRFbGVtZW50LmgJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9zdmcvU1ZH
VGV4dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTAgKzQxLDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0
RWxlbWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJCb3goKSBj
b25zdDsKLSAgICAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7Ci0g
ICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0OwotICAg
ICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBhbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29u
c3Q7Ci0gICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtKiBzdXBwbGVtZW50YWxUcmFuc2Zv
cm0oKTsKKyAgICAgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRDVE0oKSBjb25z
dDsKKyAgICAgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRTY3JlZW5DVE0oKSBj
b25zdDsKKyAgICAgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhbmltYXRlZExvY2Fs
VHJhbnNmb3JtKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXgq
IHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOwogCiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsKQEAgLTU1
LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHVGV4dEVsZW1lbnQsIFNWR05hbWVzOjp0ZXh0VGFnU3RyaW5nLCBT
VkdOYW1lczo6dHJhbnNmb3JtQXR0clN0cmluZywgU1ZHVHJhbnNmb3JtTGlzdCwgVHJhbnNmb3Jt
LCB0cmFuc2Zvcm0pCiAgICAgICAgCiAgICAgICAgLy8gVXNlZCBieSA8YW5pbWF0ZU1vdGlvbj4K
LSAgICAgICBPd25QdHI8QWZmaW5lVHJhbnNmb3JtPiBtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybTsK
KyAgICAgICBPd25QdHI8VHJhbnNmb3JtYXRpb25NYXRyaXg+IG1fc3VwcGxlbWVudGFsVHJhbnNm
b3JtOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMzk2MTApCisrKyBXZWJDb3JlL3N2Zy9TVkdUZXh0
UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5B
QkxFKFNWRykKICNpbmNsdWRlICJTVkdUZXh0UGF0aEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkFm
ZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHVGV4dFBhdGguaCIKICNpbmNs
dWRlICJTVkdMZW5ndGhMaXN0LmgiCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAJKHJldmlzaW9uIDM5
NjEwKQorKysgV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDMsMTEgKzQzLDExIEBAIFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtKFNWR1RyYW5zZm9ybVQK
ICAgICA6IG1fdHlwZSh0eXBlKQogICAgICwgbV9hbmdsZSgwKQogICAgICwgbV9jZW50ZXIoRmxv
YXRQb2ludCgpKQotICAgICwgbV9tYXRyaXgoQWZmaW5lVHJhbnNmb3JtKCkpCisgICAgLCBtX21h
dHJpeChUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKQogewogfQogCi1TVkdUcmFuc2Zvcm06OlNWR1Ry
YW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKK1NWR1RyYW5zZm9ybTo6U1ZH
VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiAgICAgOiBtX3R5
cGUoU1ZHX1RSQU5TRk9STV9NQVRSSVgpCiAgICAgLCBtX2FuZ2xlKDApCiAgICAgLCBtX21hdHJp
eChtYXRyaXgpCkBAIC02OCw3ICs2OCw3IEBAIFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtVHlw
ZSBTVkdUcmFuc2YKICAgICByZXR1cm4gbV90eXBlOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZH
VHJhbnNmb3JtOjptYXRyaXgoKSBjb25zdAorVHJhbnNmb3JtYXRpb25NYXRyaXggU1ZHVHJhbnNm
b3JtOjptYXRyaXgoKSBjb25zdAogewogICAgIHJldHVybiBtX21hdHJpeDsKIH0KQEAgLTgzLDcg
KzgzLDcgQEAgRmxvYXRQb2ludCBTVkdUcmFuc2Zvcm06OnJvdGF0aW9uQ2VudGVyKAogICAgIHJl
dHVybiBtX2NlbnRlcjsKIH0KIAotdm9pZCBTVkdUcmFuc2Zvcm06OnNldE1hdHJpeChBZmZpbmVU
cmFuc2Zvcm0gbWF0cml4KSAvL2NvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWF0cml4KQordm9pZCBT
VkdUcmFuc2Zvcm06OnNldE1hdHJpeChUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgpIC8vY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKIHsKICAgICBtX3R5cGUgPSBTVkdfVFJB
TlNGT1JNX01BVFJJWDsKICAgICBtX2FuZ2xlID0gMDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCShyZXZp
c2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw3ICsyNCw3IEBACiAjZGVmaW5lIFNWR1RyYW5zZm9ybV9oCiAKICNpZiBFTkFCTEUo
U1ZHKQotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0
aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNWR05hbWVz
LmgiCiAKQEAgLTQ2LDE4ICs0NiwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgCiAgICAgICAg
IFNWR1RyYW5zZm9ybSgpOwogICAgICAgICBTVkdUcmFuc2Zvcm0oU1ZHVHJhbnNmb3JtVHlwZSk7
Ci0gICAgICAgIGV4cGxpY2l0IFNWR1RyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsK
KyAgICAgICAgZXhwbGljaXQgU1ZHVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
Jik7CiAgICAgICAgIHZpcnR1YWwgflNWR1RyYW5zZm9ybSgpOwogICAgICAgICAgICAgICAgCiAg
ICAgICAgIFNWR1RyYW5zZm9ybVR5cGUgdHlwZSgpIGNvbnN0OwogCi0gICAgICAgIEFmZmluZVRy
YW5zZm9ybSBtYXRyaXgoKSBjb25zdDsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0
cml4KCkgY29uc3Q7CiAgICAgCiAgICAgICAgIGZsb2F0IGFuZ2xlKCkgY29uc3Q7CiAgICAgICAg
IEZsb2F0UG9pbnQgcm90YXRpb25DZW50ZXIoKSBjb25zdDsKIAotLy8gICAgICAgIHZvaWQgc2V0
TWF0cml4KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotICAgICAgICB2b2lkIHNldE1hdHJpeChB
ZmZpbmVUcmFuc2Zvcm0pOworLy8gICAgICAgIHZvaWQgc2V0TWF0cml4KGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4Jik7CisgICAgICAgIHZvaWQgc2V0TWF0cml4KFRyYW5zZm9ybWF0aW9uTWF0
cml4KTsKIAogICAgICAgICB2b2lkIHNldFRyYW5zbGF0ZShmbG9hdCB0eCwgZmxvYXQgdHkpOwog
ICAgICAgICB2b2lkIHNldFNjYWxlKGZsb2F0IHN4LCBmbG9hdCBzeSk7CkBAIC03OCw3ICs3OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU1ZHVHJhbnNmb3JtVHlwZSBtX3R5cGU7
CiAgICAgICAgIGZsb2F0IG1fYW5nbGU7CiAgICAgICAgIEZsb2F0UG9pbnQgbV9jZW50ZXI7Ci0g
ICAgICAgIEFmZmluZVRyYW5zZm9ybSBtX21hdHJpeDsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbV9tYXRyaXg7CiAgICAgfTsKIAogICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU1ZHVHJhbnNmb3JtJiBhLCBjb25zdCBTVkdUcmFuc2Zvcm0mIGIpCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybURpc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBA
QCBTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6U1ZHVHJhbnNmb3JtRGlzdGFuCiB7CiB9CiAKLVNWR1Ry
YW5zZm9ybURpc3RhbmNlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZShTVkdUcmFuc2Zvcm06OlNWR1Ry
YW5zZm9ybVR5cGUgdHlwZSwgZmxvYXQgYW5nbGUsIGZsb2F0IGN4LCBmbG9hdCBjeSwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCitTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6U1ZHVHJh
bnNmb3JtRGlzdGFuY2UoU1ZHVHJhbnNmb3JtOjpTVkdUcmFuc2Zvcm1UeXBlIHR5cGUsIGZsb2F0
IGFuZ2xlLCBmbG9hdCBjeCwgZmxvYXQgY3ksIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0pCiAgICAgOiBtX3R5cGUodHlwZSkKICAgICAsIG1fYW5nbGUoYW5nbGUpCiAgICAg
LCBtX2N4KGN4KQpAQCAtOTUsMjAgKzk1LDIwIEBAIFNWR1RyYW5zZm9ybURpc3RhbmNlIFNWR1Ry
YW5zZm9ybURpc3RhbmMKICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9VTktO
T1dOOgogICAgICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtRGlzdGFuY2UoKTsKICAgICBjYXNlIFNW
R1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9ST1RBVEU6Ci0gICAgICAgIHJldHVybiBTVkdUcmFu
c2Zvcm1EaXN0YW5jZShtX3R5cGUsIG1fYW5nbGUgKiBzY2FsZUZhY3RvciwgbV9jeCAqIHNjYWxl
RmFjdG9yLCBtX2N5ICogc2NhbGVGYWN0b3IsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAg
cmV0dXJuIFNWR1RyYW5zZm9ybURpc3RhbmNlKG1fdHlwZSwgbV9hbmdsZSAqIHNjYWxlRmFjdG9y
LCBtX2N4ICogc2NhbGVGYWN0b3IsIG1fY3kgKiBzY2FsZUZhY3RvciwgVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSk7CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fU0NBTEU6CiAg
ICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fTUFUUklYOgotICAgICAgICByZXR1
cm4gU1ZHVHJhbnNmb3JtRGlzdGFuY2UobV90eXBlLCBtX2FuZ2xlICogc2NhbGVGYWN0b3IsIG1f
Y3ggKiBzY2FsZUZhY3RvciwgbV9jeSAqIHNjYWxlRmFjdG9yLCBBZmZpbmVUcmFuc2Zvcm0obV90
cmFuc2Zvcm0pLnNjYWxlKHNjYWxlRmFjdG9yKSk7CisgICAgICAgIHJldHVybiBTVkdUcmFuc2Zv
cm1EaXN0YW5jZShtX3R5cGUsIG1fYW5nbGUgKiBzY2FsZUZhY3RvciwgbV9jeCAqIHNjYWxlRmFj
dG9yLCBtX2N5ICogc2NhbGVGYWN0b3IsIFRyYW5zZm9ybWF0aW9uTWF0cml4KG1fdHJhbnNmb3Jt
KS5zY2FsZShzY2FsZUZhY3RvcikpOwogICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNG
T1JNX1RSQU5TTEFURToKICAgICB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBuZXdUcmFuc2Zv
cm0obV90cmFuc2Zvcm0pOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuZXdUcmFuc2Zv
cm0obV90cmFuc2Zvcm0pOwogICAgICAgICBuZXdUcmFuc2Zvcm0uc2V0RShtX3RyYW5zZm9ybS5l
KCkgKiBzY2FsZUZhY3Rvcik7CiAgICAgICAgIG5ld1RyYW5zZm9ybS5zZXRGKG1fdHJhbnNmb3Jt
LmYoKSAqIHNjYWxlRmFjdG9yKTsKICAgICAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybURpc3RhbmNl
KG1fdHlwZSwgMCwgMCwgMCwgbmV3VHJhbnNmb3JtKTsKICAgICB9CiAgICAgY2FzZSBTVkdUcmFu
c2Zvcm06OlNWR19UUkFOU0ZPUk1fU0tFV1g6CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19U
UkFOU0ZPUk1fU0tFV1k6Ci0gICAgICAgIHJldHVybiBTVkdUcmFuc2Zvcm1EaXN0YW5jZShtX3R5
cGUsIG1fYW5nbGUgKiBzY2FsZUZhY3RvciwgbV9jeCAqIHNjYWxlRmFjdG9yLCBtX2N5ICogc2Nh
bGVGYWN0b3IsIEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICAgICAgcmV0dXJuIFNWR1RyYW5zZm9y
bURpc3RhbmNlKG1fdHlwZSwgbV9hbmdsZSAqIHNjYWxlRmFjdG9yLCBtX2N4ICogc2NhbGVGYWN0
b3IsIG1fY3kgKiBzY2FsZUZhY3RvciwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgfQog
ICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIFNWR1Ry
YW5zZm9ybSBTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6YWRkVG8KIAogYm9vbCBTVkdUcmFuc2Zvcm1E
aXN0YW5jZTo6aXNaZXJvKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1fdHJhbnNmb3JtID09IEFm
ZmluZVRyYW5zZm9ybSgpICYmIG1fYW5nbGUgPT0gMCk7CisgICAgcmV0dXJuIChtX3RyYW5zZm9y
bSA9PSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpICYmIG1fYW5nbGUgPT0gMCk7CiB9CiAKIGZsb2F0
IFNWR1RyYW5zZm9ybURpc3RhbmNlOjpkaXN0YW5jZSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybURpc3RhbmNlLmgJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9zdmcvU1ZHVHJh
bnNmb3JtRGlzdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCi0gICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworICAgIGNs
YXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogICAgICAgICAKICAgICBjbGFzcyBTVkdUcmFuc2Zv
cm1EaXN0YW5jZSB7CiAgICAgcHVibGljOgpAQCAtNDQsMTMgKzQ0LDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIGZsb2F0IGRpc3RhbmNlKCkgY29uc3Q7CiAgICAg
cHJpdmF0ZToKLSAgICAgICAgU1ZHVHJhbnNmb3JtRGlzdGFuY2UoU1ZHVHJhbnNmb3JtOjpTVkdU
cmFuc2Zvcm1UeXBlLCBmbG9hdCBhbmdsZSwgZmxvYXQgY3gsIGZsb2F0IGN5LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKTsKKyAgICAgICAgU1ZHVHJhbnNmb3JtRGlzdGFuY2UoU1ZHVHJhbnNmb3Jt
OjpTVkdUcmFuc2Zvcm1UeXBlLCBmbG9hdCBhbmdsZSwgZmxvYXQgY3gsIGZsb2F0IGN5LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogICAgICAgICAgICAgCiAgICAgICAgIFNWR1RyYW5z
Zm9ybTo6U1ZHVHJhbnNmb3JtVHlwZSBtX3R5cGU7CiAgICAgICAgIGZsb2F0IG1fYW5nbGU7CiAg
ICAgICAgIGZsb2F0IG1fY3g7CiAgICAgICAgIGZsb2F0IG1fY3k7Ci0gICAgICAgIEFmZmluZVRy
YW5zZm9ybSBtX3RyYW5zZm9ybTsgLy8gZm9yIHN0b3Jpbmcgc2NhbGUsIHRyYW5zbGF0aW9uIG9y
IG1hdHJpeCB0cmFuc2Zvcm1zCisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNm
b3JtOyAvLyBmb3Igc3RvcmluZyBzY2FsZSwgdHJhbnNsYXRpb24gb3IgbWF0cml4IHRyYW5zZm9y
bXMKICAgICB9OwogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAkocmV2aXNpb24g
Mzk2MTApCisrKyBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNW
RykKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1NWR0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1EaXN0YW5jZS5oIgpAQCAtNDAsNyArNDAs
NyBAQCBTVkdUcmFuc2Zvcm1MaXN0Ojp+U1ZHVHJhbnNmb3JtTGlzdCgpCiB7CiB9CiAKLVNWR1Ry
YW5zZm9ybSBTVkdUcmFuc2Zvcm1MaXN0OjpjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgbWF0cml4KSBjb25zdAorU1ZHVHJhbnNmb3JtIFNWR1RyYW5z
Zm9ybUxpc3Q6OmNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1hdHJpeCkgY29uc3QKIHsKICAgICByZXR1cm4gU1ZHU1ZHRWxlbWVudDo6Y3Jl
YXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChtYXRyaXgpOwogfQpAQCAtNTcsNyArNTcsNyBAQCBT
VkdUcmFuc2Zvcm0gU1ZHVHJhbnNmb3JtTGlzdDo6Y29uY2F0ZW5hCiAgICAgaWYgKCFsZW5ndGgp
CiAgICAgICAgIHJldHVybiBTVkdUcmFuc2Zvcm0oKTsKICAgICAgICAgCi0gICAgQWZmaW5lVHJh
bnNmb3JtIG1hdHJpeDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykKICAgICAgICAgbWF0cml4ID0gZ2V0SXRlbShpLCBlYykubWF0cml4KCkgKiBtYXRy
aXg7CkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBTVkdUcmFuc2Zvcm1MaXN0Ojp2YWx1ZUFzU3Ry
aW5nKCkKICAgICAvLyBUT0RPOiBXZSBtYXkgd2FudCB0byBidWlsZCBhIHJlYWwgdHJhbnNmb3Jt
IHN0cmluZywgaW5zdGVhZCBvZiBjb25jYXR0aW5nIHRvIGEgbWF0cml4KC4uLikuCiAgICAgU1ZH
VHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbmNhdGVuYXRlKCk7CiAgICAgaWYgKHRyYW5zZm9ybS50
eXBlKCkgPT0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX01BVFJJWCkgewotICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gbWF0cml4ID0gdHJhbnNmb3JtLm1hdHJpeCgpOworICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSB0cmFuc2Zvcm0ubWF0cml4KCk7CiAgICAgICAgIHJl
dHVybiBTdHJpbmc6OmZvcm1hdCgibWF0cml4KCVmICVmICVmICVmICVmICVmKSIsIG1hdHJpeC5h
KCksIG1hdHJpeC5iKCksIG1hdHJpeC5jKCksIG1hdHJpeC5kKCksIG1hdHJpeC5lKCksIG1hdHJp
eC5mKCkpOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAkocmV2aXNpb24gMzk2
MTApCisrKyBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdUcmFuc2Zvcm1MaXN0PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1RyYW5zZm9ybUxpc3QoYXR0cmlidXRl
TmFtZSkpOyB9CiAgICAgICAgIHZpcnR1YWwgflNWR1RyYW5zZm9ybUxpc3QoKTsKIAotICAgICAg
ICBTVkdUcmFuc2Zvcm0gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mKSBjb25zdDsKKyAgICAgICAgU1ZHVHJhbnNmb3JtIGNyZWF0ZVNWR1RyYW5zZm9y
bUZyb21NYXRyaXgoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBjb25zdDsKICAgICAgICAg
U1ZHVHJhbnNmb3JtIGNvbnNvbGlkYXRlKCk7CiAKICAgICAgICAgLy8gSW50ZXJuYWwgdXNlIG9u
bHkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCShyZXZpc2lvbiAzOTYxMCkKKysrIFdl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdUcmFuc2Zvcm1hYmxlLmgiCiAK
LSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlJlZ3VsYXJF
eHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTQ0LDE1ICs0NCwxNSBAQCBT
VkdUcmFuc2Zvcm1hYmxlOjp+U1ZHVHJhbnNmb3JtYWJsZSgpCiB7CiB9CiAKLUFmZmluZVRyYW5z
Zm9ybSBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRDVE0oY29uc3QgU1ZHRWxlbWVudCogZWxlbWVudCkg
Y29uc3QKK1RyYW5zZm9ybWF0aW9uTWF0cml4IFNWR1RyYW5zZm9ybWFibGU6OmdldENUTShjb25z
dCBTVkdFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewotICAgIEFmZmluZVRyYW5zZm9ybSBjdG0g
PSBTVkdMb2NhdGFibGU6OmdldENUTShlbGVtZW50KTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjdG0gPSBTVkdMb2NhdGFibGU6OmdldENUTShlbGVtZW50KTsKICAgICByZXR1cm4gYW5pbWF0
ZWRMb2NhbFRyYW5zZm9ybSgpICogY3RtOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHVHJhbnNm
b3JtYWJsZTo6Z2V0U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CitU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBTVkdUcmFuc2Zvcm1hYmxlOjpnZXRTY3JlZW5DVE0oY29uc3Qg
U1ZHRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0g
U1ZHTG9jYXRhYmxlOjpnZXRTY3JlZW5DVE0oZWxlbWVudCk7CisgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggY3RtID0gU1ZHTG9jYXRhYmxlOjpnZXRTY3JlZW5DVE0oZWxlbWVudCk7CiAgICAgcmV0
dXJuIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSAqIGN0bTsKIH0KIApAQCAtMTQ4LDcgKzE0OCw3
IEBAIGJvb2wgU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1WYWwKICAgICAgICAgICAg
ICAgICAgIHQuc2V0Um90YXRlKHZhbHVlc1swXSwgdmFsdWVzWzFdLCB2YWx1ZXNbMl0pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JN
X01BVFJJWDoKLSAgICAgICAgICAgIHQuc2V0TWF0cml4KEFmZmluZVRyYW5zZm9ybSh2YWx1ZXNb
MF0sIHZhbHVlc1sxXSwgdmFsdWVzWzJdLCB2YWx1ZXNbM10sIHZhbHVlc1s0XSwgdmFsdWVzWzVd
KSk7CisgICAgICAgICAgICB0LnNldE1hdHJpeChUcmFuc2Zvcm1hdGlvbk1hdHJpeCh2YWx1ZXNb
MF0sIHZhbHVlc1sxXSwgdmFsdWVzWzJdLCB2YWx1ZXNbM10sIHZhbHVlc1s0XSwgdmFsdWVzWzVd
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybWFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxl
LmgJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAKLSAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CisgICAgY2xhc3MgVHJhbnNmb3JtYXRpb25N
YXRyaXg7CiAgICAgY2xhc3MgQXRvbWljU3RyaW5nOwogICAgIGNsYXNzIFNWR1RyYW5zZm9ybTsK
ICAgICBjbGFzcyBRdWFsaWZpZWROYW1lOwpAQCAtNDQsMTAgKzQ0LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUoU1ZH
VHJhbnNmb3JtTGlzdCosIGNvbnN0IFVDaGFyKiYgcHRyLCBjb25zdCBVQ2hhciogZW5kKTsKICAg
ICAgICAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1WYWx1ZSh1bnNpZ25lZCB0eXBlLCBjb25z
dCBVQ2hhciomIHB0ciwgY29uc3QgVUNoYXIqIGVuZCwgU1ZHVHJhbnNmb3JtJik7CiAgICAgICAg
IAotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnQqKSBjb25z
dDsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTShjb25zdCBTVkdFbGVtZW50
KikgY29uc3Q7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGdldENUTShjb25zdCBTVkdF
bGVtZW50KikgY29uc3Q7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGdldFNjcmVlbkNU
TShjb25zdCBTVkdFbGVtZW50KikgY29uc3Q7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIEFm
ZmluZVRyYW5zZm9ybSBhbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QgPSAwOworICAgICAg
ICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBj
b25zdCA9IDA7CiAKICAgICAgICAgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB9OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2
ZXJHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFp
bnRTZXJ2ZXJHcmFkaWVudC5jcHAJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiwx
MiArMTIyLDEyIEBAIHZvaWQgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6c2V0Qm91bmRpbmcKICAg
ICBtX2JvdW5kaW5nQm94TW9kZSA9IG1vZGU7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBTVkdQYWlu
dFNlcnZlckdyYWRpZW50OjpncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0CitUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBTVkdQYWludFNlcnZlckdyYWRpZW50OjpncmFkaWVudFRyYW5zZm9ybSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fZ3JhZGllbnRUcmFuc2Zvcm07CiB9CiAKLXZvaWQgU1ZHUGFpbnRT
ZXJ2ZXJHcmFkaWVudDo6c2V0R3JhZGllbnRUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0cmFuc2Zvcm0pCit2b2lkIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnNldEdyYWRpZW50VHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCiB7CiAgICAgbV9n
cmFkaWVudFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKIH0KQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgY2xpcFRvVGV4dE1hc2soR3JhcGhpCiAgICAgRmxvYXRSZWN0IG1hc2tC
Qm94ID0gY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihmaW5kVGV4dFJvb3RPYmplY3Qob2JqZWN0
KSktPnJlbGF0aXZlQkJveChmYWxzZSk7CiAKICAgICAvLyBGaXh1cCB0cmFuc2Zvcm1hdGlvbnMg
dG8gYmUgYWJsZSB0byBjbGlwIHRvIG1hc2sKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3Jt
ID0gb2JqZWN0LT5hYnNvbHV0ZVRyYW5zZm9ybSgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybSA9IG9iamVjdC0+YWJzb2x1dGVUcmFuc2Zvcm0oKTsKICAgICBGbG9hdFJlY3Qg
dGV4dEJvdW5kYXJ5ID0gdHJhbnNmb3JtLm1hcFJlY3QobWFza0JCb3gpOwogCiAgICAgSW50U2l6
ZSBtYXNrU2l6ZShscm91bmRmKHRleHRCb3VuZGFyeS53aWR0aCgpKSwgbHJvdW5kZih0ZXh0Qm91
bmRhcnkuaGVpZ2h0KCkpKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1BhaW50U2Vy
dmVyR3JhZGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWlu
dFNlcnZlckdyYWRpZW50LmgJKHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAKICNpZiBFTkFCTEUoU1ZHKQogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisj
aW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2lu
Y2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBAIC02MSw4
ICs2MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBib3VuZGluZ0JveE1v
ZGUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRCb3VuZGluZ0JveE1vZGUoYm9vbCBtb2RlID0g
dHJ1ZSk7CiAKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGdyYWRpZW50VHJhbnNmb3JtKCkgY29u
c3Q7Ci0gICAgICAgIHZvaWQgc2V0R3JhZGllbnRUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNm
b3JtJik7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGdyYWRpZW50VHJhbnNmb3JtKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0R3JhZGllbnRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmKTsKIAogICAgICAgICB2b2lkIHNldEdyYWRpZW50U3RvcHMoY29uc3QgVmVj
dG9yPFNWR0dyYWRpZW50U3RvcD4mIHN0b3BzKSB7IG1fc3RvcHMgPSBzdG9wczsgfQogICAgICAg
ICBjb25zdCBWZWN0b3I8U1ZHR3JhZGllbnRTdG9wPiYgZ3JhZGllbnRTdG9wcygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RvcHM7IH0KQEAgLTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IG1fZ3JhZGllbnQ7CiAgICAgICAgIEdyYWRpZW50U3By
ZWFkTWV0aG9kIG1fc3ByZWFkTWV0aG9kOwogICAgICAgICBib29sIG1fYm91bmRpbmdCb3hNb2Rl
OwotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV9ncmFkaWVudFRyYW5zZm9ybTsKKyAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbV9ncmFkaWVudFRyYW5zZm9ybTsKICAgICAgICAgY29uc3Qg
U1ZHR3JhZGllbnRFbGVtZW50KiBtX293bmVyRWxlbWVudDsKIAogI2lmIFBMQVRGT1JNKENHKQpJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdQYWludFNlcnZlclBhdHRlcm4uY3Bw
CShyZXZpc2lvbiAzOTYxMCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1BhaW50U2VydmVy
UGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDEyICs3NCwxMiBAQCB2b2lkIFNWR1Bh
aW50U2VydmVyUGF0dGVybjo6c2V0VGlsZShhdXRvCiAgICAgbV90aWxlLnNldCh0aWxlLnJlbGVh
c2UoKSk7CiB9CiAKLUFmZmluZVRyYW5zZm9ybSBTVkdQYWludFNlcnZlclBhdHRlcm46OnBhdHRl
cm5UcmFuc2Zvcm0oKSBjb25zdAorVHJhbnNmb3JtYXRpb25NYXRyaXggU1ZHUGFpbnRTZXJ2ZXJQ
YXR0ZXJuOjpwYXR0ZXJuVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYXR0ZXJu
VHJhbnNmb3JtOwogfQogCi12b2lkIFNWR1BhaW50U2VydmVyUGF0dGVybjo6c2V0UGF0dGVyblRy
YW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3ZvaWQgU1ZHUGFpbnRT
ZXJ2ZXJQYXR0ZXJuOjpzZXRQYXR0ZXJuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0pCiB7CiAgICAgbV9wYXR0ZXJuVHJhbnNmb3JtID0gdHJhbnNmb3JtOwog
fQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgJ
KHJldmlzaW9uIDM5NjEwKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXJQ
YXR0ZXJuLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShT
VkcpCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlNWR1BhaW50
U2VydmVyLmgiCiAKQEAgLTU3LDggKzU3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBJbWFnZUJ1ZmZlciogdGlsZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFRpbGUoc3RkOjph
dXRvX3B0cjxJbWFnZUJ1ZmZlcj4pOwogCi0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJu
VHJhbnNmb3JtKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0UGF0dGVyblRyYW5zZm9ybShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGF0dGVy
blRyYW5zZm9ybSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFBhdHRlcm5UcmFuc2Zvcm0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKIAogICAgICAgICB2aXJ0dWFsIFRleHRTdHJlYW0m
IGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwogCkBAIC03Miw3ICs3
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIE93blB0cjxJbWFn
ZUJ1ZmZlcj4gbV90aWxlOwogICAgICAgICBjb25zdCBTVkdQYXR0ZXJuRWxlbWVudCogbV9vd25l
ckVsZW1lbnQ7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBtX3BhdHRlcm5UcmFuc2Zvcm07Cisg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcGF0dGVyblRyYW5zZm9ybTsKICAgICAgICAg
RmxvYXRSZWN0IG1fcGF0dGVybkJvdW5kYXJpZXM7CiAKICNpZiBQTEFURk9STShDRykKSW5kZXg6
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlQ2xpcHBlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkocmV2aXNpb24g
Mzk2MTApCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUNsaXBwZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRl
ICJTVkdSZXNvdXJjZUNsaXBwZXIuaCIKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgor
I2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogCkBAIC03MCw3ICs3MCw3
IEBAIHZvaWQgU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXAoR3JhcGgKICAgICAgICAgUGF0
aCBjbGlwUGF0aCA9IGNsaXBEYXRhLnBhdGg7CiAKICAgICAgICAgaWYgKGNsaXBEYXRhLmJib3hV
bml0cykgewotICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKKyAgICAgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAgICAgICAgICAgIHRyYW5zZm9y
bS50cmFuc2xhdGUoYm91bmRpbmdCb3gueCgpLCBib3VuZGluZ0JveC55KCkpOwogICAgICAgICAg
ICAgdHJhbnNmb3JtLnNjYWxlKGJvdW5kaW5nQm94LndpZHRoKCksIGJvdW5kaW5nQm94LmhlaWdo
dCgpKTsKICAgICAgICAgICAgIGNsaXBQYXRoLnRyYW5zZm9ybSh0cmFuc2Zvcm0pOwpJbmRleDog
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlTWFya2VyLmNwcAkocmV2aXNpb24gMzk2
MTApCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZU1hcmtlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNW
R1Jlc291cmNlTWFya2VyLmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiVGV4
dFN0cmVhbS5oIgpAQCAtNzQsMTMgKzc0LDEzIEBAIHZvaWQgU1ZHUmVzb3VyY2VNYXJrZXI6OmRy
YXcoR3JhcGhpY3NDb24KIAogICAgIGN1cnJlbnRseURyYXdpbmdNYXJrZXJzLmFkZCh0aGlzKTsK
IAotICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggdHJhbnNmb3JtOwogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoeCwgeSk7CiAgICAgdHJhbnNm
b3JtLnJvdGF0ZShtX2FuZ2xlID4gLTEgPyBtX2FuZ2xlIDogYW5nbGUpOwogCiAgICAgLy8gcmVm
WCBhbmQgcmVmWSBhcmUgZ2l2ZW4gaW4gY29vcmRpbmF0ZXMgcmVsYXRpdmUgdG8gdGhlIHZpZXdw
b3J0IGVzdGFibGlzaGVkIGJ5IHRoZSBtYXJrZXIsIHlldCB0aGV5IGFmZmVjdAogICAgIC8vIHRo
ZSB0cmFuc2xhdGlvbiBwZXJmb3JtZWQgb24gdGhlIHZpZXdwb3J0IGl0c2VsZi4KLSAgICBBZmZp
bmVUcmFuc2Zvcm0gdmlld3BvcnRUcmFuc2Zvcm07CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dmlld3BvcnRUcmFuc2Zvcm07CiAgICAgaWYgKG1fdXNlU3Ryb2tlV2lkdGgpCiAgICAgICAgIHZp
ZXdwb3J0VHJhbnNmb3JtLnNjYWxlKHN0cm9rZVdpZHRoLCBzdHJva2VXaWR0aCk7CiAgICAgdmll
d3BvcnRUcmFuc2Zvcm0gKj0gbV9tYXJrZXItPnZpZXdwb3J0VHJhbnNmb3JtKCk7CkluZGV4OiBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdSZXNvdXJjZUZpbHRlckNnLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1Jlc291cmNlRmlsdGVyQ2cubW0JKHJldmlz
aW9uIDM5NjEwKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUmVzb3VyY2VGaWx0ZXJD
Zy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCi0j
aW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAogI2luY2x1ZGUgIlNWR1Jlc291
cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjLmgiCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9x
dC9TVkdQYWludFNlcnZlclBhdHRlcm5RdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvcXQvU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuUXQuY3BwCShyZXZpc2lvbiAzOTYxMCkK
KysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL3F0L1NWR1BhaW50U2VydmVyUGF0dGVyblF0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVk
ZSAiU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0u
aCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5o
IgpAQCAtNTgsNyArNTgsNyBAQCBib29sIFNWR1BhaW50U2VydmVyUGF0dGVybjo6c2V0dXAoR3Jh
cGhpCiAgICAgcGFpbnRlci0+c2V0UGVuKFF0OjpOb1Blbik7CiAgICAgcGFpbnRlci0+c2V0QnJ1
c2goUXQ6Ok5vQnJ1c2gpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGFmZmluZTsKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBhZmZpbmU7CiAgICAgYWZmaW5lLnRyYW5zbGF0ZShwYXR0ZXJuQm91
bmRhcmllcygpLngoKSwgcGF0dGVybkJvdW5kYXJpZXMoKS55KCkpOwogICAgIGFmZmluZS5tdWx0
aXBseShwYXR0ZXJuVHJhbnNmb3JtKCkpOwogCg==
</data>
<flag name="review"
          id="12542"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>