<?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>124125</bug_id>
          
          <creation_ts>2013-11-10 11:22:38 -0800</creation_ts>
          <short_desc>Remove all &apos;std&apos; using directives from WebCore</short_desc>
          <delta_ts>2013-11-11 09:37:03 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>949153</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-10 11:22:38 -0800</bug_when>
    <thetext>Remove all &apos;std&apos; using directives from WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949154</commentid>
    <comment_count>1</comment_count>
      <attachid>216529</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-10 11:25:09 -0800</bug_when>
    <thetext>Created attachment 216529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949155</commentid>
    <comment_count>2</comment_count>
      <attachid>216529</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-11-10 11:25:36 -0800</bug_when>
    <thetext>Comment on attachment 216529
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949156</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-10 11:26:31 -0800</bug_when>
    <thetext>Attachment 216529 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/loader/CrossOriginPreflightResultCache.cpp&apos;, u&apos;Source/WebCore/loader/WorkerThreadableLoader.cpp&apos;, u&apos;Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp&apos;, u&apos;Source/WebCore/loader/appcache/ManifestParser.cpp&apos;, u&apos;Source/WebCore/loader/cache/MemoryCache.cpp&apos;, u&apos;Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp&apos;, u&apos;Source/WebCore/page/Chrome.cpp&apos;, u&apos;Source/WebCore/page/DOMTimer.cpp&apos;, u&apos;Source/WebCore/page/FocusController.cpp&apos;, u&apos;Source/WebCore/page/Frame.cpp&apos;, u&apos;Source/WebCore/page/PageGroupLoadDeferrer.cpp&apos;, u&apos;Source/WebCore/page/Settings.cpp&apos;, u&apos;Source/WebCore/page/animation/AnimationBase.cpp&apos;, u&apos;Source/WebCore/page/animation/KeyframeAnimation.cpp&apos;, u&apos;Source/WebCore/platform/DateComponents.cpp&apos;, u&apos;Source/WebCore/platform/ScrollAnimator.cpp&apos;, u&apos;Source/WebCore/platform/ScrollView.cpp&apos;, u&apos;Source/WebCore/platform/Scrollbar.cpp&apos;, u&apos;Source/WebCore/platform/ScrollbarThemeComposite.cpp&apos;, u&apos;Source/WebCore/platform/SharedBuffer.cpp&apos;, u&apos;Source/WebCore/platform/ThreadTimers.cpp&apos;, u&apos;Source/WebCore/platform/Timer.cpp&apos;, u&apos;Source/WebCore/platform/URL.cpp&apos;, u&apos;Source/WebCore/platform/audio/AudioResampler.cpp&apos;, u&apos;Source/WebCore/platform/audio/AudioResamplerKernel.cpp&apos;, u&apos;Source/WebCore/platform/audio/Distance.cpp&apos;, u&apos;Source/WebCore/platform/audio/DynamicsCompressorKernel.cpp&apos;, u&apos;Source/WebCore/platform/audio/EqualPowerPanner.cpp&apos;, u&apos;Source/WebCore/platform/audio/HRTFDatabase.cpp&apos;, u&apos;Source/WebCore/platform/audio/HRTFElevation.cpp&apos;, u&apos;Source/WebCore/platform/audio/HRTFKernel.cpp&apos;, u&apos;Source/WebCore/platform/audio/HRTFPanner.cpp&apos;, u&apos;Source/WebCore/platform/audio/Reverb.cpp&apos;, u&apos;Source/WebCore/platform/audio/SincResampler.cpp&apos;, u&apos;Source/WebCore/platform/cf/URLCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/Color.cpp&apos;, u&apos;Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FloatQuad.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FloatSize.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontFastPath.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontPlatformData.cpp&apos;, u&apos;Source/WebCore/platform/graphics/GraphicsContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/RoundedRect.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ShadowBlur.cpp&apos;, u&apos;Source/WebCore/platform/graphics/SimpleFontData.cpp&apos;, u&apos;Source/WebCore/platform/graphics/WidthIterator.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateAVFObjC.mm&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/objc/InbandTextTrackPrivateLegacyAVFObjC.mm&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm&apos;, u&apos;Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/TileController.mm&apos;, u&apos;Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp&apos;, u&apos;Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp&apos;, u&apos;Source/WebCore/platform/graphics/cg/ImageBufferDataCG.cpp&apos;, u&apos;Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/FEDropShadow.cpp&apos;, u&apos;Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gpu/Texture.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gpu/TilingData.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/ComplexTextController.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/FontComplexTextMac.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/FontMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm&apos;, u&apos;Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/transforms/Matrix3DTransformOperation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/transforms/MatrixTransformOperation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/transforms/RotateTransformOperation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/transforms/TransformOperations.cpp&apos;, u&apos;Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp&apos;, u&apos;Source/WebCore/platform/mac/ScrollAnimatorMac.mm&apos;, u&apos;Source/WebCore/platform/mac/ScrollViewMac.mm&apos;, u&apos;Source/WebCore/platform/mac/ScrollbarThemeMac.mm&apos;, u&apos;Source/WebCore/platform/mac/ThemeMac.mm&apos;, u&apos;Source/WebCore/platform/mac/WebVideoFullscreenHUDWindowController.mm&apos;, u&apos;Source/WebCore/platform/network/HTTPHeaderMap.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceRequestBase.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceResponseBase.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/ResourceResponseCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/mac/ResourceResponseMac.mm&apos;, u&apos;Source/WebCore/platform/text/TextBreakIteratorICU.cpp&apos;, u&apos;Source/WebCore/platform/text/TextCodecUTF16.cpp&apos;, u&apos;Source/WebCore/platform/text/TextCodecUTF8.cpp&apos;, u&apos;Source/WebCore/platform/text/TextStream.cpp&apos;, u&apos;Source/WebCore/platform/text/mac/LocaleMac.mm&apos;, u&apos;Source/WebCore/platform/text/mac/TextCodecMac.cpp&apos;, u&apos;Source/WebCore/rendering/AutoTableLayout.cpp&apos;, u&apos;Source/WebCore/rendering/FixedTableLayout.cpp&apos;, u&apos;Source/WebCore/rendering/FloatingObjects.cpp&apos;, u&apos;Source/WebCore/rendering/InlineBox.cpp&apos;, u&apos;Source/WebCore/rendering/InlineFlowBox.cpp&apos;, u&apos;Source/WebCore/rendering/InlineTextBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlockFlow.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlockLineLayout.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBoxModelObject.cpp&apos;, u&apos;Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFileUploadControl.cpp&apos;, u&apos;Source/WebCore/rendering/RenderImage.cpp&apos;, u&apos;Source/WebCore/rendering/RenderInline.cpp&apos;, u&apos;Source/WebCore/rendering/RenderLayer.cpp&apos;, u&apos;Source/WebCore/rendering/RenderLayerBacking.cpp&apos;, u&apos;Source/WebCore/rendering/RenderLayerModelObject.cpp&apos;, u&apos;Source/WebCore/rendering/RenderLineBoxList.cpp&apos;, u&apos;Source/WebCore/rendering/RenderListBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderListItem.cpp&apos;, u&apos;Source/WebCore/rendering/RenderListMarker.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMarquee.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMediaControls.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMenuList.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMeter.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMultiColumnBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMultiColumnSet.cpp&apos;, u&apos;Source/WebCore/rendering/RenderNamedFlowFragment.cpp&apos;, u&apos;Source/WebCore/rendering/RenderObject.cpp&apos;, u&apos;Source/WebCore/rendering/RenderProgress.cpp&apos;, u&apos;Source/WebCore/rendering/RenderRegion.cpp&apos;, u&apos;Source/WebCore/rendering/RenderReplaced.cpp&apos;, u&apos;Source/WebCore/rendering/RenderRubyBase.cpp&apos;, u&apos;Source/WebCore/rendering/RenderRubyRun.cpp&apos;, u&apos;Source/WebCore/rendering/RenderRubyText.cpp&apos;, u&apos;Source/WebCore/rendering/RenderScrollbarPart.cpp&apos;, u&apos;Source/WebCore/rendering/RenderSearchField.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTable.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTableCell.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTableSection.cpp&apos;, u&apos;Source/WebCore/rendering/RenderText.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTextControl.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTextControlSingleLine.cpp&apos;, u&apos;Source/WebCore/rendering/RenderThemeMac.mm&apos;, u&apos;Source/WebCore/rendering/RenderWidget.cpp&apos;, u&apos;Source/WebCore/rendering/RootInlineBox.cpp&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.cpp&apos;, u&apos;Source/WebCore/rendering/style/SVGRenderStyle.cpp&apos;, u&apos;Source/WebCore/rendering/style/ShadowData.cpp&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGRoot.cpp&apos;, u&apos;Source/WebCore/rendering/svg/SVGInlineFlowBox.cpp&apos;, u&apos;Source/WebCore/rendering/svg/SVGInlineTextBox.cpp&apos;, u&apos;Source/WebCore/svg/SVGAnimatedNumber.cpp&apos;, u&apos;Source/WebCore/svg/SVGAnimatedNumberOptionalNumber.cpp&apos;, u&apos;Source/WebCore/svg/animation/SMILTimeContainer.cpp&apos;, u&apos;Source/WebCore/svg/animation/SVGSMILElement.cpp&apos;, u&apos;Source/WebCore/xml/XMLTreeViewer.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParser.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:690:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderLayer.cpp:2593:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderLayer.cpp:2594:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderObject.cpp:910:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderObject.cpp:913:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderObject.cpp:918:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderObject.cpp:921:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderObject.cpp:926:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderObject.cpp:929:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderObject.cpp:934:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderObject.cpp:937:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderMarquee.cpp:143:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/ScrollView.cpp:258:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 13 in 102 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949158</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-10 11:30:32 -0800</bug_when>
    <thetext>Committed r159027: &lt;http://trac.webkit.org/changeset/159027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949159</commentid>
    <comment_count>5</comment_count>
      <attachid>216529</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-10 11:30:37 -0800</bug_when>
    <thetext>Comment on attachment 216529
Patch

Attachment 216529 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/22779082</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949340</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-11-11 09:37:03 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Committed r159027: &lt;http://trac.webkit.org/changeset/159027&gt;

Just to have a backlog, buildfixes landed in
- https://trac.webkit.org/changeset/159028
- https://trac.webkit.org/changeset/159029
- https://trac.webkit.org/changeset/159050</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216529</attachid>
            <date>2013-11-10 11:25:09 -0800</date>
            <delta_ts>2013-11-10 11:30:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124125-20131110112514.patch</filename>
            <type>text/plain</type>
            <size>426750</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGE4OWNkNjkzNjdhOGQ4
MGYyNDVlMzUxYTJmMTZiM2MyM2FhOTI4Yi4uZTZjODg1YmQyZDk1NDU3NTRjOTViODMxMWNlYWNm
NjNiMzI2ZDFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwNCBAQAorMjAxMy0xMS0xMCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBhbGwg
J3N0ZCcgdXNpbmcgZGlyZWN0aXZlcyBmcm9tIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDEyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzIHBlciB0aGUgY29kaW5nIHN0eWxlIGd1aWRl
bGluZXMuCisKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hl
OjphcHBlbmRFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodFJl
c3VsdENhY2hlOjpjYW5Ta2lwUHJlZmxpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1hbmlmZXN0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6
OmRlYWRDYXBhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6bHJ1TGlzdEZv
cik6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6Cisg
ICAgICAgICogcGFnZS9DaHJvbWUuY3BwOgorICAgICAgICAqIHBhZ2UvRE9NVGltZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmludGVydmFsQ2xhbXBlZFRvTWluaW11bSk6Cisg
ICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIHBhZ2UvRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnJlc2l6ZVBhZ2VSZWN0c0tlZXBpbmdSYXRp
byk6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c29sdmVTdGVwc0Z1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmZpcmVBbmltYXRpb25FdmVudHNJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjp0aW1lVG9OZXh0U2VydmljZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpmcmFjdGlvbmFsVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBbmltYXRpb25CYXNlOjpnZXRUaW1lVG9OZXh0RXZlbnQpOgorICAgICAgICAqIHBh
Z2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWZyYW1lQW5pbWF0aW9uOjpmZXRjaEludGVydmFsRW5kcG9pbnRzRm9yUHJvcGVydHkpOgorICAg
ICAgICAqIHBsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aGFu
ZGxlV2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bW92ZVRodW1iKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp1c2VkVG90YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjp0aHVtYkxlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1Ro
cmVhZFRpbWVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRUaW1lcnM6OnVwZGF0ZVNo
YXJlZFRpbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaW1lckhlYXBMZXNzVGhhbkZ1bmN0aW9uOjpvcGVyYXRvcigpKToKKyAgICAgICAgKFdl
YkNvcmU6OlRpbWVyQmFzZTo6aGVhcFBvcCk6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6
Om5leHRVbmFsaWduZWRGaXJlSW50ZXJ2YWwpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpmaW5kSG9zdG5hbWVzSW5NYWlsVG9VUkwpOgorICAgICAgICAo
V2ViQ29yZTo6cG9ydEFsbG93ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVz
YW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUmVzYW1wbGVyOjpzZXRSYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1Jlc2FtcGxlcktlcm5lbDo6cHJvY2Vzcyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFuY2VF
ZmZlY3Q6OmdhaW4pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6
OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXF1YWxQb3dlclBhbm5lcjo6cGFuKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFJURkRh
dGFiYXNlOjppbmRleEZyb21FbGV2YXRpb25BbmdsZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vSFJURkVsZXZhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0aW9uOjpj
cmVhdGVGb3JTdWJqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAo
V2ViQ29yZTo6SFJURktlcm5lbDo6Y3JlYXRlSW50ZXJwb2xhdGVkS2VybmVsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZQ
YW5uZXI6OmNhbGN1bGF0ZURlc2lyZWRBemltdXRoSW5kZXhBbmRCbGVuZCk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9TaW5j
UmVzYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbmNSZXNhbXBsZXI6OnByb2Nlc3Mp
OgorICAgICAgICAqIHBsYXRmb3JtL2NmL1VSTENGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlUkdCKToKKyAgICAgICAg
KFdlYkNvcmU6Om1ha2VSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yRmxvYXRUb1JHQkFC
eXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yOjpsaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb2xvcjo6ZGFyayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjptaW40KToKKyAgICAgICAgKFdlYkNvcmU6Om1heDQpOgor
ICAgICAgICAoV2ViQ29yZTo6d2l0aGluRXBzaWxvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRTaXplLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0U2l6ZTo6aXNaZXJv
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6ZmxvYXRXaWR0aEZvclNpbXBsZVRleHQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUm91bmRlZFJlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um91bmRlZFJlY3Q6OlJhZGlp
OjpleHBhbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlTG9iZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZVNsaWNlU2l6ZXNGcm9tUmFkaWkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Np
bXBsZUZvbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjppbml0
Q2hhcldpZHRocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpXaWR0aEl0ZXJhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJv
Y2Vzc0N1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBs
YXRmb3JtRHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q0E6OnNldE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXRO
ZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzZXR1cEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcGVkQ29udGVudHNTY2FsZUZvclNjYWxl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6Z2V0VGlsZUluZGV4UmFuZ2VGb3JS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpjb21wdXRlVGlsZUNvdmVy
YWdlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2lu
Z01vZGVGb3JUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmJveEJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRm
b3JtQXBwbHlHZW5lcmljKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjYWxj
dWxhdGVVbnNjYWxlZEtlcm5lbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJs
dXI6OmNhbGN1bGF0ZVN0ZERldmlhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1RleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZTo6dXBkYXRlU3ViUmVj
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29tcHV0ZU51bVRpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGlu
Z0RhdGE6OnRpbGVYSW5kZXhGcm9tU3JjQ29vcmQpOgorICAgICAgICAoV2ViQ29yZTo6VGlsaW5n
RGF0YTo6dGlsZVlJbmRleEZyb21TcmNDb29yZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21w
bGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6Om9mZnNldEZvclBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENvbXBsZXhUZXh0TWFjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnQ6OmZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmR1cmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRp
b24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9uczo6YmxlbmRCeU1hdGNoaW5nT3BlcmF0aW9ucyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1h
dHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcEVkZ2VWYWx1ZSk6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsQW5pbWF0b3JNYWM6OmFkanVzdFNjcm9sbFBvc2l0aW9uSWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6cGxhdGZvcm1TZXRDb250ZW50c1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93Q29u
dHJvbGxlciBpbmNyZW1lbnRWb2x1bWVdKToKKyAgICAgICAgKHRpbWVUb1N0cmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXA6OmNvcHlEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZUJhc2U6OnBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcyk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlOjppbml0TlNVUkxSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0Q2xv
bmUpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dExhdGluMU1vdmVJblByaW1hcnlDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OnRleHRMYXRpbjFNb3ZlSW5QcmlvckNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6dGV4dEluQ2h1bmtPck91dE9mUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
dGV4dE9wZW5MYXRpbjEpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2TW92ZUluUHJpbWFy
eUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFVURjE2TW92ZUluUHJpb3JDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OnRleHRPcGVuVVRGMTYpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dENvZGVjVVRGMTYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvZGVjVVRG
MTY6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY1VURjg6OmVuY29kZSk6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9M
b2NhbGVNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY01hYzo6ZGVjb2RlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9UYWJs
ZUxheW91dDo6cmVjYWxjQ29sdW1uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91
dDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6QXV0
b1RhYmxlTGF5b3V0OjphcHBseVByZWZlcnJlZExvZ2ljYWxXaWR0aFF1aXJrcyk6CisgICAgICAg
IChXZWJDb3JlOjpBdXRvVGFibGVMYXlvdXQ6OmNhbGNFZmZlY3RpdmVMb2dpY2FsV2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQpOgorICAgICAgICAqIHJl
bmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpeGVkVGFi
bGVMYXlvdXQ6OmFwcGx5UHJlZmVycmVkTG9naWNhbFdpZHRoUXVpcmtzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbmROZXh0
RmxvYXRMb2dpY2FsQm90dG9tQWRhcHRlcjo6Y29sbGVjdElmTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0aW5nT2JqZWN0czo6bG9naWNhbFJpZ2h0T2Zmc2V0Rm9yUG9zaXRpb25pbmdG
bG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdHM6OmxvZ2ljYWxSaWdodE9m
ZnNldCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUJveC5jcHA6CisgICAgICAgICogcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0Jv
eDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUZsb3dCb3g6OmFkanVzdE1heEFzY2VudEFuZERlc2NlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lRmxvd0JveDo6Y29tcHV0ZU1heExvZ2ljYWxUb3ApOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lRmxvd0JveDo6YWRkQm94U2hhZG93VmlzdWFsT3ZlcmZsb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6YWRkQm9yZGVyT3V0c2V0VmlzdWFsT3ZlcmZs
b3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6YWRkVGV4dEJveFZpc3VhbE92
ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6Om5vZGVBdFBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmNvbnN0cmFpblRvTGluZVRvcEFuZEJv
dHRvbUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmNvbXB1dGVP
dmVyQW5ub3RhdGlvbkFkanVzdG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0Jv
eDo6Y29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6Y29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94Ojppc1NlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6Omxv
Y2FsU2VsZWN0aW9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwbGFj
ZUVsbGlwc2lzQm94KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OmFwcGx5U2hh
ZG93VG9HcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6
cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhcnRF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvbkJhY2tncm91
bmQpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVVuZGVybGluZU9mZnNldCk6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREb2N1bWVudE1hcmtlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludFRleHRNYXRjaE1hcmtlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVUZXh0Qm94Ojpjb21wdXRlUmVjdEZvclJlcGxhY2VtZW50TWFya2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6Y29tcHV0ZU92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpjb21wdXRlU3RhcnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9pZGluZ0Zsb2F0cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6YmxvY2tTZWxlY3Rpb25HYXApOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWN0aW9uR2FwKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rpb25HYXApOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmNhbGNDb2x1bW5XaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6YWRqdXN0UmVjdEZvckNvbHVtbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRqdXN0SW50cmluc2ljTG9naWNhbFdpZHRoc0ZvckNv
bHVtbnMpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUHJlZmVycmVkV2lkdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjb21wdXRlQmxvY2tQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6Y2xlYXJGbG9hdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb2xsYXBzZU1hcmdpbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2tGbG93OjpjbGVhckZsb2F0c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6bWFyZ2luQmVmb3JlRXN0aW1hdGVGb3JDaGlsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmVzdGltYXRlTG9naWNhbFRvcFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c2V0Q29sbGFwc2VkQm90dG9t
TWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aGFuZGxlQWZ0ZXJT
aWRlT2ZCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVNaW5pbXVtUGFnZUhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdExpbmVQb3NpdGlv
bkZvclBhZ2luYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpyZW1v
dmVGbG9hdGluZ09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNv
bXB1dGVMb2dpY2FsTG9jYXRpb25Gb3JGbG9hdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OnBvc2l0aW9uTmV3RmxvYXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrRmxvdzo6bG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrRmxvdzo6YWRkT3ZlcmhhbmdpbmdGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpnZXRDbGVhckRlbHRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrRmxvdzo6YWRqdXN0Rm9yQm9yZGVyRml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrRmxvdzo6Zml0Qm9yZGVyVG9MaW5lc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6dXBkYXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjphZGRGb2N1c1JpbmdSZWN0c0Zvcklu
bGluZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6cmVsYXlv
dXRGb3JQYWdpbmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxvZ2ljYWxXaWR0aEZvckxlZnRBbGln
bmVkQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlTG9naWNhbFdpZHRoRm9yUmlnaHRB
bGlnbmVkQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlTG9naWNhbFdpZHRoRm9yQ2Vu
dGVyQWxpZ25lZEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OnNldExvZ2ljYWxXaWR0aEZvclRl
eHRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5l
RGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrRmxvdzo6bGF5b3V0TGluZUJveGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrRmxvdzo6Y2hlY2tGbG9hdHNJbkNsZWFuTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9ja0Zsb3c6OmNoZWNrUGFnaW5hdGlvbkFuZEZsb2F0c0F0RW5kTGluZSk6CisgICAg
ICAgIChXZWJDb3JlOjp0cnlIeXBoZW5hdGluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2Nyb2xsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbFdpZHRoSW5SZWdpb25CeU1pbk1heCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1h
eCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dp
Y2FsSGVpZ2h0QnlNaW5NYXgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjphZGp1c3RC
b3JkZXJCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94OjphZGp1c3RCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJv
eFNpemluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFkanVzdENvbnRlbnRCb3hM
b2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
cmVwYWludExheWVyUmVjdHNGb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnNocmlua0xvZ2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojpjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50SW5SZWdpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tBdmFpbGFibGVMaW5l
V2lkdGhJblJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBlcnBlbmRpY3Vs
YXJDb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aFVzaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uVXNpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdp
ZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJlc3BlY3RpbmdNaW5NYXhIZWlnaHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tMb2dpY2Fs
V2lkdGhGb3JQb3NpdGlvbmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6YXBwbHlWaXN1YWxFZmZlY3RPdmVyZmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmFkZExheW91dE92ZXJmbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNhbGN1bGF0ZUZpbGxUaWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldE5vUmVwZWF0WCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdl
R2VvbWV0cnk6OnNldE5vUmVwZWF0WSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnVzZUZpeGVkQXR0YWNobWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3Jk
ZXJTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZUFkanVzdGVkSW5uZXJCb3JkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2NhbENhcmV0UmVj
dEZvckVtcHR5RWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbGV4Qm94SXRlcmF0b3I6Om5leHQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Ojpjb21wdXRl
SW50cmluc2ljTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91
dFZlcnRpY2FsQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveDo6YXBwbHlMaW5lQ2xhbXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94OjphbGxvd2VkQ2hpbGRGbGV4KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVw
bG9hZENvbnRyb2w6Om1heEZpbGVuYW1lV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RmlsZVVwbG9hZENvbnRyb2w6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpzZXRJbWFnZVNpemVGb3JBbHRUZXh0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1
dGVNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpsaW5lc1Zpc3VhbE92
ZXJmbG93Qm91bmRpbmdCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpwYWlu
dE91dGxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpwYWludE91dGxpbmVG
b3JMaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsYW1wU2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjp2aXNpYmxlQ29udGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OnJhbmdlSW50ZXJzZWN0c1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmFueUxpbmVJbnRlcnNlY3RzUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6bGluZUludGVyc2VjdHNE
aXJ0eVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OnBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMaXN0Qm94Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaXN0Qm94OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdEJveDo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpudW1WaXNp
YmxlSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6cGFuU2Nyb2xsKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnNjcm9sbEhlaWdodCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWFycXVlZTo6bWFycXVlZVNwZWVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hcnF1ZWU6OmNvbXB1dGVQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25z
V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OmNvbXB1dGVJbnRyaW5z
aWNMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0Ojpjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1l
dGVyLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5jcHA6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0OjpoZWlnaHRBZGp1c3RlZEZvclNldE9mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlQmFs
YW5jZWRIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnVw
ZGF0ZUxvZ2ljYWxXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0Zy
YWdtZW50LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjYXJldE1heE9mZnNldCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
UmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6b3ZlcmZsb3dSZWN0
Rm9yRmxvd1RocmVhZFBvcnRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHA6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyUnVieVJ1bjo6Z2V0T3ZlcmhhbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJSdWJ5VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5VGV4dDo6YWRqdXN0
SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6
Y29tcHV0ZVNjcm9sbGJhcldpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJh
clBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTZWFyY2hGaWVsZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6
Y29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnVwZGF0ZUxvZ2ljYWxX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29udmVydFN0eWxlTG9naWNh
bEhlaWdodFRvQ29tcHV0ZWRIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6
OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNhbGNCb3Jk
ZXJTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y2FsY0JvcmRlckVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6b3V0ZXJCb3JkZXJCZWZvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6Om91dGVyQm9yZGVyQWZ0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGU6Om91dGVyQm9yZGVyU3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGU6Om91dGVyQm9yZGVyRW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFy
c2VDb2xTcGFuRnJvbURPTSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBh
cnNlUm93U3BhbkZyb21ET00pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjps
b2dpY2FsV2lkdGhGcm9tQ29sdW1ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNl
bGw6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlQ2VsbDo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2Vs
bDo6c2V0T3ZlcnJpZGVMb2dpY2FsQ29udGVudEhlaWdodEZyb21Sb3dIZWlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmFsaWduTGVmdFJpZ2h0Qm9y
ZGVyUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6YWxpZ25U
b3BCb3R0b21Cb3JkZXJQYWludFJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjplbnN1
cmVSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0xv
Z2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpkaXN0
cmlidXRlRXh0cmFMb2dpY2FsSGVpZ2h0VG9QZXJjZW50Um93cyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZVNlY3Rpb246OnJlbW92ZUNhY2hlZENvbGxhcHNlZEJvcmRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpzZXRDYWNoZWRDb2xsYXBzZWRCb3JkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWNoZWRDb2xsYXBzZWRC
b3JkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VDYXBpdGFsaXplZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojph
YnNvbHV0ZVJlY3RzRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJz
b2x1dGVRdWFkc0ZvclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Om1heFdvcmRGcmFnbWVudFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6YWxpZ25Cb3hlc0lu
QmxvY2tEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6YmVmb3Jl
QW5ub3RhdGlvbnNBZGp1c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6
OnNlbGVjdGlvblRvcEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2spOgorICAgICAgICAoV2ViQ29y
ZTo6Um9vdElubGluZUJveDo6YmxvY2tEaXJlY3Rpb25Qb2ludEluTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSb290SW5saW5lQm94OjpwYWRkZWRMYXlvdXRPdmVyZmxvd1JlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0QXNjZW50QW5kRGVzY2VudCk6CisgICAgICAgIChXZWJDb3JlOjpSb290
SW5saW5lQm94Ojphc2NlbnRBbmREZXNjZW50Rm9yQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0
aE1MUm9vdDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY0NvbnN0cmFpbnRTY2FsZUZvcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Rm9udFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU3R5bGU6OmdldFNoYWRvd0V4dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6Z2V0U2hhZG93SW5zZXRFeHRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmdldFNoYWRvd0hvcml6b250YWxFeHRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmdldFNoYWRvd1ZlcnRpY2FsRXh0ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TaGFkb3dE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1bGF0ZVNoYWRvd0V4dGVudCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1NWR0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lRmxv
d0JveDo6Y29tcHV0ZVRleHRNYXRjaE1hcmtlclJlY3RGb3JSZW5kZXJlcik6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0lubGluZVRleHRCb3g6OmxvY2FsU2VsZWN0aW9uUmVjdCk6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkTnVtYmVyLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25h
bE51bWJlci5jcHA6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6c3RhcnRUaW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6dXBkYXRlQW5pbWF0aW9ucyk6Cisg
ICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdTTUlMRWxlbWVudDo6c2ltcGxlRHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU01JTEVsZW1lbnQ6OnJlcGVhdGluZ0R1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1NNSUxFbGVtZW50OjpyZXNvbHZlQWN0aXZlRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NN
SUxFbGVtZW50OjpyZXNvbHZlSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU01JTEVs
ZW1lbnQ6OnJlc29sdmVGaXJzdEludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxF
bGVtZW50OjpyZXNvbHZlTmV4dEludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxF
bGVtZW50OjpjYWxjdWxhdGVBbmltYXRpb25QZXJjZW50QW5kUmVwZWF0KToKKyAgICAgICAgKiB4
bWwvWE1MVHJlZVZpZXdlci5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2V0QnVmZmVyOjpyZWFkT3V0Qnl0ZXMpOgorCiAy
MDEzLTExLTEwICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZWJhc2VsaW5lIGJpbmRpbmdzIHRlc3RzIGFmdGVyIHIxNTg5OTcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAK
aW5kZXggMzU4MGE1MDRmZGQ3MmFkMjA3ZmE1NzM3MGUxYzQxODE1ZmEzY2JmMy4uNzM5OGQwZjk1
YTIwYjFhZDJkN2Y1NDBhNmMxNGUzYTQ0ZDI2ZDYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcApAQCAt
MzUsOCArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBz
dGQ7Ci0KIC8vIFRoZXNlIHZhbHVlcyBhcmUgYXQgdGhlIGRpc2NyZXRpb24gb2YgdGhlIHVzZXIg
YWdlbnQuCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdFByZWZsaWdodENhY2hlVGltZW91
dFNlY29uZHMgPSA1Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFByZWZsaWdodENhY2hlVGlt
ZW91dFNlY29uZHMgPSA2MDA7IC8vIFNob3VsZCBiZSBzaG9ydCBlbm91Z2ggdG8gbWluaW1pemUg
dGhlIHJpc2sgb2YgdXNpbmcgYSBwb2lzb25lZCBjYWNoZSBhZnRlciBzd2l0Y2hpbmcgdG8gYSBz
ZWN1cmUgbmV0d29yay4KQEAgLTE1NywxMyArMTU1LDEzIEBAIENyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGUmIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNoYXJlZCgpCiB2
b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmFwcGVuZEVudHJ5KGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgUGFzc093blB0cjxDcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlSXRlbT4gcHJlZmxpZ2h0UmVzdWx0KQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgbV9wcmVmbGlnaHRIYXNoTWFwLnNldChtYWtlX3BhaXIob3JpZ2lu
LCB1cmwpLCBwcmVmbGlnaHRSZXN1bHQpOworICAgIG1fcHJlZmxpZ2h0SGFzaE1hcC5zZXQoc3Rk
OjptYWtlX3BhaXIob3JpZ2luLCB1cmwpLCBwcmVmbGlnaHRSZXN1bHQpOwogfQogCiBib29sIENy
b3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmNhblNraXBQcmVmbGlnaHQoY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBTdG9yZWRDcmVkZW50aWFscyBpbmNsdWRlQ3Jl
ZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1
ZXN0SGVhZGVycykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIENyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0SGFzaE1hcDo6aXRlcmF0b3IgY2FjaGVJdCA9IG1fcHJlZmxpZ2h0
SGFzaE1hcC5maW5kKG1ha2VfcGFpcihvcmlnaW4sIHVybCkpOworICAgIENyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0SGFzaE1hcDo6aXRlcmF0b3IgY2FjaGVJdCA9IG1fcHJlZmxpZ2h0SGFzaE1h
cC5maW5kKHN0ZDo6bWFrZV9wYWlyKG9yaWdpbiwgdXJsKSk7CiAgICAgaWYgKGNhY2hlSXQgPT0g
bV9wcmVmbGlnaHRIYXNoTWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBi
N2I2ZjdhODBhYjIwOWJjMWQ3YWZjMjRlZjM3MzFiOWQwOTY0OTBmLi40MTZjYjA2NzIwZmYwMTc5
Zjk5OGQ5ZWRhMjhkOTRlOGI0ZWNjZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00OSw4ICs0OSw2IEBACiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5TW9kZVtdID0gImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNb2Rl
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDEzYmVkMGZhYjNlNTc4Zjk4OTY3ZjFhZmIwZjc3
ODdhY2U0MTUzNGEuLmE3NGJmMmRhNGJhYmY3ZjNiMjQ3MWEwZDQ5MGQyN2ZmNDQ4NjU5NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDIsOCArNDIsNiBAQAogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLXVzaW5n
IG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNo
YXIgZmxhdEZpbGVTdWJkaXJlY3RvcnlbXSA9ICJBcHBsaWNhdGlvbkNhY2hlIjsKQEAgLTExODgs
NyArMTE4Niw3IEBAIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgCiAgICAgRmFsbGJhY2tV
UkxWZWN0b3IgZmFsbGJhY2tVUkxzOwogICAgIHdoaWxlICgocmVzdWx0ID0gZmFsbGJhY2tTdGF0
ZW1lbnQuc3RlcCgpKSA9PSBTUUxSZXN1bHRSb3cpIAotICAgICAgICBmYWxsYmFja1VSTHMuYXBw
ZW5kKG1ha2VfcGFpcihVUkwoUGFyc2VkVVJMU3RyaW5nLCBmYWxsYmFja1N0YXRlbWVudC5nZXRD
b2x1bW5UZXh0KDApKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgZmFsbGJhY2tTdGF0ZW1lbnQuZ2V0
Q29sdW1uVGV4dCgxKSkpKTsKKyAgICAgICAgZmFsbGJhY2tVUkxzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihVUkwoUGFyc2VkVVJMU3RyaW5nLCBmYWxsYmFja1N0YXRlbWVudC5nZXRDb2x1bW5UZXh0
KDApKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgZmFsbGJhY2tTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4
dCgxKSkpKTsKIAogICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgbG9hZCBmYWxsYmFjayBVUkxzLCBlcnJvciBcIiVzXCIiLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IGJiMWYwMzkxNmFlNDJjYjkxYzUwZjI2MzNh
NWQ1MDE3ZGUxMDI5M2IuLjc3YjAwOTYxNzAxOGE2NTcxZTZlOTU1MTM0YjE1ZTRhNTMwYWFiOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2Vy
LmNwcApAQCAtMzAsOCArMzAsNiBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogZW51bSBNb2RlIHsgRXhwbGljaXQsIEZhbGxiYWNrLCBPbmxpbmVX
aGl0ZWxpc3QsIFVua25vd24gfTsKQEAgLTE3Myw3ICsxNzEsNyBAQCBib29sIHBhcnNlTWFuaWZl
c3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwg
TWFuaWZlcwogICAgICAgICAgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobWFu
aWZlc3RVUkwsIGZhbGxiYWNrVVJMKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgbWFuaWZlc3QuZmFsbGJhY2tVUkxzLmFwcGVuZChtYWtlX3BhaXIobmFtZXNwYWNl
VVJMLCBmYWxsYmFja1VSTCkpOyAgICAgICAgICAgIAorICAgICAgICAgICAgbWFuaWZlc3QuZmFs
bGJhY2tVUkxzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihuYW1lc3BhY2VVUkwsIGZhbGxiYWNrVVJM
KSk7ICAgICAgICAgICAgCiAgICAgICAgIH0gZWxzZSAKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCmluZGV4IDQ2OTA0ODVjMGY1ZjcyYWZhMGUxOGY5YmI2N2UwNDZkZGJkNTU0MGQuLjg1
MDZmMDFkOWQyOWVmZGIwOTNlNjE2ZDg4ZDUyMzcwMzI2MWRmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcApAQCAtNDksOCArNDksNiBAQAogI2luY2x1
ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgaW50IGNEZWZhdWx0Q2FjaGVDYXBh
Y2l0eSA9IDgxOTIgKiAxMDI0OwpAQCAtMjAwLDkgKzE5OCw5IEBAIENhY2hlZFJlc291cmNlKiBN
ZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHVuc2lnbmVkIE1lbW9yeUNhY2hlOjpkZWFkQ2FwYWNpdHkoKSBjb25zdCAKIHsKICAg
ICAvLyBEZWFkIHJlc291cmNlIGNhcGFjaXR5IGlzIHdoYXRldmVyIHNwYWNlIGlzIG5vdCBvY2N1
cGllZCBieSBsaXZlIHJlc291cmNlcywgYm91bmRlZCBieSBhbiBpbmRlcGVuZGVudCBtaW5pbXVt
IGFuZCBtYXhpbXVtLgotICAgIHVuc2lnbmVkIGNhcGFjaXR5ID0gbV9jYXBhY2l0eSAtIG1pbiht
X2xpdmVTaXplLCBtX2NhcGFjaXR5KTsgLy8gU3RhcnQgd2l0aCBhdmFpbGFibGUgY2FwYWNpdHku
Ci0gICAgY2FwYWNpdHkgPSBtYXgoY2FwYWNpdHksIG1fbWluRGVhZENhcGFjaXR5KTsgLy8gTWFr
ZSBzdXJlIGl0J3MgYWJvdmUgdGhlIG1pbmltdW0uCi0gICAgY2FwYWNpdHkgPSBtaW4oY2FwYWNp
dHksIG1fbWF4RGVhZENhcGFjaXR5KTsgLy8gTWFrZSBzdXJlIGl0J3MgYmVsb3cgdGhlIG1heGlt
dW0uCisgICAgdW5zaWduZWQgY2FwYWNpdHkgPSBtX2NhcGFjaXR5IC0gc3RkOjptaW4obV9saXZl
U2l6ZSwgbV9jYXBhY2l0eSk7IC8vIFN0YXJ0IHdpdGggYXZhaWxhYmxlIGNhcGFjaXR5LgorICAg
IGNhcGFjaXR5ID0gc3RkOjptYXgoY2FwYWNpdHksIG1fbWluRGVhZENhcGFjaXR5KTsgLy8gTWFr
ZSBzdXJlIGl0J3MgYWJvdmUgdGhlIG1pbmltdW0uCisgICAgY2FwYWNpdHkgPSBzdGQ6Om1pbihj
YXBhY2l0eSwgbV9tYXhEZWFkQ2FwYWNpdHkpOyAvLyBNYWtlIHN1cmUgaXQncyBiZWxvdyB0aGUg
bWF4aW11bS4KICAgICByZXR1cm4gY2FwYWNpdHk7CiB9CiAKQEAgLTQ5NSw3ICs0OTMsNyBAQCB2
b2lkIE1lbW9yeUNhY2hlOjpldmljdChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAKIE1lbW9y
eUNhY2hlOjpMUlVMaXN0KiBNZW1vcnlDYWNoZTo6bHJ1TGlzdEZvcihDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UpCiB7Ci0gICAgdW5zaWduZWQgYWNjZXNzQ291bnQgPSBtYXgocmVzb3VyY2UtPmFj
Y2Vzc0NvdW50KCksIDFVKTsKKyAgICB1bnNpZ25lZCBhY2Nlc3NDb3VudCA9IHN0ZDo6bWF4KHJl
c291cmNlLT5hY2Nlc3NDb3VudCgpLCAxVSk7CiAgICAgdW5zaWduZWQgcXVldWVJbmRleCA9IFdU
Rjo6ZmFzdExvZzIocmVzb3VyY2UtPnNpemUoKSAvIGFjY2Vzc0NvdW50KTsKICNpZm5kZWYgTkRF
QlVHCiAgICAgcmVzb3VyY2UtPm1fbHJ1SW5kZXggPSBxdWV1ZUluZGV4OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAppbmRl
eCA4M2FmN2ZkZjg1YzdiZGNlMWIxYTFhOTVhODA4ZTk2MTgwNjg1MzhmLi5iZGZjZTYxZDc3ZmJi
Nzg4YTQ2YmE1ZTgyYWVjNWRiYTAzMDI0OWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcApAQCAtMTIyLDggKzEyMiw2
IEBAIFNPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlVGV4dCwga0NURm9udE5hbWVBdHRyaWJ1dGUs
IENGU3RyaW5nUmVmKQogI2RlZmluZSBrQ1RGb250TmFtZUF0dHJpYnV0ZSBnZXRrQ1RGb250TmFt
ZUF0dHJpYnV0ZSgpCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmNwcAppbmRleCBhMzI4ZWE5MmQ5MGI1ZTkyMDRmODZjY2M1YjA1NjI2ODdm
ZjE2ZTVkLi45YjRiMGJhODVkYjBmZTYzMTcxNWE4MGU0M2E3ZjJlYjI4N2QwYjM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCkBAIC02MCw3ICs2MCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBDaHJv
bWU6OkNocm9tZShQYWdlJiBwYWdlLCBDaHJvbWVDbGllbnQmIGNsaWVudCkKICAgICA6IG1fcGFn
ZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAppbmRleCBmZDY5N2ZiYTY4Y2NlMzFiNWM4
YWI3MmJjZjU4MDRiMDI4ZDliMzk3Li42NTI3YTA2ZmNjNTgyMTE4M2VlNmViNjgzNmNlODZlMTBl
NzVlY2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcApAQCAtMzUsOCArMzUsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25z
dCBpbnQgbWF4SW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcgPSAxMDAwOyAvLyBPbmUg
c2Vjb25kIG1hdGNoZXMgR2Vja28uCkBAIC0xNzgsNyArMTc2LDcgQEAgdm9pZCBET01UaW1lcjo6
YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lckludGVydmFs
KQogCiBkb3VibGUgRE9NVGltZXI6OmludGVydmFsQ2xhbXBlZFRvTWluaW11bShpbnQgdGltZW91
dCwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKSBjb25zdAogewotICAgIGRvdWJsZSBpbnRl
cnZhbE1pbGxpc2Vjb25kcyA9IG1heChvbmVNaWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxp
c2Vjb25kKTsKKyAgICBkb3VibGUgaW50ZXJ2YWxNaWxsaXNlY29uZHMgPSBzdGQ6Om1heChvbmVN
aWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25kKTsKIAogICAgIGlmIChpbnRlcnZh
bE1pbGxpc2Vjb25kcyA8IG1pbmltdW1UaW1lckludGVydmFsICYmIG1fbmVzdGluZ0xldmVsID49
IG1heFRpbWVyTmVzdGluZ0xldmVsKQogICAgICAgICBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1p
bmltdW1UaW1lckludGVydmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
CmluZGV4IGUxZDZkMTZhNDBkOTA5MjgxNmVjMmNhMTExYzMyZmYwOTIyM2M4ODYuLmU2ZWI0OTBl
MmRmMTFiODcxNTUxNWJmNGY0MDllNWY1ZjU0ZTMxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAKQEAgLTY1LDcgKzY1LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIEZv
Y3VzTmF2aWdhdGlvblNjb3BlOjpGb2N1c05hdmlnYXRpb25TY29wZShUcmVlU2NvcGUqIHRyZWVT
Y29wZSkKICAgICA6IG1fcm9vdFRyZWVTY29wZSh0cmVlU2NvcGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CmluZGV4IDYzNmNlZmVkOWY3ZWM5MmUyMDVjOTg3Mzg2YWE2NzdlZWQ3NzIxNDguLjYyNDFlZTNj
OTUyYjQ2MTU1YzI5MjA2YjA4ZjkwMWUwMGU1MmY1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBA
IC0xMjEsOCArMTIxLDYgQEAKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZS5oIgogI2VuZGlm
CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTUxMSwxMiArNTA5LDEyIEBAIEZsb2F0U2l6ZSBGcmFt
ZTo6cmVzaXplUGFnZVJlY3RzS2VlcGluZ1JhdGlvKGNvbnN0IEZsb2F0U2l6ZSYgb3JpZ2luYWxT
aXplLCBjb25zCiAgICAgICAgIHJldHVybiBGbG9hdFNpemUoKTsKIAogICAgIGlmIChjb250ZW50
UmVuZGVyZXIoKS0+c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAg
IEFTU0VSVChmYWJzKG9yaWdpbmFsU2l6ZS53aWR0aCgpKSA+IG51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6ZXBzaWxvbigpKTsKKyAgICAgICAgQVNTRVJUKGZhYnMob3JpZ2luYWxTaXplLndpZHRoKCkp
ID4gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmVwc2lsb24oKSk7CiAgICAgICAgIGZsb2F0
IHJhdGlvID0gb3JpZ2luYWxTaXplLmhlaWdodCgpIC8gb3JpZ2luYWxTaXplLndpZHRoKCk7CiAg
ICAgICAgIHJlc3VsdFNpemUuc2V0V2lkdGgoZmxvb3JmKGV4cGVjdGVkU2l6ZS53aWR0aCgpKSk7
CiAgICAgICAgIHJlc3VsdFNpemUuc2V0SGVpZ2h0KGZsb29yZihyZXN1bHRTaXplLndpZHRoKCkg
KiByYXRpbykpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChmYWJzKG9yaWdpbmFsU2l6
ZS5oZWlnaHQoKSkgPiBudW1lcmljX2xpbWl0czxmbG9hdD46OmVwc2lsb24oKSk7CisgICAgICAg
IEFTU0VSVChmYWJzKG9yaWdpbmFsU2l6ZS5oZWlnaHQoKSkgPiBzdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6ZXBzaWxvbigpKTsKICAgICAgICAgZmxvYXQgcmF0aW8gPSBvcmlnaW5hbFNpemUu
d2lkdGgoKSAvIG9yaWdpbmFsU2l6ZS5oZWlnaHQoKTsKICAgICAgICAgcmVzdWx0U2l6ZS5zZXRI
ZWlnaHQoZmxvb3JmKGV4cGVjdGVkU2l6ZS5oZWlnaHQoKSkpOwogICAgICAgICByZXN1bHRTaXpl
LnNldFdpZHRoKGZsb29yZihyZXN1bHRTaXplLmhlaWdodCgpICogcmF0aW8pKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcAppbmRleCA1MWNiOTQ1ZDEy
ZWIyMjkxYTM2NjkyYzQ3MzQ0NzcwMDI2YTAyOWZlLi5iNWYxY2EzNDFjODIxNDY3MjdmY2Y1ZTFl
ZDFmZDAzYTI3MDAwOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91
cExvYWREZWZlcnJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXBMb2Fk
RGVmZXJyZXIuY3BwCkBAIC0zMSw4ICszMSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogUGFnZUdyb3VwTG9hZERlZmVycmVyOjpQYWdlR3JvdXBM
b2FkRGVmZXJyZXIoUGFnZSYgcGFnZSwgYm9vbCBkZWZlclNlbGYpCiB7CiAgICAgY29uc3QgSGFz
aFNldDxQYWdlKj4mIHBhZ2VzID0gcGFnZS5ncm91cCgpLnBhZ2VzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCmluZGV4IDZhMzY2YmEzY2Y5YzdlZTY1ZmQzMmY3MzhiMGJhOGNjYWZiOTFkMDYu
LjViZjZkODc1YWFiZDRlNGNmMTJjNzY3ZDQ5MmMxMWUxZDNmYjJlZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCkBAIC00Niw4ICs0Niw2IEBACiAjaW5jbHVkZSAiVGV4dEF1dG9zaXplci5o
IgogI2luY2x1ZGUgPGxpbWl0cz4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCBzZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyhQYWdlKiBw
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cAppbmRleCAwODViZTIyZmU2MDU4OTAxMWViMzVmYTcyNTgwMWZiZjEwMjViODU3Li5kZDMzMTVl
YmIwNjk2MTRkOGMwMTFhNGI1OWU1ZTU1N2E5NTEwNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtNDQsOCArNDQsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAotdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBUaGUgZXBzaWxvbiB2
YWx1ZSB3ZSBwYXNzIHRvIFVuaXRCZXppZXI6OnNvbHZlIGdpdmVuIHRoYXQgdGhlIGFuaW1hdGlv
biBpcyBnb2luZyB0byBydW4gb3ZlciB8ZHVyfCBzZWNvbmRzLiBUaGUgbG9uZ2VyIHRoZQpAQCAt
NjYsNyArNjQsNyBAQCBzdGF0aWMgaW5saW5lIGRvdWJsZSBzb2x2ZUN1YmljQmV6aWVyRnVuY3Rp
b24oZG91YmxlIHAxeCwgZG91YmxlIHAxeSwgZG91YmxlIHAyeAogc3RhdGljIGlubGluZSBkb3Vi
bGUgc29sdmVTdGVwc0Z1bmN0aW9uKGludCBudW1TdGVwcywgYm9vbCBzdGVwQXRTdGFydCwgZG91
YmxlIHQpCiB7CiAgICAgaWYgKHN0ZXBBdFN0YXJ0KQotICAgICAgICByZXR1cm4gbWluKDEuMCwg
KGZsb29yKG51bVN0ZXBzICogdCkgKyAxKSAvIG51bVN0ZXBzKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWluKDEuMCwgKGZsb29yKG51bVN0ZXBzICogdCkgKyAxKSAvIG51bVN0ZXBzKTsKICAgICBy
ZXR1cm4gZmxvb3IobnVtU3RlcHMgKiB0KSAvIG51bVN0ZXBzOwogfQogCkBAIC00NjksNyArNDY3
LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQoKQog
ICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IGVsYXBzZWREdXJhdGlvbiBpcyBu
ZXZlciA8IDAuIElmIGl0IGlzLCB0aGlzIHN1Z2dlc3RzIHRoYXQKICAgICAvLyB3ZSBoYWQgYSBy
ZWNhbGNTdHlsZSgpIG91dHNpZGUgb2YgYmVnaW5BbmltYXRpb25VcGRhdGUoKS9lbmRBbmltYXRp
b25VcGRhdGUoKS4KICAgICAvLyBBbHNvIGNoZWNrIGluIGdldFRpbWVUb05leHRFdmVudCgpLgot
ICAgIGVsYXBzZWREdXJhdGlvbiA9IG1heChlbGFwc2VkRHVyYXRpb24sIDAuMCk7CisgICAgZWxh
cHNlZER1cmF0aW9uID0gc3RkOjptYXgoZWxhcHNlZER1cmF0aW9uLCAwLjApOwogICAgIAogICAg
IC8vIENoZWNrIGZvciBlbmQgdGltZW91dAogICAgIGlmIChtX3RvdGFsRHVyYXRpb24gPj0gMCAm
JiBlbGFwc2VkRHVyYXRpb24gPj0gbV90b3RhbER1cmF0aW9uKSB7CkBAIC01MjUsNyArNTIzLDcg
QEAgZG91YmxlIEFuaW1hdGlvbkJhc2U6OnRpbWVUb05leHRTZXJ2aWNlKCkKICAgICAKICAgICBp
ZiAobV9hbmltU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGVTdGFydFdhaXRUaW1lcikgewogICAgICAg
ICBkb3VibGUgdGltZUZyb21Ob3cgPSBtX2FuaW1hdGlvbi0+ZGVsYXkoKSAtIChiZWdpbkFuaW1h
dGlvblVwZGF0ZVRpbWUoKSAtIG1fcmVxdWVzdGVkU3RhcnRUaW1lKTsKLSAgICAgICAgcmV0dXJu
IG1heCh0aW1lRnJvbU5vdywgMC4wKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHRpbWVGcm9t
Tm93LCAwLjApOwogICAgIH0KICAgICAKICAgICBmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQo
KTsKQEAgLTU1Myw3ICs1NTEsNyBAQCBkb3VibGUgQW5pbWF0aW9uQmFzZTo6ZnJhY3Rpb25hbFRp
bWUoZG91YmxlIHNjYWxlLCBkb3VibGUgZWxhcHNlZFRpbWUsIGRvdWJsZSBvZgogICAgIGNvbnN0
IGludCBpbnRlZ3JhbEl0ZXJhdGlvbkNvdW50ID0gc3RhdGljX2Nhc3Q8aW50PihtX2FuaW1hdGlv
bi0+aXRlcmF0aW9uQ291bnQoKSk7CiAgICAgY29uc3QgYm9vbCBpdGVyYXRpb25Db3VudEhhc0Zy
YWN0aW9uYWwgPSBtX2FuaW1hdGlvbi0+aXRlcmF0aW9uQ291bnQoKSAtIGludGVncmFsSXRlcmF0
aW9uQ291bnQ7CiAgICAgaWYgKG1fYW5pbWF0aW9uLT5pdGVyYXRpb25Db3VudCgpICE9IEFuaW1h
dGlvbjo6SXRlcmF0aW9uQ291bnRJbmZpbml0ZSAmJiAhaXRlcmF0aW9uQ291bnRIYXNGcmFjdGlv
bmFsKQotICAgICAgICBpbnRlZ3JhbFRpbWUgPSBtaW4oaW50ZWdyYWxUaW1lLCBpbnRlZ3JhbEl0
ZXJhdGlvbkNvdW50IC0gMSk7CisgICAgICAgIGludGVncmFsVGltZSA9IHN0ZDo6bWluKGludGVn
cmFsVGltZSwgaW50ZWdyYWxJdGVyYXRpb25Db3VudCAtIDEpOwogCiAgICAgZnJhY3Rpb25hbFRp
bWUgLT0gaW50ZWdyYWxUaW1lOwogCkBAIC02MTMsNyArNjExLDcgQEAgZG91YmxlIEFuaW1hdGlv
bkJhc2U6OnByb2dyZXNzKGRvdWJsZSBzY2FsZSwgZG91YmxlIG9mZnNldCwgY29uc3QgVGltaW5n
RnVuY3Rpb24KIHZvaWQgQW5pbWF0aW9uQmFzZTo6Z2V0VGltZVRvTmV4dEV2ZW50KGRvdWJsZSYg
dGltZSwgYm9vbCYgaXNMb29waW5nKSBjb25zdAogewogICAgIC8vIERlY2lkZSB3aGVuIHRoZSBl
bmQgb3IgbG9vcCBldmVudCBuZWVkcyB0byBmaXJlCi0gICAgY29uc3QgZG91YmxlIGVsYXBzZWRE
dXJhdGlvbiA9IG1heChiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKSAtIG1fc3RhcnRUaW1lLCAw
LjApOworICAgIGNvbnN0IGRvdWJsZSBlbGFwc2VkRHVyYXRpb24gPSBzdGQ6Om1heChiZWdpbkFu
aW1hdGlvblVwZGF0ZVRpbWUoKSAtIG1fc3RhcnRUaW1lLCAwLjApOwogICAgIGRvdWJsZSBkdXJh
dGlvbkxlZnQgPSAwOwogICAgIGRvdWJsZSBuZXh0SXRlcmF0aW9uVGltZSA9IG1fdG90YWxEdXJh
dGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJh
bWVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVB
bmltYXRpb24uY3BwCmluZGV4IDY3YzU2ODg4OGEzNDRhOWQyMWMzMTE4NDA1NTYwNzQyYjg1OGJi
N2EuLjZmMTExYjNhZjM0YzBjNDkwYTU1NGFlNjY1M2FiYjIzOWQyNjExYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5jcHAKQEAg
LTM4LDggKzM4LDYgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlN0eWxl
UmVzb2x2ZXIuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBLZXlmcmFtZUFuaW1hdGlvbjo6S2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9u
JiBhbmltYXRpb24sIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBpbnQgaW5kZXgsIENvbXBvc2l0
ZUFuaW1hdGlvbiogY29tcEFuaW0sIFJlbmRlclN0eWxlKiB1bmFuaW1hdGVkU3R5bGUpCkBAIC04
NSw3ICs4Myw3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OmZldGNoSW50ZXJ2YWxFbmRwb2lu
dHNGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5CiAgICAgLy8gRmluZCB0aGUgZmly
c3Qga2V5CiAgICAgZG91YmxlIGVsYXBzZWRUaW1lID0gZ2V0RWxhcHNlZFRpbWUoKTsKICAgICBp
ZiAobV9hbmltYXRpb24tPmR1cmF0aW9uKCkgJiYgbV9hbmltYXRpb24tPml0ZXJhdGlvbkNvdW50
KCkgIT0gQW5pbWF0aW9uOjpJdGVyYXRpb25Db3VudEluZmluaXRlKQotICAgICAgICBlbGFwc2Vk
VGltZSA9IG1pbihlbGFwc2VkVGltZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCkgKiBtX2FuaW1h
dGlvbi0+aXRlcmF0aW9uQ291bnQoKSk7CisgICAgICAgIGVsYXBzZWRUaW1lID0gc3RkOjptaW4o
ZWxhcHNlZFRpbWUsIG1fYW5pbWF0aW9uLT5kdXJhdGlvbigpICogbV9hbmltYXRpb24tPml0ZXJh
dGlvbkNvdW50KCkpOwogCiAgICAgY29uc3QgZG91YmxlIGZyYWN0aW9uYWxUaW1lID0gdGhpcy0+
ZnJhY3Rpb25hbFRpbWUoMSwgZWxhcHNlZFRpbWUsIDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAKaW5kZXggMGMwZjNkODRkYzYxMGQyZjgwMTc4ZWQ0ZTJm
YzFkNzA0ZmI5MTgxMC4uYjA5MmY4ODhlZTAxNmI1MGE5NWYwZWJhNWFjNTU5NjkwMmYzMjAxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcApAQCAtMzcsOCAr
MzcsNiBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogLy8gSFRNTDUgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIG1pbmltdW0gd2VlayBvZiB5ZWFy
IGlzIG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRl
eCA3MjlhZjc1NzJmODc5NGE1OTdmZDk0MGMwOTA1Y2Y2NDQyNDVkNzZlLi43ODdmYjEyODQzNWRi
NjQ3MDQ5ZmIzMWI4ZTU3MGY2ZjA4YTk3N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0K
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFFTkFCTEUoU01PT1RIX1NDUk9MTElORykKQEAg
LTEwNSw3ICsxMDMsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKICAgICAgICAgaWYgKGRlbHRhWSkgewogICAgICAg
ICAgICAgaWYgKGUuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSB7CiAg
ICAgICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWSA8IDA7Ci0gICAgICAgICAgICAg
ICAgZGVsdGFZID0gbWF4KG1heChzdGF0aWNfY2FzdDxmbG9hdD4obV9zY3JvbGxhYmxlQXJlYS0+
dmlzaWJsZUhlaWdodCgpKSAqIFNjcm9sbGJhcjo6bWluRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5n
KCksIHN0YXRpY19jYXN0PGZsb2F0PihtX3Njcm9sbGFibGVBcmVhLT52aXNpYmxlSGVpZ2h0KCkg
LSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSkpLCAxLjBmKTsKKyAgICAgICAg
ICAgICAgICBkZWx0YVkgPSBzdGQ6Om1heChzdGQ6Om1heChzdGF0aWNfY2FzdDxmbG9hdD4obV9z
Y3JvbGxhYmxlQXJlYS0+dmlzaWJsZUhlaWdodCgpKSAqIFNjcm9sbGJhcjo6bWluRnJhY3Rpb25U
b1N0ZXBXaGVuUGFnaW5nKCksIHN0YXRpY19jYXN0PGZsb2F0PihtX3Njcm9sbGFibGVBcmVhLT52
aXNpYmxlSGVpZ2h0KCkgLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSkpLCAx
LjBmKTsKICAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpCiAgICAgICAgICAgICAgICAgICAg
IGRlbHRhWSA9IC1kZWx0YVk7CiAgICAgICAgICAgICB9CkBAIC0xMTUsNyArMTEzLDcgQEAgYm9v
bCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIGUpCiAgICAgICAgIGlmIChkZWx0YVgpIHsKICAgICAgICAgICAgIGlmIChlLmdyYW51bGFy
aXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgewogICAgICAgICAgICAgICAgIGJvb2wg
bmVnYXRpdmUgPSBkZWx0YVggPCAwOwotICAgICAgICAgICAgICAgIGRlbHRhWCA9IG1heChtYXgo
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVXaWR0aCgpKSAqIFNj
cm9sbGJhcjo6bWluRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nKCksIHN0YXRpY19jYXN0PGZsb2F0
PihtX3Njcm9sbGFibGVBcmVhLT52aXNpYmxlV2lkdGgoKSAtIFNjcm9sbGJhcjo6bWF4T3Zlcmxh
cEJldHdlZW5QYWdlcygpKSksIDEuMGYpOworICAgICAgICAgICAgICAgIGRlbHRhWCA9IHN0ZDo6
bWF4KHN0ZDo6bWF4KHN0YXRpY19jYXN0PGZsb2F0PihtX3Njcm9sbGFibGVBcmVhLT52aXNpYmxl
V2lkdGgoKSkgKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBzdGF0
aWNfY2FzdDxmbG9hdD4obV9zY3JvbGxhYmxlQXJlYS0+dmlzaWJsZVdpZHRoKCkgLSBTY3JvbGxi
YXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSkpLCAxLjBmKTsKICAgICAgICAgICAgICAgICBp
ZiAobmVnYXRpdmUpCiAgICAgICAgICAgICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7CiAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IGJiYWUz
ZGU4OGYzYmRlM2Y2MDU5YmU0NWJhYzExODEyN2I0OGM3ZjguLmMyYzM4NTcwZWZhYTE0NTY2MjEw
NjA2YjA0ZGIwNTgwMzU2OTE0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwCkBAIC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogU2Nyb2xsVmlldzo6U2Nyb2xsVmlldygpCkBAIC0yNTYsOCArMjU0
LDggQEAgSW50U2l6ZSBTY3JvbGxWaWV3Ojp1bnNjYWxlZFZpc2libGVDb250ZW50U2l6ZShWaXNp
YmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGIKICAgICAgICAgICAgIGhvcml6b250YWxTY3Jv
bGxiYXJIZWlnaHQgPSAhaG9yaXpvbnRhbEJhci0+aXNPdmVybGF5U2Nyb2xsYmFyKCkgPyBob3Jp
em9udGFsQmFyLT5oZWlnaHQoKSA6IDA7CiAgICAgfQogCi0gICAgcmV0dXJuIEludFNpemUobWF4
KDAsIHdpZHRoKCkgLSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKSwKLSAgICAgICAgICAgICAgICAg
ICBtYXgoMCwgaGVpZ2h0KCkgLSBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KSk7CisgICAgcmV0
dXJuIEludFNpemUoc3RkOjptYXgoMCwgd2lkdGgoKSAtIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgp
LAorICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIGhlaWdodCgpIC0gaG9yaXpvbnRhbFNj
cm9sbGJhckhlaWdodCkpOwogfQogCiAjaWYgIVBMQVRGT1JNKEdUSykKQEAgLTM4Nyw4ICszODUs
OCBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9mZnNldChjb25zdCBJbnRQb2ludCYgb2Zm
c2V0KQogICAgIGludCBob3Jpem9udGFsT2Zmc2V0ID0gb2Zmc2V0LngoKTsKICAgICBpbnQgdmVy
dGljYWxPZmZzZXQgPSBvZmZzZXQueSgpOwogICAgIGlmIChjb25zdHJhaW5zU2Nyb2xsaW5nVG9D
b250ZW50RWRnZSgpKSB7Ci0gICAgICAgIGhvcml6b250YWxPZmZzZXQgPSBtYXgobWluKGhvcml6
b250YWxPZmZzZXQsIGNvbnRlbnRzV2lkdGgoKSAtIHZpc2libGVXaWR0aCgpKSwgMCk7Ci0gICAg
ICAgIHZlcnRpY2FsT2Zmc2V0ID0gbWF4KG1pbih2ZXJ0aWNhbE9mZnNldCwgdG90YWxDb250ZW50
c1NpemUoKS5oZWlnaHQoKSAtIHZpc2libGVIZWlnaHQoKSksIDApOworICAgICAgICBob3Jpem9u
dGFsT2Zmc2V0ID0gc3RkOjptYXgoc3RkOjptaW4oaG9yaXpvbnRhbE9mZnNldCwgY29udGVudHNX
aWR0aCgpIC0gdmlzaWJsZVdpZHRoKCkpLCAwKTsKKyAgICAgICAgdmVydGljYWxPZmZzZXQgPSBz
dGQ6Om1heChzdGQ6Om1pbih2ZXJ0aWNhbE9mZnNldCwgdG90YWxDb250ZW50c1NpemUoKS5oZWln
aHQoKSAtIHZpc2libGVIZWlnaHQoKSksIDApOwogICAgIH0KIAogICAgIEludFNpemUgbmV3T2Zm
c2V0ID0gbV9zY3JvbGxPZmZzZXQ7CkBAIC02MjMsNyArNjIxLDcgQEAgdm9pZCBTY3JvbGxWaWV3
Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IEludFNpemUmIGRlc2lyZWRPZmZzZXQpCiAKICAgICBp
ZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0aCA9IHZp
c2libGVXaWR0aCgpOwotICAgICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgobWF4PGludD4oY2xpZW50
V2lkdGggKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBjbGllbnRX
aWR0aCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpKSwgMSk7CisgICAgICAg
IGludCBwYWdlU3RlcCA9IHN0ZDo6bWF4KHN0ZDo6bWF4PGludD4oY2xpZW50V2lkdGggKiBTY3Jv
bGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBjbGllbnRXaWR0aCAtIFNjcm9s
bGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpKSwgMSk7CiAgICAgICAgIEludFJlY3Qgb2xk
UmVjdChtX2hvcml6b250YWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKICAgICAgICAgSW50UmVj
dCBoQmFyUmVjdCgwLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KCkgLSBtX2hvcml6
b250YWxTY3JvbGxiYXItPmhlaWdodCgpLApAQCAtNjQ0LDcgKzY0Miw3IEBAIHZvaWQgU2Nyb2xs
Vmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBJbnRTaXplJiBkZXNpcmVkT2Zmc2V0KQogCiAg
ICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50IGNsaWVudEhlaWdodCA9
IHZpc2libGVIZWlnaHQoKTsKLSAgICAgICAgaW50IHBhZ2VTdGVwID0gbWF4KG1heDxpbnQ+KGNs
aWVudEhlaWdodCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5nKCksIGNs
aWVudEhlaWdodCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpKSwgMSk7Cisg
ICAgICAgIGludCBwYWdlU3RlcCA9IHN0ZDo6bWF4KHN0ZDo6bWF4PGludD4oY2xpZW50SGVpZ2h0
ICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcoKSwgY2xpZW50SGVpZ2h0
IC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkpLCAxKTsKICAgICAgICAgSW50
UmVjdCBvbGRSZWN0KG1fdmVydGljYWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKICAgICAgICAg
SW50UmVjdCB2QmFyUmVjdCh3aWR0aCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSwg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKQEAgLTcyNCw3ICs3MjIsNyBAQCB2b2lkIFNj
cm9sbFZpZXc6OnNjcm9sbENvbnRlbnRzKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQogICAg
IGlmIChtX2RyYXdQYW5TY3JvbGxJY29uKSB7CiAgICAgICAgIC8vIEZJWE1FOiB0aGUgcGFuIGlj
b24gaXMgYnJva2VuIHdoZW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgb24sIHNpbmNlIGl0
IHdpbGwgZHJhdyB1bmRlciB0aGUgY29tcG9zaXRpbmcgbGF5ZXJzLgogICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc4MzcKLSAgICAgICAgaW50IHBh
bkljb25EaXJ0eVNxdWFyZVNpemVMZW5ndGggPSAyICogKHBhbkljb25TaXplTGVuZ3RoICsgbWF4
KGFicyhzY3JvbGxEZWx0YS53aWR0aCgpKSwgYWJzKHNjcm9sbERlbHRhLmhlaWdodCgpKSkpOyAv
LyBXZSBvbmx5IHdhbnQgdG8gcmVwYWludCB3aGF0J3MgbmVjZXNzYXJ5CisgICAgICAgIGludCBw
YW5JY29uRGlydHlTcXVhcmVTaXplTGVuZ3RoID0gMiAqIChwYW5JY29uU2l6ZUxlbmd0aCArIHN0
ZDo6bWF4KGFicyhzY3JvbGxEZWx0YS53aWR0aCgpKSwgYWJzKHNjcm9sbERlbHRhLmhlaWdodCgp
KSkpOyAvLyBXZSBvbmx5IHdhbnQgdG8gcmVwYWludCB3aGF0J3MgbmVjZXNzYXJ5CiAgICAgICAg
IEludFBvaW50IHBhbkljb25EaXJ0eVNxdWFyZUxvY2F0aW9uID0gSW50UG9pbnQobV9wYW5TY3Jv
bGxJY29uUG9pbnQueCgpIC0gKHBhbkljb25EaXJ0eVNxdWFyZVNpemVMZW5ndGggLyAyKSwgbV9w
YW5TY3JvbGxJY29uUG9pbnQueSgpIC0gKHBhbkljb25EaXJ0eVNxdWFyZVNpemVMZW5ndGggLyAy
KSk7CiAgICAgICAgIEludFJlY3QgcGFuU2Nyb2xsSWNvbkRpcnR5UmVjdCA9IEludFJlY3QocGFu
SWNvbkRpcnR5U3F1YXJlTG9jYXRpb24sIEludFNpemUocGFuSWNvbkRpcnR5U3F1YXJlU2l6ZUxl
bmd0aCwgcGFuSWNvbkRpcnR5U3F1YXJlU2l6ZUxlbmd0aCkpOwogICAgICAgICBwYW5TY3JvbGxJ
Y29uRGlydHlSZWN0LmludGVyc2VjdChjbGlwUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyLmNwcAppbmRleCA1NTA1NjBlNjViYTJjZmRhYmNlYjgxZDA0NGVjMGZmYmQ4MTE5NDM0
Li45ZTRhNjNiMTE3Mjc4ZjNjN2YzYjBkNTMyODEzOTc3NWI2ZDBjYmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJTY3Jv
bGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKLQogI2lmIFBMQVRGT1JNKEdUSykKIC8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgc2Nyb2xsYmFy
IHRodW1iIGFmZmVjdHMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIHN0ZXBwZXJzLCBzbwogLy8gd2hl
biB0aGUgdGh1bWIgbW92ZXMsIHdlIGhhdmUgdG8gaW52YWxpZGF0ZSB0aGVtIGZvciBwYWludGlu
Zy4KQEAgLTI4Miw5ICsyODAsOSBAQCB2b2lkIFNjcm9sbGJhcjo6bW92ZVRodW1iKGludCBwb3Ms
IGJvb2wgZHJhZ2dpbmdEb2N1bWVudCkKICAgICAgICAgRmxvYXRQb2ludCBjdXJyZW50UG9zaXRp
b24gPSBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxBbmltYXRvcigpLT5jdXJyZW50UG9zaXRpb24o
KTsKICAgICAgICAgaW50IGRlc3RpbmF0aW9uUG9zaXRpb24gPSAobV9vcmllbnRhdGlvbiA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyID8gY3VycmVudFBvc2l0aW9uLngoKSA6IGN1cnJlbnRQb3NpdGlv
bi55KCkpICsgZGVsdGE7CiAgICAgICAgIGlmIChkZWx0YSA+IDApCi0gICAgICAgICAgICBkZXN0
aW5hdGlvblBvc2l0aW9uID0gbWluKGRlc3RpbmF0aW9uUG9zaXRpb24gKyBkZWx0YSwgbWF4aW11
bSgpKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uUG9zaXRpb24gPSBzdGQ6Om1pbihkZXN0aW5h
dGlvblBvc2l0aW9uICsgZGVsdGEsIG1heGltdW0oKSk7CiAgICAgICAgIGVsc2UgaWYgKGRlbHRh
IDwgMCkKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uUG9zaXRpb24gPSBtYXgoZGVzdGluYXRpb25Q
b3NpdGlvbiArIGRlbHRhLCAwKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uUG9zaXRpb24gPSBz
dGQ6Om1heChkZXN0aW5hdGlvblBvc2l0aW9uICsgZGVsdGEsIDApOwogICAgICAgICBtX3Njcm9s
bGFibGVBcmVhLT5zY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24obV9vcmllbnRhdGlvbiwg
ZGVzdGluYXRpb25Qb3NpdGlvbik7CiAgICAgICAgIG1fZG9jdW1lbnREcmFnUG9zID0gcG9zOwog
ICAgICAgICByZXR1cm47CkBAIC0zMDEsOSArMjk5LDkgQEAgdm9pZCBTY3JvbGxiYXI6Om1vdmVU
aHVtYihpbnQgcG9zLCBib29sIGRyYWdnaW5nRG9jdW1lbnQpCiAgICAgaW50IHRyYWNrTGVuID0g
dGhlbWUoKS0+dHJhY2tMZW5ndGgodGhpcyk7CiAgICAgaW50IG1heFBvcyA9IHRyYWNrTGVuIC0g
dGh1bWJMZW47CiAgICAgaWYgKGRlbHRhID4gMCkKLSAgICAgICAgZGVsdGEgPSBtaW4obWF4UG9z
IC0gdGh1bWJQb3MsIGRlbHRhKTsKKyAgICAgICAgZGVsdGEgPSBzdGQ6Om1pbihtYXhQb3MgLSB0
aHVtYlBvcywgZGVsdGEpOwogICAgIGVsc2UgaWYgKGRlbHRhIDwgMCkKLSAgICAgICAgZGVsdGEg
PSBtYXgoLXRodW1iUG9zLCBkZWx0YSk7CisgICAgICAgIGRlbHRhID0gc3RkOjptYXgoLXRodW1i
UG9zLCBkZWx0YSk7CiAgICAgCiAgICAgaWYgKGRlbHRhKSB7CiAgICAgICAgIGZsb2F0IG5ld1Bv
c2l0aW9uID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRodW1iUG9zICsgZGVsdGEpICogbWF4aW11bSgp
IC8gKHRyYWNrTGVuIC0gdGh1bWJMZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmluZGV4IDUyM2IwYWFmYTgxYWI5NTBlZjRm
MWFhM2NlMTI1ODFjYmYzMzk5MjAuLmEwZmVmNzRlMGE5NjdiNTBlN2FhNWFhMWUwNTBiMmM1NzZh
MWM3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1l
Q29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5jcHAKQEAgLTI5LDggKzI5LDYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNsaWVudC5oIgogCi11c2luZyBuYW1lc3Bh
Y2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQpAQCAtMjE0
LDcgKzIxMiw3IEBAIHN0YXRpYyBmbG9hdCB1c2VkVG90YWxTaXplKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgZmxvYXQgb3ZlcmhhbmdBdFN0YXJ0ID0gLXNjcm9sbGJh
ci0+Y3VycmVudFBvcygpOwogICAgIGZsb2F0IG92ZXJoYW5nQXRFbmQgPSBzY3JvbGxiYXItPmN1
cnJlbnRQb3MoKSArIHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSAtIHNjcm9sbGJhci0+dG90YWxT
aXplKCk7Ci0gICAgZmxvYXQgb3ZlcmhhbmcgPSBtYXgoMC4wZiwgbWF4KG92ZXJoYW5nQXRTdGFy
dCwgb3ZlcmhhbmdBdEVuZCkpOworICAgIGZsb2F0IG92ZXJoYW5nID0gc3RkOjptYXgoMC4wZiwg
c3RkOjptYXgob3ZlcmhhbmdBdFN0YXJ0LCBvdmVyaGFuZ0F0RW5kKSk7CiAgICAgcmV0dXJuIHNj
cm9sbGJhci0+dG90YWxTaXplKCkgKyBvdmVyaGFuZzsKIH0KIApAQCAtMjI1LDcgKzIyMyw3IEBA
IGludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQogICAgICAgICAvLyBBdm9pZCBkb2luZyBhIGZsb2F0aW5nIHBv
aW50IGRpdmlkZSBieSB6ZXJvIGFuZCByZXR1cm4gMSB3aGVuIHVzZWRUb3RhbFNpemUgPT0gdmlz
aWJsZVNpemUuCiAgICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICBmbG9hdCBwb3MgPSBtYXgoMC4wZiwgc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkpICogKHRy
YWNrTGVuZ3RoKHNjcm9sbGJhcikgLSB0aHVtYkxlbmd0aChzY3JvbGxiYXIpKSAvIHNpemU7Cisg
ICAgICAgIGZsb2F0IHBvcyA9IHN0ZDo6bWF4KDAuMGYsIHNjcm9sbGJhci0+Y3VycmVudFBvcygp
KSAqICh0cmFja0xlbmd0aChzY3JvbGxiYXIpIC0gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSkgLyBz
aXplOwogICAgICAgICByZXR1cm4gKHBvcyA8IDEgJiYgcG9zID4gMCkgPyAxIDogcG9zOwogICAg
IH0KICAgICByZXR1cm4gMDsKQEAgLTIzOSw3ICsyMzcsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiAg
ICAgZmxvYXQgcHJvcG9ydGlvbiA9IHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSAvIHVzZWRUb3Rh
bFNpemUoc2Nyb2xsYmFyKTsKICAgICBpbnQgdHJhY2tMZW4gPSB0cmFja0xlbmd0aChzY3JvbGxi
YXIpOwogICAgIGludCBsZW5ndGggPSByb3VuZChwcm9wb3J0aW9uICogdHJhY2tMZW4pOwotICAg
IGxlbmd0aCA9IG1heChsZW5ndGgsIG1pbmltdW1UaHVtYkxlbmd0aChzY3JvbGxiYXIpKTsKKyAg
ICBsZW5ndGggPSBzdGQ6Om1heChsZW5ndGgsIG1pbmltdW1UaHVtYkxlbmd0aChzY3JvbGxiYXIp
KTsKICAgICBpZiAobGVuZ3RoID4gdHJhY2tMZW4pCiAgICAgICAgIGxlbmd0aCA9IDA7IC8vIE9u
Y2UgdGhlIHRodW1iIGlzIGJlbG93IHRoZSB0cmFjayBsZW5ndGgsIGl0IGp1c3QgZ29lcyBhd2F5
ICh0byBtYWtlIG1vcmUgcm9vbSBmb3IgdGhlIHRyYWNrKS4KICAgICByZXR1cm4gbGVuZ3RoOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNTU4N2FhM2Q2NWUz
MTM3NTg3ZjI0NGJmYWE3Mzc2OTY4NjM5ZWEwOC4uYTVkOTU1YmRjMjc5YWMwYWJlMDRlYjFkNjIy
NWU3OGEwZTMwYWNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGVJT1MuaCIKICNlbmRp
ZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBzZWdtZW50U2l6ZSA9IDB4MTAwMDsKQEAgLTMwNSw3ICszMDMsNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKICAgICAgICAgc2VnbWVudCA9IG1fc2VnbWVudHMubGFzdCgpICsgcG9zaXRpb25JblNl
Z21lbnQ7CiAKICAgICB1bnNpZ25lZCBzZWdtZW50RnJlZVNwYWNlID0gc2VnbWVudFNpemUgLSBw
b3NpdGlvbkluU2VnbWVudDsKLSAgICB1bnNpZ25lZCBieXRlc1RvQ29weSA9IG1pbihsZW5ndGgs
IHNlZ21lbnRGcmVlU3BhY2UpOworICAgIHVuc2lnbmVkIGJ5dGVzVG9Db3B5ID0gc3RkOjptaW4o
bGVuZ3RoLCBzZWdtZW50RnJlZVNwYWNlKTsKIAogICAgIGZvciAoOzspIHsKICAgICAgICAgbWVt
Y3B5KHNlZ21lbnQsIGRhdGEsIGJ5dGVzVG9Db3B5KTsKQEAgLTMxNiw3ICszMTQsNyBAQCB2b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICAgICAgZGF0YSArPSBieXRlc1RvQ29weTsKICAgICAgICAgc2VnbWVudCA9IGFsbG9jYXRl
U2VnbWVudCgpOwogICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZChzZWdtZW50KTsKLSAgICAgICAg
Ynl0ZXNUb0NvcHkgPSBtaW4obGVuZ3RoLCBzZWdtZW50U2l6ZSk7CisgICAgICAgIGJ5dGVzVG9D
b3B5ID0gc3RkOjptaW4obGVuZ3RoLCBzZWdtZW50U2l6ZSk7CiAgICAgfQogI2Vsc2UKICAgICBt
X3NpemUgKz0gbGVuZ3RoOwpAQCAtMzgwLDcgKzM3OCw3IEBAIFBhc3NPd25QdHI8UHVyZ2VhYmxl
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnJlbGVhc2VQdXJnZWFibGVCdWZmZXIoKQogdm9pZCBTaGFy
ZWRCdWZmZXI6OmNvcHlCdWZmZXJBbmRDbGVhcihjaGFyKiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
Ynl0ZXNUb0NvcHkpIGNvbnN0CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2Vn
bWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgdW5zaWduZWQgZWZmZWN0aXZlQnl0ZXNUb0Nv
cHkgPSBtaW4oYnl0ZXNUb0NvcHksIHNlZ21lbnRTaXplKTsKKyAgICAgICAgdW5zaWduZWQgZWZm
ZWN0aXZlQnl0ZXNUb0NvcHkgPSBzdGQ6Om1pbihieXRlc1RvQ29weSwgc2VnbWVudFNpemUpOwog
ICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIG1fc2VnbWVudHNbaV0sIGVmZmVjdGl2ZUJ5dGVz
VG9Db3B5KTsKICAgICAgICAgZGVzdGluYXRpb24gKz0gZWZmZWN0aXZlQnl0ZXNUb0NvcHk7CiAg
ICAgICAgIGJ5dGVzVG9Db3B5IC09IGVmZmVjdGl2ZUJ5dGVzVG9Db3B5OwpAQCAtNDQwLDcgKzQz
OCw3IEBAIHVuc2lnbmVkIFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoY29uc3QgY2hhciomIHNv
bWVEYXRhLCB1bnNpZ25lZCBwb3NpdGlvbikgY29uCiAgICAgdW5zaWduZWQgc2VnbWVudCA9IHNl
Z21lbnRJbmRleChwb3NpdGlvbik7CiAgICAgaWYgKHNlZ21lbnQgPCBzZWdtZW50cykgewogICAg
ICAgICB1bnNpZ25lZCBieXRlc0xlZnQgPSB0b3RhbFNpemUgLSBjb25zZWN1dGl2ZVNpemU7Ci0g
ICAgICAgIHVuc2lnbmVkIHNlZ21lbnRlZFNpemUgPSBtaW4obWF4U2VnbWVudGVkU2l6ZSwgYnl0
ZXNMZWZ0KTsKKyAgICAgICAgdW5zaWduZWQgc2VnbWVudGVkU2l6ZSA9IHN0ZDo6bWluKG1heFNl
Z21lbnRlZFNpemUsIGJ5dGVzTGVmdCk7CiAKICAgICAgICAgdW5zaWduZWQgcG9zaXRpb25JblNl
Z21lbnQgPSBvZmZzZXRJblNlZ21lbnQocG9zaXRpb24pOwogICAgICAgICBzb21lRGF0YSA9IG1f
c2VnbWVudHNbc2VnbWVudF0gKyBwb3NpdGlvbkluU2VnbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCmluZGV4IDg1MjBkNzc5MWVlZjM0ZjdjNWJmY2Q3Njg3Njcw
MGU2NzM4NmM4ODEuLjg0NjQ0MGZmMjVkY2IyZTM0NzlmNTRlZTIzYjYwMzE2OGM1NmE0ZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcApAQCAtMzMsOCArMzMsNiBA
QAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
RmlyZSB0aW1lcnMgZm9yIHRoaXMgbGVuZ3RoIG9mIHRpbWUsIGFuZCB0aGVuIHF1aXQgdG8gbGV0
IHRoZSBydW4gbG9vcCBwcm9jZXNzIHVzZXIgaW5wdXQgZXZlbnRzLgpAQCAtOTUsNyArOTMsNyBA
QCB2b2lkIFRocmVhZFRpbWVyczo6dXBkYXRlU2hhcmVkVGltZXIoKQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfSAKICAgICAgICAgbV9wZW5kaW5nU2hhcmVkVGltZXJGaXJlVGlt
ZSA9IG5leHRGaXJlVGltZTsKLSAgICAgICAgbV9zaGFyZWRUaW1lci0+c2V0RmlyZUludGVydmFs
KG1heChuZXh0RmlyZVRpbWUgLSBjdXJyZW50TW9ub3RvbmljVGltZSwgMC4wKSk7CisgICAgICAg
IG1fc2hhcmVkVGltZXItPnNldEZpcmVJbnRlcnZhbChzdGQ6Om1heChuZXh0RmlyZVRpbWUgLSBj
dXJyZW50TW9ub3RvbmljVGltZSwgMC4wKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aW1lci5jcHAKaW5kZXggNGExNjBhMzFmYWE4NmJhZjQxOGMyZjNjNjAwNDk4ZmExNTZiOGVkZS4u
MzFhNDA1ZDcwMGRlM2QxOTdlNWZkYjExNTRkYmJmZTE2OWQ2ZDhhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RpbWVyLmNwcApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRpbWVySGVhcFJlZmVyZW5jZTsKQEAgLTEwOCw3ICsx
MDYsNyBAQCBpbmxpbmUgdm9pZCBzd2FwKFRpbWVySGVhcFJlZmVyZW5jZSBhLCBUaW1lckhlYXBS
ZWZlcmVuY2UgYikKIAogLy8gQ2xhc3MgdG8gcmVwcmVzZW50IGl0ZXJhdG9ycyBpbiB0aGUgaGVh
cCB3aGVuIGNhbGxpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaGVhcCBhbGdvcml0aG1zLgogLy8g
VXNlcyBhIGN1c3RvbSBwb2ludGVyIGFuZCByZWZlcmVuY2UgdHlwZSB0aGF0IHVwZGF0ZSBpbmRp
Y2VzIGZvciBwb2ludGVycyBpbiB0aGUgaGVhcC4KLWNsYXNzIFRpbWVySGVhcEl0ZXJhdG9yIDog
cHVibGljIGl0ZXJhdG9yPHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBUaW1lckJhc2UqLCBw
dHJkaWZmX3QsIFRpbWVySGVhcFBvaW50ZXIsIFRpbWVySGVhcFJlZmVyZW5jZT4geworY2xhc3Mg
VGltZXJIZWFwSXRlcmF0b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OnJhbmRvbV9hY2Nl
c3NfaXRlcmF0b3JfdGFnLCBUaW1lckJhc2UqLCBwdHJkaWZmX3QsIFRpbWVySGVhcFBvaW50ZXIs
IFRpbWVySGVhcFJlZmVyZW5jZT4gewogcHVibGljOgogICAgIGV4cGxpY2l0IFRpbWVySGVhcEl0
ZXJhdG9yKFRpbWVyQmFzZSoqIHBvaW50ZXIpIDogbV9wb2ludGVyKHBvaW50ZXIpIHsgY2hlY2tD
b25zaXN0ZW5jeSgpOyB9CiAKQEAgLTE4Miw3ICsxODAsNyBAQCBpbmxpbmUgYm9vbCBUaW1lckhl
YXBMZXNzVGhhbkZ1bmN0aW9uOjpvcGVyYXRvcigpKGNvbnN0IFRpbWVyQmFzZSogYSwgY29uc3Qg
VGltZQogICAgIC8vIFdlIG5lZWQgdG8gbG9vayBhdCB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgaW5z
ZXJ0aW9uIG9yZGVycyBpbnN0ZWFkIG9mIGNvbXBhcmluZyB0aGUgdHdvIAogICAgIC8vIG91dHJp
Z2h0IGluIGNhc2Ugb2Ygb3ZlcmZsb3cuIAogICAgIHVuc2lnbmVkIGRpZmZlcmVuY2UgPSBhLT5t
X2hlYXBJbnNlcnRpb25PcmRlciAtIGItPm1faGVhcEluc2VydGlvbk9yZGVyOwotICAgIHJldHVy
biBkaWZmZXJlbmNlIDwgbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIDI7CisgICAg
cmV0dXJuIGRpZmZlcmVuY2UgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkg
LyAyOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tCkBAIC0yOTksNyArMjk3LDcgQEAgaW5saW5l
IHZvaWQgVGltZXJCYXNlOjpoZWFwUG9wKCkKIHsKICAgICAvLyBUZW1wb3JhcmlseSBmb3JjZSB0
aGlzIHRpbWVyIHRvIGhhdmUgdGhlIG1pbmltdW0ga2V5IHNvIHdlIGNhbiBwb3AgaXQuCiAgICAg
ZG91YmxlIGZpcmVUaW1lID0gbV9uZXh0RmlyZVRpbWU7Ci0gICAgbV9uZXh0RmlyZVRpbWUgPSAt
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICBtX25leHRGaXJlVGltZSA9
IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CiAgICAgaGVhcERlY3Jl
YXNlS2V5KCk7CiAgICAgaGVhcFBvcE1pbigpOwogICAgIG1fbmV4dEZpcmVUaW1lID0gZmlyZVRp
bWU7CkBAIC00MTUsNyArNDEzLDcgQEAgdm9pZCBUaW1lckJhc2U6OmRpZENoYW5nZUFsaWdubWVu
dEludGVydmFsKCkKIGRvdWJsZSBUaW1lckJhc2U6Om5leHRVbmFsaWduZWRGaXJlSW50ZXJ2YWwo
KSBjb25zdAogewogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKLSAgICByZXR1cm4gbWF4KG1fdW5h
bGlnbmVkTmV4dEZpcmVUaW1lIC0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCksIDAuMCk7
CisgICAgcmV0dXJuIHN0ZDo6bWF4KG1fdW5hbGlnbmVkTmV4dEZpcmVUaW1lIC0gbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCksIDAuMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuY3BwCmluZGV4IGE0ZTQxMTEyOWQ1ZjQ3YTRkYzIxMGFlODE2ODk2
NTUwMWNhNjQzYWIuLjQ2YWJiODBhYWM1ZmIzZmExMGI3YzkzZWU5MWIxYzlkMTZkZTQ0MGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMLmNwcApAQCAtNDYsNyArNDYsNiBAQAogLy8gV2UgZWl0aGVyIGhh
dmUgdG8gb3B0aW1pemUgdGhhdCBvcGVyYXRvciBzbyBpdCBkb2Vzbid0IGludm9sdmUKIC8vIHNv
IG1hbnkgYWxsb2NhdGlvbnMsIG9yIGNoYW5nZSB0aGlzIHRvIHVzZSBTdHJpbmdCdWZmZXIgaW5z
dGVhZC4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1MzIsNyArMTUzMSw3IEBAIHN0YXRpYyB2b2lkIGZpbmRI
b3N0bmFtZXNJbk1haWxUb1VSTChjb25zdCBVQ2hhciogc3RyLCBpbnQgc3RyTGVuLCBWZWN0b3I8
cGFpcjxpCiAgICAgICAgICAgICAgICAgZG9uZSA9IGZhbHNlOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBuYW1lUmFuZ2VzLmFwcGVuZChtYWtlX3BhaXIoaG9zdG5hbWVTdGFydCwgaG9z
dG5hbWVFbmQpKTsKKyAgICAgICAgICAgIG5hbWVSYW5nZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KGhvc3RuYW1lU3RhcnQsIGhvc3RuYW1lRW5kKSk7CiAKICAgICAgICAgICAgIGlmIChkb25lKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4NzcsNyArMTg3Niw3IEBAIGJvb2wgcG9ydEFs
bG93ZWQoY29uc3QgVVJMJiB1cmwpCiAjZW5kaWYKIAogICAgIC8vIElmIHRoZSBwb3J0IGlzIG5v
dCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgotICAgIGlmICghYmluYXJ5X3Nl
YXJjaChibG9ja2VkUG9ydExpc3QsIGJsb2NrZWRQb3J0TGlzdEVuZCwgcG9ydCkpCisgICAgaWYg
KCFzdGQ6OmJpbmFyeV9zZWFyY2goYmxvY2tlZFBvcnRMaXN0LCBibG9ja2VkUG9ydExpc3RFbmQs
IHBvcnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEFsbG93IHBvcnRzIDIxIGFu
ZCAyMiBmb3IgRlRQIFVSTHMsIGFzIE1vemlsbGEgZG9lcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcAppbmRleCBmMDQxZTMyOWJkNjA4NmFl
YjA0ODgxMmU5YmYzOTJlYWQxYTJiMjY1Li41OWYyYjM3NTRmYmU4MDczMDc5MjA0NTYwMjZkM2Iy
NDMyNGUxNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b1Jlc2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9S
ZXNhbXBsZXIuY3BwCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGRvdWJsZSBBdWRpb1Jlc2FtcGxlcjo6TWF4UmF0ZSA9
IDguMDsKQEAgLTExMyw3ICsxMTEsNyBAQCB2b2lkIEF1ZGlvUmVzYW1wbGVyOjpzZXRSYXRlKGRv
dWJsZSByYXRlKQogICAgIGlmIChzdGQ6OmlzbmFuKHJhdGUpIHx8IHN0ZDo6aXNpbmYocmF0ZSkg
fHwgcmF0ZSA8PSAwLjApCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3JhdGUgPSBtaW4o
QXVkaW9SZXNhbXBsZXI6Ok1heFJhdGUsIHJhdGUpOworICAgIG1fcmF0ZSA9IHN0ZDo6bWluKEF1
ZGlvUmVzYW1wbGVyOjpNYXhSYXRlLCByYXRlKTsKIH0KIAogdm9pZCBBdWRpb1Jlc2FtcGxlcjo6
cmVzZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9S
ZXNhbXBsZXJLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9S
ZXNhbXBsZXJLZXJuZWwuY3BwCmluZGV4IDdiOTk5OTdlNTEyYjkxYzU5Y2M2Zjg4NWQyNTIyYTgw
NTE1YTU1ZmIuLjg2YThlYjUxMDJkYjhlY2ZkNDczZGY3MTE0ZDdjNzJlNTc4NDc2ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktl
cm5lbC5jcHAKQEAgLTMxLDggKzMxLDYgQEAKICNpbmNsdWRlICJBdWRpb1Jlc2FtcGxlci5oIgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogY29uc3Qgc2l6ZV90IEF1ZGlvUmVzYW1wbGVyS2VybmVsOjpNYXhG
cmFtZXNUb1Byb2Nlc3MgPSAxMjg7CkBAIC04MCw4ICs3OCw4IEBAIHZvaWQgQXVkaW9SZXNhbXBs
ZXJLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKQogICAgIGZsb2F0KiBzb3VyY2UgPSBtX3NvdXJjZUJ1ZmZlci5kYXRhKCk7CiAgICAgCiAg
ICAgZG91YmxlIHJhdGUgPSB0aGlzLT5yYXRlKCk7Ci0gICAgcmF0ZSA9IG1heCgwLjAsIHJhdGUp
OwotICAgIHJhdGUgPSBtaW4oQXVkaW9SZXNhbXBsZXI6Ok1heFJhdGUsIHJhdGUpOworICAgIHJh
dGUgPSBzdGQ6Om1heCgwLjAsIHJhdGUpOworICAgIHJhdGUgPSBzdGQ6Om1pbihBdWRpb1Jlc2Ft
cGxlcjo6TWF4UmF0ZSwgcmF0ZSk7CiAgICAgCiAgICAgLy8gU3RhcnQgb3V0IHdpdGggdGhlIHBy
ZXZpb3VzIHNhdmVkIHZhbHVlcyAoaWYgYW55KS4KICAgICBpZiAobV9maWxsSW5kZXggPiAwKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5jcHAKaW5kZXggZjNkOTg3
MzJmOTViYTExYWE1MTI1ZjdmNzcwMzdhZmQyNjIxYzYyYS4uYzdhNjQ1NzRiMTAzZjM3MjU4MTNl
NjFmMDBiNTllYTM4ZmMzZDYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRGlzdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rp
c3RhbmNlLmNwcApAQCAtMzUsOCArMzUsNiBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNs
dWRlIDxtYXRoLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogRGlzdGFuY2VFZmZlY3Q6OkRpc3RhbmNlRWZmZWN0KCkKQEAgLTUxLDExICs0OSwxMSBA
QCBEaXN0YW5jZUVmZmVjdDo6RGlzdGFuY2VFZmZlY3QoKQogZG91YmxlIERpc3RhbmNlRWZmZWN0
OjpnYWluKGRvdWJsZSBkaXN0YW5jZSkKIHsKICAgICAvLyBkb24ndCBnbyBiZXlvbmQgbWF4aW11
bSBkaXN0YW5jZQotICAgIGRpc3RhbmNlID0gbWluKGRpc3RhbmNlLCBtX21heERpc3RhbmNlKTsK
KyAgICBkaXN0YW5jZSA9IHN0ZDo6bWluKGRpc3RhbmNlLCBtX21heERpc3RhbmNlKTsKIAogICAg
IC8vIGlmIGNsYW1wZWQsIGRvbid0IGdldCBjbG9zZXIgdGhhbiByZWZlcmVuY2UgZGlzdGFuY2UK
ICAgICBpZiAobV9pc0NsYW1wZWQpCi0gICAgICAgIGRpc3RhbmNlID0gbWF4KGRpc3RhbmNlLCBt
X3JlZkRpc3RhbmNlKTsKKyAgICAgICAgZGlzdGFuY2UgPSBzdGQ6Om1heChkaXN0YW5jZSwgbV9y
ZWZEaXN0YW5jZSk7CiAKICAgICBzd2l0Y2ggKG1fbW9kZWwpIHsKICAgICBjYXNlIE1vZGVsTGlu
ZWFyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbC5jcHAKaW5kZXggNGFiZThlNzNlZjRmOGFmMjZjMmM1YzI1YTll
NWZjZmM2OTcxYWQ3Ni4uYjU3ZTcxZmI5MzgwNDFmYjA3ZTNmMDJjMDYzMjczYmU0ZGM3N2JkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuY3BwCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEF1ZGlvVXRpbGl0aWVz
OwpAQCAtMjQwLDcgKzIzOCw3IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yS2VybmVsOjpwcm9j
ZXNzKGZsb2F0KiBzb3VyY2VDaGFubmVsc1tdLAogICAgIGZsb2F0IG1hc3RlckxpbmVhckdhaW4g
PSBkZWNpYmVsc1RvTGluZWFyKGRiUG9zdEdhaW4pICogZnVsbFJhbmdlTWFrZXVwR2FpbjsKIAog
ICAgIC8vIEF0dGFjayBwYXJhbWV0ZXJzLgotICAgIGF0dGFja1RpbWUgPSBtYXgoMC4wMDFmLCBh
dHRhY2tUaW1lKTsKKyAgICBhdHRhY2tUaW1lID0gc3RkOjptYXgoMC4wMDFmLCBhdHRhY2tUaW1l
KTsKICAgICBmbG9hdCBhdHRhY2tGcmFtZXMgPSBhdHRhY2tUaW1lICogc2FtcGxlUmF0ZTsKIAog
ICAgIC8vIFJlbGVhc2UgcGFyYW1ldGVycy4KQEAgLTMyMyw4ICszMjEsOCBAQCB2b2lkIER5bmFt
aWNzQ29tcHJlc3Nvcktlcm5lbDo6cHJvY2VzcyhmbG9hdCogc291cmNlQ2hhbm5lbHNbXSwKIAog
ICAgICAgICAgICAgLy8gQ29udGFpbiB3aXRoaW4gcmFuZ2U6IC0xMiAtPiAwIHRoZW4gc2NhbGUg
dG8gZ28gZnJvbSAwIC0+IDMKICAgICAgICAgICAgIGZsb2F0IHggPSBjb21wcmVzc2lvbkRpZmZE
YjsKLSAgICAgICAgICAgIHggPSBtYXgoLTEyLjBmLCB4KTsKLSAgICAgICAgICAgIHggPSBtaW4o
MC4wZiwgeCk7CisgICAgICAgICAgICB4ID0gc3RkOjptYXgoLTEyLjBmLCB4KTsKKyAgICAgICAg
ICAgIHggPSBzdGQ6Om1pbigwLjBmLCB4KTsKICAgICAgICAgICAgIHggPSAwLjI1ZiAqICh4ICsg
MTIpOwogCiAgICAgICAgICAgICAvLyBDb21wdXRlIGFkYXB0aXZlIHJlbGVhc2UgY3VydmUgdXNp
bmcgNHRoIG9yZGVyIHBvbHlub21pYWwuCkBAIC0zNTIsNyArMzUwLDcgQEAgdm9pZCBEeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUNoYW5uZWxzW10sCiAgICAg
ICAgICAgICBpZiAobV9tYXhBdHRhY2tDb21wcmVzc2lvbkRpZmZEYiA9PSAtMSB8fCBtX21heEF0
dGFja0NvbXByZXNzaW9uRGlmZkRiIDwgY29tcHJlc3Npb25EaWZmRGIpCiAgICAgICAgICAgICAg
ICAgbV9tYXhBdHRhY2tDb21wcmVzc2lvbkRpZmZEYiA9IGNvbXByZXNzaW9uRGlmZkRiOwogCi0g
ICAgICAgICAgICBmbG9hdCBlZmZBdHRlbkRpZmZEYiA9IG1heCgwLjVmLCBtX21heEF0dGFja0Nv
bXByZXNzaW9uRGlmZkRiKTsKKyAgICAgICAgICAgIGZsb2F0IGVmZkF0dGVuRGlmZkRiID0gc3Rk
OjptYXgoMC41ZiwgbV9tYXhBdHRhY2tDb21wcmVzc2lvbkRpZmZEYik7CiAKICAgICAgICAgICAg
IGZsb2F0IHggPSAwLjI1ZiAvIGVmZkF0dGVuRGlmZkRiOwogICAgICAgICAgICAgZW52ZWxvcGVS
YXRlID0gMSAtIHBvd2YoeCwgMSAvIGF0dGFja0ZyYW1lcyk7CkBAIC0zOTcsNyArMzk1LDcgQEAg
dm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUNoYW5u
ZWxzW10sCiAgICAgICAgICAgICAgICAgZmxvYXQgYXR0ZW51YXRpb24gPSBhYnNJbnB1dCA8PSAw
LjAwMDFmID8gMSA6IHNoYXBlZElucHV0IC8gYWJzSW5wdXQ7CiAKICAgICAgICAgICAgICAgICBm
bG9hdCBhdHRlbnVhdGlvbkRiID0gLWxpbmVhclRvRGVjaWJlbHMoYXR0ZW51YXRpb24pOwotICAg
ICAgICAgICAgICAgIGF0dGVudWF0aW9uRGIgPSBtYXgoMi4wZiwgYXR0ZW51YXRpb25EYik7Cisg
ICAgICAgICAgICAgICAgYXR0ZW51YXRpb25EYiA9IHN0ZDo6bWF4KDIuMGYsIGF0dGVudWF0aW9u
RGIpOwogCiAgICAgICAgICAgICAgICAgZmxvYXQgZGJQZXJGcmFtZSA9IGF0dGVudWF0aW9uRGIg
LyBzYXRSZWxlYXNlRnJhbWVzOwogCkBAIC00MDcsNyArNDA1LDcgQEAgdm9pZCBEeW5hbWljc0Nv
bXByZXNzb3JLZXJuZWw6OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUNoYW5uZWxzW10sCiAgICAgICAg
ICAgICAgICAgZmxvYXQgcmF0ZSA9IGlzUmVsZWFzZSA/IHNhdFJlbGVhc2VSYXRlIDogMTsKIAog
ICAgICAgICAgICAgICAgIGRldGVjdG9yQXZlcmFnZSArPSAoYXR0ZW51YXRpb24gLSBkZXRlY3Rv
ckF2ZXJhZ2UpICogcmF0ZTsKLSAgICAgICAgICAgICAgICBkZXRlY3RvckF2ZXJhZ2UgPSBtaW4o
MS4wZiwgZGV0ZWN0b3JBdmVyYWdlKTsKKyAgICAgICAgICAgICAgICBkZXRlY3RvckF2ZXJhZ2Ug
PSBzdGQ6Om1pbigxLjBmLCBkZXRlY3RvckF2ZXJhZ2UpOwogCiAgICAgICAgICAgICAgICAgLy8g
Rml4IGdyZW1saW5zLgogICAgICAgICAgICAgICAgIGlmIChzdGQ6OmlzbmFuKGRldGVjdG9yQXZl
cmFnZSkpCkBAIC00MjIsNyArNDIwLDcgQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3JLZXJuZWw6
OnByb2Nlc3MoZmxvYXQqIHNvdXJjZUNoYW5uZWxzW10sCiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gUmVsZWFzZSAtIGV4cG9uZW50aWFsbHkgaW5jcmVh
c2UgZ2FpbiB0byAxLjAKICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NvckdhaW4gKj0gZW52
ZWxvcGVSYXRlOwotICAgICAgICAgICAgICAgICAgICBjb21wcmVzc29yR2FpbiA9IG1pbigxLjBm
LCBjb21wcmVzc29yR2Fpbik7CisgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzb3JHYWluID0g
c3RkOjptaW4oMS4wZiwgY29tcHJlc3NvckdhaW4pOwogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIC8vIFdhcnAgcHJlLWNvbXByZXNzaW9uIGdhaW4gdG8gc21vb3RoIG91dCBz
aGFycCBleHBvbmVudGlhbCB0cmFuc2l0aW9uIHBvaW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAKaW5kZXggNmIyMjlmODUyY2Q3
NDZlZTc5YzQwNzI0ZGM2ZDhlMWZkYjZlZTJjOC4uOTg2YTliZGJlNDY1NDE0MWNlNjA4OTIzNjE5
NjVkODA4NDEwZTc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RXF1YWxQb3dlclBhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RXF1YWxQb3dlclBhbm5lci5jcHAKQEAgLTM2LDggKzM2LDYgQEAKIC8vIFVzZSBhIDUwbXMgc21v
b3RoaW5nIC8gZGUtemlwcGVyaW5nIHRpbWUtY29uc3RhbnQuCiBjb25zdCBmbG9hdCBTbW9vdGhp
bmdUaW1lQ29uc3RhbnQgPSAwLjA1MGY7CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogRXF1YWxQb3dlclBhbm5lcjo6RXF1YWxQb3dlclBhbm5lcihmbG9h
dCBzYW1wbGVSYXRlKQpAQCAtNzIsOCArNzAsOCBAQCB2b2lkIEVxdWFsUG93ZXJQYW5uZXI6OnBh
bihkb3VibGUgYXppbXV0aCwgZG91YmxlIC8qZWxldmF0aW9uKi8sIGNvbnN0IEF1ZGlvQnVzKgog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gQ2xhbXAgYXppbXV0aCB0byBhbGxvd2VkIHJh
bmdlIG9mIC0xODAgLT4gKzE4MC4KLSAgICBhemltdXRoID0gbWF4KC0xODAuMCwgYXppbXV0aCk7
Ci0gICAgYXppbXV0aCA9IG1pbigxODAuMCwgYXppbXV0aCk7CisgICAgYXppbXV0aCA9IHN0ZDo6
bWF4KC0xODAuMCwgYXppbXV0aCk7CisgICAgYXppbXV0aCA9IHN0ZDo6bWluKDE4MC4wLCBhemlt
dXRoKTsKICAgICAKICAgICAvLyBBbGlhcyB0aGUgYXppbXV0aCByYW5nZXMgYmVoaW5kIHVzIHRv
IGluIGZyb250IG9mIHVzOgogICAgIC8vIC05MCAtPiAtMTgwIHRvIC05MCAtPiAwIGFuZCA5MCAt
PiAxODAgdG8gOTAgLT4gMApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vSFJURkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZE
YXRhYmFzZS5jcHAKaW5kZXggNGRiNGRjYWM0YzRmZmExODRjMGU0OGIyNGM3YjUzM2E2YjIyZDll
Zi4uOWQxMjQ1MmEzYmUxZTA2YWY3N2U2YzU0ZWQ0MTVjMWY2OWQ0NmM3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwCkBAIC0zNCw4ICszNCw2
IEBACiAKICNpbmNsdWRlICJIUlRGRWxldmF0aW9uLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgaW50IEhSVEZEYXRhYmFzZTo6TWluRWxl
dmF0aW9uID0gLTQ1OwpAQCAtMTEyLDggKzExMCw4IEBAIHZvaWQgSFJURkRhdGFiYXNlOjpnZXRL
ZXJuZWxzRnJvbUF6aW11dGhFbGV2YXRpb24oZG91YmxlIGF6aW11dGhCbGVuZCwgdW5zaWduZWQK
IHVuc2lnbmVkIEhSVEZEYXRhYmFzZTo6aW5kZXhGcm9tRWxldmF0aW9uQW5nbGUoZG91YmxlIGVs
ZXZhdGlvbkFuZ2xlKQogewogICAgIC8vIENsYW1wIHRvIGFsbG93ZWQgcmFuZ2UuCi0gICAgZWxl
dmF0aW9uQW5nbGUgPSBtYXgoc3RhdGljX2Nhc3Q8ZG91YmxlPihNaW5FbGV2YXRpb24pLCBlbGV2
YXRpb25BbmdsZSk7Ci0gICAgZWxldmF0aW9uQW5nbGUgPSBtaW4oc3RhdGljX2Nhc3Q8ZG91Ymxl
PihNYXhFbGV2YXRpb24pLCBlbGV2YXRpb25BbmdsZSk7CisgICAgZWxldmF0aW9uQW5nbGUgPSBz
dGQ6Om1heChzdGF0aWNfY2FzdDxkb3VibGU+KE1pbkVsZXZhdGlvbiksIGVsZXZhdGlvbkFuZ2xl
KTsKKyAgICBlbGV2YXRpb25BbmdsZSA9IHN0ZDo6bWluKHN0YXRpY19jYXN0PGRvdWJsZT4oTWF4
RWxldmF0aW9uKSwgZWxldmF0aW9uQW5nbGUpOwogCiAgICAgdW5zaWduZWQgZWxldmF0aW9uSW5k
ZXggPSBzdGF0aWNfY2FzdDxpbnQ+KEludGVycG9sYXRpb25GYWN0b3IgKiAoZWxldmF0aW9uQW5n
bGUgLSBNaW5FbGV2YXRpb24pIC8gUmF3RWxldmF0aW9uQW5nbGVTcGFjaW5nKTsgICAgCiAgICAg
cmV0dXJuIGVsZXZhdGlvbkluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmNwcAppbmRleCA1NTk2NjA4MDI5Y2E2MGFiMWZhOTgxNzBlMGY1MGI1
MzE2NDVlZWRhLi4zOGMxZDE2YWE0MTdkZmFkZmIyZTY1ZjFmYWY5ZWMzZTIyZTgxZjNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcApAQCAt
NDIsOCArNDIsNyBAQAogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29u
c3QgdW5zaWduZWQgSFJURkVsZXZhdGlvbjo6QXppbXV0aFNwYWNpbmcgPSAxNTsKQEAgLTI1NCw3
ICsyNTMsNyBAQCBQYXNzT3duUHRyPEhSVEZFbGV2YXRpb24+IEhSVEZFbGV2YXRpb246OmNyZWF0
ZUZvclN1YmplY3QoY29uc3QgU3RyaW5nJiBzdWJqZWN0TgogICAgIGZvciAodW5zaWduZWQgcmF3
SW5kZXggPSAwOyByYXdJbmRleCA8IE51bWJlck9mUmF3QXppbXV0aHM7ICsrcmF3SW5kZXgpIHsK
ICAgICAgICAgLy8gRG9uJ3QgbGV0IGVsZXZhdGlvbiBleGNlZWQgbWF4aW11bSBmb3IgdGhpcyBh
emltdXRoLgogICAgICAgICBpbnQgbWF4RWxldmF0aW9uID0gbWF4RWxldmF0aW9uc1tyYXdJbmRl
eF07Ci0gICAgICAgIGludCBhY3R1YWxFbGV2YXRpb24gPSBtaW4oZWxldmF0aW9uLCBtYXhFbGV2
YXRpb24pOworICAgICAgICBpbnQgYWN0dWFsRWxldmF0aW9uID0gc3RkOjptaW4oZWxldmF0aW9u
LCBtYXhFbGV2YXRpb24pOwogCiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGNhbGN1bGF0ZUtlcm5l
bHNGb3JBemltdXRoRWxldmF0aW9uKHJhd0luZGV4ICogQXppbXV0aFNwYWNpbmcsIGFjdHVhbEVs
ZXZhdGlvbiwgc2FtcGxlUmF0ZSwgc3ViamVjdE5hbWUsIGtlcm5lbExpc3RMLT5hdChpbnRlcnBv
bGF0ZWRJbmRleCksIGtlcm5lbExpc3RSLT5hdChpbnRlcnBvbGF0ZWRJbmRleCkpOwogICAgICAg
ICBpZiAoIXN1Y2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGS2VybmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJu
ZWwuY3BwCmluZGV4IDUwZDlhOGM4Yzk3YjNlNzYyYTdiYzk2MzMzN2M3NDg0NWJmNzY2NDEuLjhl
YmMwMGE5YTA5YzY4OWQzNDIzNWQ5OTMzOWI0YmNkODNjNTFjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwCkBAIC0zOCw4ICszOCw2IEBACiAjaW5j
bHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAot
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBUYWtlcyB0
aGUgaW5wdXQgQXVkaW9DaGFubmVsIGFzIGFuIGlucHV0IGltcHVsc2UgcmVzcG9uc2UgYW5kIGNh
bGN1bGF0ZXMgdGhlIGF2ZXJhZ2UgZ3JvdXAgZGVsYXkuCkBAIC04Miw3ICs4MCw3IEBAIEhSVEZL
ZXJuZWw6OkhSVEZLZXJuZWwoQXVkaW9DaGFubmVsKiBjaGFubmVsLCBzaXplX3QgZmZ0U2l6ZSwg
ZmxvYXQgc2FtcGxlUmF0ZSkKICAgICBzaXplX3QgcmVzcG9uc2VMZW5ndGggPSBjaGFubmVsLT5s
ZW5ndGgoKTsKIAogICAgIC8vIFdlIG5lZWQgdG8gdHJ1bmNhdGUgdG8gZml0IGludG8gMS8yIHRo
ZSBGRlQgc2l6ZSAod2l0aCB6ZXJvIHBhZGRpbmcpIGluIG9yZGVyIHRvIGRvIHByb3BlciBjb252
b2x1dGlvbi4KLSAgICBzaXplX3QgdHJ1bmNhdGVkUmVzcG9uc2VMZW5ndGggPSBtaW4ocmVzcG9u
c2VMZW5ndGgsIGZmdFNpemUgLyAyKTsgLy8gdHJ1bmNhdGUgaWYgbmVjZXNzYXJ5IHRvIG1heCBp
bXB1bHNlIHJlc3BvbnNlIGxlbmd0aCBhbGxvd2VkIGJ5IEZGVAorICAgIHNpemVfdCB0cnVuY2F0
ZWRSZXNwb25zZUxlbmd0aCA9IHN0ZDo6bWluKHJlc3BvbnNlTGVuZ3RoLCBmZnRTaXplIC8gMik7
IC8vIHRydW5jYXRlIGlmIG5lY2Vzc2FyeSB0byBtYXggaW1wdWxzZSByZXNwb25zZSBsZW5ndGgg
YWxsb3dlZCBieSBGRlQKIAogICAgIC8vIFF1aWNrIGZhZGUtb3V0IChhcHBseSB3aW5kb3cpIGF0
IHRydW5jYXRpb24gcG9pbnQKICAgICB1bnNpZ25lZCBudW1iZXJPZkZhZGVPdXRGcmFtZXMgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc2FtcGxlUmF0ZSAvIDQ0MTApOyAvLyAxMCBzYW1wbGUtZnJh
bWVzIEA0NC4xS0h6IHNhbXBsZS1yYXRlCkBAIC0xMjMsNyArMTIxLDcgQEAgUGFzc1JlZlB0cjxI
UlRGS2VybmVsPiBIUlRGS2VybmVsOjpjcmVhdGVJbnRlcnBvbGF0ZWRLZXJuZWwoSFJURktlcm5l
bCoga2VybmVsMSwKICAgICAgICAgcmV0dXJuIDA7CiAgCiAgICAgQVNTRVJUKHggPj0gMC4wICYm
IHggPCAxLjApOwotICAgIHggPSBtaW4oMS4wZiwgbWF4KDAuMGYsIHgpKTsKKyAgICB4ID0gc3Rk
OjptaW4oMS4wZiwgc3RkOjptYXgoMC4wZiwgeCkpOwogICAgIAogICAgIGZsb2F0IHNhbXBsZVJh
dGUxID0ga2VybmVsMS0+c2FtcGxlUmF0ZSgpOwogICAgIGZsb2F0IHNhbXBsZVJhdGUyID0ga2Vy
bmVsMi0+c2FtcGxlUmF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURlBhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
UGFubmVyLmNwcAppbmRleCBjODBlMDY2OTc0YWQ5YWE1MTE1NWZiMmEyNGQ5ZTExNGE5NzJhZTQz
Li5mMjgyNTQ3NWQxODcxMGE1NjFmOWIxMGUxZDhkMjMxNThhNTI4YWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcApAQCAtMzYsOCArMzYsNiBAQAog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoZSB2YWx1
ZSBvZiAyIG1pbGxpc2Vjb25kcyBpcyBsYXJnZXIgdGhhbiB0aGUgbGFyZ2VzdCBkZWxheSB3aGlj
aCBleGlzdHMgaW4gYW55IEhSVEZLZXJuZWwgZnJvbSB0aGUgZGVmYXVsdCBIUlRGRGF0YWJhc2Ug
KDAuMDEzNiBzZWNvbmRzKS4KQEAgLTExNSw4ICsxMTMsOCBAQCBpbnQgSFJURlBhbm5lcjo6Y2Fs
Y3VsYXRlRGVzaXJlZEF6aW11dGhJbmRleEFuZEJsZW5kKGRvdWJsZSBhemltdXRoLCBkb3VibGUm
IGF6aQogCiAgICAgLy8gV2UgZG9uJ3QgaW1tZWRpYXRlbHkgc3RhcnQgdXNpbmcgdGhpcyBhemlt
dXRoIGluZGV4LCBidXQgaW5zdGVhZCBhcHByb2FjaCB0aGlzIGluZGV4IGZyb20gdGhlIGxhc3Qg
aW5kZXggd2UgcmVuZGVyZWQgYXQuCiAgICAgLy8gVGhpcyBtaW5pbWl6ZXMgdGhlIGNsaWNrcyBh
bmQgZ3JhaW5pbmVzcyBmb3IgbW92aW5nIHNvdXJjZXMgd2hpY2ggb2NjdXIgb3RoZXJ3aXNlLgot
ICAgIGRlc2lyZWRBemltdXRoSW5kZXggPSBtYXgoMCwgZGVzaXJlZEF6aW11dGhJbmRleCk7Ci0g
ICAgZGVzaXJlZEF6aW11dGhJbmRleCA9IG1pbihudW1iZXJPZkF6aW11dGhzIC0gMSwgZGVzaXJl
ZEF6aW11dGhJbmRleCk7CisgICAgZGVzaXJlZEF6aW11dGhJbmRleCA9IHN0ZDo6bWF4KDAsIGRl
c2lyZWRBemltdXRoSW5kZXgpOworICAgIGRlc2lyZWRBemltdXRoSW5kZXggPSBzdGQ6Om1pbihu
dW1iZXJPZkF6aW11dGhzIC0gMSwgZGVzaXJlZEF6aW11dGhJbmRleCk7CiAgICAgcmV0dXJuIGRl
c2lyZWRBemltdXRoSW5kZXg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1JldmVyYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmIuY3BwCmluZGV4IDc5YzQyMzdjNjdlOTkwNDQ4YTNkMDY4MDkyNWIwNTBjNTE2NmZmZjEuLjMy
ZGQ2ZmZhNGU2NGUzMmYyNzc4Y2IzZWYyZTJlM2ZhYTVmMjNiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcApAQCAtNDEsMTAgKzQxLDYgQEAKICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAotI2lmIE9TKERBUldJ
TikKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgVmVjdG9yTWF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vU2luY1Jlc2FtcGxlci5jcHAKaW5kZXggMzVlZjNiYTg2M2M2N2UyNzZmM2FiNWY0
M2I1ZTU2OTMyZDEyNGE0MC4uMDZlZjU1NGNmNzk2NGM5YzlkNjM2ZTE2YzM3YTZhZDZlZjM5OTRl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2luY1Jlc2FtcGxlci5j
cHAKQEAgLTM5LDggKzM5LDYgQEAKICNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KICNlbmRpZgogCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCiAvLyBJbnB1dCBidWZmZXIgbGF5b3V0LCBkaXZpZGluZyB0
aGUgdG90YWwgYnVmZmVyIGludG8gcmVnaW9ucyAocjAgLSByNSk6CiAvLwogLy8gfC0tLS0tLS0t
LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tfApAQCAtMTY0LDcgKzE2Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgZmxvYXQqIGJ1ZmZlciA9IGJ1cy0+Y2hhbm5lbCgwKS0+bXV0YWJsZURh
dGEoKTsKIAogICAgICAgICAvLyBDbGFtcCB0byBudW1iZXIgb2YgZnJhbWVzIGF2YWlsYWJsZSBh
bmQgemVyby1wYWQuCi0gICAgICAgIHNpemVfdCBmcmFtZXNUb0NvcHkgPSBtaW4obV9zb3VyY2VG
cmFtZXNBdmFpbGFibGUsIGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgICAgIHNpemVfdCBmcmFtZXNU
b0NvcHkgPSBzdGQ6Om1pbihtX3NvdXJjZUZyYW1lc0F2YWlsYWJsZSwgZnJhbWVzVG9Qcm9jZXNz
KTsKICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgbV9zb3VyY2UsIHNpemVvZihmbG9hdCkgKiBmcmFt
ZXNUb0NvcHkpOwogCiAgICAgICAgIC8vIFplcm8tcGFkIGlmIG5lY2Vzc2FyeS4KQEAgLTE5MSw3
ICsxODksNyBAQCB2b2lkIFNpbmNSZXNhbXBsZXI6OnByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJj
ZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBudQogICAgIHVuc2lnbmVkIHJlbWFpbmlu
ZyA9IG51bWJlck9mRGVzdGluYXRpb25GcmFtZXM7CiAgICAgCiAgICAgd2hpbGUgKHJlbWFpbmlu
ZykgewotICAgICAgICB1bnNpZ25lZCBmcmFtZXNUaGlzVGltZSA9IG1pbihyZW1haW5pbmcsIG1f
YmxvY2tTaXplKTsKKyAgICAgICAgdW5zaWduZWQgZnJhbWVzVGhpc1RpbWUgPSBzdGQ6Om1pbihy
ZW1haW5pbmcsIG1fYmxvY2tTaXplKTsKICAgICAgICAgcHJvY2Vzcygmc291cmNlUHJvdmlkZXIs
IGRlc3RpbmF0aW9uLCBmcmFtZXNUaGlzVGltZSk7CiAgICAgICAgIAogICAgICAgICBkZXN0aW5h
dGlvbiArPSBmcmFtZXNUaGlzVGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1VSTENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENGLmNwcApp
bmRleCAwYzJlZjI4OWQyM2E3ZTdmNzU1YmM4OTBhOTNlYTk2OWQ1OTA5NjQ1Li5iM2VjYjUwMzE5
MjIyYTJkNDRhYWE3ZDQ4Y2NiMTM1YmVlMzUzOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
VVJMQ0YuY3BwCkBAIC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZV
UkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBz
dGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVVJMOjpVUkwoQ0ZVUkxSZWYgdXJsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCmluZGV4IDUxYzcxMDAwNzc4
NGJjZDMyNzQ0MDk1MTNhZTg4MDZlYzc5MzkwNmEuLjIyYzhkYzFjMzMyZmNkNDliYmNiOTk3YzU2
ZTEwMzlhNjYxNWY5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5jcHAKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCkBAIC01MSwxOCAr
NDksMTggQEAgc3RhdGljIGNvbnN0IFJHQkEzMiBkYXJrZW5lZFdoaXRlID0gMHhGRkFCQUJBQjsK
IAogUkdCQTMyIG1ha2VSR0IoaW50IHIsIGludCBnLCBpbnQgYikKIHsKLSAgICByZXR1cm4gMHhG
RjAwMDAwMCB8IG1heCgwLCBtaW4ociwgMjU1KSkgPDwgMTYgfCBtYXgoMCwgbWluKGcsIDI1NSkp
IDw8IDggfCBtYXgoMCwgbWluKGIsIDI1NSkpOworICAgIHJldHVybiAweEZGMDAwMDAwIHwgc3Rk
OjptYXgoMCwgc3RkOjptaW4ociwgMjU1KSkgPDwgMTYgfCBzdGQ6Om1heCgwLCBzdGQ6Om1pbihn
LCAyNTUpKSA8PCA4IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oYiwgMjU1KSk7CiB9CiAKIFJHQkEz
MiBtYWtlUkdCQShpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKIHsKLSAgICByZXR1cm4gbWF4
KDAsIG1pbihhLCAyNTUpKSA8PCAyNCB8IG1heCgwLCBtaW4ociwgMjU1KSkgPDwgMTYgfCBtYXgo
MCwgbWluKGcsIDI1NSkpIDw8IDggfCBtYXgoMCwgbWluKGIsIDI1NSkpOworICAgIHJldHVybiBz
dGQ6Om1heCgwLCBzdGQ6Om1pbihhLCAyNTUpKSA8PCAyNCB8IHN0ZDo6bWF4KDAsIHN0ZDo6bWlu
KHIsIDI1NSkpIDw8IDE2IHwgc3RkOjptYXgoMCwgc3RkOjptaW4oZywgMjU1KSkgPDwgOCB8IHN0
ZDo6bWF4KDAsIHN0ZDo6bWluKGIsIDI1NSkpOwogfQogCiBzdGF0aWMgaW50IGNvbG9yRmxvYXRU
b1JHQkFCeXRlKGZsb2F0IGYpCiB7CiAgICAgLy8gV2UgdXNlIGxyb3VuZGYgYW5kIDI1NSBpbnN0
ZWFkIG9mIG5leHRhZnRlcmYoMjU2LCAwKSB0byBtYXRjaCBDRydzIHJvdW5kaW5nCi0gICAgcmV0
dXJuIG1heCgwLCBtaW4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKDI1NS4wZiAqIGYpKSwgMjU1
KSk7CisgICAgcmV0dXJuIHN0ZDo6bWF4KDAsIHN0ZDo6bWluKHN0YXRpY19jYXN0PGludD4obHJv
dW5kZigyNTUuMGYgKiBmKSksIDI1NSkpOwogfQogCiBSR0JBMzIgbWFrZVJHQkEzMkZyb21GbG9h
dHMoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKQEAgLTI3OCwxMyArMjc2LDEz
IEBAIENvbG9yIENvbG9yOjpsaWdodCgpIGNvbnN0CiAgICAgZmxvYXQgciwgZywgYiwgYTsKICAg
ICBnZXRSR0JBKHIsIGcsIGIsIGEpOwogCi0gICAgZmxvYXQgdiA9IG1heChyLCBtYXgoZywgYikp
OworICAgIGZsb2F0IHYgPSBzdGQ6Om1heChyLCBzdGQ6Om1heChnLCBiKSk7CiAKICAgICBpZiAo
diA9PSAwLjBmKQogICAgICAgICAvLyBMaWdodGVuZWQgYmxhY2sgd2l0aCBhbHBoYS4KICAgICAg
ICAgcmV0dXJuIENvbG9yKDB4NTQsIDB4NTQsIDB4NTQsIGFscGhhKCkpOwogCi0gICAgZmxvYXQg
bXVsdGlwbGllciA9IG1pbigxLjBmLCB2ICsgMC4zM2YpIC8gdjsKKyAgICBmbG9hdCBtdWx0aXBs
aWVyID0gc3RkOjptaW4oMS4wZiwgdiArIDAuMzNmKSAvIHY7CiAKICAgICByZXR1cm4gQ29sb3Io
c3RhdGljX2Nhc3Q8aW50PihtdWx0aXBsaWVyICogciAqIHNjYWxlRmFjdG9yKSwKICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihtdWx0aXBsaWVyICogZyAqIHNjYWxlRmFjdG9yKSwK
QEAgLTMwMyw4ICszMDEsOCBAQCBDb2xvciBDb2xvcjo6ZGFyaygpIGNvbnN0CiAgICAgZmxvYXQg
ciwgZywgYiwgYTsKICAgICBnZXRSR0JBKHIsIGcsIGIsIGEpOwogCi0gICAgZmxvYXQgdiA9IG1h
eChyLCBtYXgoZywgYikpOwotICAgIGZsb2F0IG11bHRpcGxpZXIgPSBtYXgoMC4wZiwgKHYgLSAw
LjMzZikgLyB2KTsKKyAgICBmbG9hdCB2ID0gc3RkOjptYXgociwgc3RkOjptYXgoZywgYikpOwor
ICAgIGZsb2F0IG11bHRpcGxpZXIgPSBzdGQ6Om1heCgwLjBmLCAodiAtIDAuMzNmKSAvIHYpOwog
CiAgICAgcmV0dXJuIENvbG9yKHN0YXRpY19jYXN0PGludD4obXVsdGlwbGllciAqIHIgKiBzY2Fs
ZUZhY3RvciksCiAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4obXVsdGlwbGllciAq
IGcgKiBzY2FsZUZhY3RvciksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggMmUxNThkZmVm
OGU4YTg4NzAxMDVhYTBhOTQ0MDAzNjhmMWIyZGUwYi4uYjBkYjJkZmVkYzM4MTNjODcwMmI3MDU1
NDI5YzFlNjU1NTU2ZjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtMzAsOCArMzAs
NiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlKiBmcm9t
SW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBJbnRTaXplIGNyb3NzZmFk
ZVNpemUsIGNvbnN0IEludFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRRdWFkLmNwcAppbmRleCBjYjE1MTExOWE3ZTlmZmNmMzEwNzI4YTYwOTlj
MDEzYjExZDhiYjUxLi42NTViZWFiZjM0ZGVjZTgzZjdiYzIzN2MyODlmNzI4NzVkMWNkMDcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5jcHAKQEAg
LTM0LDE4ICszNCwxNiBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxsaW1pdHM+
CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGlubGluZSBmbG9hdCBtaW40KGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IGMsIGZsb2F0IGQpCiB7
Ci0gICAgcmV0dXJuIG1pbihtaW4oYSwgYiksIG1pbihjLCBkKSk7CisgICAgcmV0dXJuIHN0ZDo6
bWluKHN0ZDo6bWluKGEsIGIpLCBzdGQ6Om1pbihjLCBkKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
ZmxvYXQgbWF4NChmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkKQogewotICAgIHJl
dHVybiBtYXgobWF4KGEsIGIpLCBtYXgoYywgZCkpOworICAgIHJldHVybiBzdGQ6Om1heChzdGQ6
Om1heChhLCBiKSwgc3RkOjptYXgoYywgZCkpOwogfQogCiBpbmxpbmUgZmxvYXQgZG90KGNvbnN0
IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQpAQCAtOTQsNyArOTIsNyBAQCBGbG9h
dFJlY3QgRmxvYXRRdWFkOjpib3VuZGluZ0JveCgpIGNvbnN0CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCB3aXRoaW5FcHNpbG9uKGZsb2F0IGEsIGZsb2F0IGIpCiB7Ci0gICAgcmV0dXJuIGZhYnMoYSAt
IGIpIDwgbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjplcHNpbG9uKCk7CisgICAgcmV0dXJuIGZhYnMo
YSAtIGIpIDwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmVwc2lsb24oKTsKIH0KIAogYm9v
bCBGbG9hdFF1YWQ6OmlzUmVjdGlsaW5lYXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAKaW5kZXggMzIyNTg4NjhmYWZjODhjNDM2ZWI2
ZTA3OTM5Y2I4Y2MxM2E2ZGQwOS4uNjBhZTU4NmEyYjg1ZDA2NzA5NTI1NDAzZjVlNTRjN2JkNjA3
ZWFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUu
Y3BwCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPG1hdGgu
aD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGbG9h
dFNpemU6OkZsb2F0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSA6IG1fd2lkdGgoc2l6ZS53aWR0
aCgpKSwgbV9oZWlnaHQoc2l6ZS5oZWlnaHQoKSkKQEAgLTQ3LDcgKzQ1LDcgQEAgZmxvYXQgRmxv
YXRTaXplOjpkaWFnb25hbExlbmd0aCgpIGNvbnN0CiAKIGJvb2wgRmxvYXRTaXplOjppc1plcm8o
KSBjb25zdAogewotICAgIHJldHVybiBmYWJzKG1fd2lkdGgpIDwgbnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjplcHNpbG9uKCkgJiYgZmFicyhtX2hlaWdodCkgPCBudW1lcmljX2xpbWl0czxmbG9hdD46
OmVwc2lsb24oKTsKKyAgICByZXR1cm4gZmFicyhtX3dpZHRoKSA8IHN0ZDo6bnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjplcHNpbG9uKCkgJiYgZmFicyhtX2hlaWdodCkgPCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6ZXBzaWxvbigpOwogfQogCiBib29sIEZsb2F0U2l6ZTo6aXNFeHByZXNzaWJs
ZUFzSW50U2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250RmFzdFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udEZhc3RQYXRoLmNwcAppbmRleCA1ODAxZjRhNTZhMjRhNzU3NmVmNTI4NjcxOGE4N2Y3
OWJhYWMxMzU1Li4wNzQwMTczNWQ3MzFlMmJjNGIxZGM0M2EzOGM0NTYxYzM3YTMyZGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAK
QEAgLTM4LDcgKzM4LDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFj
ZSBVbmljb2RlOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0yODUsOCArMjg0LDggQEAgZmxvYXQgRm9udDo6ZmxvYXRXaWR0aEZvclNpbXBsZVRleHQo
Y29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnQKICAgICBpdC5hZHZh
bmNlKHJ1bi5sZW5ndGgoKSwgKHR5cGVzZXR0aW5nRmVhdHVyZXMoKSAmIChLZXJuaW5nIHwgTGln
YXR1cmVzKSkgPyAmZ2x5cGhCdWZmZXIgOiAwKTsKIAogICAgIGlmIChnbHlwaE92ZXJmbG93KSB7
Ci0gICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IG1heDxpbnQ+KGdseXBoT3ZlcmZsb3ctPnRv
cCwgY2VpbGYoLWl0Lm1pbkdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNv
bXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOwotICAgICAgICBnbHlw
aE92ZXJmbG93LT5ib3R0b20gPSBtYXg8aW50PihnbHlwaE92ZXJmbG93LT5ib3R0b20sIGNlaWxm
KGl0Lm1heEdseXBoQm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3Vu
ZHMgPyAwIDogZm9udE1ldHJpY3MoKS5kZXNjZW50KCkpKTsKKyAgICAgICAgZ2x5cGhPdmVyZmxv
dy0+dG9wID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93LT50b3AsIGNlaWxmKC1pdC5taW5H
bHlwaEJvdW5kaW5nQm94WSgpKSAtIChnbHlwaE92ZXJmbG93LT5jb21wdXRlQm91bmRzID8gMCA6
IGZvbnRNZXRyaWNzKCkuYXNjZW50KCkpKTsKKyAgICAgICAgZ2x5cGhPdmVyZmxvdy0+Ym90dG9t
ID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93LT5ib3R0b20sIGNlaWxmKGl0Lm1heEdseXBo
Qm91bmRpbmdCb3hZKCkpIC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3VuZHMgPyAwIDogZm9u
dE1ldHJpY3MoKS5kZXNjZW50KCkpKTsKICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+bGVmdCA9IGNl
aWxmKGl0LmZpcnN0R2x5cGhPdmVyZmxvdygpKTsKICAgICAgICAgZ2x5cGhPdmVyZmxvdy0+cmln
aHQgPSBjZWlsZihpdC5sYXN0R2x5cGhPdmVyZmxvdygpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCmluZGV4
IDkxM2FkOTA3MGM1Yjc4MjYyMmZhYzU3NjgyMTc2NjhjNjdlMmYyNmUuLjIxYmVhMzczNTg2MzNl
ZWEyNzZiNjdmOTMwYTQwNGJhYTAzZTUyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuY3BwCkBAIC0yNyw4ICsyNyw2IEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZjVjOWQ3ZWU4NTM1YmQzOWM5MTIyODNjNmE5NWE4
ZGFiMmZjODI5ZC4uZjIxZjkxNGQxNmE2OWIxZjkzOTBmMTUzNmQ2OTJlNGM0YTQ4YTljYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCkBAIC0zNiw4ICszNiw2IEBACiAKICNpbmNsdWRlICJzdGRpby5oIgogCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHRSdW5JdGVy
YXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3Vu
ZGVkUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVj
dC5jcHAKaW5kZXggZThkMzFiZTY0YzFlMzA4NDIyODViNTE4ZmUwMTkxYjE4NGE0MjY0MS4uOGYy
ZjFjZjkxZTI5M2VmYTc1NDQzYjFjZDVmMDVkNzdjMTI1YjgzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcApAQCAtMzAsOCArMzAsNiBA
QAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgUm91bmRlZFJlY3Q6OlJhZGlpOjppc1plcm8oKSBjb25z
dApAQCAtNjMsMjAgKzYxLDIwIEBAIHZvaWQgUm91bmRlZFJlY3Q6OlJhZGlpOjpzY2FsZShmbG9h
dCBmYWN0b3IpCiB2b2lkIFJvdW5kZWRSZWN0OjpSYWRpaTo6ZXhwYW5kKGludCB0b3BXaWR0aCwg
aW50IGJvdHRvbVdpZHRoLCBpbnQgbGVmdFdpZHRoLCBpbnQgcmlnaHRXaWR0aCkKIHsKICAgICBp
ZiAobV90b3BMZWZ0LndpZHRoKCkgPiAwICYmIG1fdG9wTGVmdC5oZWlnaHQoKSA+IDApIHsKLSAg
ICAgICAgbV90b3BMZWZ0LnNldFdpZHRoKG1heDxpbnQ+KDAsIG1fdG9wTGVmdC53aWR0aCgpICsg
bGVmdFdpZHRoKSk7Ci0gICAgICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQobWF4PGludD4oMCwgbV90
b3BMZWZ0LmhlaWdodCgpICsgdG9wV2lkdGgpKTsKKyAgICAgICAgbV90b3BMZWZ0LnNldFdpZHRo
KHN0ZDo6bWF4PGludD4oMCwgbV90b3BMZWZ0LndpZHRoKCkgKyBsZWZ0V2lkdGgpKTsKKyAgICAg
ICAgbV90b3BMZWZ0LnNldEhlaWdodChzdGQ6Om1heDxpbnQ+KDAsIG1fdG9wTGVmdC5oZWlnaHQo
KSArIHRvcFdpZHRoKSk7CiAgICAgfQogICAgIGlmIChtX3RvcFJpZ2h0LndpZHRoKCkgPiAwICYm
IG1fdG9wUmlnaHQuaGVpZ2h0KCkgPiAwKSB7Ci0gICAgICAgIG1fdG9wUmlnaHQuc2V0V2lkdGgo
bWF4PGludD4oMCwgbV90b3BSaWdodC53aWR0aCgpICsgcmlnaHRXaWR0aCkpOwotICAgICAgICBt
X3RvcFJpZ2h0LnNldEhlaWdodChtYXg8aW50PigwLCBtX3RvcFJpZ2h0LmhlaWdodCgpICsgdG9w
V2lkdGgpKTsKKyAgICAgICAgbV90b3BSaWdodC5zZXRXaWR0aChzdGQ6Om1heDxpbnQ+KDAsIG1f
dG9wUmlnaHQud2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKKyAgICAgICAgbV90b3BSaWdodC5zZXRI
ZWlnaHQoc3RkOjptYXg8aW50PigwLCBtX3RvcFJpZ2h0LmhlaWdodCgpICsgdG9wV2lkdGgpKTsK
ICAgICB9CiAgICAgaWYgKG1fYm90dG9tTGVmdC53aWR0aCgpID4gMCAmJiBtX2JvdHRvbUxlZnQu
aGVpZ2h0KCkgPiAwKSB7Ci0gICAgICAgIG1fYm90dG9tTGVmdC5zZXRXaWR0aChtYXg8aW50Pigw
LCBtX2JvdHRvbUxlZnQud2lkdGgoKSArIGxlZnRXaWR0aCkpOwotICAgICAgICBtX2JvdHRvbUxl
ZnQuc2V0SGVpZ2h0KG1heDxpbnQ+KDAsIG1fYm90dG9tTGVmdC5oZWlnaHQoKSArIGJvdHRvbVdp
ZHRoKSk7CisgICAgICAgIG1fYm90dG9tTGVmdC5zZXRXaWR0aChzdGQ6Om1heDxpbnQ+KDAsIG1f
Ym90dG9tTGVmdC53aWR0aCgpICsgbGVmdFdpZHRoKSk7CisgICAgICAgIG1fYm90dG9tTGVmdC5z
ZXRIZWlnaHQoc3RkOjptYXg8aW50PigwLCBtX2JvdHRvbUxlZnQuaGVpZ2h0KCkgKyBib3R0b21X
aWR0aCkpOwogICAgIH0KICAgICBpZiAobV9ib3R0b21SaWdodC53aWR0aCgpID4gMCAmJiBtX2Jv
dHRvbVJpZ2h0LmhlaWdodCgpID4gMCkgewotICAgICAgICBtX2JvdHRvbVJpZ2h0LnNldFdpZHRo
KG1heDxpbnQ+KDAsIG1fYm90dG9tUmlnaHQud2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKLSAgICAg
ICAgbV9ib3R0b21SaWdodC5zZXRIZWlnaHQobWF4PGludD4oMCwgbV9ib3R0b21SaWdodC5oZWln
aHQoKSArIGJvdHRvbVdpZHRoKSk7CisgICAgICAgIG1fYm90dG9tUmlnaHQuc2V0V2lkdGgoc3Rk
OjptYXg8aW50PigwLCBtX2JvdHRvbVJpZ2h0LndpZHRoKCkgKyByaWdodFdpZHRoKSk7CisgICAg
ICAgIG1fYm90dG9tUmlnaHQuc2V0SGVpZ2h0KHN0ZDo6bWF4PGludD4oMCwgbV9ib3R0b21SaWdo
dC5oZWlnaHQoKSArIGJvdHRvbVdpZHRoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDc0NThlYTg5OTI5OGNl
YWJiMjlhNjRkZTA2ODg4MDRmYjkwNmYxNjYuLjczODcyNzMwZTVkMTJkMjViZDE3YWNlNmVhODQ5
NGJhYWVhNzVhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuY3BwCkBAIC0zOCw4ICszOCw2IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIHsKQEAgLTI0OCw3ICsyNDYsNyBAQCBzdGF0
aWMgdm9pZCBjYWxjdWxhdGVMb2JlcyhpbnQgbG9iZXNbXVsyXSwgZmxvYXQgYmx1clJhZGl1cywg
Ym9vbCBzaGFkb3dzSWdub3JlVAogewogICAgIGludCBkaWFtZXRlcjsKICAgICBpZiAoc2hhZG93
c0lnbm9yZVRyYW5zZm9ybXMpCi0gICAgICAgIGRpYW1ldGVyID0gbWF4KDIsIHN0YXRpY19jYXN0
PGludD4oZmxvb3JmKCgyIC8gMy5mKSAqIGJsdXJSYWRpdXMpKSk7IC8vIENhbnZhcyBzaGFkb3cu
IEZJWE1FOiB3ZSBzaG91bGQgYWRqdXN0IHRoZSBibHVyIHJhZGl1cyBoaWdoZXIgdXAuCisgICAg
ICAgIGRpYW1ldGVyID0gc3RkOjptYXgoMiwgc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYoKDIgLyAz
LmYpICogYmx1clJhZGl1cykpKTsgLy8gQ2FudmFzIHNoYWRvdy4gRklYTUU6IHdlIHNob3VsZCBh
ZGp1c3QgdGhlIGJsdXIgcmFkaXVzIGhpZ2hlciB1cC4KICAgICBlbHNlIHsKICAgICAgICAgLy8g
aHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1iYWNrZ3JvdW5kLyNib3gtc2hhZG93CiAgICAg
ICAgIC8vIEFwcHJveGltYXRlIGEgR2F1c3NpYW4gYmx1ciB3aXRoIGEgc3RhbmRhcmQgZGV2aWF0
aW9uIGVxdWFsIHRvIGhhbGYgdGhlIGJsdXIgcmFkaXVzLApAQCAtMjU4LDcgKzI1Niw3IEBAIHN0
YXRpYyB2b2lkIGNhbGN1bGF0ZUxvYmVzKGludCBsb2Jlc1tdWzJdLCBmbG9hdCBibHVyUmFkaXVz
LCBib29sIHNoYWRvd3NJZ25vcmVUCiAgICAgICAgIGZsb2F0IHN0ZERldiA9IGJsdXJSYWRpdXMg
LyAyOwogICAgICAgICBjb25zdCBmbG9hdCBnYXVzc2lhbktlcm5lbEZhY3RvciA9IDMgLyA0LmYg
KiBzcXJ0ZigyICogcGlGbG9hdCk7CiAgICAgICAgIGNvbnN0IGZsb2F0IGZ1ZGdlRmFjdG9yID0g
MC44OGY7Ci0gICAgICAgIGRpYW1ldGVyID0gbWF4KDIsIHN0YXRpY19jYXN0PGludD4oZmxvb3Jm
KHN0ZERldiAqIGdhdXNzaWFuS2VybmVsRmFjdG9yICogZnVkZ2VGYWN0b3IgKyAwLjVmKSkpOwor
ICAgICAgICBkaWFtZXRlciA9IHN0ZDo6bWF4KDIsIHN0YXRpY19jYXN0PGludD4oZmxvb3JmKHN0
ZERldiAqIGdhdXNzaWFuS2VybmVsRmFjdG9yICogZnVkZ2VGYWN0b3IgKyAwLjVmKSkpOwogICAg
IH0KIAogICAgIGlmIChkaWFtZXRlciAmIDEpIHsKQEAgLTQ4NSwxMSArNDgzLDExIEBAIHZvaWQg
U2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0J1ZmZlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCkKIAogc3RhdGljIHZvaWQgY29tcHV0ZVNsaWNlU2l6ZXNGcm9tUmFkaWkoY29uc3QgSW50
U2l6ZSYgdHdpY2VSYWRpdXMsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGludCYg
bGVmdFNsaWNlLCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9wU2xpY2UsIGludCYgYm90dG9tU2xp
Y2UpCiB7Ci0gICAgbGVmdFNsaWNlID0gdHdpY2VSYWRpdXMud2lkdGgoKSArIG1heChyYWRpaS50
b3BMZWZ0KCkud2lkdGgoKSwgcmFkaWkuYm90dG9tTGVmdCgpLndpZHRoKCkpOyAKLSAgICByaWdo
dFNsaWNlID0gdHdpY2VSYWRpdXMud2lkdGgoKSArIG1heChyYWRpaS50b3BSaWdodCgpLndpZHRo
KCksIHJhZGlpLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7IAorICAgIGxlZnRTbGljZSA9IHR3aWNl
UmFkaXVzLndpZHRoKCkgKyBzdGQ6Om1heChyYWRpaS50b3BMZWZ0KCkud2lkdGgoKSwgcmFkaWku
Ym90dG9tTGVmdCgpLndpZHRoKCkpOworICAgIHJpZ2h0U2xpY2UgPSB0d2ljZVJhZGl1cy53aWR0
aCgpICsgc3RkOjptYXgocmFkaWkudG9wUmlnaHQoKS53aWR0aCgpLCByYWRpaS5ib3R0b21SaWdo
dCgpLndpZHRoKCkpOwogCi0gICAgdG9wU2xpY2UgPSB0d2ljZVJhZGl1cy5oZWlnaHQoKSArIG1h
eChyYWRpaS50b3BMZWZ0KCkuaGVpZ2h0KCksIHJhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0KCkpOwot
ICAgIGJvdHRvbVNsaWNlID0gdHdpY2VSYWRpdXMuaGVpZ2h0KCkgKyBtYXgocmFkaWkuYm90dG9t
TGVmdCgpLmhlaWdodCgpLCByYWRpaS5ib3R0b21SaWdodCgpLmhlaWdodCgpKTsKKyAgICB0b3BT
bGljZSA9IHR3aWNlUmFkaXVzLmhlaWdodCgpICsgc3RkOjptYXgocmFkaWkudG9wTGVmdCgpLmhl
aWdodCgpLCByYWRpaS50b3BSaWdodCgpLmhlaWdodCgpKTsKKyAgICBib3R0b21TbGljZSA9IHR3
aWNlUmFkaXVzLmhlaWdodCgpICsgc3RkOjptYXgocmFkaWkuYm90dG9tTGVmdCgpLmhlaWdodCgp
LCByYWRpaS5ib3R0b21SaWdodCgpLmhlaWdodCgpKTsKIH0KIAogSW50U2l6ZSBTaGFkb3dCbHVy
Ojp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3QgUm91bmRl
ZFJlY3Q6OlJhZGlpJiByYWRpaSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmNwcAppbmRleCBmZTBmYjk4MWNiOWYyMDlmODM5
NzE3YTIyZjJkZWY5MDlkYmQ1N2QzLi4zMjU3NGE5ZjJmN2E0ZWI3NWJhNWQxMDY2ZmE0ZWM5MTRm
ZjFiN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1w
bGVGb250RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2lt
cGxlRm9udERhdGEuY3BwCkBAIC0zOCw4ICszOCw2IEBACiAjaW5jbHVkZSAiT3BlblR5cGVWZXJ0
aWNhbERhdGEuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNvbnN0IGZsb2F0IHNtYWxsQ2Fwc0ZvbnRTaXplTXVsdGlwbGllciA9IDAu
N2Y7CkBAIC0xMDQsNyArMTAyLDcgQEAgdm9pZCBTaW1wbGVGb250RGF0YTo6aW5pdENoYXJXaWR0
aHMoKQogICAgICAgICBtX2F2Z0NoYXJXaWR0aCA9IG1fZm9udE1ldHJpY3MueEhlaWdodCgpOwog
CiAgICAgaWYgKG1fbWF4Q2hhcldpZHRoIDw9IDAuZikKLSAgICAgICAgbV9tYXhDaGFyV2lkdGgg
PSBtYXgobV9hdmdDaGFyV2lkdGgsIG1fZm9udE1ldHJpY3MuZmxvYXRBc2NlbnQoKSk7CisgICAg
ICAgIG1fbWF4Q2hhcldpZHRoID0gc3RkOjptYXgobV9hdmdDaGFyV2lkdGgsIG1fZm9udE1ldHJp
Y3MuZmxvYXRBc2NlbnQoKSk7CiB9CiAKIHZvaWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtR2x5
cGhJbml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dp
ZHRoSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKaW5kZXggZTJkZTMwYzU5OWFlNzZhMTNlZmE4YWNkMmQ2ZGVhMTg5NzBkNmQ2
NC4uMGZjZDYwODZlZTVmYzgwMTQ4ZWQxZDRiOGIwOTM0ODRlNTJmYjJmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKQEAgLTMx
LDcgKzMxLDYgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmlj
b2RlOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
NSw4ICs0NCw4IEBAIFdpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IoY29uc3QgRm9udCogZm9u
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0CiAgICAgLCBtX3R5cGVzZXR0aW5n
RmVhdHVyZXMoZm9udC0+dHlwZXNldHRpbmdGZWF0dXJlcygpKQogICAgICwgbV9mYWxsYmFja0Zv
bnRzKGZhbGxiYWNrRm9udHMpCiAgICAgLCBtX2FjY291bnRGb3JHbHlwaEJvdW5kcyhhY2NvdW50
Rm9yR2x5cGhCb3VuZHMpCi0gICAgLCBtX21heEdseXBoQm91bmRpbmdCb3hZKG51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6bWluKCkpCi0gICAgLCBtX21pbkdseXBoQm91bmRpbmdCb3hZKG51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6bWF4KCkpCisgICAgLCBtX21heEdseXBoQm91bmRpbmdCb3hZKHN0ZDo6
bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW4oKSkKKyAgICAsIG1fbWluR2x5cGhCb3VuZGluZ0Jv
eFkoc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKQogICAgICwgbV9maXJzdEdseXBo
T3ZlcmZsb3coMCkKICAgICAsIG1fbGFzdEdseXBoT3ZlcmZsb3coMCkKICAgICAsIG1fZm9yVGV4
dEVtcGhhc2lzKGZvclRleHRFbXBoYXNpcykKQEAgLTI2NiwxMyArMjY1LDEzIEBAIGlubGluZSB1
bnNpZ25lZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlSW50ZXJuYWwoVGV4dEl0ZXJhdG9yJiB0ZXh0
SXRlcmF0b3IsIEdseXBoCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2hvdWxkQXBwbHlGb250
VHJhbnNmb3JtcygpICYmIGdseXBoQnVmZmVyICYmIEZvbnQ6OnRyZWF0QXNTcGFjZShjaGFyYWN0
ZXIpKQotICAgICAgICAgICAgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlLmFwcGVuZChtYWtlX3Bh
aXIoZ2x5cGhCdWZmZXItPnNpemUoKSwKKyAgICAgICAgICAgIGNoYXJhY3RlcnNUcmVhdGVkQXNT
cGFjZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZ2x5cGhCdWZmZXItPnNpemUoKSwKICAgICAgICAg
ICAgICAgICBPcmlnaW5hbEFkdmFuY2VzRm9yQ2hhcmFjdGVyVHJlYXRlZEFzU3BhY2UoY2hhcmFj
dGVyID09ICcgJywgZ2x5cGhCdWZmZXItPnNpemUoKSA/IGdseXBoQnVmZmVyLT5hZHZhbmNlQXQo
Z2x5cGhCdWZmZXItPnNpemUoKSAtIDEpLndpZHRoKCkgOiAwLCB3aWR0aCkpKTsKIAogICAgICAg
ICBpZiAobV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMpIHsKICAgICAgICAgICAgIGJvdW5kcyA9IGZv
bnREYXRhLT5ib3VuZHNGb3JHbHlwaChnbHlwaCk7CiAgICAgICAgICAgICBpZiAoIXRleHRJdGVy
YXRvci5jdXJyZW50Q2hhcmFjdGVyKCkpCi0gICAgICAgICAgICAgICAgbV9maXJzdEdseXBoT3Zl
cmZsb3cgPSBtYXg8ZmxvYXQ+KDAsIC1ib3VuZHMueCgpKTsKKyAgICAgICAgICAgICAgICBtX2Zp
cnN0R2x5cGhPdmVyZmxvdyA9IHN0ZDo6bWF4PGZsb2F0PigwLCAtYm91bmRzLngoKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAobV9mb3JUZXh0RW1waGFzaXMgJiYgIUZvbnQ6OmNhblJlY2Vp
dmVUZXh0RW1waGFzaXMoY2hhcmFjdGVyKSkKQEAgLTMxNyw5ICszMTYsOSBAQCBpbmxpbmUgdW5z
aWduZWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZUludGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0
ZXJhdG9yLCBHbHlwaAogICAgICAgICBsYXN0Um91bmRpbmdXaWR0aCA9IHdpZHRoIC0gb2xkV2lk
dGg7CiAKICAgICAgICAgaWYgKG1fYWNjb3VudEZvckdseXBoQm91bmRzKSB7Ci0gICAgICAgICAg
ICBtX21heEdseXBoQm91bmRpbmdCb3hZID0gbWF4KG1fbWF4R2x5cGhCb3VuZGluZ0JveFksIGJv
dW5kcy5tYXhZKCkpOwotICAgICAgICAgICAgbV9taW5HbHlwaEJvdW5kaW5nQm94WSA9IG1pbiht
X21pbkdseXBoQm91bmRpbmdCb3hZLCBib3VuZHMueSgpKTsKLSAgICAgICAgICAgIG1fbGFzdEds
eXBoT3ZlcmZsb3cgPSBtYXg8ZmxvYXQ+KDAsIGJvdW5kcy5tYXhYKCkgLSB3aWR0aCk7CisgICAg
ICAgICAgICBtX21heEdseXBoQm91bmRpbmdCb3hZID0gc3RkOjptYXgobV9tYXhHbHlwaEJvdW5k
aW5nQm94WSwgYm91bmRzLm1heFkoKSk7CisgICAgICAgICAgICBtX21pbkdseXBoQm91bmRpbmdC
b3hZID0gc3RkOjptaW4obV9taW5HbHlwaEJvdW5kaW5nQm94WSwgYm91bmRzLnkoKSk7CisgICAg
ICAgICAgICBtX2xhc3RHbHlwaE92ZXJmbG93ID0gc3RkOjptYXg8ZmxvYXQ+KDAsIGJvdW5kcy5t
YXhYKCkgLSB3aWR0aCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCAyMzk1MWRlMmJkM2VlZmJkMzdi
YWYxNWRlNDFmODM5NjJkNjIxZWNkLi5hNTcxMzg4MDdlNTMyZDEwMjRhMjk3NWMyZGMyZDRjM2I1
ZjVjZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuY3BwCkBAIC05Myw4ICs5Myw2IEBAIFNPRlRfTElOS19BVkZfUE9JTlRFUihDb3JlTWVkaWEs
IGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQ2hhcmFjdGVyQmFja2dyb3VuZENvbG9yCiAjZGVmaW5l
IGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQiBnZXRrQ01UZXh0TWFy
a3VwQXR0cmlidXRlX0JhY2tncm91bmRDb2xvckFSR0IoKQogI2RlZmluZSBrQ01UZXh0TWFya3Vw
QXR0cmlidXRlX0NoYXJhY3RlckJhY2tncm91bmRDb2xvckFSR0IgZ2V0a0NNVGV4dE1hcmt1cEF0
dHJpYnV0ZV9DaGFyYWN0ZXJCYWNrZ3JvdW5kQ29sb3JBUkdCKCkKIAotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBVkZJbmJhbmRUcmFja1BhcmVudDo6fkFW
RkluYmFuZFRyYWNrUGFyZW50KCkKQEAgLTQxMCw3ICs0MDgsNyBAQCB2b2lkIEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWUoQ0ZBcnJheVJlZiBhdHRyaWJ1dGVkU3RyaW5ncywg
ZG91YmxlCiAKICAgICAgICAgbV9jdXJyZW50Q3VlU3RhcnRUaW1lID0gdGltZTsKICAgICAgICAg
Y3VlRGF0YS0+c2V0U3RhcnRUaW1lKG1fY3VycmVudEN1ZVN0YXJ0VGltZSk7Ci0gICAgICAgIGN1
ZURhdGEtPnNldEVuZFRpbWUobnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSk7Cisg
ICAgICAgIGN1ZURhdGEtPnNldEVuZFRpbWUoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpp
bmZpbml0eSgpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEFWRm91bmRhdGlvbiBjdWUgInBvc2l0
aW9uIiBpcyB0byB0aGUgY2VudGVyIG9mIHRoZSB0ZXh0IHNvIGFkanVzdCByZWxhdGl2ZSB0byB0
aGUgZWRnZSBiZWNhdXNlIHdlIHdpbGwgdXNlIGl0IHRvCiAgICAgICAgIC8vIHNldCBDU1MgImxl
ZnQiLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmNwcAppbmRleCA4YTI5MDQyOTdhODQzMjg1NTg2M2JmNzIzMmJkMzU3NzRkOGM5MTg3
Li44ODU1OTdlMjUwNmRjOTFlZDc1Nzc5N2VhM2U1NGEzZDBlYzdjZjc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAt
NDMsOCArNDMsNiBAQAogI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uKE1lZGlhUGxheWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tCmluZGV4
IGE2YjM3M2IzNDFjMmE1MDY0MTIyMDJmMjUxYzczMmE3YjAzNzI2NTAuLmZiYzYxMDkyMDBiOTA3
M2EyMjFhOWY5ZmU3Y2YxZWRiNGUzNWM5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tCkBAIC03NCw5ICs3NCw2
IEBAIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGlj
RWFzeVRvUmVhZCwgTlNTdHJpbmcgKikKICNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljVHJh
bnNjcmliZXNTcG9rZW5EaWFsb2dGb3JBY2Nlc3NpYmlsaXR5IGdldEFWTWVkaWFDaGFyYWN0ZXJp
c3RpY1RyYW5zY3JpYmVzU3Bva2VuRGlhbG9nRm9yQWNjZXNzaWJpbGl0eSgpCiAjZGVmaW5lIEFW
TWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3NpYmlsaXR5
IGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0Rlc2NyaWJlc011c2ljQW5kU291bmRGb3JBY2Nlc3Np
YmlsaXR5KCkKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpD
OjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQyhBVkZJbmJhbmRUcmFja1BhcmVudCogcGxh
eWVyLCBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uICpzZWxlY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZP
YmpDLm1tCmluZGV4IGJkNWM1ZTE2M2I4OTBkMDBjZDdkYzRlYTAyMmQ1NmZiMDM4MjhmNDEuLmE4
ZGY1NWE0MzljNzcwMTNmOTM5ZDRmMGJjZWViOTY5YjNhOTE0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDLm1tCkBAIC01Myw5ICs1Myw2IEBAIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlv
biwgQVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uLCBOU1N0cmluZyAqKQogI2RlZmluZSBBVk1ldGFk
YXRhQ29tbW9uS2V5VGl0bGUgZ2V0QVZNZXRhZGF0YUNvbW1vbktleVRpdGxlKCkKICNkZWZpbmUg
QVZNZXRhZGF0YUtleVNwYWNlQ29tbW9uIGdldEFWTWV0YWRhdGFLZXlTcGFjZUNvbW1vbigpCiAK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQzo6SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQyogcGxheWVyLCBBVlBsYXllckl0ZW1UcmFjayogdHJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQppbmRleCBmYTdmODA1NTQ0MGI2OWVhMTUzZjE0NGY0MjgyZDBkZGI1NzQ4N2Zh
Li44ZjRjMzY2NGFjNjE0MzNiMzNhZWVlZjFiZDUwOWRlYjdlYThhZTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KQEAgLTE1Nyw3ICsxNTcsNiBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5k
YXRpb24sIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25Tbwog
I2RlZmluZSBrQ01UaW1lWmVybyBnZXRrQ01UaW1lWmVybygpCiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogZW51bSBNZWRpYVBsYXllckFWRm91bmRh
dGlvbk9ic2VydmF0aW9uQ29udGV4dCB7CiAgICAgTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNl
cnZhdGlvbkNvbnRleHRQbGF5ZXJJdGVtLApAQCAtNjI2LDcgKzYyNSw3IEBAIGZsb2F0IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtRHVyYXRpb24oKSBjb25zdAog
ICAgICAgICByZXR1cm4gbmFycm93UHJlY2lzaW9uVG9GbG9hdChDTVRpbWVHZXRTZWNvbmRzKGNt
RHVyYXRpb24pKTsKIAogICAgIGlmIChDTVRJTUVfSVNfSU5ERUZJTklURShjbUR1cmF0aW9uKSkg
ewotICAgICAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworICAg
ICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CiAgICAg
fQogCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
cGxhdGZvcm1EdXJhdGlvbiglcCkgLSBpbnZhbGlkIGR1cmF0aW9uLCByZXR1cm5pbmcgJS4wZiIs
IHRoaXMsIE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKTsKQEAgLTYzOSw5ICs2MzgsOCBAQCBm
bG9hdCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjdXJyZW50VGltZSgpIGNv
bnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgQ01UaW1lIGl0ZW1UaW1lID0gW21fYXZQbGF5
ZXJJdGVtLmdldCgpIGN1cnJlbnRUaW1lXTsKLSAgICBpZiAoQ01USU1FX0lTX05VTUVSSUMoaXRl
bVRpbWUpKSB7Ci0gICAgICAgIHJldHVybiBtYXgobmFycm93UHJlY2lzaW9uVG9GbG9hdChDTVRp
bWVHZXRTZWNvbmRzKGl0ZW1UaW1lKSksIDAuMGYpOwotICAgIH0KKyAgICBpZiAoQ01USU1FX0lT
X05VTUVSSUMoaXRlbVRpbWUpKQorICAgICAgICByZXR1cm4gc3RkOjptYXgobmFycm93UHJlY2lz
aW9uVG9GbG9hdChDTVRpbWVHZXRTZWNvbmRzKGl0ZW1UaW1lKSksIDAuMGYpOwogCiAgICAgcmV0
dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA3YTJhZGI1NmQxNmU1NzIxNDU1ZWU1N2RkYmU5
MTE0ZmNkNmJlMzMzLi45YTQ0YmEzYzQ4ZDUwOTI0YWRhZDk3ZjgwMjc4ZDFjMGQ5NDQxMjFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKQEAgLTU2LDggKzU2LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5
ZXJXaW4uaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIC8vIFRoZSB0aHJlc2hvbGQgd2lkdGggb3IgaGVpZ2h0IGFib3ZlIHdoaWNoIGEg
dGlsZWQgbGF5ZXIgd2lsbCBiZSB1c2VkLiBUaGlzIHNob3VsZCBiZQpAQCAtNjUzLDcgKzY1MSw3
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB2aXNp
YmxlKQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQog
ewotICAgIGZsb2F0IGNsYW1wZWRPcGFjaXR5ID0gbWF4KDAuMGYsIG1pbihvcGFjaXR5LCAxLjBm
KSk7CisgICAgZmxvYXQgY2xhbXBlZE9wYWNpdHkgPSBzdGQ6Om1heCgwLjBmLCBzdGQ6Om1pbihv
cGFjaXR5LCAxLjBmKSk7CiAKICAgICBpZiAoY2xhbXBlZE9wYWNpdHkgPT0gbV9vcGFjaXR5KQog
ICAgICAgICByZXR1cm47CkBAIC02ODgsOCArNjg2LDggQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6
OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVyT3BlcmF0aW9ucykKIAog
dm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldE5lZWRzRGlzcGxheSgpCiB7Ci0gICAgRmxvYXRSZWN0
IGh1Z2VSZWN0KC1udW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpIC8gMiwgLW51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6bWF4KCkgLyAyLAotICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX2xp
bWl0czxmbG9hdD46Om1heCgpLCBudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpKTsKKyAgICBG
bG9hdFJlY3QgaHVnZVJlY3QoLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAvIDIs
IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLAorICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjptYXgoKSk7CiAKICAgICBzZXROZWVkc0Rpc3BsYXlJblJlY3QoaHVnZVJl
Y3QpOwogfQpAQCAtMjQ1NSw3ICsyNDUzLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldHVw
QW5pbWF0aW9uKFBsYXRmb3JtQ0FBbmltYXRpb24qIHByb3BlcnR5QW5pbSwgY29uc3QgQW4KIAog
ICAgIGZsb2F0IHJlcGVhdENvdW50ID0gYW5pbS0+aXRlcmF0aW9uQ291bnQoKTsKICAgICBpZiAo
cmVwZWF0Q291bnQgPT0gQW5pbWF0aW9uOjpJdGVyYXRpb25Db3VudEluZmluaXRlKQotICAgICAg
ICByZXBlYXRDb3VudCA9IG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCk7CisgICAgICAgIHJl
cGVhdENvdW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpOwogICAgIGVsc2Ug
aWYgKGFuaW0tPmRpcmVjdGlvbigpID09IEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uQWx0
ZXJuYXRlIHx8IGFuaW0tPmRpcmVjdGlvbigpID09IEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0
aW9uQWx0ZXJuYXRlUmV2ZXJzZSkKICAgICAgICAgcmVwZWF0Q291bnQgLz0gMjsKIApAQCAtMjgy
MSw3ICsyODE5LDcgQEAgc3RhdGljIGZsb2F0IGNsYW1wZWRDb250ZW50c1NjYWxlRm9yU2NhbGUo
ZmxvYXQgc2NhbGUpCiAgICAgLy8gdGhvc2UgdG9vIHNtYWxsIHRvIHNlZS4KICAgICBjb25zdCBm
bG9hdCBtYXhTY2FsZSA9IDEwLjBmOwogICAgIGNvbnN0IGZsb2F0IG1pblNjYWxlID0gMC4wMWY7
Ci0gICAgcmV0dXJuIG1heChtaW5TY2FsZSwgbWluKHNjYWxlLCBtYXhTY2FsZSkpOworICAgIHJl
dHVybiBzdGQ6Om1heChtaW5TY2FsZSwgc3RkOjptaW4oc2NhbGUsIG1heFNjYWxlKSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVDb250ZW50c1NjYWxlKGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L21hYy9UaWxlQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL21hYy9UaWxlQ29udHJvbGxlci5tbQppbmRleCAyZDhkY2EwZjVmZmFmZTE3NjY4N2YwYmZl
ODMxYzJmYWJiYTkxYTk2Li5mZjViNzE4N2Q1ZjU5Mjg5MDFmMDVhYTJlMjE0YTU0ZmZiNGVmMDZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGls
ZUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1RpbGVDb250cm9sbGVyLm1tCkBAIC0zNCw4ICszNCw2IEBACiAjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgogI2ltcG9ydCA8dXRpbGl0eT4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogZW51bSBUaWxlVmFsaWRhdGlvblBvbGljeUZsYWcg
ewpAQCAtNDEwLDE0ICs0MDgsMTQgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6Z2V0VGlsZUluZGV4
UmFuZ2VGb3JSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIFRpbGVJbmRleCYgdG8KICAgICBjbGFt
cGVkUmVjdC5zY2FsZShtX3NjYWxlKTsKICAgICBjbGFtcGVkUmVjdC5pbnRlcnNlY3QocmVjdCk7
CiAKLSAgICB0b3BMZWZ0LnNldFgobWF4KGNsYW1wZWRSZWN0LngoKSAvIG1fdGlsZVNpemUud2lk
dGgoKSwgMCkpOwotICAgIHRvcExlZnQuc2V0WShtYXgoY2xhbXBlZFJlY3QueSgpIC8gbV90aWxl
U2l6ZS5oZWlnaHQoKSwgMCkpOworICAgIHRvcExlZnQuc2V0WChzdGQ6Om1heChjbGFtcGVkUmVj
dC54KCkgLyBtX3RpbGVTaXplLndpZHRoKCksIDApKTsKKyAgICB0b3BMZWZ0LnNldFkoc3RkOjpt
YXgoY2xhbXBlZFJlY3QueSgpIC8gbV90aWxlU2l6ZS5oZWlnaHQoKSwgMCkpOwogCiAgICAgaW50
IGJvdHRvbVhSYXRpbyA9IGNlaWwoKGZsb2F0KWNsYW1wZWRSZWN0Lm1heFgoKSAvIG1fdGlsZVNp
emUud2lkdGgoKSk7Ci0gICAgYm90dG9tUmlnaHQuc2V0WChtYXgoYm90dG9tWFJhdGlvIC0gMSwg
MCkpOworICAgIGJvdHRvbVJpZ2h0LnNldFgoc3RkOjptYXgoYm90dG9tWFJhdGlvIC0gMSwgMCkp
OwogCiAgICAgaW50IGJvdHRvbVlSYXRpbyA9IGNlaWwoKGZsb2F0KWNsYW1wZWRSZWN0Lm1heFko
KSAvIG1fdGlsZVNpemUuaGVpZ2h0KCkpOwotICAgIGJvdHRvbVJpZ2h0LnNldFkobWF4KGJvdHRv
bVlSYXRpbyAtIDEsIDApKTsKKyAgICBib3R0b21SaWdodC5zZXRZKHN0ZDo6bWF4KGJvdHRvbVlS
YXRpbyAtIDEsIDApKTsKIH0KIAogRmxvYXRSZWN0IFRpbGVDb250cm9sbGVyOjpjb21wdXRlVGls
ZUNvdmVyYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHByZXZpb3VzVmlzaWJsZVJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgY3VycmVudFZpc2libGVSZWN0KSBjb25zdApAQCAtNDUxLDEyICs0NDksMTIg
QEAgRmxvYXRSZWN0IFRpbGVDb250cm9sbGVyOjpjb21wdXRlVGlsZUNvdmVyYWdlUmVjdChjb25z
dCBGbG9hdFJlY3QmIHByZXZpb3VzVmlzaWIKICAgICAvLyBEb24ndCBleHRlbmQgY292ZXJhZ2Ug
YmVmb3JlIDAgb3IgYWZ0ZXIgdGhlIGVuZC4KICAgICBGbG9hdFJlY3QgY292ZXJhZ2VCb3VuZHMg
PSBib3VuZHMoKTsKICAgICBmbG9hdCBjb3ZlcmFnZUxlZnQgPSB2aXNpYmxlUmVjdC54KCkgLSAo
Y292ZXJhZ2VIb3Jpem9udGFsU2l6ZSAtIHZpc2libGVSZWN0LndpZHRoKCkpIC8gMjsKLSAgICBj
b3ZlcmFnZUxlZnQgPSBtaW4oY292ZXJhZ2VMZWZ0LCBjb3ZlcmFnZUJvdW5kcy5tYXhYKCkgLSBj
b3ZlcmFnZUhvcml6b250YWxTaXplKTsKLSAgICBjb3ZlcmFnZUxlZnQgPSBtYXgoY292ZXJhZ2VM
ZWZ0LCBjb3ZlcmFnZUJvdW5kcy54KCkpOworICAgIGNvdmVyYWdlTGVmdCA9IHN0ZDo6bWluKGNv
dmVyYWdlTGVmdCwgY292ZXJhZ2VCb3VuZHMubWF4WCgpIC0gY292ZXJhZ2VIb3Jpem9udGFsU2l6
ZSk7CisgICAgY292ZXJhZ2VMZWZ0ID0gc3RkOjptYXgoY292ZXJhZ2VMZWZ0LCBjb3ZlcmFnZUJv
dW5kcy54KCkpOwogCiAgICAgZmxvYXQgY292ZXJhZ2VUb3AgPSB2aXNpYmxlUmVjdC55KCkgLSAo
Y292ZXJhZ2VWZXJ0aWNhbFNpemUgLSB2aXNpYmxlUmVjdC5oZWlnaHQoKSkgLyAyOwotICAgIGNv
dmVyYWdlVG9wID0gbWluKGNvdmVyYWdlVG9wLCBjb3ZlcmFnZUJvdW5kcy5tYXhZKCkgLSBjb3Zl
cmFnZVZlcnRpY2FsU2l6ZSk7Ci0gICAgY292ZXJhZ2VUb3AgPSBtYXgoY292ZXJhZ2VUb3AsIGNv
dmVyYWdlQm91bmRzLnkoKSk7CisgICAgY292ZXJhZ2VUb3AgPSBzdGQ6Om1pbihjb3ZlcmFnZVRv
cCwgY292ZXJhZ2VCb3VuZHMubWF4WSgpIC0gY292ZXJhZ2VWZXJ0aWNhbFNpemUpOworICAgIGNv
dmVyYWdlVG9wID0gc3RkOjptYXgoY292ZXJhZ2VUb3AsIGNvdmVyYWdlQm91bmRzLnkoKSk7CiAK
ICAgICByZXR1cm4gRmxvYXRSZWN0KGNvdmVyYWdlTGVmdCwgY292ZXJhZ2VUb3AsIGNvdmVyYWdl
SG9yaXpvbnRhbFNpemUsIGNvdmVyYWdlVmVydGljYWxTaXplKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cAppbmRleCBhODhkZTdmZDExZjk0OTlkM2ViZmY0MTFlNTYzNDUzZjViZGE1ODMxLi40YTY4MTYy
ZTZiZDA0OGJmNjM2MDJkOWRkNzNjN2Y1ZjgwNjAzMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBA
IC01Niw4ICs1Niw2IEBAIGV4dGVybiAiQyIgewogICAgIENHX0VYVEVSTiBDR0FmZmluZVRyYW5z
Zm9ybSBDR0NvbnRleHRHZXRCYXNlQ1RNKENHQ29udGV4dFJlZik7CiB9OwogCi11c2luZyBuYW1l
c3BhY2Ugc3RkOwotCiAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyB1c2luZyBkZWNsYXJhdGlvbiBz
aG91bGQgYmUgaW4gPHd0Zi9IYXNoRnVuY3Rpb25zLmg+LgogdXNpbmcgV1RGOjpwYWlySW50SGFz
aDsKIApAQCAtOTU4LDcgKzk1Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9y
bVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uCiAgICAgfQog
CiAgICAgLy8gRXh0cmVtZSAiYmx1ciIgdmFsdWVzIGNhbiBtYWtlIHRleHQgZHJhd2luZyBjcmFz
aCBvciB0YWtlIGNyYXp5IGxvbmcgdGltZXMsIHNvIGNsYW1wCi0gICAgYmx1clJhZGl1cyA9IG1p
bihibHVyUmFkaXVzLCBuYXJyb3dQcmVjaXNpb25Ub0NHRmxvYXQoMTAwMC4wKSk7CisgICAgYmx1
clJhZGl1cyA9IHN0ZDo6bWluKGJsdXJSYWRpdXMsIG5hcnJvd1ByZWNpc2lvblRvQ0dGbG9hdCgx
MDAwLjApKTsKIAogICAgIGFwcGx5U2hhZG93T2Zmc2V0V29ya2Fyb3VuZElmTmVlZGVkKCp0aGlz
LCB4T2Zmc2V0LCB5T2Zmc2V0KTsKIApAQCAtMTI0NCwxNCArMTI0MiwxNCBAQCBzdGF0aWMgRmxv
YXRSZWN0IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoR3JhcGhp
Y3NDb250ZXh0JiBjbwogCiAgICAgLy8gVXNlIGEgbWluaW11bSB0aGlja25lc3Mgb2YgMC41IGlu
IHVzZXIgc3BhY2UuCiAgICAgLy8gU2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQyNTUgZm9yIGRldGFpbHMgb2Ygd2h5IDAuNSBpcyB0aGUgcmlnaHQgbWluaW11bSB0
aGlja25lc3MgdG8gdXNlLgotICAgIEZsb2F0UmVjdCBpbml0aWFsQm91bmRzKHBvaW50LCBGbG9h
dFNpemUod2lkdGgsIG1heChjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpLCAwLjVmKSkpOworICAg
IEZsb2F0UmVjdCBpbml0aWFsQm91bmRzKHBvaW50LCBGbG9hdFNpemUod2lkdGgsIHN0ZDo6bWF4
KGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNzKCksIDAuNWYpKSk7CiAKICAgICBpZiAocHJpbnRpbmcg
fHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWNvbnRleHQuZ2V0Q1RNKEdyYXBoaWNz
Q29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSkucHJlc2VydmVzQXhpc0FsaWdu
bWVudCgpKQogICAgICAgICByZXR1cm4gaW5pdGlhbEJvdW5kczsKIAogICAgIC8vIE9uIHNjcmVl
biwgdXNlIGEgbWluaW11bSB0aGlja25lc3Mgb2YgMS4wIGluIHVzZXIgc3BhY2UgKGxhdGVyIHJv
dW5kZWQgdG8gYW4gaW50ZWdyYWwgbnVtYmVyIGluIGRldmljZSBzcGFjZSkuCiAgICAgRmxvYXRS
ZWN0IGFkanVzdGVkQm91bmRzID0gaW5pdGlhbEJvdW5kczsKLSAgICBhZGp1c3RlZEJvdW5kcy5z
ZXRIZWlnaHQobWF4KGluaXRpYWxCb3VuZHMud2lkdGgoKSwgMS4wZikpOworICAgIGFkanVzdGVk
Qm91bmRzLnNldEhlaWdodChzdGQ6Om1heChpbml0aWFsQm91bmRzLndpZHRoKCksIDEuMGYpKTsK
IAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGEgYmV0dGVyIHdheS4KICAgICAv
LyBXZSB0cnkgdG8gcm91bmQgYWxsIHBhcmFtZXRlcnMgdG8gaW50ZWdlciBib3VuZGFyaWVzIGlu
IGRldmljZSBzcGFjZS4gSWYgcm91bmRpbmcgcGl4ZWxzIGluIGRldmljZSBzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cAppbmRleCBiZGFlMWUyNzlhZmNjNTk4Nzk1NWQ3YWYyYzI0Njk1OTUyNTAyNGFlLi40ZmFiNjc4
MDFlMWZkMzgyODU1MmQ0YTZjYjljNTE1Mjg2Y2ZiYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtNTAsOCAr
NTAsNiBAQAogI2luY2x1ZGUgPElPU3VyZmFjZS9JT1N1cmZhY2UuaD4KICNlbmRpZgogCi11c2lu
ZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoSU9TVVJG
QUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCmluZGV4IDY4NDg5NTMy
YzlkMDZmNDM5ZTFhNTE1NGUyNTdhYzJmOTVjODcwY2QuLjU1NmFlNTQzOGE5ZTU1ZGI4NzczNzE1
MjFlZjQ3MDQwMzdhYTcxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKQEAgLTM4LDggKzM4LDYgQEAK
ICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFj
ZSBzdGQ7Ci0KICNpZiBVU0UoQUNDRUxFUkFURSkKIHN0cnVjdCBTY2FubGluZURhdGEgewogICAg
IHZJbWFnZVBpeGVsQ291bnQgc2NhbmxpbmVXaWR0aDsKQEAgLTEzMCw3ICsxMjgsNyBAQCBQYXNz
UmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdGE6OmdldERhdGEoY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29ucwogICAgICAgICBkZXN0eCA9IC1vcmlnaW54OwogICAgICAgICBv
cmlnaW54ID0gMDsKICAgICB9Ci0gICAgZGVzdHcgPSBtaW48aW50PihkZXN0dywgY2VpbGYoc2l6
ZS53aWR0aCgpIC8gcmVzb2x1dGlvblNjYWxlKSAtIG9yaWdpbngpOworICAgIGRlc3R3ID0gc3Rk
OjptaW48aW50PihkZXN0dywgY2VpbGYoc2l6ZS53aWR0aCgpIC8gcmVzb2x1dGlvblNjYWxlKSAt
IG9yaWdpbngpOwogICAgIG9yaWdpbnggKj0gcmVzb2x1dGlvblNjYWxlOwogICAgIGlmIChlbmR4
LnVuc2FmZUdldCgpID4gc2l6ZS53aWR0aCgpKQogICAgICAgICBlbmR4ID0gc2l6ZS53aWR0aCgp
OwpAQCAtMTQ0LDcgKzE0Miw3IEBAIFBhc3NSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEltYWdl
QnVmZmVyRGF0YTo6Z2V0RGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zCiAgICAgICAgIGRl
c3R5ID0gLW9yaWdpbnk7CiAgICAgICAgIG9yaWdpbnkgPSAwOwogICAgIH0KLSAgICBkZXN0aCA9
IG1pbjxpbnQ+KGRlc3RoLCBjZWlsZihzaXplLmhlaWdodCgpIC8gcmVzb2x1dGlvblNjYWxlKSAt
IG9yaWdpbnkpOworICAgIGRlc3RoID0gc3RkOjptaW48aW50PihkZXN0aCwgY2VpbGYoc2l6ZS5o
ZWlnaHQoKSAvIHJlc29sdXRpb25TY2FsZSkgLSBvcmlnaW55KTsKICAgICBvcmlnaW55ICo9IHJl
c29sdXRpb25TY2FsZTsKICAgICBpZiAoZW5keS51bnNhZmVHZXQoKSA+IHNpemUuaGVpZ2h0KCkp
CiAgICAgICAgIGVuZHkgPSBzaXplLmhlaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAppbmRleCBlNGMxNjZmN2Ex
ZWI0OWFkODk4ZmIzOWI5N2RlNmYxYjBjYTRmYTBkLi40MTNjZDNmNTU1MzJmODUyMjZlODNkNTE4
ZDcwYWFhNjQ5ZmU4YTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcApAQCAtMzYsOCArMzYsNiBAQAogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRp
b25TZXJ2aWNlcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNvbnN0IENGU3RyaW5nUmVmIGtDR0ltYWdlU291cmNlU2hvdWxkUHJlZmVyUkdCMzIg
PSBDRlNUUigia0NHSW1hZ2VTb3VyY2VTaG91bGRQcmVmZXJSR0IzMiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cu
Y3BwCmluZGV4IDU3ODE4YzZlODVlMjA2NmEzNDUwYTRlYmI1YWQ1ZjVkZDE3ZTkzYjEuLmJkYzk0
ZDJkOGRmNjAzMTAwY2NkNGFjOWM3ZjA5NTY0MGQwYjU5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAK
QEAgLTMxLDggKzMxLDYgQEAKICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogRkVEcm9wU2hhZG93OjpGRURyb3BTaGFkb3coRmls
dGVyKiBmaWx0ZXIsIGZsb2F0IHN0ZFgsIGZsb2F0IHN0ZFksIGZsb2F0IGR4LCBmbG9hdCBkeSwg
Y29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBmbG9hdCBzaGFkb3dPcGFjaXR5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3Np
YW5CbHVyLmNwcAppbmRleCA0OTU3ZjQ3NGIxN2U1OGQyNmQ1Zjk3M2UyNTk1MzVhZmY0MTYwZTI0
Li41NjY5YmExMmY3ZGQ0NGQ3YWM4NjY1NGYxNzdhYzZkOWI4MzU1NWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3Np
YW5CbHVyLmNwcApAQCAtMzgsOCArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL1BhcmFsbGVsSm9icy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwot
CiBzdGF0aWMgaW5saW5lIGZsb2F0IGdhdXNzaWFuS2VybmVsRmFjdG9yKCkKIHsKICAgICByZXR1
cm4gMyAvIDQuZiAqIHNxcnRmKDIgKiBwaUZsb2F0KTsKQEAgLTEwMyw3ICsxMDEsNyBAQCBpbmxp
bmUgdm9pZCBib3hCbHVyKFVpbnQ4Q2xhbXBlZEFycmF5KiBzcmNQaXhlbEFycmF5LCBVaW50OENs
YW1wZWRBcnJheSogZHN0UGl4ZQogICAgICAgICAgICAgLy8gRnVydGhlcm1vcmUsIHRoaXMgY29k
ZSBwYXRoIGFmZmVjdHMgbW9yZSB0aGFuIGp1c3QgdGhlIGlucHV0IGFyZWEuCiAgICAgICAgICAg
ICBpZiAoZWRnZU1vZGUgPT0gRURHRU1PREVfTk9ORSkgewogICAgICAgICAgICAgICAgIC8vIEZp
bGwgdGhlIGtlcm5lbAotICAgICAgICAgICAgICAgIGludCBtYXhLZXJuZWxTaXplID0gbWluKGR4
UmlnaHQsIGVmZmVjdFdpZHRoKTsKKyAgICAgICAgICAgICAgICBpbnQgbWF4S2VybmVsU2l6ZSA9
IHN0ZDo6bWluKGR4UmlnaHQsIGVmZmVjdFdpZHRoKTsKICAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG1heEtlcm5lbFNpemU7ICsraSkKICAgICAgICAgICAgICAgICAgICAgc3Vt
ICs9IHNyY1BpeGVsQXJyYXktPml0ZW0obGluZSArIGkgKiBzdHJpZGUgKyBjaGFubmVsKTsKIApA
QCAtMTczLDcgKzE3MSw3IEBAIGlubGluZSB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFw
cGx5R2VuZXJpYyhVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxBcnJhCiAjZWxzZQogICAgICAg
ICAgICAgYm94Qmx1cihzcmMsIGRzdCwga2VybmVsU2l6ZVgsIGR4TGVmdCwgZHhSaWdodCwgNCwg
c3RyaWRlLCBwYWludFNpemUud2lkdGgoKSwgcGFpbnRTaXplLmhlaWdodCgpLCBpc0FscGhhSW1h
Z2UoKSwgbV9lZGdlTW9kZSk7CiAjZW5kaWYKLSAgICAgICAgICAgIHN3YXAoc3JjLCBkc3QpOwor
ICAgICAgICAgICAgc3RkOjpzd2FwKHNyYywgZHN0KTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChrZXJuZWxTaXplWSkgewpAQCAtMTg2LDcgKzE4NCw3IEBAIGlubGluZSB2b2lkIEZFR2F1c3Np
YW5CbHVyOjpwbGF0Zm9ybUFwcGx5R2VuZXJpYyhVaW50OENsYW1wZWRBcnJheSogc3JjUGl4ZWxB
cnJhCiAjZWxzZQogICAgICAgICAgICAgYm94Qmx1cihzcmMsIGRzdCwga2VybmVsU2l6ZVksIGR5
TGVmdCwgZHlSaWdodCwgc3RyaWRlLCA0LCBwYWludFNpemUuaGVpZ2h0KCksIHBhaW50U2l6ZS53
aWR0aCgpLCBpc0FscGhhSW1hZ2UoKSwgbV9lZGdlTW9kZSk7CiAjZW5kaWYKLSAgICAgICAgICAg
IHN3YXAoc3JjLCBkc3QpOworICAgICAgICAgICAgc3RkOjpzd2FwKHNyYywgZHN0KTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtMjc5LDEwICsyNzcsMTAgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6
Y2FsY3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKHVuc2lnbmVkJiBrZXJuZWxTaXplWCwgdW5zaWdu
ZWQKIAogICAgIGtlcm5lbFNpemVYID0gMDsKICAgICBpZiAoc3RkWCkKLSAgICAgICAga2VybmVs
U2l6ZVggPSBtYXg8dW5zaWduZWQ+KDIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihmbG9vcmYoc3Rk
WCAqIGdhdXNzaWFuS2VybmVsRmFjdG9yKCkgKyAwLjVmKSkpOworICAgICAgICBrZXJuZWxTaXpl
WCA9IHN0ZDo6bWF4PHVuc2lnbmVkPigyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZmxvb3JmKHN0
ZFggKiBnYXVzc2lhbktlcm5lbEZhY3RvcigpICsgMC41ZikpKTsKICAgICBrZXJuZWxTaXplWSA9
IDA7CiAgICAgaWYgKHN0ZFkpCi0gICAgICAgIGtlcm5lbFNpemVZID0gbWF4PHVuc2lnbmVkPigy
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZmxvb3JmKHN0ZFkgKiBnYXVzc2lhbktlcm5lbEZhY3Rv
cigpICsgMC41ZikpKTsKKyAgICAgICAga2VybmVsU2l6ZVkgPSBzdGQ6Om1heDx1bnNpZ25lZD4o
Miwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZsb29yZihzdGRZICogZ2F1c3NpYW5LZXJuZWxGYWN0
b3IoKSArIDAuNWYpKSk7CiAgICAgCiAgICAgLy8gTGltaXQgdGhlIGtlcm5lbCBzaXplIHRvIDEw
MDAuIEEgYmlnZ2VyIHJhZGl1cyB3b24ndCBtYWtlIGEgYmlnIGRpZmZlcmVuY2UgZm9yIHRoZSBy
ZXN1bHQgaW1hZ2UgYnV0CiAgICAgLy8gaW5mbGF0ZXMgdGhlIGFic29sdXRlIHBhaW50IHJlY3Qg
dG8gbXVjaC4gVGhpcyBpcyBjb21wYXRpYmxlIHdpdGggRmlyZWZveCcgYmVoYXZpb3IuCkBAIC0z
NjksNyArMzY3LDcgQEAgVGV4dFN0cmVhbSYgRkVHYXVzc2lhbkJsdXI6OmV4dGVybmFsUmVwcmVz
ZW50YXRpb24oVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGMKIGZsb2F0IEZFR2F1c3NpYW5C
bHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24oZmxvYXQgcmFkaXVzKQogewogICAgIC8vIEJsdXIg
cmFkaXVzIHJlcHJlc2VudHMgMi8zIHRpbWVzIHRoZSBrZXJuZWwgc2l6ZSwgdGhlIGRlc3QgcGl4
ZWwgaXMgaGFsZiBvZiB0aGUgcmFkaXVzIGFwcGxpZWQgMyB0aW1lcwotICAgIHJldHVybiBtYXgo
KHJhZGl1cyAqIDIgLyAzLmYgLSAwLjVmKSAvIGdhdXNzaWFuS2VybmVsRmFjdG9yKCksIDAuZik7
CisgICAgcmV0dXJuIHN0ZDo6bWF4KChyYWRpdXMgKiAyIC8gMy5mIC0gMC41ZikgLyBnYXVzc2lh
bktlcm5lbEZhY3RvcigpLCAwLmYpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXgg
OWViNmQ5YWNjMDQ1ODg2NTM1ZTIxMjJiNWM5NGQ0MjM1ZGY2MTkyZS4uNjQyYjBkNTIxZGI4NjQ3
ZmQxNWU4NWMxNzNhMGQyZDI4NzM3ZjQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtNDEsMTEgKzQxLDggQEAKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1l
c3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLQogVGV4dHVyZTo6VGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUGFzc093blB0cjxWZWN0b3I8dW5zaWduZWQgaW50
Pj4gdGlsZVRleHR1cmVJZHMsIEZvcm1hdCBmb3JtYXQsIGludCB3aWR0aCwgaW50IGhlaWdodCwg
aW50IG1heFRleHR1cmVTaXplKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2Zv
cm1hdChmb3JtYXQpCkBAIC0xNzEsOCArMTY4LDggQEAgdm9pZCBUZXh0dXJlOjp1cGRhdGVTdWJS
ZWN0KHZvaWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkKICAgICAgICAgLy8g
RklYTUU6ICBUaGlzIGNvdWxkIHVzZSBQQk8ncyB0byBzYXZlIGRvaW5nIGFuIGV4dHJhIGNvcHkg
aGVyZS4KICAgICB9CiAgICAgaW50IHRlbXBCdWZmU2l6ZSA9IC8vIFRlbXBvcmFyeSBidWZmZXIg
c2l6ZSBpcyB0aGUgc21hbGxlciBvZiB0aGUgbWF4IHRleHR1cmUgc2l6ZSBvciB0aGUgdXBkYXRl
UmVjdFNhbml0aXplZAotICAgICAgICBtaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLndpZHRo
KCksIG1fdGlsZXMuYm9yZGVyVGV4ZWxzKCkgKyB1cGRhdGVSZWN0U2FuaXRpemVkLndpZHRoKCkp
ICoKLSAgICAgICAgbWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKS5oZWlnaHQoKSwgbV90aWxl
cy5ib3JkZXJUZXhlbHMoKSArIHVwZGF0ZVJlY3RTYW5pdGl6ZWQuaGVpZ2h0KCkpOworICAgICAg
ICBzdGQ6Om1pbihtX3RpbGVzLm1heFRleHR1cmVTaXplKCkud2lkdGgoKSwgbV90aWxlcy5ib3Jk
ZXJUZXhlbHMoKSArIHVwZGF0ZVJlY3RTYW5pdGl6ZWQud2lkdGgoKSkgKgorICAgICAgICBzdGQ6
Om1pbihtX3RpbGVzLm1heFRleHR1cmVTaXplKCkuaGVpZ2h0KCksIG1fdGlsZXMuYm9yZGVyVGV4
ZWxzKCkgKyB1cGRhdGVSZWN0U2FuaXRpemVkLmhlaWdodCgpKTsKICAgICBhdXRvIHRlbXBCdWZm
ID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50MzJfdFtdPih0ZW1wQnVmZlNpemUpOwogCiAgICAgZm9y
IChpbnQgdGlsZSA9IDA7IHRpbGUgPCBtX3RpbGVzLm51bVRpbGVzWCgpICogbV90aWxlcy5udW1U
aWxlc1koKTsgdGlsZSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvVGlsaW5nRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGlsaW5nRGF0YS5jcHAKaW5kZXggOGMyMzBiMzYyZWYzNWVjNTllNzhiZDU0ZGFm
YTZmMWQyZTY3ZTM3OS4uMjNkZjM3ZGEwYThlMjYzOTU1NTEyNDcxZWJmZTBhYjA2ODI0ZTMxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0Rh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UaWxpbmdE
YXRhLmNwcApAQCAtMzgsOCArMzgsNiBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
IDxhbGdvcml0aG0+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIGludCBjb21wdXRlTnVtVGlsZXMoaW50IG1heFRleHR1cmVTaXplLCBpbnQg
dG90YWxTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKQpAQCAtNDcsNyArNDUsNyBAQCBzdGF0aWMgaW50
IGNvbXB1dGVOdW1UaWxlcyhpbnQgbWF4VGV4dHVyZVNpemUsIGludCB0b3RhbFNpemUsIGludCBi
b3JkZXJUZXhlbHMpCiAgICAgaWYgKG1heFRleHR1cmVTaXplIC0gMiAqIGJvcmRlclRleGVscyA8
PSAwKQogICAgICAgICByZXR1cm4gdG90YWxTaXplID4gMCAmJiBtYXhUZXh0dXJlU2l6ZSA+PSB0
b3RhbFNpemUgPyAxIDogMDsKIAotICAgIGludCBudW1UaWxlcyA9IG1heCgxLCAxICsgKHRvdGFs
U2l6ZSAtIDEgLSAyICogYm9yZGVyVGV4ZWxzKSAvIChtYXhUZXh0dXJlU2l6ZSAtIDIgKiBib3Jk
ZXJUZXhlbHMpKTsKKyAgICBpbnQgbnVtVGlsZXMgPSBzdGQ6Om1heCgxLCAxICsgKHRvdGFsU2l6
ZSAtIDEgLSAyICogYm9yZGVyVGV4ZWxzKSAvIChtYXhUZXh0dXJlU2l6ZSAtIDIgKiBib3JkZXJU
ZXhlbHMpKTsKICAgICByZXR1cm4gdG90YWxTaXplID4gMCA/IG51bVRpbGVzIDogMDsKIH0KIApA
QCAtODQsNyArODIsNyBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVhJbmRleEZyb21TcmNDb29yZChp
bnQgc3JjUG9zKSBjb25zdAogCiAgICAgQVNTRVJUKG1fbWF4VGV4dHVyZVNpemUud2lkdGgoKSAt
IDIgKiBtX2JvcmRlclRleGVscyk7CiAgICAgaW50IHggPSAoc3JjUG9zIC0gbV9ib3JkZXJUZXhl
bHMpIC8gKG1fbWF4VGV4dHVyZVNpemUud2lkdGgoKSAtIDIgKiBtX2JvcmRlclRleGVscyk7Ci0g
ICAgcmV0dXJuIG1pbihtYXgoeCwgMCksIG51bVRpbGVzWCgpIC0gMSk7CisgICAgcmV0dXJuIHN0
ZDo6bWluKHN0ZDo6bWF4KHgsIDApLCBudW1UaWxlc1goKSAtIDEpOwogfQogCiBpbnQgVGlsaW5n
RGF0YTo6dGlsZVlJbmRleEZyb21TcmNDb29yZChpbnQgc3JjUG9zKSBjb25zdApAQCAtOTQsNyAr
OTIsNyBAQCBpbnQgVGlsaW5nRGF0YTo6dGlsZVlJbmRleEZyb21TcmNDb29yZChpbnQgc3JjUG9z
KSBjb25zdAogCiAgICAgQVNTRVJUKG1fbWF4VGV4dHVyZVNpemUuaGVpZ2h0KCkgLSAyICogbV9i
b3JkZXJUZXhlbHMpOwogICAgIGludCB5ID0gKHNyY1BvcyAtIG1fYm9yZGVyVGV4ZWxzKSAvICht
X21heFRleHR1cmVTaXplLmhlaWdodCgpIC0gMiAqIG1fYm9yZGVyVGV4ZWxzKTsKLSAgICByZXR1
cm4gbWluKG1heCh5LCAwKSwgbnVtVGlsZXNZKCkgLSAxKTsKKyAgICByZXR1cm4gc3RkOjptaW4o
c3RkOjptYXgoeSwgMCksIG51bVRpbGVzWSgpIC0gMSk7CiB9CiAKIEludFJlY3QgVGlsaW5nRGF0
YTo6dGlsZUJvdW5kcyhpbnQgaSwgaW50IGopIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIu
Y3BwCmluZGV4IDU1NmM4NWRlNGMxNjJmNWYxYzdkZTA2OTE1NzM4MWFkNTE3NzVjNmEuLmJjMWM4
ZjViNDA4NDc2NWExZTQ2ZjcwMWE1NDRhMmQ2ODZkODdmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXIuY3BwCkBAIC0zNSw4ICszNSw2IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLXVzaW5nIG5hbWVz
cGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dExheW91dCB7CkBA
IC0xMzIsMTAgKzEzMCwxMCBAQCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0Q29u
dHJvbGxlcihjb25zdCBGb250KiBmb250LCBjb25zdCBUZXh0UnVuJiBydQogICAgICwgbV9sZWFk
aW5nRXhwYW5zaW9uKDApCiAgICAgLCBtX2FmdGVyRXhwYW5zaW9uKCFydW4uYWxsb3dzTGVhZGlu
Z0V4cGFuc2lvbigpKQogICAgICwgbV9mYWxsYmFja0ZvbnRzKGZhbGxiYWNrRm9udHMpCi0gICAg
LCBtX21pbkdseXBoQm91bmRpbmdCb3hYKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpCi0g
ICAgLCBtX21heEdseXBoQm91bmRpbmdCb3hYKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWluKCkp
Ci0gICAgLCBtX21pbkdseXBoQm91bmRpbmdCb3hZKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4
KCkpCi0gICAgLCBtX21heEdseXBoQm91bmRpbmdCb3hZKG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
bWluKCkpCisgICAgLCBtX21pbkdseXBoQm91bmRpbmdCb3hYKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjptYXgoKSkKKyAgICAsIG1fbWF4R2x5cGhCb3VuZGluZ0JveFgoc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46Om1pbigpKQorICAgICwgbV9taW5HbHlwaEJvdW5kaW5nQm94WShzdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpCisgICAgLCBtX21heEdseXBoQm91bmRpbmdC
b3hZKHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW4oKSkKICAgICAsIG1fbGFzdFJvdW5k
aW5nR2x5cGgoMCkKIHsKICAgICBpZiAoIW1fZXhwYW5zaW9uKQpAQCAtMTk1LDkgKzE5Myw5IEBA
IGludCBDb21wbGV4VGV4dENvbnRyb2xsZXI6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGgsIGJv
b2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpCiAgICAgICAgICAgICAgICAgQ0ZJbmRleCBoaXRHbHlw
aFN0YXJ0ID0gY29tcGxleFRleHRSdW4uaW5kZXhBdChqKTsKICAgICAgICAgICAgICAgICBDRklu
ZGV4IGhpdEdseXBoRW5kOwogICAgICAgICAgICAgICAgIGlmIChtX3J1bi5sdHIoKSkKLSAgICAg
ICAgICAgICAgICAgICAgaGl0R2x5cGhFbmQgPSBtYXg8Q0ZJbmRleD4oaGl0R2x5cGhTdGFydCwg
aiArIDEgPCBjb21wbGV4VGV4dFJ1bi5nbHlwaENvdW50KCkgPyBjb21wbGV4VGV4dFJ1bi5pbmRl
eEF0KGogKyAxKSA6IHN0YXRpY19jYXN0PENGSW5kZXg+KGNvbXBsZXhUZXh0UnVuLmluZGV4RW5k
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaGl0R2x5cGhFbmQgPSBzdGQ6Om1heDxDRkluZGV4
PihoaXRHbHlwaFN0YXJ0LCBqICsgMSA8IGNvbXBsZXhUZXh0UnVuLmdseXBoQ291bnQoKSA/IGNv
bXBsZXhUZXh0UnVuLmluZGV4QXQoaiArIDEpIDogc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oY29tcGxl
eFRleHRSdW4uaW5kZXhFbmQoKSkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgaGl0R2x5cGhFbmQgPSBtYXg8Q0ZJbmRleD4oaGl0R2x5cGhTdGFydCwgaiA+IDAg
PyBjb21wbGV4VGV4dFJ1bi5pbmRleEF0KGogLSAxKSA6IHN0YXRpY19jYXN0PENGSW5kZXg+KGNv
bXBsZXhUZXh0UnVuLmluZGV4RW5kKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaGl0R2x5cGhF
bmQgPSBzdGQ6Om1heDxDRkluZGV4PihoaXRHbHlwaFN0YXJ0LCBqID4gMCA/IGNvbXBsZXhUZXh0
UnVuLmluZGV4QXQoaiAtIDEpIDogc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oY29tcGxleFRleHRSdW4u
aW5kZXhFbmQoKSkpOwogCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgZGl2
aWRpbmcgdGhlIGdseXBoJ3MgYWR2YW5jZSBlcXVhbGx5IGJldHdlZW4gdGhlIGNoYXJhY3RlcnMs
IHRoaXMKICAgICAgICAgICAgICAgICAvLyBjb3VsZCB1c2UgdGhlIGdseXBoJ3MgImxpZ2F0dXJl
IGNhcmV0cyIuIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIENvcmUgVGV4dCBBUEkgdG8gZ2V0IHRoZQpA
QCAtNTEyLDkgKzUxMCw5IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZHZhbmNlKHVu
c2lnbmVkIG9mZnNldCwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBHCiAgICAgICAgICAgICB1
bnNpZ25lZCBnbHlwaEVuZE9mZnNldDsKICAgICAgICAgICAgIGlmIChjb21wbGV4VGV4dFJ1bi5p
c01vbm90b25pYygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGx0cikKLSAgICAgICAgICAgICAg
ICAgICAgZ2x5cGhFbmRPZmZzZXQgPSBtYXg8dW5zaWduZWQ+KGdseXBoU3RhcnRPZmZzZXQsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihnICsgMSA8IGdseXBoQ291bnQgPyBjb21wbGV4VGV4dFJ1bi5p
bmRleEF0KGcgKyAxKSA6IGNvbXBsZXhUZXh0UnVuLmluZGV4RW5kKCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZ2x5cGhFbmRPZmZzZXQgPSBzdGQ6Om1heDx1bnNpZ25lZD4oZ2x5cGhTdGFydE9m
ZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGcgKyAxIDwgZ2x5cGhDb3VudCA/IGNvbXBsZXhU
ZXh0UnVuLmluZGV4QXQoZyArIDEpIDogY29tcGxleFRleHRSdW4uaW5kZXhFbmQoKSkpOwogICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZ2x5cGhFbmRPZmZzZXQgPSBt
YXg8dW5zaWduZWQ+KGdseXBoU3RhcnRPZmZzZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnID4g
MCA/IGNvbXBsZXhUZXh0UnVuLmluZGV4QXQoZyAtIDEpIDogY29tcGxleFRleHRSdW4uaW5kZXhF
bmQoKSkpOworICAgICAgICAgICAgICAgICAgICBnbHlwaEVuZE9mZnNldCA9IHN0ZDo6bWF4PHVu
c2lnbmVkPihnbHlwaFN0YXJ0T2Zmc2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZyA+IDAgPyBj
b21wbGV4VGV4dFJ1bi5pbmRleEF0KGcgLSAxKSA6IGNvbXBsZXhUZXh0UnVuLmluZGV4RW5kKCkp
KTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGdseXBoRW5kT2Zmc2V0ID0g
Y29tcGxleFRleHRSdW4uZW5kT2Zmc2V0QXQoZyk7CiAKQEAgLTUyNyw3ICs1MjUsNyBAQCB2b2lk
IENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSh1bnNpZ25lZCBvZmZzZXQsIEdseXBoQnVm
ZmVyKiBnbHlwaEJ1ZmZlciwgRwogICAgICAgICAgICAgICAgIGdseXBoQnVmZmVyLT5hZGQobV9h
ZGp1c3RlZEdseXBoc1trXSwgY29tcGxleFRleHRSdW4uZm9udERhdGEoKSwgYWRqdXN0ZWRBZHZh
bmNlKTsKIAogICAgICAgICAgICAgdW5zaWduZWQgb2xkQ2hhcmFjdGVySW5DdXJyZW50R2x5cGgg
PSBtX2NoYXJhY3RlckluQ3VycmVudEdseXBoOwotICAgICAgICAgICAgbV9jaGFyYWN0ZXJJbkN1
cnJlbnRHbHlwaCA9IG1pbihtX2N1cnJlbnRDaGFyYWN0ZXIgLSBjb21wbGV4VGV4dFJ1bi5zdHJp
bmdMb2NhdGlvbigpLCBnbHlwaEVuZE9mZnNldCkgLSBnbHlwaFN0YXJ0T2Zmc2V0OworICAgICAg
ICAgICAgbV9jaGFyYWN0ZXJJbkN1cnJlbnRHbHlwaCA9IHN0ZDo6bWluKG1fY3VycmVudENoYXJh
Y3RlciAtIGNvbXBsZXhUZXh0UnVuLnN0cmluZ0xvY2F0aW9uKCksIGdseXBoRW5kT2Zmc2V0KSAt
IGdseXBoU3RhcnRPZmZzZXQ7CiAgICAgICAgICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBkaXZp
ZGluZyB0aGUgZ2x5cGgncyBhZHZhbmNlIGVxdWFsbHkgYmV0d2VlbiB0aGUgY2hhcmFjdGVycywg
dGhpcwogICAgICAgICAgICAgLy8gY291bGQgdXNlIHRoZSBnbHlwaCdzICJsaWdhdHVyZSBjYXJl
dHMiLiBIb3dldmVyLCB0aGVyZSBpcyBubyBDb3JlIFRleHQgQVBJIHRvIGdldCB0aGUKICAgICAg
ICAgICAgIC8vIGxpZ2F0dXJlIGNhcmV0cy4KQEAgLTU5Myw3ICs1OTEsNyBAQCB2b2lkIENvbXBs
ZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMoKQogICAgICAgICBDR0Zs
b2F0IHJvdW5kZWRTcGFjZVdpZHRoID0gcm91bmRDR0Zsb2F0KHNwYWNlV2lkdGgpOwogICAgICAg
ICBjb25zdCBVQ2hhciogY3AgPSBjb21wbGV4VGV4dFJ1bi5jaGFyYWN0ZXJzKCk7CiAgICAgICAg
IENHUG9pbnQgZ2x5cGhPcmlnaW4gPSBDR1BvaW50WmVybzsKLSAgICAgICAgQ0ZJbmRleCBsYXN0
Q2hhcmFjdGVySW5kZXggPSBtX3J1bi5sdHIoKSA/IG51bWVyaWNfbGltaXRzPENGSW5kZXg+Ojpt
aW4oKSA6IG51bWVyaWNfbGltaXRzPENGSW5kZXg+OjptYXgoKTsKKyAgICAgICAgQ0ZJbmRleCBs
YXN0Q2hhcmFjdGVySW5kZXggPSBtX3J1bi5sdHIoKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8Q0ZJ
bmRleD46Om1pbigpIDogc3RkOjpudW1lcmljX2xpbWl0czxDRkluZGV4Pjo6bWF4KCk7CiAgICAg
ICAgIGJvb2wgaXNNb25vdG9uaWMgPSB0cnVlOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBnbHlwaENvdW50OyBpKyspIHsKQEAgLTcxNCwxMCArNzEyLDEwIEBAIHZvaWQgQ29t
cGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygpCiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIEZsb2F0UmVjdCBnbHlwaEJvdW5kcyA9IGZvbnREYXRhLT5ib3VuZHNG
b3JHbHlwaChnbHlwaCk7CiAgICAgICAgICAgICBnbHlwaEJvdW5kcy5tb3ZlKGdseXBoT3JpZ2lu
LngsIGdseXBoT3JpZ2luLnkpOwotICAgICAgICAgICAgbV9taW5HbHlwaEJvdW5kaW5nQm94WCA9
IG1pbihtX21pbkdseXBoQm91bmRpbmdCb3hYLCBnbHlwaEJvdW5kcy54KCkpOwotICAgICAgICAg
ICAgbV9tYXhHbHlwaEJvdW5kaW5nQm94WCA9IG1heChtX21heEdseXBoQm91bmRpbmdCb3hYLCBn
bHlwaEJvdW5kcy5tYXhYKCkpOwotICAgICAgICAgICAgbV9taW5HbHlwaEJvdW5kaW5nQm94WSA9
IG1pbihtX21pbkdseXBoQm91bmRpbmdCb3hZLCBnbHlwaEJvdW5kcy55KCkpOwotICAgICAgICAg
ICAgbV9tYXhHbHlwaEJvdW5kaW5nQm94WSA9IG1heChtX21heEdseXBoQm91bmRpbmdCb3hZLCBn
bHlwaEJvdW5kcy5tYXhZKCkpOworICAgICAgICAgICAgbV9taW5HbHlwaEJvdW5kaW5nQm94WCA9
IHN0ZDo6bWluKG1fbWluR2x5cGhCb3VuZGluZ0JveFgsIGdseXBoQm91bmRzLngoKSk7CisgICAg
ICAgICAgICBtX21heEdseXBoQm91bmRpbmdCb3hYID0gc3RkOjptYXgobV9tYXhHbHlwaEJvdW5k
aW5nQm94WCwgZ2x5cGhCb3VuZHMubWF4WCgpKTsKKyAgICAgICAgICAgIG1fbWluR2x5cGhCb3Vu
ZGluZ0JveFkgPSBzdGQ6Om1pbihtX21pbkdseXBoQm91bmRpbmdCb3hZLCBnbHlwaEJvdW5kcy55
KCkpOworICAgICAgICAgICAgbV9tYXhHbHlwaEJvdW5kaW5nQm94WSA9IHN0ZDo6bWF4KG1fbWF4
R2x5cGhCb3VuZGluZ0JveFksIGdseXBoQm91bmRzLm1heFkoKSk7CiAgICAgICAgICAgICBnbHlw
aE9yaWdpbi54ICs9IGFkdmFuY2Uud2lkdGg7CiAgICAgICAgICAgICBnbHlwaE9yaWdpbi55ICs9
IGFkdmFuY2UuaGVpZ2h0OwogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENvbXBsZXhUZXh0TWFjLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q29tcGxleFRleHRNYWMuY3BwCmluZGV4
IGQ0ZDRkZjAxZjgxZDA5YTc2MzJiZjA1NzFiNTk2MDAwZWZhNjA3ZTYuLmUwOTM2ZjNiOWI0NWE2
OTk4MjNhYmQ2MDQ0N2ZhYjkwMjhhZWRkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q29tcGxleFRleHRNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q29tcGxleFRleHRNYWMuY3BwCkBAIC0z
NCw4ICszNCw2IEBACiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
RmxvYXRSZWN0IEZvbnQ6OnNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgaCwKQEAgLTExMCwxMCArMTA4LDEw
IEBAIGZsb2F0IEZvbnQ6OmZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBy
dW4sIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9uCiB7CiAgICAgQ29tcGxleFRleHRDb250cm9sbGVy
IGNvbnRyb2xsZXIodGhpcywgcnVuLCB0cnVlLCBmYWxsYmFja0ZvbnRzKTsKICAgICBpZiAoZ2x5
cGhPdmVyZmxvdykgewotICAgICAgICBnbHlwaE92ZXJmbG93LT50b3AgPSBtYXg8aW50PihnbHlw
aE92ZXJmbG93LT50b3AsIGNlaWxmKC1jb250cm9sbGVyLm1pbkdseXBoQm91bmRpbmdCb3hZKCkp
IC0gKGdseXBoT3ZlcmZsb3ctPmNvbXB1dGVCb3VuZHMgPyAwIDogZm9udE1ldHJpY3MoKS5hc2Nl
bnQoKSkpOwotICAgICAgICBnbHlwaE92ZXJmbG93LT5ib3R0b20gPSBtYXg8aW50PihnbHlwaE92
ZXJmbG93LT5ib3R0b20sIGNlaWxmKGNvbnRyb2xsZXIubWF4R2x5cGhCb3VuZGluZ0JveFkoKSkg
LSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljcygpLmRlc2Nl
bnQoKSkpOwotICAgICAgICBnbHlwaE92ZXJmbG93LT5sZWZ0ID0gbWF4PGludD4oMCwgY2VpbGYo
LWNvbnRyb2xsZXIubWluR2x5cGhCb3VuZGluZ0JveFgoKSkpOwotICAgICAgICBnbHlwaE92ZXJm
bG93LT5yaWdodCA9IG1heDxpbnQ+KDAsIGNlaWxmKGNvbnRyb2xsZXIubWF4R2x5cGhCb3VuZGlu
Z0JveFgoKSAtIGNvbnRyb2xsZXIudG90YWxXaWR0aCgpKSk7CisgICAgICAgIGdseXBoT3ZlcmZs
b3ctPnRvcCA9IHN0ZDo6bWF4PGludD4oZ2x5cGhPdmVyZmxvdy0+dG9wLCBjZWlsZigtY29udHJv
bGxlci5taW5HbHlwaEJvdW5kaW5nQm94WSgpKSAtIChnbHlwaE92ZXJmbG93LT5jb21wdXRlQm91
bmRzID8gMCA6IGZvbnRNZXRyaWNzKCkuYXNjZW50KCkpKTsKKyAgICAgICAgZ2x5cGhPdmVyZmxv
dy0+Ym90dG9tID0gc3RkOjptYXg8aW50PihnbHlwaE92ZXJmbG93LT5ib3R0b20sIGNlaWxmKGNv
bnRyb2xsZXIubWF4R2x5cGhCb3VuZGluZ0JveFkoKSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0
ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljcygpLmRlc2NlbnQoKSkpOworICAgICAgICBnbHlwaE92
ZXJmbG93LT5sZWZ0ID0gc3RkOjptYXg8aW50PigwLCBjZWlsZigtY29udHJvbGxlci5taW5HbHlw
aEJvdW5kaW5nQm94WCgpKSk7CisgICAgICAgIGdseXBoT3ZlcmZsb3ctPnJpZ2h0ID0gc3RkOjpt
YXg8aW50PigwLCBjZWlsZihjb250cm9sbGVyLm1heEdseXBoQm91bmRpbmdCb3hYKCkgLSBjb250
cm9sbGVyLnRvdGFsV2lkdGgoKSkpOwogICAgIH0KICAgICByZXR1cm4gY29udHJvbGxlci50b3Rh
bFdpZHRoKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250TWFjLm1tCmluZGV4IDg1ZDljODIwYWRmZGQ4NDQwYzg5YmMxZjZkMjNkYWQwZGM2ODJkMjAu
LjcxOGMxNmQ5NjA1NjEyYzkwODlkMDQwM2Q2MGEwMzFkOGYzMDQxZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCkBAIC01OSw4ICs1OSw2
IEBAIFNPRlRfTElOSyhVSUtpdCwgX1VJS2l0R2V0VGV4dEVmZmVjdHNDYXRhbG9nLCBDVUlDYXRh
bG9nICosICh2b2lkKSwgKCkpCiAjZGVmaW5lIFVSZWZDb24gVUludDMyCiAjZW5kaWYKIAotdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIEZvbnQ6OmNh
blJldHVybkZhbGxiYWNrRm9udHNGb3JDb21wbGV4VGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW0KaW5kZXggZTllODUyOTZjNDFhMzg4YTY4Nzk0MjIwNDRhNjI5MTU0ZGU5N2Q0MC4u
ZGY1ZjdiMjlkNWNlNzRmMTE1YTIwMzg0Y2JjMTU4NGZmZGE0NzcxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbQpAQCAtMTUzLDcgKzE1Myw2IEBAIGVudW0gewogQGVuZAogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIEBpbnRlcmZhY2Ug
V2ViQ29yZU1vdmllT2JzZXJ2ZXIgOiBOU09iamVjdAogewpAQCAtNzM3LDcgKzczNiw3IEBAIGZs
b2F0IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpkdXJhdGlvbigpIGNvbnN0CiAKICAgICBRVFRp
bWUgdGltZSA9IFttX3F0TW92aWUuZ2V0KCkgZHVyYXRpb25dOwogICAgIGlmICh0aW1lLmZsYWdz
ID09IGtRVFRpbWVJc0luZGVmaW5pdGUpCi0gICAgICAgIHJldHVybiBudW1lcmljX2xpbWl0czxm
bG9hdD46OmluZmluaXR5KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6aW5maW5pdHkoKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRpbWUudGlt
ZVZhbHVlKSAvIHRpbWUudGltZVNjYWxlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0KaW5kZXggYWJk
ZWExZGJmMDhkYjgzZjNlYzIwNDQ1YzEzMWUzNDJhMDIxNDNmNS4uMjFlYTYxMTYwNzg2MTQzMWU2
M2I2NGEzMGNlZDc3YTcwZjlhOTAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQpAQCAtNDcsOCArNDcs
NiBAQAogLSAoQk9PTClfaXNGYWtlRml4ZWRQaXRjaDsKIEBlbmQKIAotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogICAKIHN0YXRpYyBib29sIGZvbnRIYXNWZXJ0
aWNhbEdseXBocyhDVEZvbnRSZWYgY3RGb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNE
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCBlMzY2MjEzNGM2MTYyZmJlYzhkMGQxM2IzMWZi
Y2Q0NTQwNTIxNzFhLi40NDM4MTZmOWVjNzMxOWQ3YjYyMGJjNzAwZTA3OTE1OWJhMDJiNjYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01h
dHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmNwcApAQCAt
MjgsOCArMjgsNiBAQAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi11c2luZyBuYW1lc3BhY2Ug
c3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0
aW9uPiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRy
aXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCmluZGV4IDA1ZWZlZTBh
OWE4ZjA3NzY2OGI2MzUyYzNlMjliOWJmM2QxMmUwOGEuLmEzNjU4YTkxZGFmZWE0MTlhYzA1Mjg0
ZDAxNTkxOTIyMmFiMjhiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9w
ZXJhdGlvbi5jcHAKQEAgLTI0LDggKzI0LDYgQEAKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAot
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRy
PFRyYW5zZm9ybU9wZXJhdGlvbj4gTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRv
SWRlbnRpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVy
YXRpb24uY3BwCmluZGV4IGNlOWI1ZmIzOGUxMzRhMzY3OWEzMTM5ZGVhMTVlNjA1ZmZhN2ZkOGYu
LmEzZmZiNjY0YzNiYjdmYmZjM2UzMjY1NTM5OTFmMGYwZTYwMzQyZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFu
c2Zvcm1PcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCkBAIC0yOSw4ICsy
OSw2IEBACiAjaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gUGVyc3BlY3RpdmVUcmFuc2Zvcm1P
cGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHBy
b2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJh
bnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCBhN2IzNGMyYzZiZTA3ZGE1MWM0MzZlMTY0YzE4MGFj
YzFiZTJjZjY2Li4zMmI0YzZlMWM3NmRkZjRkNzMwYmIwMDQyNWJmODVjOGEzYzA5OTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwCkBAIC0yNiw4ICsy
Niw2IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1Jl
ZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6YmxlbmQo
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxl
bmRUb0lkZW50aXR5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5jcHAKaW5kZXgg
MGUyYTFkYjMzMjAxNDdhMjJiYTFmNDBjYTZmY2MwNjJmNmFkZGY1OS4uYTcxZGU0NzFhMTJmZjRl
NGRjYjE1MjRlOGQwOGYwYTFiNGE3OThjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJh
dGlvbnMuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiTWF0cml4M0RUcmFuc2Zvcm1P
cGVyYXRpb24uaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVHJhbnNmb3JtT3BlcmF0aW9uczo6VHJhbnNmb3Jt
T3BlcmF0aW9ucyhib29sIG1ha2VJZGVudGl0eSkKQEAgLTcxLDcgKzY5LDcgQEAgVHJhbnNmb3Jt
T3BlcmF0aW9ucyBUcmFuc2Zvcm1PcGVyYXRpb25zOjpibGVuZEJ5TWF0Y2hpbmdPcGVyYXRpb25z
KGNvbnN0IFRyYW5zZm8KIAogICAgIHVuc2lnbmVkIGZyb21TaXplID0gZnJvbS5vcGVyYXRpb25z
KCkuc2l6ZSgpOwogICAgIHVuc2lnbmVkIHRvU2l6ZSA9IG9wZXJhdGlvbnMoKS5zaXplKCk7Ci0g
ICAgdW5zaWduZWQgc2l6ZSA9IG1heChmcm9tU2l6ZSwgdG9TaXplKTsKKyAgICB1bnNpZ25lZCBz
aXplID0gc3RkOjptYXgoZnJvbVNpemUsIHRvU2l6ZSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICBSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBm
cm9tT3BlcmF0aW9uID0gKGkgPCBmcm9tU2l6ZSkgPyBmcm9tLm9wZXJhdGlvbnMoKVtpXS5nZXQo
KSA6IDA7CiAgICAgICAgIFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+IHRvT3BlcmF0aW9uID0g
KGkgPCB0b1NpemUpID8gb3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggZjllMDk4YWM3YjNlZmNiNWJiYzMwMWExYTEx
ZDQ2ZDlkNjBlMzFlNy4uYmY1MDc0NTEyNzczYmY3YzE3ZTE1ZjJhODNhMzdjOTBhY2Y2YzBmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTQwLDggKzQwLDYg
QEAKICNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vCkBAIC02ODIsNyArNjgwLDcgQEAgRmxvYXRR
dWFkIFRyYW5zZm9ybWF0aW9uTWF0cml4Ojpwcm9qZWN0UXVhZChjb25zdCBGbG9hdFF1YWQmIHEs
IGJvb2wqIGNsYW1wZWQpIGMKIHN0YXRpYyBmbG9hdCBjbGFtcEVkZ2VWYWx1ZShmbG9hdCBmKQog
ewogICAgIEFTU0VSVCghc3RkOjppc25hbihmKSk7Ci0gICAgcmV0dXJuIG1pbjxmbG9hdD4obWF4
PGZsb2F0PihmLCAtTGF5b3V0VW5pdDo6bWF4KCkgLyAyKSwgTGF5b3V0VW5pdDo6bWF4KCkgLyAy
KTsKKyAgICByZXR1cm4gc3RkOjptaW48ZmxvYXQ+KHN0ZDo6bWF4PGZsb2F0PihmLCAtTGF5b3V0
VW5pdDo6bWF4KCkgLyAyKSwgTGF5b3V0VW5pdDo6bWF4KCkgLyAyKTsKIH0KIAogTGF5b3V0UmVj
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6Y2xhbXBlZEJvdW5kc09mUHJvamVjdGVkUXVhZChjb25z
dCBGbG9hdFF1YWQmIHEpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMubW0KaW5kZXggNjNkOWRkZmRjYWQ2ZTIxOGFiZGJkMWZjMzM1OTM4
YTIxYzA2OTFjYi4uNmI0Y2RkZjQwZjdhOGQ1M2Y5OTYxZTEyNTM3Yjc3MTQzYTAxZjMzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQpA
QCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogc3RhdGljIGJvb2wgc3Vw
cG9ydHNVSVN0YXRlVHJhbnNpdGlvblByb2dyZXNzKCkKIHsKQEAgLTcyOCw4ICs3MjcsOCBAQCBG
bG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yTWFjOjphZGp1c3RTY3JvbGxQb3NpdGlvbklmTmVjZXNz
YXJ5KGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgaWYgKCFtX3Njcm9sbGFibGVBcmVhLT5jb25zdHJh
aW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpKQogICAgICAgICByZXR1cm4gcG9zaXRpb247CiAK
LSAgICBmbG9hdCBuZXdYID0gbWF4PGZsb2F0PihtaW48ZmxvYXQ+KHBvc2l0aW9uLngoKSwgbV9z
Y3JvbGxhYmxlQXJlYS0+dG90YWxDb250ZW50c1NpemUoKS53aWR0aCgpIC0gbV9zY3JvbGxhYmxl
QXJlYS0+dmlzaWJsZVdpZHRoKCkpLCAwKTsKLSAgICBmbG9hdCBuZXdZID0gbWF4PGZsb2F0Piht
aW48ZmxvYXQ+KHBvc2l0aW9uLnkoKSwgbV9zY3JvbGxhYmxlQXJlYS0+dG90YWxDb250ZW50c1Np
emUoKS5oZWlnaHQoKSAtIG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVIZWlnaHQoKSksIDApOwor
ICAgIGZsb2F0IG5ld1ggPSBzdGQ6Om1heDxmbG9hdD4oc3RkOjptaW48ZmxvYXQ+KHBvc2l0aW9u
LngoKSwgbV9zY3JvbGxhYmxlQXJlYS0+dG90YWxDb250ZW50c1NpemUoKS53aWR0aCgpIC0gbV9z
Y3JvbGxhYmxlQXJlYS0+dmlzaWJsZVdpZHRoKCkpLCAwKTsKKyAgICBmbG9hdCBuZXdZID0gc3Rk
OjptYXg8ZmxvYXQ+KHN0ZDo6bWluPGZsb2F0Pihwb3NpdGlvbi55KCksIG1fc2Nyb2xsYWJsZUFy
ZWEtPnRvdGFsQ29udGVudHNTaXplKCkuaGVpZ2h0KCkgLSBtX3Njcm9sbGFibGVBcmVhLT52aXNp
YmxlSGVpZ2h0KCkpLCAwKTsKIAogICAgIHJldHVybiBGbG9hdFBvaW50KG5ld1gsIG5ld1kpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQppbmRleCBi
MjA3YTc0ZTRiOWYwZTM3ZTg0YzVjMDNhMjUxNmE3ZDI4Zjc1OTE3Li5kOGNlMjZkODRiZDNiZjQ2
YzkwODJjZDRjNTQ0NzA5YzJmNDI3MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsVmlld01hYy5tbQpAQCAtMzQsOCArMzQsNiBAQAogI2ltcG9ydCAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbXBvcnQgIldlYkNvcmVGcmFtZVZpZXcuaCIKIAotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKLQogQGludGVyZmFjZSBOU1dpbmRvdyAoV2ViV2luZG93RGV0YWlscykKIC0gKEJPT0wp
X25lZWRzVG9SZXNldERyYWdNYXJnaW5zOwogLSAodm9pZClfc2V0TmVlZHNUb1Jlc2V0RHJhZ01h
cmdpbnM6KEJPT0wpbmVlZHM7CkBAIC0xMzQsNyArMTMyLDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojpw
bGF0Zm9ybVNldENvbnRlbnRzU2l6ZSgpCiAgICAgaW50IHcgPSBtX2NvbnRlbnRzU2l6ZS53aWR0
aCgpOwogICAgIGludCBoID0gbV9jb250ZW50c1NpemUuaGVpZ2h0KCk7CiAgICAgTE9HKEZyYW1l
cywgIiVwICVAIGF0IHcgJWQgaCAlZFxuIiwgZG9jdW1lbnRWaWV3KCksIFsoaWQpW2RvY3VtZW50
VmlldygpIGNsYXNzXSBjbGFzc05hbWVdLCB3LCBoKTsgICAgICAgICAgICAKLSAgICBbZG9jdW1l
bnRWaWV3KCkgc2V0RnJhbWVTaXplOk5TTWFrZVNpemUobWF4KDAsIHcpLCBtYXgoMCwgaCkpXTsK
KyAgICBbZG9jdW1lbnRWaWV3KCkgc2V0RnJhbWVTaXplOk5TTWFrZVNpemUoc3RkOjptYXgoMCwg
dyksIHN0ZDo6bWF4KDAsIGgpKV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0K
IApAQCAtMTUwLDcgKzE0OCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxQ
b3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCiB7CiAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwogICAgIE5TUG9pbnQgZmxvYXRQb2ludCA9IHNjcm9sbFBvaW50Owot
ICAgIE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2lu
XS54LCBmbG9hdFBvaW50LngpLCBtYXgoLVtzY3JvbGxWaWV3KCkgc2Nyb2xsT3JpZ2luXS55LCBm
bG9hdFBvaW50LnkpIH07ICAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQg
NDIxMzMxNC4KKyAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgc3RkOjptYXgoLVtzY3JvbGxWaWV3
KCkgc2Nyb2xsT3JpZ2luXS54LCBmbG9hdFBvaW50LngpLCBzdGQ6Om1heCgtW3Njcm9sbFZpZXco
KSBzY3JvbGxPcmlnaW5dLnksIGZsb2F0UG9pbnQueSkgfTsgIC8vIERvbid0IHVzZSBOU01ha2VQ
b2ludCB0byB3b3JrIGFyb3VuZCA0MjEzMzE0LgogICAgIFtkb2N1bWVudFZpZXcoKSBzY3JvbGxQ
b2ludDp0ZW1wUG9pbnRdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXgg
ZjIyNzhmNTgwN2IzMjhjMjY4ODk5ZWMyN2M3NDAyMTAyODExMWYwYS4uNmZmNzNmNGM4MTc2NDE5
NGFhNzFjNjgxZGFhOTU2ODkzYWE4YjY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtNDIsNyArNDIsNiBAQAogCiAvLyBGSVhN
RTogVGhlcmUgYXJlIHJlcGFpbnRpbmcgcHJvYmxlbXMgZHVlIHRvIEFxdWEgc2Nyb2xsIGJhciBi
dXR0b25zJyB2aXN1YWwgb3ZlcmZsb3cuCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogQGludGVyZmFjZSBOU0NvbG9yIChXZWJOU0NvbG9yRGV0YWls
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCBkOTBhZGQwYzc4
NmQ1MTJmMTU0YmUxMTc3MTY5OGQ5NjQ2ZDdjMTgwLi42OWM4ZDNmNmVjZjEyZTg4NjFmOTNkYTdj
NzQwODNjZTc0NmFjYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
CkBAIC0zNSw4ICszNSw2IEBACiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBOU1JlY3QgZm9j
dXNSaW5nQ2xpcFJlY3Q7CiAKIC8vIFRoaXMgaXMgYSB2aWV3IHdob3NlIHNvbGUgcHVycG9zZSBp
cyB0byB0ZWxsIEFwcEtpdCB0aGF0IGl0J3MgZmxpcHBlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIubW0KaW5kZXggN2RlMjIyODgyYTUwYThlNjNmOGMzZTQwMGQ1YWRlNTc0
Y2ZiMzFlOC4uMDc4YmNjNDNhYzBjYmJiOWNkZGUyZDhjYmZiMmEzYjlmMzEyMzFkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkhVRFdp
bmRvd0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZp
ZGVvRnVsbHNjcmVlbkhVRFdpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTM1LDcgKzM1LDYgQEAKICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCiBzdGF0aWMgaW5saW5lIENHRmxvYXQgd2Via2l0X0NHRmxvb3Io
Q0dGbG9hdCB2YWx1ZSkKIHsKQEAgLTQ4Miw3ICs0ODEsNyBAQCBzdGF0aWMgTlNUZXh0RmllbGQg
KmNyZWF0ZVRpbWVUZXh0RmllbGQoTlNSZWN0IGZyYW1lKQogICAgICAgICByZXR1cm47CiAKICAg
ICBmbG9hdCB2b2x1bWUgPSBbc2VsZiB2b2x1bWVdICsgMTA7Ci0gICAgW3NlbGYgc2V0Vm9sdW1l
Om1pbih2b2x1bWUsIFtzZWxmIG1heFZvbHVtZV0pXTsKKyAgICBbc2VsZiBzZXRWb2x1bWU6c3Rk
OjptaW4odm9sdW1lLCBbc2VsZiBtYXhWb2x1bWVdKV07CiB9CiAKIC0gKGZsb2F0KXZvbHVtZQpA
QCAtNTU0LDcgKzU1Myw3IEBAIHN0YXRpYyBOU1N0cmluZyAqdGltZVRvU3RyaW5nKGRvdWJsZSB0
aW1lKQogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aW1lKSkKICAgICAgICAgdGltZSA9IDA7CiAK
LSAgICBpbnQgc2Vjb25kcyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoYWJzKHRpbWUpKTsKKyAg
ICBpbnQgc2Vjb25kcyA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoc3RkOjphYnModGltZSkpOwog
ICAgIGludCBob3VycyA9IHNlY29uZHMgLyAoNjAgKiA2MCk7CiAgICAgaW50IG1pbnV0ZXMgPSAo
c2Vjb25kcyAvIDYwKSAlIDYwOwogICAgIHNlY29uZHMgJT0gNjA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAppbmRleCBlYTA2ODk3M2Zj
MTI5NTJmOTA4OWJmZmIzODM3Njg1ZTAwZDAyMjY2Li4zZWEzMmE3ZjliOTgwYjcwYjJlZjQ5Mzg1
YmRkZTBkZWE3MDM2YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBIZWFkZXJNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck1hcC5jcHAKQEAgLTMzLDggKzMzLDYgQEAKIAogI2luY2x1ZGUgPHV0aWxp
dHk+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSFRU
UEhlYWRlck1hcDo6SFRUUEhlYWRlck1hcCgpCkBAIC01Miw3ICs1MCw3IEBAIFBhc3NPd25QdHI8
Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gSFRUUEhlYWRlck1hcDo6Y29weURhdGEoKSBj
b25zdAogCiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kX2l0ID0gZW5kKCk7
CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGJlZ2luKCk7IGl0
ICE9IGVuZF9pdDsgKytpdCkKLSAgICAgICAgZGF0YS0+dW5jaGVja2VkQXBwZW5kKG1ha2VfcGFp
cihpdC0+a2V5LnN0cmluZygpLmlzb2xhdGVkQ29weSgpLCBpdC0+dmFsdWUuaXNvbGF0ZWRDb3B5
KCkpKTsKKyAgICAgICAgZGF0YS0+dW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGl0LT5r
ZXkuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCksIGl0LT52YWx1ZS5pc29sYXRlZENvcHkoKSkpOwog
CiAgICAgcmV0dXJuIGRhdGEucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggYzViZGVl
ZTM1Zjc0MmM0YTNhYmVmMDk0MDI3MTliNThmNTEwODliNy4uZWY0MjE5MzQzNTQ3OWU3YjlkY2Fi
NDQ5M2E5ZDRjOGQ1MDgyNjJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0yOCw4ICsyOCw2IEBACiAK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVVTRShTT1VQKSAmJiAoIVBMQVRGT1JNKE1BQykg
fHwgVVNFKENGTkVUV09SSykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IGQwNzExZjAzMDYzYWZlNjc1
M2U4MjhhNGMwMzk5MGJkZTYxYTc3YTcuLmZiYThjMzdlN2I1OGM5NGFkMTc1MTkxMzA4NjUzM2Qz
NjllZTQ5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLXVzaW5n
IG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgcGFy
c2VDYWNoZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgVmVjdG9yPHBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYgcmVzdWx0KTsKQEAgLTM0OCw3ICszNDYsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9u
c2VCYXNlOjpwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKSBjb25zdAogCiAgICAgbV9jYWNo
ZUNvbnRyb2xDb250YWluc011c3RSZXZhbGlkYXRlID0gZmFsc2U7CiAgICAgbV9jYWNoZUNvbnRy
b2xDb250YWluc05vQ2FjaGUgPSBmYWxzZTsKLSAgICBtX2NhY2hlQ29udHJvbE1heEFnZSA9IG51
bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOworICAgIG1fY2FjaGVDb250cm9sTWF4
QWdlID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKIAogICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBjYWNoZUNvbnRyb2xTdHJpbmcs
ICgiY2FjaGUtY29udHJvbCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgbm9DYWNoZURpcmVj
dGl2ZSwgKCJuby1jYWNoZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXNwb25zZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VSZXNwb25zZUNGTmV0LmNwcAppbmRleCAyMDc4ZmUyM2M5ODUyNDU5NDFkYTg2OTZiNzEx
ZDg0MGYzMDQyMDBiLi4zMzVmNzJmZDJlNmU3NDA2NmJiZjY5NjcwMTdhMGM5MjE1MTczZTI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVz
cG9uc2VDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGVVJMUmVzcG9uc2VQcml2Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiAvLyBXZSB3b3VsZCBsaWtlIGEgYmV0dGVyIHZhbHVl
IGZvciBhIG1heGltdW0gdGltZV90LAogLy8gYnV0IHRoZXJlIGlzIG5vIHdheSB0byBkbyB0aGF0
IGluIEMgd2l0aCBhbnkgY2VydGFpbnR5LgogLy8gSU5UX01BWCBzaG91bGQgd29yayB3ZWxsIGVu
b3VnaCBmb3Igb3VyIHB1cnBvc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVzcG9uc2VNYWMubW0KaW5kZXggNTQyNWUxZmQ0
YTU5YTAyZDE2MjFlODNmMTgxODk0NmJiZjhkMzRhNy4uOTc0ZGZlYzNlOWVkYTI3YTY3ZDMxYTYy
MTk1YzQ2ZGM4OTAzYmZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXNwb25zZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlc3BvbnNlTWFjLm1tCkBAIC0zMyw4ICszMyw2IEBA
CiAjaW1wb3J0IDxsaW1pdHM+CiAjaW1wb3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLXVzaW5n
IG5hbWVzcGFjZSBzdGQ7Ci0KIEBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoV2ViTlNVUkxSZXNw
b25zZURldGFpbHMpCiAtIChOU1RpbWVJbnRlcnZhbClfY2FsY3VsYXRlZEV4cGlyYXRpb247CiAt
IChpZClfaW5pdFdpdGhDRlVSTFJlc3BvbnNlOihDRlVSTFJlc3BvbnNlUmVmKXJlc3BvbnNlOwpA
QCAtNTEsNyArNDksNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OmluaXROU1VSTFJlc3BvbnNl
KCkgY29uc3QKICAgICAvLyBUaGUgaW5pdCBmdW5jdGlvbiB0YWtlcyBhbiBOU0ludGVnZXIsIGV2
ZW4gdGhvdWdoIHRoZSBhY2Nlc3NvciByZXR1cm5zIGEgbG9uZyBsb25nLgogICAgIC8vIEZvciB2
YWx1ZXMgdGhhdCB3b24ndCBmaXQgaW4gYW4gTlNJbnRlZ2VyLCBwYXNzIC0xIGluc3RlYWQuCiAg
ICAgTlNJbnRlZ2VyIGV4cGVjdGVkQ29udGVudExlbmd0aDsKLSAgICBpZiAobV9leHBlY3RlZENv
bnRlbnRMZW5ndGggPCAwIHx8IG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoID4gbnVtZXJpY19saW1p
dHM8TlNJbnRlZ2VyPjo6bWF4KCkpCisgICAgaWYgKG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoIDwg
MCB8fCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8TlNJbnRl
Z2VyPjo6bWF4KCkpCiAgICAgICAgIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IC0xOwogICAgIGVs
c2UKICAgICAgICAgZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gc3RhdGljX2Nhc3Q8TlNJbnRlZ2Vy
PihtX2V4cGVjdGVkQ29udGVudExlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCmluZGV4IDVlMjU2ODRiODIyM2Zk
MWY3Zjg1ZGQxNGJjZTkxNjlmYmQ3YmFhM2MuLjVlMTRlM2YwOGFhZWYzM2Y1ZDMzZTdhMmMzNzZh
MTExZjFhODliNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7Ci11c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMCw3ICs5OSw3IEBAIHN0YXRp
YyBVVGV4dCogdGV4dENsb25lKFVUZXh0KiBkZXN0aW5hdGlvbiwgY29uc3QgVVRleHQqIHNvdXJj
ZSwgVUJvb2wgZGVlcCwgVUVyCiAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbjsKICAgICB2b2lk
KiBleHRyYU5ldyA9IGRlc3RpbmF0aW9uLT5wRXh0cmE7CiAgICAgaW50MzJfdCBmbGFncyA9IGRl
c3RpbmF0aW9uLT5mbGFnczsKLSAgICBpbnQgc2l6ZVRvQ29weSA9IG1pbihzb3VyY2UtPnNpemVP
ZlN0cnVjdCwgZGVzdGluYXRpb24tPnNpemVPZlN0cnVjdCk7CisgICAgaW50IHNpemVUb0NvcHkg
PSBzdGQ6Om1pbihzb3VyY2UtPnNpemVPZlN0cnVjdCwgZGVzdGluYXRpb24tPnNpemVPZlN0cnVj
dCk7CiAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBzb3VyY2UsIHNpemVUb0NvcHkpOwogICAgIGRl
c3RpbmF0aW9uLT5wRXh0cmEgPSBleHRyYU5ldzsKICAgICBkZXN0aW5hdGlvbi0+ZmxhZ3MgPSBm
bGFnczsKQEAgLTE2OCw4ICsxNjcsOCBAQCBzdGF0aWMgdm9pZCB0ZXh0TGF0aW4xTW92ZUluUHJp
bWFyeUNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5kZXgsIGludAogICAgIH0K
ICAgICBpbnQ2NF90IGxlbmd0aCA9IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0LT5jaHVu
a05hdGl2ZVN0YXJ0OwogICAgIC8vIEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBkZWZpbmVk
IGlmIGNvbXB1dGVkIGxlbmd0aCBleGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAgQVNTRVJUKGxl
bmd0aCA8IG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtM
ZW5ndGggPSBsZW5ndGggPCBudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNf
Y2FzdDxpbnQzMl90PihsZW5ndGgpIDogMDsKKyAgICBBU1NFUlQobGVuZ3RoIDwgc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAgIHRleHQtPmNodW5rTGVuZ3RoID0gbGVu
Z3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxp
bnQzMl90PihsZW5ndGgpIDogMDsKICAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4
dC0+Y2h1bmtMZW5ndGg7CiAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBmb3J3YXJkID8gMCA6IHRl
eHQtPmNodW5rTGVuZ3RoOwogICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhjb25zdF9jYXN0PFVD
aGFyKj4odGV4dC0+Y2h1bmtDb250ZW50cyksIHN0YXRpY19jYXN0PGNvbnN0IExDaGFyKj4odGV4
dC0+cCkgKyAodGV4dC0+Y2h1bmtOYXRpdmVTdGFydCAtIHRleHQtPmIpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odGV4dC0+Y2h1bmtMZW5ndGgpKTsKQEAgLTE5NCw4ICsxOTMsOCBAQCBzdGF0aWMg
dm9pZCB0ZXh0TGF0aW4xTW92ZUluUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5h
dGl2ZUluZGV4LCBpbnQ2NAogICAgIHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5j
aHVua0xlbmd0aDsKICAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1
bmtOYXRpdmVTdGFydDsKICAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZGVmaW5l
ZCBpZiBjb21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlIG9yIGNodW5rIGxlbmd0
aC4KLSAgICBBU1NFUlQob2Zmc2V0IDwgbnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsK
LSAgICB0ZXh0LT5jaHVua09mZnNldCA9IG1pbihvZmZzZXQgPCBudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1
bmtMZW5ndGgpOworICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSk7CisgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+
KG9mZnNldCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRleHRM
YXRpbjFTd2l0Y2hUb1ByaW9yQ29udGV4dChVVGV4dCogdGV4dCwgaW50NjRfdCBuYXRpdmVJbmRl
eCwgaW50NjRfdCBuYXRpdmVMZW5ndGgsIFVCb29sIGZvcndhcmQpCkBAIC0yMTEsOCArMjEwLDgg
QEAgc3RhdGljIGlubGluZSBib29sIHRleHRJbkNodW5rT3JPdXRPZlJhbmdlKFVUZXh0KiB0ZXh0
LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQKICAgICAgICAgaWYgKG5hdGl2ZUluZGV4ID49IHRl
eHQtPmNodW5rTmF0aXZlU3RhcnQgJiYgbmF0aXZlSW5kZXggPCB0ZXh0LT5jaHVua05hdGl2ZUxp
bWl0KSB7CiAgICAgICAgICAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+
Y2h1bmtOYXRpdmVTdGFydDsKICAgICAgICAgICAgIC8vIEVuc3VyZSBjaHVuayBvZmZzZXQgaXMg
d2VsbCBmb3JtZWQgaWYgY29tcHV0ZWQgb2Zmc2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZS4KLSAg
ICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkp
OwotICAgICAgICAgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBvZmZzZXQgPCBudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMDsKKyAg
ICAgICAgICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSk7CisgICAgICAgICAgICB0ZXh0LT5jaHVua09mZnNldCA9IG9mZnNldCA8IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0
KSA6IDA7CiAgICAgICAgICAgICBpc0FjY2Vzc2libGUgPSBUUlVFOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIyNSw4ICsyMjQsOCBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgdGV4dEluQ2h1bmtPck91dE9mUmFuZ2UoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5k
ZXgsIGludAogICAgICAgICBpZiAobmF0aXZlSW5kZXggPiB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0
ICYmIG5hdGl2ZUluZGV4IDw9IHRleHQtPmNodW5rTmF0aXZlTGltaXQpIHsKICAgICAgICAgICAg
IGludDY0X3Qgb2Zmc2V0ID0gbmF0aXZlSW5kZXggLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0Owog
ICAgICAgICAgICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGZvcm1lZCBpZiBjb21w
dXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlLgotICAgICAgICAgICAgQVNTRVJUKG9m
ZnNldCA8IG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgICAgICAgICB0ZXh0
LT5jaHVua09mZnNldCA9IG9mZnNldCA8IG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/
IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCkgOiAwOworICAgICAgICAgICAgQVNTRVJUKG9m
ZnNldCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKKyAgICAgICAgICAg
IHRleHQtPmNodW5rT2Zmc2V0ID0gb2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMDsKICAgICAgICAgICAg
IGlzQWNjZXNzaWJsZSA9IFRSVUU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpAQCAtMjkyLDcgKzI5MSw3IEBAIHN0YXRpYyBVVGV4dCogdGV4dE9wZW5MYXRpbjEoVVRleHRX
aXRoQnVmZmVyKiB1dFdpdGhCdWZmZXIsIGNvbnN0IExDaGFyKiBzdHJpbmcsCiB7CiAgICAgaWYg
KFVfRkFJTFVSRSgqc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFzdHJpbmcg
fHwgbGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSkpIHsKKyAgICBpZiAoIXN0cmluZyB8fCBsZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSB7CiAgICAgICAgICpz
dGF0dXMgPSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1I7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KQEAgLTMyMSwxMyArMzIwLDEzIEBAIHN0YXRpYyB2b2lkIHRleHRVVEYxNk1vdmVJblByaW1h
cnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2CiAgICAgdGV4
dC0+Y2h1bmtOYXRpdmVMaW1pdCA9IG5hdGl2ZUxlbmd0aDsKICAgICBpbnQ2NF90IGxlbmd0aCA9
IHRleHQtPmNodW5rTmF0aXZlTGltaXQgLSB0ZXh0LT5jaHVua05hdGl2ZVN0YXJ0OwogICAgIC8v
IEVuc3VyZSBjaHVuayBsZW5ndGggaXMgd2VsbCBkZWZpbmVkIGlmIGNvbXB1dGVkIGxlbmd0aCBl
eGNlZWRzIGludDMyX3QgcmFuZ2UuCi0gICAgQVNTRVJUKGxlbmd0aCA8IG51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtMZW5ndGggPSBsZW5ndGggPCBudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgp
IDogMDsKKyAgICBBU1NFUlQobGVuZ3RoIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCkpOworICAgIHRleHQtPmNodW5rTGVuZ3RoID0gbGVuZ3RoIDwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihsZW5ndGgpIDogMDsK
ICAgICB0ZXh0LT5uYXRpdmVJbmRleGluZ0xpbWl0ID0gdGV4dC0+Y2h1bmtMZW5ndGg7CiAgICAg
aW50NjRfdCBvZmZzZXQgPSBuYXRpdmVJbmRleCAtIHRleHQtPmNodW5rTmF0aXZlU3RhcnQ7CiAg
ICAgLy8gRW5zdXJlIGNodW5rIG9mZnNldCBpcyB3ZWxsIGRlZmluZWQgaWYgY29tcHV0ZWQgb2Zm
c2V0IGV4Y2VlZHMgaW50MzJfdCByYW5nZSBvciBjaHVuayBsZW5ndGguCi0gICAgQVNTRVJUKG9m
ZnNldCA8IG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSk7Ci0gICAgdGV4dC0+Y2h1bmtP
ZmZzZXQgPSBtaW4ob2Zmc2V0IDwgbnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpID8gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KSA6IDAsIHRleHQtPmNodW5rTGVuZ3RoKTsKKyAgICBB
U1NFUlQob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpOworICAg
IHRleHQtPmNodW5rT2Zmc2V0ID0gc3RkOjptaW4ob2Zmc2V0IDwgc3RkOjpudW1lcmljX2xpbWl0
czxpbnQzMl90Pjo6bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4
dC0+Y2h1bmtMZW5ndGgpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXh0VVRGMTZTd2l0Y2hUb1ByaW1h
cnlDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2NF90IG5hdGl2
ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKQEAgLTM0OSw4ICszNDgsOCBAQCBzdGF0aWMgdm9pZCB0
ZXh0VVRGMTZNb3ZlSW5QcmlvckNvbnRleHQoVVRleHQqIHRleHQsIGludDY0X3QgbmF0aXZlSW5k
ZXgsIGludDY0XwogICAgIHRleHQtPm5hdGl2ZUluZGV4aW5nTGltaXQgPSB0ZXh0LT5jaHVua0xl
bmd0aDsKICAgICBpbnQ2NF90IG9mZnNldCA9IG5hdGl2ZUluZGV4IC0gdGV4dC0+Y2h1bmtOYXRp
dmVTdGFydDsKICAgICAvLyBFbnN1cmUgY2h1bmsgb2Zmc2V0IGlzIHdlbGwgZGVmaW5lZCBpZiBj
b21wdXRlZCBvZmZzZXQgZXhjZWVkcyBpbnQzMl90IHJhbmdlIG9yIGNodW5rIGxlbmd0aC4KLSAg
ICBBU1NFUlQob2Zmc2V0IDwgbnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKTsKLSAgICB0
ZXh0LT5jaHVua09mZnNldCA9IG1pbihvZmZzZXQgPCBudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCkgPyBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpIDogMCwgdGV4dC0+Y2h1bmtMZW5n
dGgpOworICAgIEFTU0VSVChvZmZzZXQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSk7CisgICAgdGV4dC0+Y2h1bmtPZmZzZXQgPSBzdGQ6Om1pbihvZmZzZXQgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSA/IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNl
dCkgOiAwLCB0ZXh0LT5jaHVua0xlbmd0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRleHRVVEYxNlN3
aXRjaFRvUHJpb3JDb250ZXh0KFVUZXh0KiB0ZXh0LCBpbnQ2NF90IG5hdGl2ZUluZGV4LCBpbnQ2
NF90IG5hdGl2ZUxlbmd0aCwgVUJvb2wgZm9yd2FyZCkKQEAgLTQwMiw3ICs0MDEsNyBAQCBzdGF0
aWMgVVRleHQqIHRleHRPcGVuVVRGMTYoVVRleHQqIHRleHQsIGNvbnN0IFVDaGFyKiBzdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgYwogewogICAgIGlmIChVX0ZBSUxVUkUoKnN0YXR1cykpCiAgICAg
ICAgIHJldHVybiAwOwotICAgIGlmICghc3RyaW5nIHx8IGxlbmd0aCA+IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSB7CisgICAgaWYgKCFzdHJp
bmcgfHwgbGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpKSkgewogICAgICAgICAqc3RhdHVzID0gVV9JTExFR0FMX0FSR1VNRU5U
X0VSUk9SOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwCmluZGV4IDdmMmE4ODg3NzhhNGI2YTgyYzNl
MTYzY2UyZDM4ZTllZWQxZjZiOTIuLjY3M2Y3MzgxMzU2ZmJmMjQzNWUzZDY4MzdjNzFkMWRhODZi
OWFmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
VVRGMTYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRG
MTYuY3BwCkBAIC0zMSw4ICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBz
dGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBUZXh0Q29kZWNVVEYxNjo6cmVnaXN0
ZXJFbmNvZGluZ05hbWVzKEVuY29kaW5nTmFtZVJlZ2lzdHJhciByZWdpc3RyYXIpCkBAIC0xMjUs
NyArMTIzLDcgQEAgQ1N0cmluZyBUZXh0Q29kZWNVVEYxNjo6ZW5jb2RlKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBVbmVuY29kYWIKICAgICAvLyB0aGUgYnVmZmVyIGRv
ZXNuJ3Qgb2NjdXB5IHRoZSBlbnRpcmUgYWRkcmVzcyBzcGFjZSwgd2UgY2FuCiAgICAgLy8gYXNz
ZXJ0IGhlcmUgdGhhdCBkb3VibGluZyB0aGUgbGVuZ3RoIGRvZXMgbm90IG92ZXJmbG93IHNpemVf
dAogICAgIC8vIGFuZCB0aGVyZSdzIG5vIG5lZWQgZm9yIGEgcnVudGltZSBjaGVjay4KLSAgICBB
U1NFUlQobGVuZ3RoIDw9IG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gMik7CisgICAg
QVNTRVJUKGxlbmd0aCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gMik7
CiAKICAgICBjaGFyKiBieXRlczsKICAgICBDU3RyaW5nIHN0cmluZyA9IENTdHJpbmc6Om5ld1Vu
aW5pdGlhbGl6ZWQobGVuZ3RoICogMiwgYnl0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dENvZGVjVVRGOC5jcHAKaW5kZXggMGZhNmRmN2MwMGU1ODBjYTdmOGI1YWMw
ZmI4NDY4ZGVlMzg1NDZiNC4uNmFiZjQzMTc0NWVmZjM0ODc0MWJmMjNmMmQxMWZlNDAwMDRmNjJk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEY4
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjguY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3Bh
Y2UgV1RGOjpVbmljb2RlOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC00MjYsNyArNDI1LDcgQEAgQ1N0cmluZyBUZXh0Q29kZWNVVEY4OjplbmNvZGUo
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmwKICAgICAv
LyBUaGUgbWF4aW11bSBudW1iZXIgb2YgVVRGLTggYnl0ZXMgbmVlZGVkIHBlciBVVEYtMTYgY29k
ZSB1bml0IGlzIDMuCiAgICAgLy8gQk1QIGNoYXJhY3RlcnMgdGFrZSBvbmx5IG9uZSBVVEYtMTYg
Y29kZSB1bml0IGFuZCBjYW4gdGFrZSB1cCB0byAzIGJ5dGVzICgzeCkuCiAgICAgLy8gTm9uLUJN
UCBjaGFyYWN0ZXJzIHRha2UgdHdvIFVURi0xNiBjb2RlIHVuaXRzIGFuZCBjYW4gdGFrZSB1cCB0
byA0IGJ5dGVzICgyeCkuCi0gICAgaWYgKGxlbmd0aCA+IG51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpIC8gMykKKyAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSAvIDMpCiAgICAgICAgIENSQVNIKCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ5dGVz
KGxlbmd0aCAqIDMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFt
LmNwcAppbmRleCAwN2IzMzMxMDVjY2QxZDhmZGViMGQxMjViZjZjNmE3NzQ0MThjOWMwLi5kMDdi
ZmZkMDllMjQ2OThkMDRjNDM4ZDMyMDU2ZjI2Y2FjOWFhZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAKQEAgLTM1LDggKzM1LDYgQEAKICNpbmNsdWRl
IDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IHNpemVfdCBwcmludEJ1ZmZlclNpemUgPSAxMDA7IC8vIGxhcmdlIGVub3VnaCBmb3IgYW55
IGludGVnZXIgb3IgZmxvYXRpbmcgcG9pbnQgdmFsdWUgaW4gc3RyaW5nIGZvcm1hdCwgaW5jbHVk
aW5nIHRyYWlsaW5nIG51bGwgY2hhcmFjdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L21hYy9Mb2NhbGVNYWMubW0KaW5kZXggNjM2NmE0MDgxODNiNjEzMzE0YjhiODM5OWMxZTdh
YTIwYTJlYWJlOC4uOTY3NWY4MGZjNWY1NDNiYWJlNzRhZWIzNjg3ZGFkNzY2NGQ0MDY1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsZU1hYy5tbQpAQCAtNDAs
OCArNDAsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGlubGluZSBTdHJpbmcgbGFuZ3VhZ2VGcm9tTG9jYWxlKGNvbnN0
IFN0cmluZyYgbG9jYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9tYWMvVGV4dENvZGVjTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFj
L1RleHRDb2RlY01hYy5jcHAKaW5kZXggOGQ4NjIwNDZhMWM1M2MxMTkxNmM2M2E1NWJmYzQwOWRk
NGNiOTIzNi4uNDhhOTc3NmE5ZTU1YTNjYjRjY2NlYTJiNWQ3OTIzMjFhYjQ0NTdkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCkBA
IC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBXZSBuZWVkIHRvIGtlZXAgdGhpcyBiZWNhdXNl
IElDVSBkb2Vzbid0IHN1cHBvcnQgc29tZSBvZiB0aGUgZW5jb2RpbmdzIHRoYXQgd2UgbmVlZDoK
QEAgLTE0Miw3ICsxNDAsNyBAQCBPU1N0YXR1cyBUZXh0Q29kZWNNYWM6OmRlY29kZShjb25zdCB1
bnNpZ25lZCBjaGFyKiBpbnB1dEJ1ZmZlciwgaW50IGlucHV0QnVmZmVyTAogICAgICAgICAvLyBG
aXJzdCwgZmlsbCB0aGUgcGFydGlhbCBjaGFyYWN0ZXIgYnVmZmVyIHdpdGggYXMgbWFueSBieXRl
cyBhcyBhcmUgYXZhaWxhYmxlLgogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihtX251bUJ1ZmZlcmVkQnl0ZXMgPCBzaXplb2YobV9idWZmZXJlZEJ5dGVzKSk7CiAgICAg
ICAgIGNvbnN0IGludCBzcGFjZUluQnVmZmVyID0gc2l6ZW9mKG1fYnVmZmVyZWRCeXRlcykgLSBt
X251bUJ1ZmZlcmVkQnl0ZXM7Ci0gICAgICAgIGNvbnN0IGludCBieXRlc1RvUHV0SW5CdWZmZXIg
PSBtaW4oc3BhY2VJbkJ1ZmZlciwgaW5wdXRCdWZmZXJMZW5ndGgpOworICAgICAgICBjb25zdCBp
bnQgYnl0ZXNUb1B1dEluQnVmZmVyID0gc3RkOjptaW4oc3BhY2VJbkJ1ZmZlciwgaW5wdXRCdWZm
ZXJMZW5ndGgpOwogICAgICAgICBBU1NFUlQoYnl0ZXNUb1B1dEluQnVmZmVyICE9IDApOwogICAg
ICAgICBtZW1jcHkobV9idWZmZXJlZEJ5dGVzICsgbV9udW1CdWZmZXJlZEJ5dGVzLCBpbnB1dEJ1
ZmZlciwgYnl0ZXNUb1B1dEluQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
QXV0b1RhYmxlTGF5b3V0LmNwcAppbmRleCA5NWM2M2ZkYTQxYzEzNGI3M2IxZDA4YTZlYWQwZGJj
ZmY5N2MyMTZhLi4zZmI2OTI4ODRjYTVjN2QzZDAyMDJhM2Q1OTZkNTA5NzhjM2FmMjQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcApAQCAtMjcsOCAr
MjcsNiBAQAogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ29sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFi
bGVTZWN0aW9uLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQXV0b1RhYmxlTGF5b3V0OjpBdXRvVGFibGVMYXlvdXQoUmVuZGVyVGFibGUqIHRhYmxl
KQpAQCAtNzEsMTEgKzY5LDExIEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpyZWNhbGNDb2x1bW4o
dW5zaWduZWQgZWZmQ29sKQogCiAgICAgICAgICAgICAgICAgLy8gQSBjZWxsIG9yaWdpbmF0ZXMg
aW4gdGhpcyBjb2x1bW4uIEVuc3VyZSB3ZSBoYXZlCiAgICAgICAgICAgICAgICAgLy8gYSBtaW4v
bWF4IHdpZHRoIG9mIGF0IGxlYXN0IDFweCBmb3IgdGhpcyBjb2x1bW4gbm93LgotICAgICAgICAg
ICAgICAgIGNvbHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGggPSBtYXg8aW50Pihjb2x1bW5MYXlv
dXQubWluTG9naWNhbFdpZHRoLCBjZWxsSGFzQ29udGVudCA/IDEgOiAwKTsKLSAgICAgICAgICAg
ICAgICBjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdpZHRoID0gbWF4PGludD4oY29sdW1uTGF5b3V0
Lm1heExvZ2ljYWxXaWR0aCwgMSk7CisgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1pbkxv
Z2ljYWxXaWR0aCA9IHN0ZDo6bWF4PGludD4oY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCwg
Y2VsbEhhc0NvbnRlbnQgPyAxIDogMCk7CisgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1h
eExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4PGludD4oY29sdW1uTGF5b3V0Lm1heExvZ2ljYWxXaWR0
aCwgMSk7CiAKICAgICAgICAgICAgICAgICBpZiAoY2VsbC0+Y29sU3BhbigpID09IDEpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0aCA9IG1heDxpbnQ+
KGNlbGwtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpLCBjb2x1bW5MYXlvdXQubWluTG9naWNh
bFdpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgY29sdW1uTGF5b3V0Lm1pbkxvZ2ljYWxXaWR0
aCA9IHN0ZDo6bWF4PGludD4oY2VsbC0+bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCksIGNvbHVt
bkxheW91dC5taW5Mb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbC0+
bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgPiBjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdpZHRo
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdpZHRo
ID0gY2VsbC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBtYXhDb250cmlidXRvciA9IGNlbGw7CkBAIC0xMzcsNyArMTM1LDcgQEAgdm9pZCBBdXRv
VGFibGVMYXlvdXQ6OnJlY2FsY0NvbHVtbih1bnNpZ25lZCBlZmZDb2wpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBjb2x1bW5MYXlvdXQubWF4TG9naWNhbFdpZHRoID0gbWF4KGNvbHVtbkxheW91
dC5tYXhMb2dpY2FsV2lkdGgsIGNvbHVtbkxheW91dC5taW5Mb2dpY2FsV2lkdGgpOworICAgIGNv
bHVtbkxheW91dC5tYXhMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChjb2x1bW5MYXlvdXQubWF4TG9n
aWNhbFdpZHRoLCBjb2x1bW5MYXlvdXQubWluTG9naWNhbFdpZHRoKTsKIH0KIAogdm9pZCBBdXRv
VGFibGVMYXlvdXQ6OmZ1bGxSZWNhbGMoKQpAQCAtMjMxLDkgKzIyOSw5IEBAIHZvaWQgQXV0b1Rh
YmxlTGF5b3V0Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5X
aWR0aCwgTGF5b3V0CiAgICAgICAgIG1heFdpZHRoICs9IG1fbGF5b3V0U3RydWN0W2ldLmVmZmVj
dGl2ZU1heExvZ2ljYWxXaWR0aDsKICAgICAgICAgaWYgKHNjYWxlQ29sdW1ucykgewogICAgICAg
ICAgICAgaWYgKG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNl
bnQoKSkgewotICAgICAgICAgICAgICAgIGZsb2F0IHBlcmNlbnQgPSBtaW4oc3RhdGljX2Nhc3Q8
ZmxvYXQ+KG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5wZXJjZW50KCkp
LCByZW1haW5pbmdQZXJjZW50KTsKLSAgICAgICAgICAgICAgICBmbG9hdCBsb2dpY2FsV2lkdGgg
PSBzdGF0aWNfY2FzdDxmbG9hdD4obV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTWF4TG9naWNh
bFdpZHRoKSAqIDEwMCAvIG1heChwZXJjZW50LCBlcHNpbG9uKTsKLSAgICAgICAgICAgICAgICBt
YXhQZXJjZW50ID0gbWF4KGxvZ2ljYWxXaWR0aCwgIG1heFBlcmNlbnQpOworICAgICAgICAgICAg
ICAgIGZsb2F0IHBlcmNlbnQgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxmbG9hdD4obV9sYXlvdXRT
dHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoLnBlcmNlbnQoKSksIHJlbWFpbmluZ1BlcmNl
bnQpOworICAgICAgICAgICAgICAgIGZsb2F0IGxvZ2ljYWxXaWR0aCA9IHN0YXRpY19jYXN0PGZs
b2F0PihtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVNYXhMb2dpY2FsV2lkdGgpICogMTAwIC8g
c3RkOjptYXgocGVyY2VudCwgZXBzaWxvbik7CisgICAgICAgICAgICAgICAgbWF4UGVyY2VudCA9
IHN0ZDo6bWF4KGxvZ2ljYWxXaWR0aCwgIG1heFBlcmNlbnQpOwogICAgICAgICAgICAgICAgIHJl
bWFpbmluZ1BlcmNlbnQgLT0gcGVyY2VudDsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgICAgIG1heE5vblBlcmNlbnQgKz0gbV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTWF4TG9n
aWNhbFdpZHRoOwpAQCAtMjQxLDE5ICsyMzksMTkgQEAgdm9pZCBBdXRvVGFibGVMYXlvdXQ6OmNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbldpZHRoLCBMYXlvdXQK
ICAgICB9CiAKICAgICBpZiAoc2NhbGVDb2x1bW5zKSB7Ci0gICAgICAgIG1heE5vblBlcmNlbnQg
PSBtYXhOb25QZXJjZW50ICogMTAwIC8gbWF4KHJlbWFpbmluZ1BlcmNlbnQsIGVwc2lsb24pOwot
ICAgICAgICBtYXhXaWR0aCA9IG1heDxpbnQ+KG1heFdpZHRoLCBzdGF0aWNfY2FzdDxpbnQ+KG1p
bihtYXhOb25QZXJjZW50LCBzdGF0aWNfY2FzdDxmbG9hdD4odGFibGVNYXhXaWR0aCkpKSk7Ci0g
ICAgICAgIG1heFdpZHRoID0gbWF4PGludD4obWF4V2lkdGgsIHN0YXRpY19jYXN0PGludD4obWlu
KG1heFBlcmNlbnQsIHN0YXRpY19jYXN0PGZsb2F0Pih0YWJsZU1heFdpZHRoKSkpKTsKKyAgICAg
ICAgbWF4Tm9uUGVyY2VudCA9IG1heE5vblBlcmNlbnQgKiAxMDAgLyBzdGQ6Om1heChyZW1haW5p
bmdQZXJjZW50LCBlcHNpbG9uKTsKKyAgICAgICAgbWF4V2lkdGggPSBzdGQ6Om1heDxpbnQ+KG1h
eFdpZHRoLCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bWluKG1heE5vblBlcmNlbnQsIHN0YXRpY19j
YXN0PGZsb2F0Pih0YWJsZU1heFdpZHRoKSkpKTsKKyAgICAgICAgbWF4V2lkdGggPSBzdGQ6Om1h
eDxpbnQ+KG1heFdpZHRoLCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bWluKG1heFBlcmNlbnQsIHN0
YXRpY19jYXN0PGZsb2F0Pih0YWJsZU1heFdpZHRoKSkpKTsKICAgICB9CiAKLSAgICBtYXhXaWR0
aCA9IG1heDxpbnQ+KG1heFdpZHRoLCBzcGFuTWF4TG9naWNhbFdpZHRoKTsKKyAgICBtYXhXaWR0
aCA9IHN0ZDo6bWF4PGludD4obWF4V2lkdGgsIHNwYW5NYXhMb2dpY2FsV2lkdGgpOwogfQogCiB2
b2lkIEF1dG9UYWJsZUxheW91dDo6YXBwbHlQcmVmZXJyZWRMb2dpY2FsV2lkdGhRdWlya3MoTGF5
b3V0VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBjb25zdAogewogICAgIExl
bmd0aCB0YWJsZUxvZ2ljYWxXaWR0aCA9IG1fdGFibGUtPnN0eWxlKCkubG9naWNhbFdpZHRoKCk7
CiAgICAgaWYgKHRhYmxlTG9naWNhbFdpZHRoLmlzRml4ZWQoKSAmJiB0YWJsZUxvZ2ljYWxXaWR0
aC5pc1Bvc2l0aXZlKCkpCi0gICAgICAgIG1pbldpZHRoID0gbWF4V2lkdGggPSBtYXg8aW50Piht
aW5XaWR0aCwgdGFibGVMb2dpY2FsV2lkdGgudmFsdWUoKSk7CisgICAgICAgIG1pbldpZHRoID0g
bWF4V2lkdGggPSBzdGQ6Om1heDxpbnQ+KG1pbldpZHRoLCB0YWJsZUxvZ2ljYWxXaWR0aC52YWx1
ZSgpKTsKIH0KIAogLyoKQEAgLTM0Niw3ICszNDQsNyBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0Ojpj
YWxjRWZmZWN0aXZlTG9naWNhbFdpZHRoKCkKICAgICAgICAgICAgICAgICAvLyBjYW4ndCBzYXRp
ZnkgdGhpcyBjb25kaXRpb24sIHRyZWF0IGFzIHZhcmlhYmxlCiAgICAgICAgICAgICAgICAgY2Vs
bExvZ2ljYWxXaWR0aCA9IExlbmd0aCgpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBtYXgobWF4TG9naWNhbFdpZHRoLCBzdGF0aWNfY2Fz
dDxpbnQ+KG1heChzcGFuTWF4TG9naWNhbFdpZHRoLCBjZWxsTWF4TG9naWNhbFdpZHRoKSAqIDEw
MCAgLyBjZWxsTG9naWNhbFdpZHRoLnBlcmNlbnQoKSkpOworICAgICAgICAgICAgICAgIG1heExv
Z2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1heExvZ2ljYWxXaWR0aCwgc3RhdGljX2Nhc3Q8aW50Pihz
dGQ6Om1heChzcGFuTWF4TG9naWNhbFdpZHRoLCBjZWxsTWF4TG9naWNhbFdpZHRoKSAqIDEwMCAg
LyBjZWxsTG9naWNhbFdpZHRoLnBlcmNlbnQoKSkpOwogCiAgICAgICAgICAgICAgICAgLy8gYWxs
IG5vbiBwZXJjZW50IGNvbHVtbnMgaW4gdGhlIHNwYW4gZ2V0IHBlcmNlbnQgdmFsdWVzIHRvIHN1
bSB1cCBjb3JyZWN0bHkuCiAgICAgICAgICAgICAgICAgZmxvYXQgcGVyY2VudE1pc3NpbmcgPSBj
ZWxsTG9naWNhbFdpZHRoLnBlcmNlbnQoKSAtIHRvdGFsUGVyY2VudDsKQEAgLTM3NCw3ICszNzIs
NyBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRoKCkKICAg
ICAgICAgaWYgKGNlbGxNaW5Mb2dpY2FsV2lkdGggPiBzcGFuTWluTG9naWNhbFdpZHRoKSB7CiAg
ICAgICAgICAgICBpZiAoYWxsQ29sc0FyZUZpeGVkKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBwb3MgPSBlZmZDb2w7IGZpeGVkV2lkdGggPiAwICYmIHBvcyA8IGxhc3RDb2w7ICsr
cG9zKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBjZWxsTG9naWNhbFdpZHRoID0gbWF4KG1f
bGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTWluTG9naWNhbFdpZHRoLCBzdGF0aWNfY2FzdDxp
bnQ+KGNlbGxNaW5Mb2dpY2FsV2lkdGggKiBtX2xheW91dFN0cnVjdFtwb3NdLmxvZ2ljYWxXaWR0
aC52YWx1ZSgpIC8gZml4ZWRXaWR0aCkpOworICAgICAgICAgICAgICAgICAgICBpbnQgY2VsbExv
Z2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTWluTG9n
aWNhbFdpZHRoLCBzdGF0aWNfY2FzdDxpbnQ+KGNlbGxNaW5Mb2dpY2FsV2lkdGggKiBtX2xheW91
dFN0cnVjdFtwb3NdLmxvZ2ljYWxXaWR0aC52YWx1ZSgpIC8gZml4ZWRXaWR0aCkpOwogICAgICAg
ICAgICAgICAgICAgICBmaXhlZFdpZHRoIC09IG1fbGF5b3V0U3RydWN0W3Bvc10ubG9naWNhbFdp
ZHRoLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIGNlbGxNaW5Mb2dpY2FsV2lkdGggLT0g
Y2VsbExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3RbcG9z
XS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGggPSBjZWxsTG9naWNhbFdpZHRoOwpAQCAtMzg5LDcg
KzM4Nyw3IEBAIGludCBBdXRvVGFibGVMYXlvdXQ6OmNhbGNFZmZlY3RpdmVMb2dpY2FsV2lkdGgo
KQogICAgICAgICAgICAgICAgICAgICBmbG9hdCBwZXJjZW50ID0gbV9sYXlvdXRTdHJ1Y3RbcG9z
XS5sb2dpY2FsV2lkdGguaXNQZXJjZW50KCkgPyBtX2xheW91dFN0cnVjdFtwb3NdLmxvZ2ljYWxX
aWR0aC5wZXJjZW50KCkgOiBtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0
aC5wZXJjZW50KCk7CiAgICAgICAgICAgICAgICAgICAgIGludCBjb2x1bW5NaW5Mb2dpY2FsV2lk
dGggPSBzdGF0aWNfY2FzdDxpbnQ+KHBlcmNlbnQgKiBjZWxsTWluTG9naWNhbFdpZHRoIC8gdG90
YWxQZXJjZW50KTsKICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbk1heExvZ2ljYWxXaWR0
aCA9IHN0YXRpY19jYXN0PGludD4ocGVyY2VudCAqIGNlbGxNYXhMb2dpY2FsV2lkdGggLyB0b3Rh
bFBlcmNlbnQpOwotICAgICAgICAgICAgICAgICAgICBtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVj
dGl2ZU1pbkxvZ2ljYWxXaWR0aCA9IG1heChtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZU1p
bkxvZ2ljYWxXaWR0aCwgY29sdW1uTWluTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGggPSBzdGQ6Om1h
eChtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZU1pbkxvZ2ljYWxXaWR0aCwgY29sdW1uTWlu
TG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5l
ZmZlY3RpdmVNYXhMb2dpY2FsV2lkdGggPSBjb2x1bW5NYXhMb2dpY2FsV2lkdGg7CiAgICAgICAg
ICAgICAgICAgICAgIGFsbG9jYXRlZE1pbkxvZ2ljYWxXaWR0aCArPSBjb2x1bW5NaW5Mb2dpY2Fs
V2lkdGg7CiAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlZE1heExvZ2ljYWxXaWR0aCArPSBj
b2x1bW5NYXhMb2dpY2FsV2lkdGg7CkBAIC00MDUsNyArNDAzLDcgQEAgaW50IEF1dG9UYWJsZUxh
eW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0aCgpCiAgICAgICAgICAgICAgICAgLy8gR2l2
ZSBtaW4gdG8gdmFyaWFibGUgZmlyc3QsIHRvIGZpeGVkIHNlY29uZCwgYW5kIHRvIG90aGVycyB0
aGlyZC4KICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHBvcyA9IGVmZkNvbDsgcmVtYWlu
aW5nTWF4TG9naWNhbFdpZHRoID49IDAgJiYgcG9zIDwgbGFzdENvbDsgKytwb3MpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fbGF5b3V0U3RydWN0W3Bvc10ubG9naWNhbFdpZHRoLmlzRml4
ZWQoKSAmJiBoYXZlQXV0byAmJiBmaXhlZFdpZHRoIDw9IGNlbGxNaW5Mb2dpY2FsV2lkdGgpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2xNaW5Mb2dpY2FsV2lkdGggPSBtYXg8aW50
PihtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZU1pbkxvZ2ljYWxXaWR0aCwgbV9sYXlvdXRT
dHJ1Y3RbcG9zXS5sb2dpY2FsV2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgY29sTWluTG9naWNhbFdpZHRoID0gc3RkOjptYXg8aW50PihtX2xheW91dFN0cnVjdFtw
b3NdLmVmZmVjdGl2ZU1pbkxvZ2ljYWxXaWR0aCwgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5sb2dpY2Fs
V2lkdGgudmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZFdpZHRoIC09IG1f
bGF5b3V0U3RydWN0W3Bvc10ubG9naWNhbFdpZHRoLnZhbHVlKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICByZW1haW5pbmdNaW5Mb2dpY2FsV2lkdGggLT0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5l
ZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5p
bmdNYXhMb2dpY2FsV2lkdGggLT0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNYXhMb2dp
Y2FsV2lkdGg7CkBAIC00MTYsOCArNDE0LDggQEAgaW50IEF1dG9UYWJsZUxheW91dDo6Y2FsY0Vm
ZmVjdGl2ZUxvZ2ljYWxXaWR0aCgpCiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHBv
cyA9IGVmZkNvbDsgcmVtYWluaW5nTWF4TG9naWNhbFdpZHRoID49IDAgJiYgcG9zIDwgbGFzdENv
bCAmJiByZW1haW5pbmdNaW5Mb2dpY2FsV2lkdGggPCBjZWxsTWluTG9naWNhbFdpZHRoOyArK3Bv
cykgewogICAgICAgICAgICAgICAgICAgICBpZiAoIShtX2xheW91dFN0cnVjdFtwb3NdLmxvZ2lj
YWxXaWR0aC5pc0ZpeGVkKCkgJiYgaGF2ZUF1dG8gJiYgZml4ZWRXaWR0aCA8PSBjZWxsTWluTG9n
aWNhbFdpZHRoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbE1pbkxvZ2ljYWxX
aWR0aCA9IG1heDxpbnQ+KG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTWluTG9naWNhbFdp
ZHRoLCBzdGF0aWNfY2FzdDxpbnQ+KHJlbWFpbmluZ01heExvZ2ljYWxXaWR0aCA/IGNlbGxNaW5M
b2dpY2FsV2lkdGggKiBzdGF0aWNfY2FzdDxmbG9hdD4obV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZl
Y3RpdmVNYXhMb2dpY2FsV2lkdGgpIC8gcmVtYWluaW5nTWF4TG9naWNhbFdpZHRoIDogY2VsbE1p
bkxvZ2ljYWxXaWR0aCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29sTWluTG9naWNhbFdp
ZHRoID0gbWluPGludD4obV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lk
dGggKyAoY2VsbE1pbkxvZ2ljYWxXaWR0aCAtIHJlbWFpbmluZ01pbkxvZ2ljYWxXaWR0aCksIGNv
bE1pbkxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sTWluTG9n
aWNhbFdpZHRoID0gc3RkOjptYXg8aW50PihtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZU1p
bkxvZ2ljYWxXaWR0aCwgc3RhdGljX2Nhc3Q8aW50PihyZW1haW5pbmdNYXhMb2dpY2FsV2lkdGgg
PyBjZWxsTWluTG9naWNhbFdpZHRoICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fbGF5b3V0U3RydWN0
W3Bvc10uZWZmZWN0aXZlTWF4TG9naWNhbFdpZHRoKSAvIHJlbWFpbmluZ01heExvZ2ljYWxXaWR0
aCA6IGNlbGxNaW5Mb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbE1p
bkxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluPGludD4obV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3Rp
dmVNaW5Mb2dpY2FsV2lkdGggKyAoY2VsbE1pbkxvZ2ljYWxXaWR0aCAtIHJlbWFpbmluZ01pbkxv
Z2ljYWxXaWR0aCksIGNvbE1pbkxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZW1haW5pbmdNYXhMb2dpY2FsV2lkdGggLT0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3Rp
dmVNYXhMb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdNaW5M
b2dpY2FsV2lkdGggLT0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lk
dGg7CiAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsTWluTG9naWNhbFdpZHRoIC09IGNvbE1p
bkxvZ2ljYWxXaWR0aDsKQEAgLTQyOSw3ICs0MjcsNyBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0Ojpj
YWxjRWZmZWN0aXZlTG9naWNhbFdpZHRoKCkKICAgICAgICAgaWYgKCFjZWxsTG9naWNhbFdpZHRo
LmlzUGVyY2VudCgpKSB7CiAgICAgICAgICAgICBpZiAoY2VsbE1heExvZ2ljYWxXaWR0aCA+IHNw
YW5NYXhMb2dpY2FsV2lkdGgpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHBvcyA9
IGVmZkNvbDsgc3Bhbk1heExvZ2ljYWxXaWR0aCA+PSAwICYmIHBvcyA8IGxhc3RDb2w7ICsrcG9z
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBjb2xNYXhMb2dpY2FsV2lkdGggPSBtYXgobV9s
YXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNYXhMb2dpY2FsV2lkdGgsIHN0YXRpY19jYXN0PGlu
dD4oc3Bhbk1heExvZ2ljYWxXaWR0aCA/IGNlbGxNYXhMb2dpY2FsV2lkdGggKiBzdGF0aWNfY2Fz
dDxmbG9hdD4obV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNYXhMb2dpY2FsV2lkdGgpIC8g
c3Bhbk1heExvZ2ljYWxXaWR0aCA6IGNlbGxNYXhMb2dpY2FsV2lkdGgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgaW50IGNvbE1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbGF5b3V0U3RydWN0
W3Bvc10uZWZmZWN0aXZlTWF4TG9naWNhbFdpZHRoLCBzdGF0aWNfY2FzdDxpbnQ+KHNwYW5NYXhM
b2dpY2FsV2lkdGggPyBjZWxsTWF4TG9naWNhbFdpZHRoICogc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1f
bGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTWF4TG9naWNhbFdpZHRoKSAvIHNwYW5NYXhMb2dp
Y2FsV2lkdGggOiBjZWxsTWF4TG9naWNhbFdpZHRoKSk7CiAgICAgICAgICAgICAgICAgICAgIHNw
YW5NYXhMb2dpY2FsV2lkdGggLT0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNYXhMb2dp
Y2FsV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgIGNlbGxNYXhMb2dpY2FsV2lkdGggLT0gY29s
TWF4TG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAgICAgICBtX2xheW91dFN0cnVjdFtwb3Nd
LmVmZmVjdGl2ZU1heExvZ2ljYWxXaWR0aCA9IGNvbE1heExvZ2ljYWxXaWR0aDsKQEAgLTQzNyw3
ICs0MzUsNyBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRo
KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgcG9zID0gZWZmQ29sOyBwb3MgPCBsYXN0Q29sOyArK3BvcykKLSAgICAgICAgICAgICAg
ICBtX2xheW91dFN0cnVjdFtwb3NdLm1heExvZ2ljYWxXaWR0aCA9IG1heChtX2xheW91dFN0cnVj
dFtwb3NdLm1heExvZ2ljYWxXaWR0aCwgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5taW5Mb2dpY2FsV2lk
dGgpOworICAgICAgICAgICAgICAgIG1fbGF5b3V0U3RydWN0W3Bvc10ubWF4TG9naWNhbFdpZHRo
ID0gc3RkOjptYXgobV9sYXlvdXRTdHJ1Y3RbcG9zXS5tYXhMb2dpY2FsV2lkdGgsIG1fbGF5b3V0
U3RydWN0W3Bvc10ubWluTG9naWNhbFdpZHRoKTsKICAgICAgICAgfQogICAgICAgICAvLyB0cmVh
dCBzcGFuIHJhbmdlcyBjb25zaXN0aW5nIG9mIGVtcHR5IGNlbGxzIG9ubHkgYXMgaWYgdGhleSBo
YWQgY29udGVudAogICAgICAgICBpZiAoc3Bhbkhhc0VtcHR5Q2VsbHNPbmx5KSB7CkBAIC00NDcs
NyArNDQ1LDcgQEAgaW50IEF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0
aCgpCiAgICAgfQogICAgIG1fZWZmZWN0aXZlTG9naWNhbFdpZHRoRGlydHkgPSBmYWxzZTsKIAot
ICAgIHJldHVybiBtaW4obWF4TG9naWNhbFdpZHRoLCBJTlRfTUFYIC8gMik7CisgICAgcmV0dXJu
IHN0ZDo6bWluKG1heExvZ2ljYWxXaWR0aCwgSU5UX01BWCAvIDIpOwogfQogCiAvKiBnZXRzIGFs
bCBjZWxscyB0aGF0IG9yaWdpbmF0ZSBpbiBhIGNvbHVtbiBhbmQgaGF2ZSBhIGNlbGxzcGFuID4g
MQpAQCAtNTQzLDcgKzU0MSw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQoKQogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5FZmZDb2xzOyArK2kpIHsKICAgICAgICAgICAg
IExlbmd0aCYgbG9naWNhbFdpZHRoID0gbV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNh
bFdpZHRoOwogICAgICAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgewotICAg
ICAgICAgICAgICAgIGludCBjZWxsTG9naWNhbFdpZHRoID0gbWF4PGludD4obV9sYXlvdXRTdHJ1
Y3RbaV0uZWZmZWN0aXZlTWluTG9naWNhbFdpZHRoLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobG9n
aWNhbFdpZHRoLCB0YWJsZUxvZ2ljYWxXaWR0aCkpOworICAgICAgICAgICAgICAgIGludCBjZWxs
TG9naWNhbFdpZHRoID0gc3RkOjptYXg8aW50PihtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVN
aW5Mb2dpY2FsV2lkdGgsIG1pbmltdW1WYWx1ZUZvckxlbmd0aChsb2dpY2FsV2lkdGgsIHRhYmxl
TG9naWNhbFdpZHRoKSk7CiAgICAgICAgICAgICAgICAgYXZhaWxhYmxlICs9IG1fbGF5b3V0U3Ry
dWN0W2ldLmNvbXB1dGVkTG9naWNhbFdpZHRoIC0gY2VsbExvZ2ljYWxXaWR0aDsKICAgICAgICAg
ICAgICAgICBtX2xheW91dFN0cnVjdFtpXS5jb21wdXRlZExvZ2ljYWxXaWR0aCA9IGNlbGxMb2dp
Y2FsV2lkdGg7CiAgICAgICAgICAgICB9CkBAIC01NTUsMTAgKzU1MywxMCBAQCB2b2lkIEF1dG9U
YWJsZUxheW91dDo6bGF5b3V0KCkKICAgICAgICAgICAgICAgICAtLWk7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQo
KSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgY2VsbExvZ2ljYWxXaWR0aCA9IG1fbGF5b3V0
U3RydWN0W2ldLmNvbXB1dGVkTG9naWNhbFdpZHRoOwotICAgICAgICAgICAgICAgICAgICBpbnQg
cmVkdWN0aW9uID0gbWluKGNlbGxMb2dpY2FsV2lkdGgsICBleGNlc3MpOworICAgICAgICAgICAg
ICAgICAgICBpbnQgcmVkdWN0aW9uID0gc3RkOjptaW4oY2VsbExvZ2ljYWxXaWR0aCwgIGV4Y2Vz
cyk7CiAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBsaW5lcyBiZWxvdyBtaWdodCBsb29rIGlu
Y29uc2lzdGVudCwgYnV0IHRoYXQncyB0aGUgd2F5IGl0J3MgaGFuZGxlZCBpbiBtb3ppbGxhCiAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VzcyAtPSByZWR1Y3Rpb247Ci0gICAgICAgICAgICAgICAg
ICAgIGludCBuZXdMb2dpY2FsV2lkdGggPSBtYXg8aW50PihtX2xheW91dFN0cnVjdFtpXS5lZmZl
Y3RpdmVNaW5Mb2dpY2FsV2lkdGgsIGNlbGxMb2dpY2FsV2lkdGggLSByZWR1Y3Rpb24pOworICAg
ICAgICAgICAgICAgICAgICBpbnQgbmV3TG9naWNhbFdpZHRoID0gc3RkOjptYXg8aW50PihtX2xh
eW91dFN0cnVjdFtpXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGgsIGNlbGxMb2dpY2FsV2lkdGgg
LSByZWR1Y3Rpb24pOwogICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgKz0gY2VsbExvZ2lj
YWxXaWR0aCAtIG5ld0xvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgbV9sYXlvdXRT
dHJ1Y3RbaV0uY29tcHV0ZWRMb2dpY2FsV2lkdGggPSBuZXdMb2dpY2FsV2lkdGg7CiAgICAgICAg
ICAgICAgICAgfQpAQCAtNTk2LDcgKzU5NCw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpsYXlv
dXQoKQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5FZmZDb2xzOyArK2kpIHsKICAg
ICAgICAgICAgIExlbmd0aCYgbG9naWNhbFdpZHRoID0gbV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0
aXZlTG9naWNhbFdpZHRoOwogICAgICAgICAgICAgaWYgKGxvZ2ljYWxXaWR0aC5pc0F1dG8oKSAm
JiB0b3RhbEF1dG8gJiYgIW1fbGF5b3V0U3RydWN0W2ldLmVtcHR5Q2VsbHNPbmx5KSB7Ci0gICAg
ICAgICAgICAgICAgaW50IGNlbGxMb2dpY2FsV2lkdGggPSBtYXg8aW50PihtX2xheW91dFN0cnVj
dFtpXS5jb21wdXRlZExvZ2ljYWxXaWR0aCwgc3RhdGljX2Nhc3Q8aW50PihhdmFpbGFibGUgKiBz
dGF0aWNfY2FzdDxmbG9hdD4obV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTWF4TG9naWNhbFdp
ZHRoKSAvIHRvdGFsQXV0bykpOworICAgICAgICAgICAgICAgIGludCBjZWxsTG9naWNhbFdpZHRo
ID0gc3RkOjptYXg8aW50PihtX2xheW91dFN0cnVjdFtpXS5jb21wdXRlZExvZ2ljYWxXaWR0aCwg
c3RhdGljX2Nhc3Q8aW50PihhdmFpbGFibGUgKiBzdGF0aWNfY2FzdDxmbG9hdD4obV9sYXlvdXRT
dHJ1Y3RbaV0uZWZmZWN0aXZlTWF4TG9naWNhbFdpZHRoKSAvIHRvdGFsQXV0bykpOwogICAgICAg
ICAgICAgICAgIGF2YWlsYWJsZSAtPSBjZWxsTG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAg
IHRvdGFsQXV0byAtPSBtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVNYXhMb2dpY2FsV2lkdGg7
CiAgICAgICAgICAgICAgICAgbV9sYXlvdXRTdHJ1Y3RbaV0uY29tcHV0ZWRMb2dpY2FsV2lkdGgg
PSBjZWxsTG9naWNhbFdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0ZpeGVkVGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFi
bGVMYXlvdXQuY3BwCmluZGV4IGU0NDQ3YWUyYjhiN2VhNDFmNDUyMjVkMmUxZGQ0YTU2MjQ4MTdj
YzAuLmE0NjBmOGMwZjgwZDlhOGQ5MzY0NWQxNDk5NWY3YTNhOTczYzUxNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKQEAgLTY4LDggKzY4LDYg
QEAKICAgb3ZlcmZsb3cgY29udGVudC4KICovCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogRml4ZWRUYWJsZUxheW91dDo6Rml4ZWRUYWJsZUxheW91dChS
ZW5kZXJUYWJsZSogdGFibGUpCkBAIC0xODAsNyArMTc4LDcgQEAgdm9pZCBGaXhlZFRhYmxlTGF5
b3V0OjphcHBseVByZWZlcnJlZExvZ2ljYWxXaWR0aFF1aXJrcyhMYXlvdXRVbml0JiBtaW5XaWR0
aCwgTGEKIHsKICAgICBMZW5ndGggdGFibGVMb2dpY2FsV2lkdGggPSBtX3RhYmxlLT5zdHlsZSgp
LmxvZ2ljYWxXaWR0aCgpOwogICAgIGlmICh0YWJsZUxvZ2ljYWxXaWR0aC5pc0ZpeGVkKCkgJiYg
dGFibGVMb2dpY2FsV2lkdGguaXNQb3NpdGl2ZSgpKQotICAgICAgICBtaW5XaWR0aCA9IG1heFdp
ZHRoID0gbWF4PGludD4obWluV2lkdGgsIHRhYmxlTG9naWNhbFdpZHRoLnZhbHVlKCkgLSBtX3Rh
YmxlLT5ib3JkZXJzUGFkZGluZ0FuZFNwYWNpbmdJblJvd0RpcmVjdGlvbigpKTsKKyAgICAgICAg
bWluV2lkdGggPSBtYXhXaWR0aCA9IHN0ZDo6bWF4PGludD4obWluV2lkdGgsIHRhYmxlTG9naWNh
bFdpZHRoLnZhbHVlKCkgLSBtX3RhYmxlLT5ib3JkZXJzUGFkZGluZ0FuZFNwYWNpbmdJblJvd0Rp
cmVjdGlvbigpKTsKIAogICAgIC8qCiAgICAgICAgIDx0YWJsZSBzdHlsZT0id2lkdGg6MTAwJTsg
YmFja2dyb3VuZC1jb2xvcjpyZWQiPjx0cj48dGQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GbG9hdGluZ09iamVjdHMuY3BwCmluZGV4IDJlY2ViNGMyNjA4MjBjZGMzMmNjMmMwMzMwZGE1
ZWJmNGE0YTQxMGMuLmUwZjZhYmMyMWU1MDk1MTg2OGNkZjRhYTQyMzExYzg5MjYzNThlOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCkBAIC0yOCw3
ICsyOCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTk4LDcgKzE5Nyw3IEBAIGlubGluZSB2b2lkIEZpbmROZXh0Rmxv
YXRMb2dpY2FsQm90dG9tQWRhcHRlcjo6Y29sbGVjdElmTmVlZGVkKGNvbnN0IEludGVydmFsVHlw
CiAgICAgaWYgKFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlT3V0c2lkZSA9IGZsb2F0aW5nT2JqZWN0
LT5yZW5kZXJlcigpLnNoYXBlT3V0c2lkZUluZm8oKSkgewogICAgICAgICBMYXlvdXRVbml0IHNo
YXBlQm90dG9tID0gbV9yZW5kZXJlci5sb2dpY2FsVG9wRm9yRmxvYXQoZmxvYXRpbmdPYmplY3Qp
ICsgbV9yZW5kZXJlci5tYXJnaW5CZWZvcmVGb3JDaGlsZChmbG9hdGluZ09iamVjdC0+cmVuZGVy
ZXIoKSkgKyBzaGFwZU91dHNpZGUtPnNoYXBlTG9naWNhbEJvdHRvbSgpOwogICAgICAgICAvLyBV
c2UgdGhlIHNoYXBlQm90dG9tIHVubGVzcyBpdCBleHRlbmRzIG91dHNpZGUgb2YgdGhlIG1hcmdp
biBib3gsIGluIHdoaWNoIGNhc2UgaXQgaXMgY2xpcHBlZC4KLSAgICAgICAgbV9uZXh0U2hhcGVM
b2dpY2FsQm90dG9tID0gbWluKHNoYXBlQm90dG9tLCBmbG9hdEJvdHRvbSk7CisgICAgICAgIG1f
bmV4dFNoYXBlTG9naWNhbEJvdHRvbSA9IHN0ZDo6bWluKHNoYXBlQm90dG9tLCBmbG9hdEJvdHRv
bSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fbmV4dFNoYXBlTG9naWNhbEJvdHRvbSA9IGZsb2F0
Qm90dG9tOwogI2VuZGlmCkBAIC00MTEsNyArNDEwLDcgQEAgTGF5b3V0VW5pdCBGbG9hdGluZ09i
amVjdHM6OmxvZ2ljYWxSaWdodE9mZnNldEZvclBvc2l0aW9uaW5nRmxvYXQoTGF5b3V0VW5pdCBm
aXgKICAgICBpZiAoaGVpZ2h0UmVtYWluaW5nKQogICAgICAgICAqaGVpZ2h0UmVtYWluaW5nID0g
YWRhcHRlci5oZWlnaHRSZW1haW5pbmcoKTsKIAotICAgIHJldHVybiBtaW4oZml4ZWRPZmZzZXQs
IGFkYXB0ZXIub2Zmc2V0KCkpOworICAgIHJldHVybiBzdGQ6Om1pbihmaXhlZE9mZnNldCwgYWRh
cHRlci5vZmZzZXQoKSk7CiB9CiAKIExheW91dFVuaXQgRmxvYXRpbmdPYmplY3RzOjpsb2dpY2Fs
TGVmdE9mZnNldChMYXlvdXRVbml0IGZpeGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3As
IExheW91dFVuaXQgbG9naWNhbEhlaWdodCkKQEAgLTQyNyw3ICs0MjYsNyBAQCBMYXlvdXRVbml0
IEZsb2F0aW5nT2JqZWN0czo6bG9naWNhbFJpZ2h0T2Zmc2V0KExheW91dFVuaXQgZml4ZWRPZmZz
ZXQsIExheW91dFVuaQogICAgIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8RmxvYXRpbmdPYmpl
Y3Q6OkZsb2F0UmlnaHQ+IGFkYXB0ZXIobV9yZW5kZXJlciwgbG9naWNhbFRvcCwgbG9naWNhbFRv
cCArIGxvZ2ljYWxIZWlnaHQsIGZpeGVkT2Zmc2V0KTsKICAgICBwbGFjZWRGbG9hdHNUcmVlKCku
YWxsT3ZlcmxhcHNXaXRoQWRhcHRlcihhZGFwdGVyKTsKIAotICAgIHJldHVybiBtaW4oZml4ZWRP
ZmZzZXQsIGFkYXB0ZXIuc2hhcGVPZmZzZXQoKSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKGZpeGVk
T2Zmc2V0LCBhZGFwdGVyLnNoYXBlT2Zmc2V0KCkpOwogfQogCiB0ZW1wbGF0ZTw+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCmluZGV4IGNkYTFiYTRkYzg0M2RkYTc0M2UxOTgx
N2MxNjFiZTE1NDNmNmY3ODYuLjUxMWM2OTVlN2Q4OTVkM2RiNzg3Y2FkNTk1MzE5Yjk4OWNmMDc2
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCkBAIC0zNCw4ICszNCw2
IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzSW5saW5lQm94IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCBkNzQxOTJkMTY5
ZGQxNGNjMzU1ODQwOTZmYjhkYjEyZjE0YWMzMWFjLi4xN2QwOTMwNzdkNjUwMTE4MTA0ZWY1NzAy
ZTdmZWRlZWU5MGU1ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCkBAIC0zOCwxMSArMzgsOCBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgotCiAjaW5jbHVkZSA8bWF0
aC5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
cnVjdCBTYW1lU2l6ZUFzSW5saW5lRmxvd0JveCA6IHB1YmxpYyBJbmxpbmVCb3ggewpAQCAtMzk3
LDEwICszOTQsMTAgQEAgZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5l
RGlyZWN0aW9uKElubGluZUJveCogZmlyc3RDaGlsZCwgSW5saW4KICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHRleHQtPnNldExvZ2ljYWxMZWZ0KGxvZ2ljYWxMZWZ0KTsKICAgICAgICAgICAg
IGlmIChrbm93blRvSGF2ZU5vT3ZlcmZsb3coKSkKLSAgICAgICAgICAgICAgICBtaW5Mb2dpY2Fs
TGVmdCA9IG1pbihsb2dpY2FsTGVmdCwgbWluTG9naWNhbExlZnQpOworICAgICAgICAgICAgICAg
IG1pbkxvZ2ljYWxMZWZ0ID0gc3RkOjptaW4obG9naWNhbExlZnQsIG1pbkxvZ2ljYWxMZWZ0KTsK
ICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ICs9IHRleHQtPmxvZ2ljYWxXaWR0aCgpOwogICAgICAg
ICAgICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxvdygpKQotICAgICAgICAgICAgICAgIG1heExv
Z2ljYWxSaWdodCA9IG1heChsb2dpY2FsTGVmdCwgbWF4TG9naWNhbFJpZ2h0KTsKKyAgICAgICAg
ICAgICAgICBtYXhMb2dpY2FsUmlnaHQgPSBzdGQ6Om1heChsb2dpY2FsTGVmdCwgbWF4TG9naWNh
bFJpZ2h0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjdXJyLT5yZW5kZXJl
cigpLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnIt
PnJlbmRlcmVyKCkucGFyZW50KCktPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQpA
QCAtNDE2LDEwICs0MTMsMTAgQEAgZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5nZUlu
SW5saW5lRGlyZWN0aW9uKElubGluZUJveCogZmlyc3RDaGlsZCwgSW5saW4KICAgICAgICAgICAg
ICAgICBJbmxpbmVGbG93Qm94KiBmbG93ID0gdG9JbmxpbmVGbG93Qm94KGN1cnIpOwogICAgICAg
ICAgICAgICAgIGxvZ2ljYWxMZWZ0ICs9IGZsb3ctPm1hcmdpbkxvZ2ljYWxMZWZ0KCk7CiAgICAg
ICAgICAgICAgICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxvdygpKQotICAgICAgICAgICAgICAg
ICAgICBtaW5Mb2dpY2FsTGVmdCA9IG1pbihsb2dpY2FsTGVmdCwgbWluTG9naWNhbExlZnQpOwor
ICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsTGVmdCA9IHN0ZDo6bWluKGxvZ2ljYWxMZWZ0
LCBtaW5Mb2dpY2FsTGVmdCk7CiAgICAgICAgICAgICAgICAgbG9naWNhbExlZnQgPSBmbG93LT5w
bGFjZUJveGVzSW5JbmxpbmVEaXJlY3Rpb24obG9naWNhbExlZnQsIG5lZWRzV29yZFNwYWNpbmcs
IHRleHRCb3hEYXRhTWFwKTsKICAgICAgICAgICAgICAgICBpZiAoa25vd25Ub0hhdmVOb092ZXJm
bG93KCkpCi0gICAgICAgICAgICAgICAgICAgIG1heExvZ2ljYWxSaWdodCA9IG1heChsb2dpY2Fs
TGVmdCwgbWF4TG9naWNhbFJpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgbWF4TG9naWNhbFJp
Z2h0ID0gc3RkOjptYXgobG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdodCk7CiAgICAgICAgICAg
ICAgICAgbG9naWNhbExlZnQgKz0gZmxvdy0+bWFyZ2luTG9naWNhbFJpZ2h0KCk7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCFjdXJyLT5yZW5kZXJlcigpLmlzTGlzdE1hcmtlcigpIHx8IHRvUmVu
ZGVyTGlzdE1hcmtlcihjdXJyLT5yZW5kZXJlcigpKS5pc0luc2lkZSgpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIGJveCBjYW4gaGF2ZSBhIGRpZmZlcmVudCB3cml0aW5nLW1vZGUgdGhhbiB0
aGUgb3ZlcmFsbCBsaW5lLCBzbyB0aGlzIGlzIGEgYml0IGNvbXBsaWNhdGVkLgpAQCAtNDMwLDEw
ICs0MjcsMTAgQEAgZmxvYXQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hSYW5nZUluSW5saW5lRGly
ZWN0aW9uKElubGluZUJveCogZmlyc3RDaGlsZCwgSW5saW4KICAgICAgICAgICAgICAgICBsb2dp
Y2FsTGVmdCArPSBsb2dpY2FsTGVmdE1hcmdpbjsKICAgICAgICAgICAgICAgICBjdXJyLT5zZXRM
b2dpY2FsTGVmdChsb2dpY2FsTGVmdCk7CiAgICAgICAgICAgICAgICAgaWYgKGtub3duVG9IYXZl
Tm9PdmVyZmxvdygpKQotICAgICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsTGVmdCA9IG1pbihs
b2dpY2FsTGVmdCwgbWluTG9naWNhbExlZnQpOworICAgICAgICAgICAgICAgICAgICBtaW5Mb2dp
Y2FsTGVmdCA9IHN0ZDo6bWluKGxvZ2ljYWxMZWZ0LCBtaW5Mb2dpY2FsTGVmdCk7CiAgICAgICAg
ICAgICAgICAgbG9naWNhbExlZnQgKz0gY3Vyci0+bG9naWNhbFdpZHRoKCk7CiAgICAgICAgICAg
ICAgICAgaWYgKGtub3duVG9IYXZlTm9PdmVyZmxvdygpKQotICAgICAgICAgICAgICAgICAgICBt
YXhMb2dpY2FsUmlnaHQgPSBtYXgobG9naWNhbExlZnQsIG1heExvZ2ljYWxSaWdodCk7CisgICAg
ICAgICAgICAgICAgICAgIG1heExvZ2ljYWxSaWdodCA9IHN0ZDo6bWF4KGxvZ2ljYWxMZWZ0LCBt
YXhMb2dpY2FsUmlnaHQpOwogICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ICs9IGxvZ2ljYWxS
aWdodE1hcmdpbjsKICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYW55IHNwYWNl
IGFmdGVyIHRoaXMgaW5saW5lIGJsb2NrIHRoZW4gZW5zdXJlIGl0IGlzIHRyZWF0ZWQgYXMgdGhl
IHNwYWNlIGJldHdlZW4gdHdvIHdvcmRzLgogICAgICAgICAgICAgICAgIG5lZWRzV29yZFNwYWNp
bmcgPSB0cnVlOwpAQCAtNTA4LDcgKzUwNSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6YWRqdXN0
TWF4QXNjZW50QW5kRGVzY2VudChpbnQmIG1heEFzY2VudCwgaW50JiBtYXhEZXNjZW50LCBpCiAg
ICAgICAgICAgICAgICAgICAgIG1heEFzY2VudCA9IGxpbmVIZWlnaHQgLSBtYXhEZXNjZW50Owog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobWF4QXNjZW50ICsgbWF4RGVzY2VudCA+
PSBtYXgobWF4UG9zaXRpb25Ub3AsIG1heFBvc2l0aW9uQm90dG9tKSkKKyAgICAgICAgICAgIGlm
IChtYXhBc2NlbnQgKyBtYXhEZXNjZW50ID49IHN0ZDo6bWF4KG1heFBvc2l0aW9uVG9wLCBtYXhQ
b3NpdGlvbkJvdHRvbSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAt
NzE1LDEzICs3MTIsMTMgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5CbG9ja0Rp
cmVjdGlvbihMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdCBtYXhIZWkKICAgICAgICAgICAgIGlm
ICghc2V0TGluZVRvcCkgewogICAgICAgICAgICAgICAgIHNldExpbmVUb3AgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIGxpbmVUb3AgPSBuZXdMb2dpY2FsVG9wOwotICAgICAgICAgICAgICAgIGxp
bmVUb3BJbmNsdWRpbmdNYXJnaW5zID0gbWluKGxpbmVUb3AsIG5ld0xvZ2ljYWxUb3BJbmNsdWRp
bmdNYXJnaW5zKTsKKyAgICAgICAgICAgICAgICBsaW5lVG9wSW5jbHVkaW5nTWFyZ2lucyA9IHN0
ZDo6bWluKGxpbmVUb3AsIG5ld0xvZ2ljYWxUb3BJbmNsdWRpbmdNYXJnaW5zKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbGluZVRvcCA9IG1pbihsaW5lVG9wLCBuZXdM
b2dpY2FsVG9wKTsKLSAgICAgICAgICAgICAgICBsaW5lVG9wSW5jbHVkaW5nTWFyZ2lucyA9IG1p
bihsaW5lVG9wLCBtaW4obGluZVRvcEluY2x1ZGluZ01hcmdpbnMsIG5ld0xvZ2ljYWxUb3BJbmNs
dWRpbmdNYXJnaW5zKSk7CisgICAgICAgICAgICAgICAgbGluZVRvcCA9IHN0ZDo6bWluKGxpbmVU
b3AsIG5ld0xvZ2ljYWxUb3ApOworICAgICAgICAgICAgICAgIGxpbmVUb3BJbmNsdWRpbmdNYXJn
aW5zID0gc3RkOjptaW4obGluZVRvcCwgc3RkOjptaW4obGluZVRvcEluY2x1ZGluZ01hcmdpbnMs
IG5ld0xvZ2ljYWxUb3BJbmNsdWRpbmdNYXJnaW5zKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBsaW5lQm90dG9tID0gbWF4KGxpbmVCb3R0b20sIG5ld0xvZ2ljYWxUb3AgKyBib3hIZWln
aHQpOwotICAgICAgICAgICAgbGluZUJvdHRvbUluY2x1ZGluZ01hcmdpbnMgPSBtYXgobGluZUJv
dHRvbSwgbWF4KGxpbmVCb3R0b21JbmNsdWRpbmdNYXJnaW5zLCBuZXdMb2dpY2FsVG9wSW5jbHVk
aW5nTWFyZ2lucyArIGJveEhlaWdodEluY2x1ZGluZ01hcmdpbnMpKTsKKyAgICAgICAgICAgIGxp
bmVCb3R0b20gPSBzdGQ6Om1heChsaW5lQm90dG9tLCBuZXdMb2dpY2FsVG9wICsgYm94SGVpZ2h0
KTsKKyAgICAgICAgICAgIGxpbmVCb3R0b21JbmNsdWRpbmdNYXJnaW5zID0gc3RkOjptYXgobGlu
ZUJvdHRvbSwgc3RkOjptYXgobGluZUJvdHRvbUluY2x1ZGluZ01hcmdpbnMsIG5ld0xvZ2ljYWxU
b3BJbmNsdWRpbmdNYXJnaW5zICsgYm94SGVpZ2h0SW5jbHVkaW5nTWFyZ2lucykpOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gQWRqdXN0IGJveGVzIHRvIHVzZSB0aGVpciByZWFsIGJveCB5L2hl
aWdodCBhbmQgbm90IHRoZSBsb2dpY2FsIGhlaWdodCAoYXMgZGljdGF0ZWQgYnkKQEAgLTczOCwx
MSArNzM1LDExIEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0luQmxvY2tEaXJlY3Rp
b24oTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgbWF4SGVpCiAgICAgICAgICAgICAgICAgbGlu
ZVRvcCA9IHBpeGVsU25hcHBlZExvZ2ljYWxUb3AoKTsKICAgICAgICAgICAgICAgICBsaW5lVG9w
SW5jbHVkaW5nTWFyZ2lucyA9IGxpbmVUb3A7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGxpbmVUb3AgPSBtaW48TGF5b3V0VW5pdD4obGluZVRvcCwgcGl4ZWxTbmFwcGVk
TG9naWNhbFRvcCgpKTsKLSAgICAgICAgICAgICAgICBsaW5lVG9wSW5jbHVkaW5nTWFyZ2lucyA9
IG1pbihsaW5lVG9wLCBsaW5lVG9wSW5jbHVkaW5nTWFyZ2lucyk7CisgICAgICAgICAgICAgICAg
bGluZVRvcCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KGxpbmVUb3AsIHBpeGVsU25hcHBlZExvZ2lj
YWxUb3AoKSk7CisgICAgICAgICAgICAgICAgbGluZVRvcEluY2x1ZGluZ01hcmdpbnMgPSBzdGQ6
Om1pbihsaW5lVG9wLCBsaW5lVG9wSW5jbHVkaW5nTWFyZ2lucyk7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBsaW5lQm90dG9tID0gbWF4PExheW91dFVuaXQ+KGxpbmVCb3R0b20sIHBpeGVs
U25hcHBlZExvZ2ljYWxCb3R0b20oKSk7Ci0gICAgICAgICAgICBsaW5lQm90dG9tSW5jbHVkaW5n
TWFyZ2lucyA9IG1heChsaW5lQm90dG9tLCBsaW5lQm90dG9tSW5jbHVkaW5nTWFyZ2lucyk7Cisg
ICAgICAgICAgICBsaW5lQm90dG9tID0gc3RkOjptYXg8TGF5b3V0VW5pdD4obGluZUJvdHRvbSwg
cGl4ZWxTbmFwcGVkTG9naWNhbEJvdHRvbSgpKTsKKyAgICAgICAgICAgIGxpbmVCb3R0b21JbmNs
dWRpbmdNYXJnaW5zID0gc3RkOjptYXgobGluZUJvdHRvbSwgbGluZUJvdHRvbUluY2x1ZGluZ01h
cmdpbnMpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHls
ZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkKQEAgLTc2MCwxMSArNzU3LDExIEBAIHZv
aWQgSW5saW5lRmxvd0JveDo6Y29tcHV0ZU1heExvZ2ljYWxUb3AoZmxvYXQmIG1heExvZ2ljYWxU
b3ApIGNvbnN0CiAgICAgICAgIGlmIChkZXNjZW5kYW50c0hhdmVTYW1lTGluZUhlaWdodEFuZEJh
c2VsaW5lKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBtYXhMb2dpY2FsVG9w
ID0gbWF4PGZsb2F0PihtYXhMb2dpY2FsVG9wLCBjdXJyLT55KCkpOworICAgICAgICBtYXhMb2dp
Y2FsVG9wID0gc3RkOjptYXg8ZmxvYXQ+KG1heExvZ2ljYWxUb3AsIGN1cnItPnkoKSk7CiAgICAg
ICAgIGZsb2F0IGxvY2FsTWF4TG9naWNhbFRvcCA9IDA7CiAgICAgICAgIGlmIChjdXJyLT5pc0lu
bGluZUZsb3dCb3goKSkKICAgICAgICAgICAgIHRvSW5saW5lRmxvd0JveChjdXJyKS0+Y29tcHV0
ZU1heExvZ2ljYWxUb3AobG9jYWxNYXhMb2dpY2FsVG9wKTsKLSAgICAgICAgbWF4TG9naWNhbFRv
cCA9IG1heDxmbG9hdD4obWF4TG9naWNhbFRvcCwgbG9jYWxNYXhMb2dpY2FsVG9wKTsKKyAgICAg
ICAgbWF4TG9naWNhbFRvcCA9IHN0ZDo6bWF4PGZsb2F0PihtYXhMb2dpY2FsVG9wLCBsb2NhbE1h
eExvZ2ljYWxUb3ApOwogICAgIH0KIH0KICNlbmRpZiAvLyBDU1MzX1RFWFRfREVDT1JBVElPTgpA
QCAtODA0LDE1ICs4MDEsMTUgQEAgaW5saW5lIHZvaWQgSW5saW5lRmxvd0JveDo6YWRkQm94U2hh
ZG93VmlzdWFsT3ZlcmZsb3coTGF5b3V0UmVjdCYgbG9naWNhbFZpc3VhbE8KICAgICBMYXlvdXRV
bml0IHNoYWRvd0xvZ2ljYWxUb3AgPSBsaW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9k
ZSgpID8gLWJveFNoYWRvd0xvZ2ljYWxCb3R0b20gOiBib3hTaGFkb3dMb2dpY2FsVG9wOwogICAg
IExheW91dFVuaXQgc2hhZG93TG9naWNhbEJvdHRvbSA9IGxpbmVTdHlsZS5pc0ZsaXBwZWRMaW5l
c1dyaXRpbmdNb2RlKCkgPyAtYm94U2hhZG93TG9naWNhbFRvcCA6IGJveFNoYWRvd0xvZ2ljYWxC
b3R0b207CiAgICAgCi0gICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3cgPSBt
aW4ocGl4ZWxTbmFwcGVkTG9naWNhbFRvcCgpICsgc2hhZG93TG9naWNhbFRvcCwgbG9naWNhbFZp
c3VhbE92ZXJmbG93LnkoKSk7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tVmlzdWFsT3Zl
cmZsb3cgPSBtYXgocGl4ZWxTbmFwcGVkTG9naWNhbEJvdHRvbSgpICsgc2hhZG93TG9naWNhbEJv
dHRvbSwgbG9naWNhbFZpc3VhbE92ZXJmbG93Lm1heFkoKSk7CisgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsVG9wVmlzdWFsT3ZlcmZsb3cgPSBzdGQ6Om1pbihwaXhlbFNuYXBwZWRMb2dpY2FsVG9wKCkg
KyBzaGFkb3dMb2dpY2FsVG9wLCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cueSgpKTsKKyAgICBMYXlv
dXRVbml0IGxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdyA9IHN0ZDo6bWF4KHBpeGVsU25hcHBl
ZExvZ2ljYWxCb3R0b20oKSArIHNoYWRvd0xvZ2ljYWxCb3R0b20sIGxvZ2ljYWxWaXN1YWxPdmVy
Zmxvdy5tYXhZKCkpOwogICAgIAogICAgIExheW91dFVuaXQgYm94U2hhZG93TG9naWNhbExlZnQ7
CiAgICAgTGF5b3V0VW5pdCBib3hTaGFkb3dMb2dpY2FsUmlnaHQ7CiAgICAgbGluZVN0eWxlLmdl
dEJveFNoYWRvd0lubGluZURpcmVjdGlvbkV4dGVudChib3hTaGFkb3dMb2dpY2FsTGVmdCwgYm94
U2hhZG93TG9naWNhbFJpZ2h0KTsKIAotICAgIExheW91dFVuaXQgbG9naWNhbExlZnRWaXN1YWxP
dmVyZmxvdyA9IG1pbihwaXhlbFNuYXBwZWRMb2dpY2FsTGVmdCgpICsgYm94U2hhZG93TG9naWNh
bExlZnQsIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy54KCkpOwotICAgIExheW91dFVuaXQgbG9naWNh
bFJpZ2h0VmlzdWFsT3ZlcmZsb3cgPSBtYXgocGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0KCkgKyBi
b3hTaGFkb3dMb2dpY2FsUmlnaHQsIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy5tYXhYKCkpOworICAg
IExheW91dFVuaXQgbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdyA9IHN0ZDo6bWluKHBpeGVsU25h
cHBlZExvZ2ljYWxMZWZ0KCkgKyBib3hTaGFkb3dMb2dpY2FsTGVmdCwgbG9naWNhbFZpc3VhbE92
ZXJmbG93LngoKSk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdyA9
IHN0ZDo6bWF4KHBpeGVsU25hcHBlZExvZ2ljYWxSaWdodCgpICsgYm94U2hhZG93TG9naWNhbFJp
Z2h0LCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cubWF4WCgpKTsKICAgICAKICAgICBsb2dpY2FsVmlz
dWFsT3ZlcmZsb3cgPSBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2lj
YWxUb3BWaXN1YWxPdmVyZmxvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93IC0gbG9naWNhbExlZnRWaXN1YWxPdmVyZmxv
dywgbG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93IC0gbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93
KTsKQEAgLTg0MCwxNCArODM3LDE0IEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZEJv
cmRlck91dHNldFZpc3VhbE92ZXJmbG93KExheW91dFJlY3QmIGxvZ2ljYWxWaXN1CiAgICAgTGF5
b3V0VW5pdCBvdXRzZXRMb2dpY2FsVG9wID0gbGluZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGlu
Z01vZGUoKSA/IGJvcmRlck91dHNldExvZ2ljYWxCb3R0b20gOiBib3JkZXJPdXRzZXRMb2dpY2Fs
VG9wOwogICAgIExheW91dFVuaXQgb3V0c2V0TG9naWNhbEJvdHRvbSA9IGxpbmVTdHlsZS5pc0Zs
aXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPyBib3JkZXJPdXRzZXRMb2dpY2FsVG9wIDogYm9yZGVy
T3V0c2V0TG9naWNhbEJvdHRvbTsKIAotICAgIExheW91dFVuaXQgbG9naWNhbFRvcFZpc3VhbE92
ZXJmbG93ID0gbWluKHBpeGVsU25hcHBlZExvZ2ljYWxUb3AoKSAtIG91dHNldExvZ2ljYWxUb3As
IGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy55KCkpOwotICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRv
bVZpc3VhbE92ZXJmbG93ID0gbWF4KHBpeGVsU25hcHBlZExvZ2ljYWxCb3R0b20oKSArIG91dHNl
dExvZ2ljYWxCb3R0b20sIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy5tYXhZKCkpOworICAgIExheW91
dFVuaXQgbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93ID0gc3RkOjptaW4ocGl4ZWxTbmFwcGVkTG9n
aWNhbFRvcCgpIC0gb3V0c2V0TG9naWNhbFRvcCwgbG9naWNhbFZpc3VhbE92ZXJmbG93LnkoKSk7
CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cgPSBzdGQ6Om1heChw
aXhlbFNuYXBwZWRMb2dpY2FsQm90dG9tKCkgKyBvdXRzZXRMb2dpY2FsQm90dG9tLCBsb2dpY2Fs
VmlzdWFsT3ZlcmZsb3cubWF4WSgpKTsKIAogICAgIExheW91dFVuaXQgb3V0c2V0TG9naWNhbExl
ZnQgPSBpbmNsdWRlTG9naWNhbExlZnRFZGdlKCkgPyBib3JkZXJPdXRzZXRMb2dpY2FsTGVmdCA6
IExheW91dFVuaXQoKTsKICAgICBMYXlvdXRVbml0IG91dHNldExvZ2ljYWxSaWdodCA9IGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKCkgPyBib3JkZXJPdXRzZXRMb2dpY2FsUmlnaHQgOiBMYXlvdXRV
bml0KCk7CiAKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3cgPSBtaW4o
cGl4ZWxTbmFwcGVkTG9naWNhbExlZnQoKSAtIG91dHNldExvZ2ljYWxMZWZ0LCBsb2dpY2FsVmlz
dWFsT3ZlcmZsb3cueCgpKTsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodFZpc3VhbE92ZXJm
bG93ID0gbWF4KHBpeGVsU25hcHBlZExvZ2ljYWxSaWdodCgpICsgb3V0c2V0TG9naWNhbFJpZ2h0
LCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cubWF4WCgpKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxM
ZWZ0VmlzdWFsT3ZlcmZsb3cgPSBzdGQ6Om1pbihwaXhlbFNuYXBwZWRMb2dpY2FsTGVmdCgpIC0g
b3V0c2V0TG9naWNhbExlZnQsIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy54KCkpOworICAgIExheW91
dFVuaXQgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cgPSBzdGQ6Om1heChwaXhlbFNuYXBwZWRM
b2dpY2FsUmlnaHQoKSArIG91dHNldExvZ2ljYWxSaWdodCwgbG9naWNhbFZpc3VhbE92ZXJmbG93
Lm1heFgoKSk7CiAgICAgCiAgICAgbG9naWNhbFZpc3VhbE92ZXJmbG93ID0gTGF5b3V0UmVjdChs
b2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3csCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsUmlnaHRWaXN1YWxPdmVy
ZmxvdyAtIGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2ljYWxCb3R0b21WaXN1YWxPdmVy
ZmxvdyAtIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyk7CkBAIC04NzksMzMgKzg3NiwzMyBAQCBp
bmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3coSW5saW5l
VGV4dEJveCogdGV4dEJveCwgR2x5cAogICAgIGlmIChsaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFy
aygpICE9IFRleHRFbXBoYXNpc01hcmtOb25lICYmIHRleHRCb3gtPmdldEVtcGhhc2lzTWFya1Bv
c2l0aW9uKGxpbmVTdHlsZSwgZW1waGFzaXNNYXJrUG9zaXRpb24pKSB7CiAgICAgICAgIGludCBl
bXBoYXNpc01hcmtIZWlnaHQgPSBsaW5lU3R5bGUuZm9udCgpLmVtcGhhc2lzTWFya0hlaWdodChs
aW5lU3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygpKTsKICAgICAgICAgaWYgKChlbXBoYXNp
c01hcmtQb3NpdGlvbiA9PSBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIpID09ICghbGluZVN0eWxl
LmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkpCi0gICAgICAgICAgICB0b3BHbHlwaE92ZXJm
bG93ID0gbWluKHRvcEdseXBoT3ZlcmZsb3csIC1lbXBoYXNpc01hcmtIZWlnaHQpOworICAgICAg
ICAgICAgdG9wR2x5cGhPdmVyZmxvdyA9IHN0ZDo6bWluKHRvcEdseXBoT3ZlcmZsb3csIC1lbXBo
YXNpc01hcmtIZWlnaHQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBib3R0b21HbHlwaE92
ZXJmbG93ID0gbWF4KGJvdHRvbUdseXBoT3ZlcmZsb3csIGVtcGhhc2lzTWFya0hlaWdodCk7Cisg
ICAgICAgICAgICBib3R0b21HbHlwaE92ZXJmbG93ID0gc3RkOjptYXgoYm90dG9tR2x5cGhPdmVy
ZmxvdywgZW1waGFzaXNNYXJrSGVpZ2h0KTsKICAgICB9CiAKICAgICAvLyBJZiBsZXR0ZXItc3Bh
Y2luZyBpcyBuZWdhdGl2ZSwgd2Ugc2hvdWxkIGZhY3RvciB0aGF0IGludG8gcmlnaHQgbGF5b3V0
IG92ZXJmbG93LiAoRXZlbiBpbiBSVEwsIGxldHRlci1zcGFjaW5nIGlzCiAgICAgLy8gYXBwbGll
ZCB0byB0aGUgcmlnaHQsIHNvIHRoaXMgaXMgbm90IGFuIGlzc3VlIHdpdGggbGVmdCBvdmVyZmxv
dy4KLSAgICByaWdodEdseXBoT3ZlcmZsb3cgLT0gbWluKDAsIChpbnQpbGluZVN0eWxlLmZvbnQo
KS5sZXR0ZXJTcGFjaW5nKCkpOworICAgIHJpZ2h0R2x5cGhPdmVyZmxvdyAtPSBzdGQ6Om1pbigw
LCAoaW50KWxpbmVTdHlsZS5mb250KCkubGV0dGVyU3BhY2luZygpKTsKIAogICAgIExheW91dFVu
aXQgdGV4dFNoYWRvd0xvZ2ljYWxUb3A7CiAgICAgTGF5b3V0VW5pdCB0ZXh0U2hhZG93TG9naWNh
bEJvdHRvbTsKICAgICBsaW5lU3R5bGUuZ2V0VGV4dFNoYWRvd0Jsb2NrRGlyZWN0aW9uRXh0ZW50
KHRleHRTaGFkb3dMb2dpY2FsVG9wLCB0ZXh0U2hhZG93TG9naWNhbEJvdHRvbSk7CiAgICAgCi0g
ICAgTGF5b3V0VW5pdCBjaGlsZE92ZXJmbG93TG9naWNhbFRvcCA9IG1pbjxMYXlvdXRVbml0Pih0
ZXh0U2hhZG93TG9naWNhbFRvcCArIHRvcEdseXBoT3ZlcmZsb3csIHRvcEdseXBoT3ZlcmZsb3cp
OwotICAgIExheW91dFVuaXQgY2hpbGRPdmVyZmxvd0xvZ2ljYWxCb3R0b20gPSBtYXg8TGF5b3V0
VW5pdD4odGV4dFNoYWRvd0xvZ2ljYWxCb3R0b20gKyBib3R0b21HbHlwaE92ZXJmbG93LCBib3R0
b21HbHlwaE92ZXJmbG93KTsKKyAgICBMYXlvdXRVbml0IGNoaWxkT3ZlcmZsb3dMb2dpY2FsVG9w
ID0gc3RkOjptaW48TGF5b3V0VW5pdD4odGV4dFNoYWRvd0xvZ2ljYWxUb3AgKyB0b3BHbHlwaE92
ZXJmbG93LCB0b3BHbHlwaE92ZXJmbG93KTsKKyAgICBMYXlvdXRVbml0IGNoaWxkT3ZlcmZsb3dM
b2dpY2FsQm90dG9tID0gc3RkOjptYXg8TGF5b3V0VW5pdD4odGV4dFNoYWRvd0xvZ2ljYWxCb3R0
b20gKyBib3R0b21HbHlwaE92ZXJmbG93LCBib3R0b21HbHlwaE92ZXJmbG93KTsKICAgIAogICAg
IExheW91dFVuaXQgdGV4dFNoYWRvd0xvZ2ljYWxMZWZ0OwogICAgIExheW91dFVuaXQgdGV4dFNo
YWRvd0xvZ2ljYWxSaWdodDsKICAgICBsaW5lU3R5bGUuZ2V0VGV4dFNoYWRvd0lubGluZURpcmVj
dGlvbkV4dGVudCh0ZXh0U2hhZG93TG9naWNhbExlZnQsIHRleHRTaGFkb3dMb2dpY2FsUmlnaHQp
OwogICAgCi0gICAgTGF5b3V0VW5pdCBjaGlsZE92ZXJmbG93TG9naWNhbExlZnQgPSBtaW48TGF5
b3V0VW5pdD4odGV4dFNoYWRvd0xvZ2ljYWxMZWZ0ICsgbGVmdEdseXBoT3ZlcmZsb3csIGxlZnRH
bHlwaE92ZXJmbG93KTsKLSAgICBMYXlvdXRVbml0IGNoaWxkT3ZlcmZsb3dMb2dpY2FsUmlnaHQg
PSBtYXg8TGF5b3V0VW5pdD4odGV4dFNoYWRvd0xvZ2ljYWxSaWdodCArIHJpZ2h0R2x5cGhPdmVy
ZmxvdywgcmlnaHRHbHlwaE92ZXJmbG93KTsKKyAgICBMYXlvdXRVbml0IGNoaWxkT3ZlcmZsb3dM
b2dpY2FsTGVmdCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KHRleHRTaGFkb3dMb2dpY2FsTGVmdCAr
IGxlZnRHbHlwaE92ZXJmbG93LCBsZWZ0R2x5cGhPdmVyZmxvdyk7CisgICAgTGF5b3V0VW5pdCBj
aGlsZE92ZXJmbG93TG9naWNhbFJpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4odGV4dFNoYWRv
d0xvZ2ljYWxSaWdodCArIHJpZ2h0R2x5cGhPdmVyZmxvdywgcmlnaHRHbHlwaE92ZXJmbG93KTsK
IAotICAgIExheW91dFVuaXQgbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93ID0gbWluKHRleHRCb3gt
PnBpeGVsU25hcHBlZExvZ2ljYWxUb3AoKSArIGNoaWxkT3ZlcmZsb3dMb2dpY2FsVG9wLCBsb2dp
Y2FsVmlzdWFsT3ZlcmZsb3cueSgpKTsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21WaXN1
YWxPdmVyZmxvdyA9IG1heCh0ZXh0Qm94LT5waXhlbFNuYXBwZWRMb2dpY2FsQm90dG9tKCkgKyBj
aGlsZE92ZXJmbG93TG9naWNhbEJvdHRvbSwgbG9naWNhbFZpc3VhbE92ZXJmbG93Lm1heFkoKSk7
Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93ID0gbWluKHRleHRCb3gt
PnBpeGVsU25hcHBlZExvZ2ljYWxMZWZ0KCkgKyBjaGlsZE92ZXJmbG93TG9naWNhbExlZnQsIGxv
Z2ljYWxWaXN1YWxPdmVyZmxvdy54KCkpOwotICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0Vmlz
dWFsT3ZlcmZsb3cgPSBtYXgodGV4dEJveC0+cGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0KCkgKyBj
aGlsZE92ZXJmbG93TG9naWNhbFJpZ2h0LCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cubWF4WCgpKTsK
KyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyA9IHN0ZDo6bWluKHRleHRC
b3gtPnBpeGVsU25hcHBlZExvZ2ljYWxUb3AoKSArIGNoaWxkT3ZlcmZsb3dMb2dpY2FsVG9wLCBs
b2dpY2FsVmlzdWFsT3ZlcmZsb3cueSgpKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b21W
aXN1YWxPdmVyZmxvdyA9IHN0ZDo6bWF4KHRleHRCb3gtPnBpeGVsU25hcHBlZExvZ2ljYWxCb3R0
b20oKSArIGNoaWxkT3ZlcmZsb3dMb2dpY2FsQm90dG9tLCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cu
bWF4WSgpKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3cgPSBzdGQ6
Om1pbih0ZXh0Qm94LT5waXhlbFNuYXBwZWRMb2dpY2FsTGVmdCgpICsgY2hpbGRPdmVyZmxvd0xv
Z2ljYWxMZWZ0LCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cueCgpKTsKKyAgICBMYXlvdXRVbml0IGxv
Z2ljYWxSaWdodFZpc3VhbE92ZXJmbG93ID0gc3RkOjptYXgodGV4dEJveC0+cGl4ZWxTbmFwcGVk
TG9naWNhbFJpZ2h0KCkgKyBjaGlsZE92ZXJmbG93TG9naWNhbFJpZ2h0LCBsb2dpY2FsVmlzdWFs
T3ZlcmZsb3cubWF4WCgpKTsKICAgICAKICAgICBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cgPSBMYXlv
dXRSZWN0KGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxv
dywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxSaWdodFZp
c3VhbE92ZXJmbG93IC0gbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdywgbG9naWNhbEJvdHRvbVZp
c3VhbE92ZXJmbG93IC0gbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KTsKQEAgLTEwODYsOCArMTA4
Myw4IEBAIGJvb2wgSW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgICAgIFJvb3RJbmxpbmVCb3gmIHJv
b3RCb3ggPSByb290KCk7CiAgICAgICAgIExheW91dFVuaXQmIHRvcCA9IGlzSG9yaXpvbnRhbCgp
ID8gbWluWSA6IG1pblg7CiAgICAgICAgIExheW91dFVuaXQmIGxvZ2ljYWxIZWlnaHQgPSBpc0hv
cml6b250YWwoKSA/IGhlaWdodCA6IHdpZHRoOwotICAgICAgICBMYXlvdXRVbml0IGJvdHRvbSA9
IG1pbihyb290Qm94LmxpbmVCb3R0b20oKSwgdG9wICsgbG9naWNhbEhlaWdodCk7Ci0gICAgICAg
IHRvcCA9IG1heChyb290Qm94LmxpbmVUb3AoKSwgdG9wKTsKKyAgICAgICAgTGF5b3V0VW5pdCBi
b3R0b20gPSBzdGQ6Om1pbihyb290Qm94LmxpbmVCb3R0b20oKSwgdG9wICsgbG9naWNhbEhlaWdo
dCk7CisgICAgICAgIHRvcCA9IHN0ZDo6bWF4KHJvb3RCb3gubGluZVRvcCgpLCB0b3ApOwogICAg
ICAgICBsb2dpY2FsSGVpZ2h0ID0gYm90dG9tIC0gdG9wOwogICAgIH0KIApAQCAtMTI1Niw4ICsx
MjUzLDggQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpjb25zdHJhaW5Ub0xpbmVUb3BBbmRCb3R0b21J
Zk5lZWRlZChMYXlvdXRSZWN0JiByZWN0KSBjb25zdAogICAgICAgICBjb25zdCBSb290SW5saW5l
Qm94JiByb290Qm94ID0gcm9vdCgpOwogICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3AgPSBp
c0hvcml6b250YWwoKSA/IHJlY3QueSgpIDogcmVjdC54KCk7CiAgICAgICAgIExheW91dFVuaXQg
bG9naWNhbEhlaWdodCA9IGlzSG9yaXpvbnRhbCgpID8gcmVjdC5oZWlnaHQoKSA6IHJlY3Qud2lk
dGgoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3R0b20gPSBtaW4ocm9vdEJveC5saW5lQm90dG9t
KCksIGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgbG9naWNhbFRvcCA9IG1h
eChyb290Qm94LmxpbmVUb3AoKSwgbG9naWNhbFRvcCk7CisgICAgICAgIExheW91dFVuaXQgYm90
dG9tID0gc3RkOjptaW4ocm9vdEJveC5saW5lQm90dG9tKCksIGxvZ2ljYWxUb3AgKyBsb2dpY2Fs
SGVpZ2h0KTsKKyAgICAgICAgbG9naWNhbFRvcCA9IHN0ZDo6bWF4KHJvb3RCb3gubGluZVRvcCgp
LCBsb2dpY2FsVG9wKTsKICAgICAgICAgbG9naWNhbEhlaWdodCA9IGJvdHRvbSAtIGxvZ2ljYWxU
b3A7CiAgICAgICAgIGlmIChpc0hvcml6b250YWwoKSkgewogICAgICAgICAgICAgcmVjdC5zZXRZ
KGxvZ2ljYWxUb3ApOwpAQCAtMTUxNyw3ICsxNTE0LDcgQEAgTGF5b3V0VW5pdCBJbmxpbmVGbG93
Qm94Ojpjb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50KExheW91dFVuaXQgYWxsb3dlZFBv
c2kKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24n
dCBhZmZlY3QgY2FsY3VsYXRpb25zLgogICAgICAgICAKICAgICAgICAgaWYgKGN1cnItPmlzSW5s
aW5lRmxvd0JveCgpKQotICAgICAgICAgICAgcmVzdWx0ID0gbWF4KHJlc3VsdCwgdG9JbmxpbmVG
bG93Qm94KGN1cnIpLT5jb21wdXRlT3ZlckFubm90YXRpb25BZGp1c3RtZW50KGFsbG93ZWRQb3Np
dGlvbikpOworICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCB0b0lubGluZUZs
b3dCb3goY3VyciktPmNvbXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1lbnQoYWxsb3dlZFBvc2l0
aW9uKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS5pc1JlcGxhY2Vk
KCkgJiYgY3Vyci0+cmVuZGVyZXIoKS5pc1J1YnlSdW4oKSAmJiBjdXJyLT5yZW5kZXJlcigpLnN0
eWxlKCkucnVieVBvc2l0aW9uKCkgPT0gUnVieVBvc2l0aW9uQmVmb3JlKSB7CiAgICAgICAgICAg
ICBSZW5kZXJSdWJ5UnVuJiBydWJ5UnVuID0gdG9SZW5kZXJSdWJ5UnVuKGN1cnItPnJlbmRlcmVy
KCkpOwpAQCAtMTUzMCwxMyArMTUyNywxMyBAQCBMYXlvdXRVbml0IElubGluZUZsb3dCb3g6OmNv
bXB1dGVPdmVyQW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5pdCBhbGxvd2VkUG9zaQogICAg
ICAgICAgICAgICAgIGlmICh0b3BPZkZpcnN0UnVieVRleHRMaW5lID49IDApCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHRvcE9mRmlyc3RSdWJ5VGV4dExp
bmUgKz0gY3Vyci0+bG9naWNhbFRvcCgpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1heChy
ZXN1bHQsIGFsbG93ZWRQb3NpdGlvbiAtIHRvcE9mRmlyc3RSdWJ5VGV4dExpbmUpOworICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdCwgYWxsb3dlZFBvc2l0aW9uIC0gdG9w
T2ZGaXJzdFJ1YnlUZXh0TGluZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgYm90dG9tT2ZMYXN0UnVieVRleHRMaW5lID0gcnVieVRleHQtPmxvZ2lj
YWxUb3AoKSArIChydWJ5VGV4dC0+bGFzdFJvb3RCb3goKSA/IHJ1YnlUZXh0LT5sYXN0Um9vdEJv
eCgpLT5saW5lQm90dG9tKCkgOiBydWJ5VGV4dC0+bG9naWNhbEhlaWdodCgpKTsKICAgICAgICAg
ICAgICAgICBpZiAoYm90dG9tT2ZMYXN0UnVieVRleHRMaW5lIDw9IGN1cnItPmxvZ2ljYWxIZWln
aHQoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgYm90
dG9tT2ZMYXN0UnVieVRleHRMaW5lICs9IGN1cnItPmxvZ2ljYWxUb3AoKTsKLSAgICAgICAgICAg
ICAgICByZXN1bHQgPSBtYXgocmVzdWx0LCBib3R0b21PZkxhc3RSdWJ5VGV4dExpbmUgLSBhbGxv
d2VkUG9zaXRpb24pOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdCwg
Ym90dG9tT2ZMYXN0UnVieVRleHRMaW5lIC0gYWxsb3dlZFBvc2l0aW9uKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCkBAIC0xNTQ2LDEwICsxNTQzLDEwIEBAIExheW91dFVuaXQgSW5saW5l
Rmxvd0JveDo6Y29tcHV0ZU92ZXJBbm5vdGF0aW9uQWRqdXN0bWVudChMYXlvdXRVbml0IGFsbG93
ZWRQb3NpCiAgICAgICAgICAgICBpZiAoY2hpbGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFyaygp
ICE9IFRleHRFbXBoYXNpc01hcmtOb25lICYmIHRvSW5saW5lVGV4dEJveChjdXJyKS0+Z2V0RW1w
aGFzaXNNYXJrUG9zaXRpb24oY2hpbGRMaW5lU3R5bGUsIGVtcGhhc2lzTWFya1Bvc2l0aW9uKSAm
JiBlbXBoYXNpc01hcmtQb3NpdGlvbiA9PSBUZXh0RW1waGFzaXNQb3NpdGlvbk92ZXIpIHsKICAg
ICAgICAgICAgICAgICBpZiAoIWNoaWxkTGluZVN0eWxlLmlzRmxpcHBlZExpbmVzV3JpdGluZ01v
ZGUoKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgdG9wT2ZFbXBoYXNpc01hcmsgPSBjdXJy
LT5sb2dpY2FsVG9wKCkgLSBjaGlsZExpbmVTdHlsZS5mb250KCkuZW1waGFzaXNNYXJrSGVpZ2h0
KGNoaWxkTGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG1heChyZXN1bHQsIGFsbG93ZWRQb3NpdGlvbiAtIHRvcE9mRW1waGFz
aXNNYXJrKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBh
bGxvd2VkUG9zaXRpb24gLSB0b3BPZkVtcGhhc2lzTWFyayk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGJvdHRvbU9mRW1waGFzaXNNYXJrID0gY3Vy
ci0+bG9naWNhbEJvdHRvbSgpICsgY2hpbGRMaW5lU3R5bGUuZm9udCgpLmVtcGhhc2lzTWFya0hl
aWdodChjaGlsZExpbmVTdHlsZS50ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkpOwotICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBtYXgocmVzdWx0LCBib3R0b21PZkVtcGhhc2lzTWFyayAtIGFs
bG93ZWRQb3NpdGlvbik7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJl
c3VsdCwgYm90dG9tT2ZFbXBoYXNpc01hcmsgLSBhbGxvd2VkUG9zaXRpb24pOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU2NSw3ICsxNTYyLDcgQEAg
TGF5b3V0VW5pdCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVu
dChMYXlvdXRVbml0IGFsbG93ZWRQb3MKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBQb3NpdGlv
bmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRpb25zLgogCiAgICAgICAgIGlm
IChjdXJyLT5pc0lubGluZUZsb3dCb3goKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IG1heChyZXN1
bHQsIHRvSW5saW5lRmxvd0JveChjdXJyKS0+Y29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1l
bnQoYWxsb3dlZFBvc2l0aW9uKSk7CisgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1
bHQsIHRvSW5saW5lRmxvd0JveChjdXJyKS0+Y29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1l
bnQoYWxsb3dlZFBvc2l0aW9uKSk7CiAKICAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCkuaXNS
ZXBsYWNlZCgpICYmIGN1cnItPnJlbmRlcmVyKCkuaXNSdWJ5UnVuKCkgJiYgY3Vyci0+cmVuZGVy
ZXIoKS5zdHlsZSgpLnJ1YnlQb3NpdGlvbigpID09IFJ1YnlQb3NpdGlvbkFmdGVyKSB7CiAgICAg
ICAgICAgICBSZW5kZXJSdWJ5UnVuJiBydWJ5UnVuID0gdG9SZW5kZXJSdWJ5UnVuKGN1cnItPnJl
bmRlcmVyKCkpOwpAQCAtMTU3OCwxMyArMTU3NSwxMyBAQCBMYXlvdXRVbml0IElubGluZUZsb3dC
b3g6OmNvbXB1dGVVbmRlckFubm90YXRpb25BZGp1c3RtZW50KExheW91dFVuaXQgYWxsb3dlZFBv
cwogICAgICAgICAgICAgICAgIGlmICh0b3BPZkZpcnN0UnVieVRleHRMaW5lID49IDApCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHRvcE9mRmlyc3RSdWJ5
VGV4dExpbmUgKz0gY3Vyci0+bG9naWNhbFRvcCgpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG1heChyZXN1bHQsIGFsbG93ZWRQb3NpdGlvbiAtIHRvcE9mRmlyc3RSdWJ5VGV4dExpbmUpOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdCwgYWxsb3dlZFBvc2l0aW9u
IC0gdG9wT2ZGaXJzdFJ1YnlUZXh0TGluZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIExheW91dFVuaXQgYm90dG9tT2ZMYXN0UnVieVRleHRMaW5lID0gcnVieVRleHQt
PmxvZ2ljYWxUb3AoKSArIChydWJ5VGV4dC0+bGFzdFJvb3RCb3goKSA/IHJ1YnlUZXh0LT5sYXN0
Um9vdEJveCgpLT5saW5lQm90dG9tKCkgOiBydWJ5VGV4dC0+bG9naWNhbEhlaWdodCgpKTsKICAg
ICAgICAgICAgICAgICBpZiAoYm90dG9tT2ZMYXN0UnVieVRleHRMaW5lIDw9IGN1cnItPmxvZ2lj
YWxIZWlnaHQoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgYm90dG9tT2ZMYXN0UnVieVRleHRMaW5lICs9IGN1cnItPmxvZ2ljYWxUb3AoKTsKLSAgICAg
ICAgICAgICAgICByZXN1bHQgPSBtYXgocmVzdWx0LCBib3R0b21PZkxhc3RSdWJ5VGV4dExpbmUg
LSBhbGxvd2VkUG9zaXRpb24pOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJl
c3VsdCwgYm90dG9tT2ZMYXN0UnVieVRleHRMaW5lIC0gYWxsb3dlZFBvc2l0aW9uKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xNTkzLDEwICsxNTkwLDEwIEBAIExheW91dFVuaXQg
SW5saW5lRmxvd0JveDo6Y29tcHV0ZVVuZGVyQW5ub3RhdGlvbkFkanVzdG1lbnQoTGF5b3V0VW5p
dCBhbGxvd2VkUG9zCiAgICAgICAgICAgICBpZiAoY2hpbGRMaW5lU3R5bGUudGV4dEVtcGhhc2lz
TWFyaygpICE9IFRleHRFbXBoYXNpc01hcmtOb25lICYmIGNoaWxkTGluZVN0eWxlLnRleHRFbXBo
YXNpc1Bvc2l0aW9uKCkgPT0gVGV4dEVtcGhhc2lzUG9zaXRpb25VbmRlcikgewogICAgICAgICAg
ICAgICAgIGlmICghY2hpbGRMaW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgYm90dG9tT2ZFbXBoYXNpc01hcmsgPSBj
dXJyLT5sb2dpY2FsQm90dG9tKCkgKyBjaGlsZExpbmVTdHlsZS5mb250KCkuZW1waGFzaXNNYXJr
SGVpZ2h0KGNoaWxkTGluZVN0eWxlLnRleHRFbXBoYXNpc01hcmtTdHJpbmcoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IG1heChyZXN1bHQsIGJvdHRvbU9mRW1waGFzaXNNYXJrIC0g
YWxsb3dlZFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgo
cmVzdWx0LCBib3R0b21PZkVtcGhhc2lzTWFyayAtIGFsbG93ZWRQb3NpdGlvbik7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCB0b3BPZkVt
cGhhc2lzTWFyayA9IGN1cnItPmxvZ2ljYWxUb3AoKSAtIGNoaWxkTGluZVN0eWxlLmZvbnQoKS5l
bXBoYXNpc01hcmtIZWlnaHQoY2hpbGRMaW5lU3R5bGUudGV4dEVtcGhhc2lzTWFya1N0cmluZygp
KTsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbWF4KHJlc3VsdCwgYWxsb3dlZFBvc2l0
aW9uIC0gdG9wT2ZFbXBoYXNpc01hcmspOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBz
dGQ6Om1heChyZXN1bHQsIGFsbG93ZWRQb3NpdGlvbiAtIHRvcE9mRW1waGFzaXNNYXJrKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE2MTUsOCArMTYx
Miw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6Y29sbGVjdExlYWZCb3hlc0luTG9naWNhbE9yZGVy
KFZlY3RvcjxJbmxpbmVCb3gqPiYgbGVhZkJveGVzCiAKICAgICAvLyBGaXJzdCBmaW5kIGhpZ2hl
c3QgYW5kIGxvd2VzdCBsZXZlbHMsIGFuZCBpbml0aWFsaXplIGxlYWZCb3hlc0luTG9naWNhbE9y
ZGVyIHdpdGggdGhlIGxlYWYgYm94ZXMgaW4gdmlzdWFsIG9yZGVyLgogICAgIGZvciAoOyBsZWFm
OyBsZWFmID0gbGVhZi0+bmV4dExlYWZDaGlsZCgpKSB7Ci0gICAgICAgIG1pbkxldmVsID0gbWlu
KG1pbkxldmVsLCBsZWFmLT5iaWRpTGV2ZWwoKSk7Ci0gICAgICAgIG1heExldmVsID0gbWF4KG1h
eExldmVsLCBsZWFmLT5iaWRpTGV2ZWwoKSk7CisgICAgICAgIG1pbkxldmVsID0gc3RkOjptaW4o
bWluTGV2ZWwsIGxlYWYtPmJpZGlMZXZlbCgpKTsKKyAgICAgICAgbWF4TGV2ZWwgPSBzdGQ6Om1h
eChtYXhMZXZlbCwgbGVhZi0+YmlkaUxldmVsKCkpOwogICAgICAgICBsZWFmQm94ZXNJbkxvZ2lj
YWxPcmRlci5hcHBlbmQobGVhZik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKaW5kZXggN2ZjYTMxNWY1NjM1ZDk1OWYzNzk0NGY1MGZjNTRiNWI4
Mjc5MzhiNS4uNmFlMWM3YTA0ZDE2YTBiZGI2NjUzY2Y1ZDI0MGMxMzVhNjA2MTRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtNTIsOCArNTIsNiBA
QAogI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBTYW1lU2l6ZUFzSW5saW5lVGV4dEJveCA6IHB1YmxpYyBJbmxpbmVCb3ggewpAQCAtMTMyLDgg
KzEzMCw4IEBAIExheW91dFVuaXQgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uSGVpZ2h0KCkgY29u
c3QKIAogYm9vbCBJbmxpbmVUZXh0Qm94Ojppc1NlbGVjdGVkKGludCBzdGFydFBvcywgaW50IGVu
ZFBvcykgY29uc3QKIHsKLSAgICBMYXlvdXRVbml0IHNQb3MgPSBtYXg8TGF5b3V0VW5pdD4oc3Rh
cnRQb3MgLSBtX3N0YXJ0LCAwKTsKLSAgICBMYXlvdXRVbml0IGVQb3MgPSBtaW48TGF5b3V0VW5p
dD4oZW5kUG9zIC0gbV9zdGFydCwgbV9sZW4pOworICAgIExheW91dFVuaXQgc1BvcyA9IHN0ZDo6
bWF4PExheW91dFVuaXQ+KHN0YXJ0UG9zIC0gbV9zdGFydCwgMCk7CisgICAgTGF5b3V0VW5pdCBl
UG9zID0gc3RkOjptaW48TGF5b3V0VW5pdD4oZW5kUG9zIC0gbV9zdGFydCwgbV9sZW4pOwogICAg
IHJldHVybiAoc1BvcyA8IGVQb3MpOwogfQogCkBAIC0yMDIsOCArMjAwLDggQEAgc3RhdGljIGNv
bnN0IEZvbnQmIGZvbnRUb1VzZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFJlbmRl
clRleHQmIHJlbmRlcmUKIAogTGF5b3V0UmVjdCBJbmxpbmVUZXh0Qm94Ojpsb2NhbFNlbGVjdGlv
blJlY3QoaW50IHN0YXJ0UG9zLCBpbnQgZW5kUG9zKSBjb25zdAogewotICAgIGludCBzUG9zID0g
bWF4KHN0YXJ0UG9zIC0gbV9zdGFydCwgMCk7Ci0gICAgaW50IGVQb3MgPSBtaW4oZW5kUG9zIC0g
bV9zdGFydCwgKGludCltX2xlbik7CisgICAgaW50IHNQb3MgPSBzdGQ6Om1heChzdGFydFBvcyAt
IG1fc3RhcnQsIDApOworICAgIGludCBlUG9zID0gc3RkOjptaW4oZW5kUG9zIC0gbV9zdGFydCwg
KGludCltX2xlbik7CiAgICAgCiAgICAgaWYgKHNQb3MgPiBlUG9zKQogICAgICAgICByZXR1cm4g
TGF5b3V0UmVjdCgpOwpAQCAtMzA2LDcgKzMwNCw3IEBAIGZsb2F0IElubGluZVRleHRCb3g6OnBs
YWNlRWxsaXBzaXNCb3goYm9vbCBmbG93SXNMVFIsIGZsb2F0IHZpc2libGVMZWZ0RWRnZSwgZmxv
CiAgICAgICAgICAgICAvLyBhbmQgdGhlIGVsbGlwc2lzIGVkZ2UuCiAgICAgICAgICAgICBtX3Ry
dW5jYXRpb24gPSBjRnVsbFRydW5jYXRpb247CiAgICAgICAgICAgICB0cnVuY2F0ZWRXaWR0aCAr
PSBlbGxpcHNpc1dpZHRoOwotICAgICAgICAgICAgcmV0dXJuIGZsb3dJc0xUUiA/IG1pbihlbGxp
cHNpc1gsIHgoKSkgOiBtYXgoZWxsaXBzaXNYLCByaWdodCgpIC0gZWxsaXBzaXNXaWR0aCk7Cisg
ICAgICAgICAgICByZXR1cm4gZmxvd0lzTFRSID8gc3RkOjptaW4oZWxsaXBzaXNYLCB4KCkpIDog
c3RkOjptYXgoZWxsaXBzaXNYLCByaWdodCgpIC0gZWxsaXBzaXNXaWR0aCk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBTZXQgdGhlIHRydW5jYXRpb24gaW5kZXggb24gdGhlIHRleHQgcnVuLgpA
QCAtMzg5LDcgKzM4Nyw3IEBAIEZsb2F0U2l6ZSBJbmxpbmVUZXh0Qm94OjphcHBseVNoYWRvd1Rv
R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKICAgICAgICAgY29udGV4
dC0+c2F2ZSgpOwogICAgICAgICBjb250ZXh0LT5jbGlwKHNoYWRvd1JlY3QpOwogCi0gICAgICAg
IGV4dHJhT2Zmc2V0ID0gRmxvYXRTaXplKDAsIDIgKiB0ZXh0UmVjdC5oZWlnaHQoKSArIG1heCgw
LjBmLCBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkpICsgc2hhZG93UmFkaXVzKTsKKyAgICAgICAgZXh0
cmFPZmZzZXQgPSBGbG9hdFNpemUoMCwgMiAqIHRleHRSZWN0LmhlaWdodCgpICsgc3RkOjptYXgo
MC4wZiwgc2hhZG93T2Zmc2V0LmhlaWdodCgpKSArIHNoYWRvd1JhZGl1cyk7CiAgICAgICAgIHNo
YWRvd09mZnNldCAtPSBleHRyYU9mZnNldDsKICAgICB9CiAKQEAgLTU1OCw4ICs1NTYsOCBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgIHNlbGVjdGlvblN0YXJ0RW5kKHNQb3MsIGVQ
b3MpOwogCiAgICAgaWYgKG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9uKSB7Ci0gICAgICAg
IHNQb3MgPSBtaW48aW50PihzUG9zLCBtX3RydW5jYXRpb24pOwotICAgICAgICBlUG9zID0gbWlu
PGludD4oZVBvcywgbV90cnVuY2F0aW9uKTsKKyAgICAgICAgc1BvcyA9IHN0ZDo6bWluPGludD4o
c1BvcywgbV90cnVuY2F0aW9uKTsKKyAgICAgICAgZVBvcyA9IHN0ZDo6bWluPGludD4oZVBvcywg
bV90cnVuY2F0aW9uKTsKICAgICAgICAgbGVuZ3RoID0gbV90cnVuY2F0aW9uOwogICAgIH0KIApA
QCAtNjMzLDggKzYzMSw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6c2VsZWN0aW9uU3RhcnRFbmQo
aW50JiBzUG9zLCBpbnQmIGVQb3MpCiAgICAgICAgICAgICBzdGFydFBvcyA9IDA7CiAgICAgfQog
Ci0gICAgc1BvcyA9IG1heChzdGFydFBvcyAtIG1fc3RhcnQsIDApOwotICAgIGVQb3MgPSBtaW4o
ZW5kUG9zIC0gbV9zdGFydCwgKGludCltX2xlbik7CisgICAgc1BvcyA9IHN0ZDo6bWF4KHN0YXJ0
UG9zIC0gbV9zdGFydCwgMCk7CisgICAgZVBvcyA9IHN0ZDo6bWluKGVuZFBvcyAtIG1fc3RhcnQs
IChpbnQpbV9sZW4pOwogfQogCiB2b2lkIGFsaWduU2VsZWN0aW9uUmVjdFRvRGV2aWNlUGl4ZWxz
KEZsb2F0UmVjdCYgcmVjdCkKQEAgLTY4OSw3ICs2ODcsNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2lu
dCYgYgogICAgIExheW91dFVuaXQgc2VsZWN0aW9uVG9wID0gcm9vdEJveC5zZWxlY3Rpb25Ub3BB
ZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrKCk7CiAKICAgICBpbnQgZGVsdGFZID0gcm91bmRUb0lu
dChyZW5kZXJlcigpLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpID8gc2VsZWN0
aW9uQm90dG9tIC0gbG9naWNhbEJvdHRvbSgpIDogbG9naWNhbFRvcCgpIC0gc2VsZWN0aW9uVG9w
KTsKLSAgICBpbnQgc2VsSGVpZ2h0ID0gbWF4KDAsIHJvdW5kVG9JbnQoc2VsZWN0aW9uQm90dG9t
IC0gc2VsZWN0aW9uVG9wKSk7CisgICAgaW50IHNlbEhlaWdodCA9IHN0ZDo6bWF4KDAsIHJvdW5k
VG9JbnQoc2VsZWN0aW9uQm90dG9tIC0gc2VsZWN0aW9uVG9wKSk7CiAKICAgICBGbG9hdFBvaW50
IGxvY2FsT3JpZ2luKGJveE9yaWdpbi54KCksIGJveE9yaWdpbi55KCkgLSBkZWx0YVkpOwogICAg
IEZsb2F0UmVjdCBjbGlwUmVjdChsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1fbG9naWNhbFdpZHRo
LCBzZWxIZWlnaHQpKTsKQEAgLTcxMCw4ICs3MDgsOCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBh
aW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYg
Ygogdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250JiBmb250LCBpbnQgc3RhcnRQb3MsIGludCBlbmRQ
b3MpCiB7CiAgICAgaW50IG9mZnNldCA9IG1fc3RhcnQ7Ci0gICAgaW50IHNQb3MgPSBtYXgoc3Rh
cnRQb3MgLSBvZmZzZXQsIDApOwotICAgIGludCBlUG9zID0gbWluKGVuZFBvcyAtIG9mZnNldCwg
KGludCltX2xlbik7CisgICAgaW50IHNQb3MgPSBzdGQ6Om1heChzdGFydFBvcyAtIG9mZnNldCwg
MCk7CisgICAgaW50IGVQb3MgPSBzdGQ6Om1pbihlbmRQb3MgLSBvZmZzZXQsIChpbnQpbV9sZW4p
OwogCiAgICAgaWYgKHNQb3MgPj0gZVBvcykKICAgICAgICAgcmV0dXJuOwpAQCAtNzc2LDcgKzc3
NCw3IEBAIHN0YXRpYyBpbnQgY29tcHV0ZVVuZGVybGluZU9mZnNldChjb25zdCBUZXh0VW5kZXJs
aW5lUG9zaXRpb24gdW5kZXJsaW5lUG9zaXRpb24sCiB7CiAgICAgLy8gQ29tcHV0ZSB0aGUgZ2Fw
IGJldHdlZW4gdGhlIGZvbnQgYW5kIHRoZSB1bmRlcmxpbmUuIFVzZSBhdCBsZWFzdCBvbmUKICAg
ICAvLyBwaXhlbCBnYXAsIGlmIHVuZGVybGluZSBpcyB0aGljayB0aGVuIHVzZSBhIGJpZ2dlciBn
YXAuCi0gICAgY29uc3QgaW50IGdhcCA9IG1heDxpbnQ+KDEsIGNlaWxmKHRleHREZWNvcmF0aW9u
VGhpY2tuZXNzIC8gMi4wKSk7CisgICAgY29uc3QgaW50IGdhcCA9IHN0ZDo6bWF4PGludD4oMSwg
Y2VpbGYodGV4dERlY29yYXRpb25UaGlja25lc3MgLyAyLjApKTsKIAogICAgIC8vIEFjY29yZGlu
ZyB0byB0aGUgc3BlY2lmaWNhdGlvbiBUZXh0VW5kZXJsaW5lUG9zaXRpb25BdXRvIHNob3VsZCBk
ZWZhdWx0IHRvICdhbHBoYWJldGljJyBmb3IgaG9yaXpvbnRhbCB0ZXh0CiAgICAgLy8gYW5kIHRv
ICd1bmRlciBMZWZ0JyBmb3IgdmVydGljYWwgdGV4dCAoZS5nLiBqYXBhbmVzZSkuIFdlIHN1cHBv
cnQgb25seSBob3Jpem9udGFsIHRleHQgZm9yIG5vdy4KQEAgLTEwMjIsNyArMTAyMCw3IEBAIHZv
aWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICAgICAgICAgIGludCBzaGFkb3dZID0gaXNIb3Jpem9u
dGFsKCkgPyBzLT55KCkgOiAtcy0+eCgpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5tb3ZlKHNo
YWRvd1gsIHNoYWRvd1kpOwogICAgICAgICAgICAgY2xpcFJlY3QudW5pdGUoc2hhZG93UmVjdCk7
Ci0gICAgICAgICAgICBleHRyYU9mZnNldCA9IG1heChleHRyYU9mZnNldCwgbWF4KDAsIHNoYWRv
d1kpICsgc2hhZG93RXh0ZW50KTsKKyAgICAgICAgICAgIGV4dHJhT2Zmc2V0ID0gc3RkOjptYXgo
ZXh0cmFPZmZzZXQsIHN0ZDo6bWF4KDAsIHNoYWRvd1kpICsgc2hhZG93RXh0ZW50KTsKICAgICAg
ICAgfQogICAgICAgICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAgY29udGV4dC5jbGlwKGNsaXBS
ZWN0KTsKQEAgLTExOTUsMTEgKzExOTMsMTEgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERv
Y3VtZW50TWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGNvbnN0IEZsb2F0UG9pbnQmIGIKIAog
ICAgIGJvb2wgaXNEaWN0YXRpb25NYXJrZXIgPSBtYXJrZXItPnR5cGUoKSA9PSBEb2N1bWVudE1h
cmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzOwogICAgIGlmICghbWFya2VyU3BhbnNXaG9sZUJv
eCB8fCBncmFtbWFyIHx8IGlzRGljdGF0aW9uTWFya2VyKSB7Ci0gICAgICAgIGludCBzdGFydFBv
c2l0aW9uID0gbWF4PGludD4obWFya2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCwgMCk7Ci0g
ICAgICAgIGludCBlbmRQb3NpdGlvbiA9IG1pbjxpbnQ+KG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBt
X3N0YXJ0LCBtX2xlbik7CisgICAgICAgIGludCBzdGFydFBvc2l0aW9uID0gc3RkOjptYXg8aW50
PihtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgLSBtX3N0YXJ0LCAwKTsKKyAgICAgICAgaW50IGVuZFBv
c2l0aW9uID0gc3RkOjptaW48aW50PihtYXJrZXItPmVuZE9mZnNldCgpIC0gbV9zdGFydCwgbV9s
ZW4pOwogICAgICAgICAKICAgICAgICAgaWYgKG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVuY2F0aW9u
KQotICAgICAgICAgICAgZW5kUG9zaXRpb24gPSBtaW48aW50PihlbmRQb3NpdGlvbiwgbV90cnVu
Y2F0aW9uKTsKKyAgICAgICAgICAgIGVuZFBvc2l0aW9uID0gc3RkOjptaW48aW50PihlbmRQb3Np
dGlvbiwgbV90cnVuY2F0aW9uKTsKIAogICAgICAgICAvLyBDYWxjdWxhdGUgc3RhcnQgJiB3aWR0
aAogICAgICAgICBpbnQgZGVsdGFZID0gcmVuZGVyZXIoKS5zdHlsZSgpLmlzRmxpcHBlZExpbmVz
V3JpdGluZ01vZGUoKSA/IHNlbGVjdGlvbkJvdHRvbSgpIC0gbG9naWNhbEJvdHRvbSgpIDogbG9n
aWNhbFRvcCgpIC0gc2VsZWN0aW9uVG9wKCk7CkBAIC0xMjQ4LDggKzEyNDYsOCBAQCB2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50VGV4dE1hdGNoTWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGNv
bnN0IEZsb2F0UG9pbnQmCiAgICAgaW50IGRlbHRhWSA9IHJlbmRlcmVyKCkuc3R5bGUoKS5pc0Zs
aXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkgPyBzZWxlY3Rpb25Cb3R0b20oKSAtIGxvZ2ljYWxCb3R0
b20oKSA6IGxvZ2ljYWxUb3AoKSAtIHNlbGVjdGlvblRvcCgpOwogICAgIGludCBzZWxIZWlnaHQg
PSBzZWxlY3Rpb25IZWlnaHQoKTsKIAotICAgIGludCBzUG9zID0gbWF4KG1hcmtlci0+c3RhcnRP
ZmZzZXQoKSAtIG1fc3RhcnQsICh1bnNpZ25lZCkwKTsKLSAgICBpbnQgZVBvcyA9IG1pbihtYXJr
ZXItPmVuZE9mZnNldCgpIC0gbV9zdGFydCwgKHVuc2lnbmVkKW1fbGVuKTsKKyAgICBpbnQgc1Bv
cyA9IHN0ZDo6bWF4KG1hcmtlci0+c3RhcnRPZmZzZXQoKSAtIG1fc3RhcnQsICh1bnNpZ25lZCkw
KTsKKyAgICBpbnQgZVBvcyA9IHN0ZDo6bWluKG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtX3N0YXJ0
LCAodW5zaWduZWQpbV9sZW4pOwogICAgIFRleHRSdW4gcnVuID0gY29uc3RydWN0VGV4dFJ1bihz
dHlsZSwgZm9udCk7CiAKICAgICAvLyBBbHdheXMgY29tcHV0ZSBhbmQgc3RvcmUgdGhlIHJlY3Qg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgbWFya2VyLiBUaGUgY29tcHV0ZWQgcmVjdCBpcyBpbiBhYnNv
bHV0ZSBjb29yZGluYXRlcy4KQEAgLTEyNzUsOCArMTI3Myw4IEBAIHZvaWQgSW5saW5lVGV4dEJv
eDo6Y29tcHV0ZVJlY3RGb3JSZXBsYWNlbWVudE1hcmtlcihEb2N1bWVudE1hcmtlciogbWFya2Vy
LCBjb25zCiAgICAgaW50IHRvcCA9IHNlbGVjdGlvblRvcCgpOwogICAgIGludCBoID0gc2VsZWN0
aW9uSGVpZ2h0KCk7CiAgICAgCi0gICAgaW50IHNQb3MgPSBtYXgobWFya2VyLT5zdGFydE9mZnNl
dCgpIC0gbV9zdGFydCwgKHVuc2lnbmVkKTApOwotICAgIGludCBlUG9zID0gbWluKG1hcmtlci0+
ZW5kT2Zmc2V0KCkgLSBtX3N0YXJ0LCAodW5zaWduZWQpbV9sZW4pOworICAgIGludCBzUG9zID0g
c3RkOjptYXgobWFya2VyLT5zdGFydE9mZnNldCgpIC0gbV9zdGFydCwgKHVuc2lnbmVkKTApOwor
ICAgIGludCBlUG9zID0gc3RkOjptaW4obWFya2VyLT5lbmRPZmZzZXQoKSAtIG1fc3RhcnQsICh1
bnNpZ25lZCltX2xlbik7CiAgICAgVGV4dFJ1biBydW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHN0eWxl
LCBmb250KTsKICAgICBJbnRQb2ludCBzdGFydFBvaW50ID0gSW50UG9pbnQoeCgpLCB0b3ApOwog
ICAgIApAQCAtMTM2NSwxMSArMTM2MywxMSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29t
cG9zaXRpb25VbmRlcmxpbmUoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IEZsb2F0UAogICAg
ICAgICBzdGFydCA9IHJlbmRlcmVyKCkud2lkdGgobV9zdGFydCwgcGFpbnRTdGFydCAtIG1fc3Rh
cnQsIHRleHRQb3MoKSwgaXNGaXJzdExpbmUoKSk7CiAgICAgfQogICAgIGlmIChwYWludEVuZCAh
PSB1bmRlcmxpbmUuZW5kT2Zmc2V0KSB7ICAgICAgLy8gZW5kIHBvaW50cyBhdCB0aGUgbGFzdCBj
aGFyLCBub3QgcGFzdCBpdAotICAgICAgICBwYWludEVuZCA9IG1pbihwYWludEVuZCwgKHVuc2ln
bmVkKXVuZGVybGluZS5lbmRPZmZzZXQpOworICAgICAgICBwYWludEVuZCA9IHN0ZDo6bWluKHBh
aW50RW5kLCAodW5zaWduZWQpdW5kZXJsaW5lLmVuZE9mZnNldCk7CiAgICAgICAgIHVzZVdob2xl
V2lkdGggPSBmYWxzZTsKICAgICB9CiAgICAgaWYgKG1fdHJ1bmNhdGlvbiAhPSBjTm9UcnVuY2F0
aW9uKSB7Ci0gICAgICAgIHBhaW50RW5kID0gbWluKHBhaW50RW5kLCAodW5zaWduZWQpbV9zdGFy
dCArIG1fdHJ1bmNhdGlvbik7CisgICAgICAgIHBhaW50RW5kID0gc3RkOjptaW4ocGFpbnRFbmQs
ICh1bnNpZ25lZCltX3N0YXJ0ICsgbV90cnVuY2F0aW9uKTsKICAgICAgICAgdXNlV2hvbGVXaWR0
aCA9IGZhbHNlOwogICAgIH0KICAgICBpZiAoIXVzZVdob2xlV2lkdGgpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDQ1YjE3ZTYyZGRhMjI0Y2Q2MTQ5MTUx
ZTVlMDNmNmI5NGE4MGJhOWEuLjEwYTk4ODIwMjJiNTJkMDM3NWEwMGFmYWZmMmI0N2I5NjhhZDYz
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNzYsNyAr
NzYsNiBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsK
IApAQCAtMTU3NCw5ICsxNTczLDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZU92ZXJmbG93
KExheW91dFVuaXQgb2xkQ2xpZW50QWZ0ZXJFZGdlLCBib29sKQogICAgICAgICBMYXlvdXRSZWN0
IGNsaWVudFJlY3QoY2xpZW50Qm94UmVjdCgpKTsKICAgICAgICAgTGF5b3V0UmVjdCByZWN0VG9B
cHBseTsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAg
ICByZWN0VG9BcHBseSA9IExheW91dFJlY3QoY2xpZW50UmVjdC54KCksIGNsaWVudFJlY3QueSgp
LCAxLCBtYXg8TGF5b3V0VW5pdD4oMCwgb2xkQ2xpZW50QWZ0ZXJFZGdlIC0gY2xpZW50UmVjdC55
KCkpKTsKKyAgICAgICAgICAgIHJlY3RUb0FwcGx5ID0gTGF5b3V0UmVjdChjbGllbnRSZWN0Lngo
KSwgY2xpZW50UmVjdC55KCksIDEsIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIG9sZENsaWVudEFm
dGVyRWRnZSAtIGNsaWVudFJlY3QueSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJl
Y3RUb0FwcGx5ID0gTGF5b3V0UmVjdChjbGllbnRSZWN0LngoKSwgY2xpZW50UmVjdC55KCksIG1h
eDxMYXlvdXRVbml0PigwLCBvbGRDbGllbnRBZnRlckVkZ2UgLSBjbGllbnRSZWN0LngoKSksIDEp
OworICAgICAgICAgICAgcmVjdFRvQXBwbHkgPSBMYXlvdXRSZWN0KGNsaWVudFJlY3QueCgpLCBj
bGllbnRSZWN0LnkoKSwgc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgb2xkQ2xpZW50QWZ0ZXJFZGdl
IC0gY2xpZW50UmVjdC54KCkpLCAxKTsKICAgICAgICAgYWRkTGF5b3V0T3ZlcmZsb3cocmVjdFRv
QXBwbHkpOwogICAgICAgICBpZiAoaGFzUmVuZGVyT3ZlcmZsb3coKSkKICAgICAgICAgICAgIG1f
b3ZlcmZsb3ctPnNldExheW91dENsaWVudEFmdGVyRWRnZShvbGRDbGllbnRBZnRlckVkZ2UpOwpA
QCAtMTgwMSwxNCArMTgwMCwxNCBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjpjb21wdXRlU3Rh
cnRQb3NpdGlvbkRlbHRhRm9yQ2hpbGRBdm9pZGluZ0Zsb2F0cyhjb25zdCBSZQogCiAgICAgTGF5
b3V0VW5pdCBibG9ja09mZnNldCA9IGxvZ2ljYWxUb3BGb3JDaGlsZChjaGlsZCk7CiAgICAgaWYg
KHJlZ2lvbikKLSAgICAgICAgYmxvY2tPZmZzZXQgPSBtYXgoYmxvY2tPZmZzZXQsIGJsb2NrT2Zm
c2V0ICsgKHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkgLSBvZmZzZXRG
cm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkpKTsKKyAgICAgICAgYmxvY2tPZmZzZXQgPSBzdGQ6
Om1heChibG9ja09mZnNldCwgYmxvY2tPZmZzZXQgKyAocmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxv
d1RocmVhZENvbnRlbnQoKSAtIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSkpOwog
CiAgICAgTGF5b3V0VW5pdCBzdGFydE9mZiA9IHN0YXJ0T2Zmc2V0Rm9yTGluZUluUmVnaW9uKGJs
b2NrT2Zmc2V0LCBmYWxzZSwgcmVnaW9uLCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpKTsK
IAogICAgIGlmIChzdHlsZSgpLnRleHRBbGlnbigpICE9IFdFQktJVF9DRU5URVIgJiYgIWNoaWxk
LnN0eWxlKCkubWFyZ2luU3RhcnRVc2luZygmc3R5bGUoKSkuaXNBdXRvKCkpIHsKICAgICAgICAg
aWYgKGNoaWxkTWFyZ2luU3RhcnQgPCAwKQogICAgICAgICAgICAgc3RhcnRPZmYgKz0gY2hpbGRN
YXJnaW5TdGFydDsKLSAgICAgICAgbmV3UG9zaXRpb24gPSBtYXgobmV3UG9zaXRpb24sIHN0YXJ0
T2ZmKTsgLy8gTGV0IHRoZSBmbG9hdCBzaXQgaW4gdGhlIGNoaWxkJ3MgbWFyZ2luIGlmIGl0IGNh
biBmaXQuCisgICAgICAgIG5ld1Bvc2l0aW9uID0gc3RkOjptYXgobmV3UG9zaXRpb24sIHN0YXJ0
T2ZmKTsgLy8gTGV0IHRoZSBmbG9hdCBzaXQgaW4gdGhlIGNoaWxkJ3MgbWFyZ2luIGlmIGl0IGNh
biBmaXQuCiAgICAgfSBlbHNlIGlmIChzdGFydE9mZiAhPSBzdGFydFBvc2l0aW9uKQogICAgICAg
ICBuZXdQb3NpdGlvbiA9IHN0YXJ0T2ZmICsgY2hpbGRNYXJnaW5TdGFydDsKIApAQCAtMjM2OCw3
ICsyMzY3LDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6cGFpbnRDaGlsZChSZW5kZXJCb3gmIGNoaWxk
LCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3UKICAgICBpZiAoY2hlY2tBZnRlckFs
d2F5cwogICAgICAgICAmJiAoYWJzb2x1dGVDaGlsZFkgKyBjaGlsZC5oZWlnaHQoKSkgPiBwYWlu
dEluZm8ucmVjdC55KCkKICAgICAgICAgJiYgKGFic29sdXRlQ2hpbGRZICsgY2hpbGQuaGVpZ2h0
KCkpIDwgcGFpbnRJbmZvLnJlY3QubWF4WSgpKSB7Ci0gICAgICAgIHZpZXcoKS5zZXRCZXN0VHJ1
bmNhdGVkQXQoYWJzb2x1dGVDaGlsZFkgKyBjaGlsZC5oZWlnaHQoKSArIG1heDxMYXlvdXRVbml0
PigwLCBjaGlsZC5jb2xsYXBzZWRNYXJnaW5BZnRlcigpKSwgdGhpcywgdHJ1ZSk7CisgICAgICAg
IHZpZXcoKS5zZXRCZXN0VHJ1bmNhdGVkQXQoYWJzb2x1dGVDaGlsZFkgKyBjaGlsZC5oZWlnaHQo
KSArIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGNoaWxkLmNvbGxhcHNlZE1hcmdpbkFmdGVyKCkp
LCB0aGlzLCB0cnVlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjgwOCw4
ICsyODA3LDggQEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6YmxvY2tTZWxlY3Rpb25HYXAoUmVu
ZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG8KICAgICAgICAgcmV0dXJuIExheW91
dFJlY3QoKTsKIAogICAgIC8vIEdldCB0aGUgc2VsZWN0aW9uIG9mZnNldHMgZm9yIHRoZSBib3R0
b20gb2YgdGhlIGdhcAotICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBtYXgobGFzdExvZ2lj
YWxMZWZ0LCBsb2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxvZ2ljYWxCb3R0
b20sIGNhY2hlKSk7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQgPSBtaW4obGFzdExvZ2lj
YWxSaWdodCwgbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywgbG9naWNhbEJv
dHRvbSwgY2FjaGUpKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gc3RkOjptYXgobGFz
dExvZ2ljYWxMZWZ0LCBsb2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxvZ2lj
YWxCb3R0b20sIGNhY2hlKSk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQgPSBzdGQ6Om1p
bihsYXN0TG9naWNhbFJpZ2h0LCBsb2dpY2FsUmlnaHRTZWxlY3Rpb25PZmZzZXQocm9vdEJsb2Nr
LCBsb2dpY2FsQm90dG9tLCBjYWNoZSkpOwogICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoID0g
bG9naWNhbFJpZ2h0IC0gbG9naWNhbExlZnQ7CiAgICAgaWYgKGxvZ2ljYWxXaWR0aCA8PSAwKQog
ICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwpAQCAtMjgyNCw5ICsyODIzLDkgQEAgTGF5b3V0
UmVjdCBSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJv
b3RCbG9jaywgY29uc3QgTGEKICAgICBSZW5kZXJPYmplY3QqIHNlbE9iaiwgTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsIGNvbnN0IExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMmIGNhY2hlLCBjb25zdCBQYWlu
dEluZm8qIHBhaW50SW5mbykKIHsKICAgICBMYXlvdXRVbml0IHJvb3RCbG9ja0xvZ2ljYWxUb3Ag
PSBibG9ja0RpcmVjdGlvbk9mZnNldChyb290QmxvY2ssIG9mZnNldEZyb21Sb290QmxvY2spICsg
bG9naWNhbFRvcDsKLSAgICBMYXlvdXRVbml0IHJvb3RCbG9ja0xvZ2ljYWxMZWZ0ID0gbWF4KGxv
Z2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywgbG9naWNhbFRvcCwgY2FjaGUpLCBs
b2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxvZ2ljYWxUb3AgKyBsb2dpY2Fs
SGVpZ2h0LCBjYWNoZSkpOwotICAgIExheW91dFVuaXQgcm9vdEJsb2NrTG9naWNhbFJpZ2h0ID0g
bWluKGlubGluZURpcmVjdGlvbk9mZnNldChyb290QmxvY2ssIG9mZnNldEZyb21Sb290QmxvY2sp
ICsgZmxvb3JUb0ludChsb2dpY2FsTGVmdCksCi0gICAgICAgIG1pbihsb2dpY2FsUmlnaHRTZWxl
Y3Rpb25PZmZzZXQocm9vdEJsb2NrLCBsb2dpY2FsVG9wLCBjYWNoZSksIGxvZ2ljYWxSaWdodFNl
bGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0LCBjYWNo
ZSkpKTsKKyAgICBMYXlvdXRVbml0IHJvb3RCbG9ja0xvZ2ljYWxMZWZ0ID0gc3RkOjptYXgobG9n
aWNhbExlZnRTZWxlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBsb2dpY2FsVG9wLCBjYWNoZSksIGxv
Z2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywgbG9naWNhbFRvcCArIGxvZ2ljYWxI
ZWlnaHQsIGNhY2hlKSk7CisgICAgTGF5b3V0VW5pdCByb290QmxvY2tMb2dpY2FsUmlnaHQgPSBz
dGQ6Om1pbihpbmxpbmVEaXJlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBvZmZzZXRGcm9tUm9vdEJs
b2NrKSArIGZsb29yVG9JbnQobG9naWNhbExlZnQpLAorICAgICAgICBzdGQ6Om1pbihsb2dpY2Fs
UmlnaHRTZWxlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBsb2dpY2FsVG9wLCBjYWNoZSksIGxvZ2lj
YWxSaWdodFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVp
Z2h0LCBjYWNoZSkpKTsKICAgICBMYXlvdXRVbml0IHJvb3RCbG9ja0xvZ2ljYWxXaWR0aCA9IHJv
b3RCbG9ja0xvZ2ljYWxSaWdodCAtIHJvb3RCbG9ja0xvZ2ljYWxMZWZ0OwogICAgIGlmIChyb290
QmxvY2tMb2dpY2FsV2lkdGggPD0gMCkKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKQEAg
LTI4NDEsOSArMjg0MCw5IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNl
bGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMCiAgICAgUmVuZGVyT2Jq
ZWN0KiBzZWxPYmosIExheW91dFVuaXQgbG9naWNhbFJpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgY29uc3QgTG9naWNhbFNlbGVjdGlvbk9mZnNl
dENhY2hlcyYgY2FjaGUsIGNvbnN0IFBhaW50SW5mbyogcGFpbnRJbmZvKQogewogICAgIExheW91
dFVuaXQgcm9vdEJsb2NrTG9naWNhbFRvcCA9IGJsb2NrRGlyZWN0aW9uT2Zmc2V0KHJvb3RCbG9j
aywgb2Zmc2V0RnJvbVJvb3RCbG9jaykgKyBsb2dpY2FsVG9wOwotICAgIExheW91dFVuaXQgcm9v
dEJsb2NrTG9naWNhbExlZnQgPSBtYXgoaW5saW5lRGlyZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywg
b2Zmc2V0RnJvbVJvb3RCbG9jaykgKyBmbG9vclRvSW50KGxvZ2ljYWxSaWdodCksCi0gICAgICAg
IG1heChsb2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxvZ2ljYWxUb3AsIGNh
Y2hlKSwgbG9naWNhbExlZnRTZWxlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBsb2dpY2FsVG9wICsg
bG9naWNhbEhlaWdodCwgY2FjaGUpKSk7Ci0gICAgTGF5b3V0VW5pdCByb290QmxvY2tMb2dpY2Fs
UmlnaHQgPSBtaW4obG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywgbG9naWNh
bFRvcCwgY2FjaGUpLCBsb2dpY2FsUmlnaHRTZWxlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBsb2dp
Y2FsVG9wICsgbG9naWNhbEhlaWdodCwgY2FjaGUpKTsKKyAgICBMYXlvdXRVbml0IHJvb3RCbG9j
a0xvZ2ljYWxMZWZ0ID0gc3RkOjptYXgoaW5saW5lRGlyZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywg
b2Zmc2V0RnJvbVJvb3RCbG9jaykgKyBmbG9vclRvSW50KGxvZ2ljYWxSaWdodCksCisgICAgICAg
IHN0ZDo6bWF4KGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywgbG9naWNhbFRv
cCwgY2FjaGUpLCBsb2dpY2FsTGVmdFNlbGVjdGlvbk9mZnNldChyb290QmxvY2ssIGxvZ2ljYWxU
b3AgKyBsb2dpY2FsSGVpZ2h0LCBjYWNoZSkpKTsKKyAgICBMYXlvdXRVbml0IHJvb3RCbG9ja0xv
Z2ljYWxSaWdodCA9IHN0ZDo6bWluKGxvZ2ljYWxSaWdodFNlbGVjdGlvbk9mZnNldChyb290Qmxv
Y2ssIGxvZ2ljYWxUb3AsIGNhY2hlKSwgbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KHJvb3RC
bG9jaywgbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQsIGNhY2hlKSk7CiAgICAgTGF5b3V0VW5p
dCByb290QmxvY2tMb2dpY2FsV2lkdGggPSByb290QmxvY2tMb2dpY2FsUmlnaHQgLSByb290Qmxv
Y2tMb2dpY2FsTGVmdDsKICAgICBpZiAocm9vdEJsb2NrTG9naWNhbFdpZHRoIDw9IDApCiAgICAg
ICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CkBAIC0zNTY2LDE3ICszNTY1LDE3IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmNhbGNDb2x1bW5XaWR0aCgpCiAgICAgICAgIAogICAgIExheW91dFVuaXQgYXZh
aWxXaWR0aCA9IGRlc2lyZWRDb2x1bW5XaWR0aDsKICAgICBMYXlvdXRVbml0IGNvbEdhcCA9IGNv
bHVtbkdhcCgpOwotICAgIExheW91dFVuaXQgY29sV2lkdGggPSBtYXg8TGF5b3V0VW5pdD4oMSwg
TGF5b3V0VW5pdChzdHlsZSgpLmNvbHVtbldpZHRoKCkpKTsKLSAgICBpbnQgY29sQ291bnQgPSBt
YXg8aW50PigxLCBzdHlsZSgpLmNvbHVtbkNvdW50KCkpOworICAgIExheW91dFVuaXQgY29sV2lk
dGggPSBzdGQ6Om1heDxMYXlvdXRVbml0PigxLCBMYXlvdXRVbml0KHN0eWxlKCkuY29sdW1uV2lk
dGgoKSkpOworICAgIGludCBjb2xDb3VudCA9IHN0ZDo6bWF4PGludD4oMSwgc3R5bGUoKS5jb2x1
bW5Db3VudCgpKTsKIAogICAgIGlmIChzdHlsZSgpLmhhc0F1dG9Db2x1bW5XaWR0aCgpICYmICFz
dHlsZSgpLmhhc0F1dG9Db2x1bW5Db3VudCgpKSB7CiAgICAgICAgIGRlc2lyZWRDb2x1bW5Db3Vu
dCA9IGNvbENvdW50OwotICAgICAgICBkZXNpcmVkQ29sdW1uV2lkdGggPSBtYXg8TGF5b3V0VW5p
dD4oMCwgKGF2YWlsV2lkdGggLSAoKGRlc2lyZWRDb2x1bW5Db3VudCAtIDEpICogY29sR2FwKSkg
LyBkZXNpcmVkQ29sdW1uQ291bnQpOworICAgICAgICBkZXNpcmVkQ29sdW1uV2lkdGggPSBzdGQ6
Om1heDxMYXlvdXRVbml0PigwLCAoYXZhaWxXaWR0aCAtICgoZGVzaXJlZENvbHVtbkNvdW50IC0g
MSkgKiBjb2xHYXApKSAvIGRlc2lyZWRDb2x1bW5Db3VudCk7CiAgICAgfSBlbHNlIGlmICghc3R5
bGUoKS5oYXNBdXRvQ29sdW1uV2lkdGgoKSAmJiBzdHlsZSgpLmhhc0F1dG9Db2x1bW5Db3VudCgp
KSB7Ci0gICAgICAgIGRlc2lyZWRDb2x1bW5Db3VudCA9IG1heDxMYXlvdXRVbml0PigxLCAoYXZh
aWxXaWR0aCArIGNvbEdhcCkgLyAoY29sV2lkdGggKyBjb2xHYXApKTsKKyAgICAgICAgZGVzaXJl
ZENvbHVtbkNvdW50ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMSwgKGF2YWlsV2lkdGggKyBjb2xH
YXApIC8gKGNvbFdpZHRoICsgY29sR2FwKSk7CiAgICAgICAgIGRlc2lyZWRDb2x1bW5XaWR0aCA9
ICgoYXZhaWxXaWR0aCArIGNvbEdhcCkgLyBkZXNpcmVkQ29sdW1uQ291bnQpIC0gY29sR2FwOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGRlc2lyZWRDb2x1bW5Db3VudCA9IG1heDxMYXlvdXRVbml0
PihtaW48TGF5b3V0VW5pdD4oY29sQ291bnQsIChhdmFpbFdpZHRoICsgY29sR2FwKSAvIChjb2xX
aWR0aCArIGNvbEdhcCkpLCAxKTsKKyAgICAgICAgZGVzaXJlZENvbHVtbkNvdW50ID0gc3RkOjpt
YXg8TGF5b3V0VW5pdD4oc3RkOjptaW48TGF5b3V0VW5pdD4oY29sQ291bnQsIChhdmFpbFdpZHRo
ICsgY29sR2FwKSAvIChjb2xXaWR0aCArIGNvbEdhcCkpLCAxKTsKICAgICAgICAgZGVzaXJlZENv
bHVtbldpZHRoID0gKChhdmFpbFdpZHRoICsgY29sR2FwKSAvIGRlc2lyZWRDb2x1bW5Db3VudCkg
LSBjb2xHYXA7CiAgICAgfQogICAgIHNldERlc2lyZWRDb2x1bW5Db3VudEFuZFdpZHRoKGRlc2ly
ZWRDb2x1bW5Db3VudCwgZGVzaXJlZENvbHVtbldpZHRoKTsKQEAgLTM4MTAsOCArMzgwOSw4IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OmFkanVzdFJlY3RGb3JDb2x1bW5zKExheW91dFJlY3QmIHIpIGNv
bnN0CiAgICAgaWYgKCFjb2xIZWlnaHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIExheW91dFVu
aXQgc3RhcnRPZmZzZXQgPSBtYXgoaXNIb3Jpem9udGFsID8gci55KCkgOiByLngoKSwgYmVmb3Jl
Qm9yZGVyUGFkZGluZyk7Ci0gICAgTGF5b3V0VW5pdCBlbmRPZmZzZXQgPSBtYXgobWluPExheW91
dFVuaXQ+KGlzSG9yaXpvbnRhbCA/IHIubWF4WSgpIDogci5tYXhYKCksIGJlZm9yZUJvcmRlclBh
ZGRpbmcgKyBjb2xDb3VudCAqIGNvbEhlaWdodCksIGJlZm9yZUJvcmRlclBhZGRpbmcpOworICAg
IExheW91dFVuaXQgc3RhcnRPZmZzZXQgPSBzdGQ6Om1heChpc0hvcml6b250YWwgPyByLnkoKSA6
IHIueCgpLCBiZWZvcmVCb3JkZXJQYWRkaW5nKTsKKyAgICBMYXlvdXRVbml0IGVuZE9mZnNldCA9
IHN0ZDo6bWF4KHN0ZDo6bWluPExheW91dFVuaXQ+KGlzSG9yaXpvbnRhbCA/IHIubWF4WSgpIDog
ci5tYXhYKCksIGJlZm9yZUJvcmRlclBhZGRpbmcgKyBjb2xDb3VudCAqIGNvbEhlaWdodCksIGJl
Zm9yZUJvcmRlclBhZGRpbmcpOwogCiAgICAgLy8gRklYTUU6IENhbiBvdmVyZmxvdyBvbiBmYXN0
L2Jsb2NrL2Zsb2F0L2Zsb2F0LW5vdC1yZW1vdmVkLWZyb20tbmV4dC1zaWJsaW5nNC5odG1sLCBz
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NzQ0CiAgICAgdW5z
aWduZWQgc3RhcnRDb2x1bW4gPSAoc3RhcnRPZmZzZXQgLSBiZWZvcmVCb3JkZXJQYWRkaW5nKSAv
IGNvbEhlaWdodDsKQEAgLTM5MjUsNyArMzkyNCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1
dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5
CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbXB1dGVCbG9ja1ByZWZlcnJlZExvZ2ljYWxXaWR0aHMo
bWluTG9naWNhbFdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpOwogCi0gICAgbWF4TG9naWNhbFdpZHRo
ID0gbWF4KG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKKyAgICBtYXhMb2dpY2Fs
V2lkdGggPSBzdGQ6Om1heChtaW5Mb2dpY2FsV2lkdGgsIG1heExvZ2ljYWxXaWR0aCk7CiAKICAg
ICBhZGp1c3RJbnRyaW5zaWNMb2dpY2FsV2lkdGhzRm9yQ29sdW1ucyhtaW5Mb2dpY2FsV2lkdGgs
IG1heExvZ2ljYWxXaWR0aCk7CiAKQEAgLTM5MzgsNyArMzkzNyw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxX
aWR0aCwgTGF5CiAgICAgaWYgKGlzVGFibGVDZWxsKCkpIHsKICAgICAgICAgTGVuZ3RoIHRhYmxl
Q2VsbFdpZHRoID0gdG9SZW5kZXJUYWJsZUNlbGwodGhpcyktPnN0eWxlT3JDb2xMb2dpY2FsV2lk
dGgoKTsKICAgICAgICAgaWYgKHRhYmxlQ2VsbFdpZHRoLmlzRml4ZWQoKSAmJiB0YWJsZUNlbGxX
aWR0aC52YWx1ZSgpID4gMCkKLSAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IG1heChtaW5M
b2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcodGFi
bGVDZWxsV2lkdGgudmFsdWUoKSkpOworICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoID0gc3Rk
OjptYXgobWluTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94
U2l6aW5nKHRhYmxlQ2VsbFdpZHRoLnZhbHVlKCkpKTsKICAgICB9CiAKICAgICBpbnQgc2Nyb2xs
YmFyV2lkdGggPSBpbnN0cmluc2ljU2Nyb2xsYmFyTG9naWNhbFdpZHRoKCk7CkBAIC0zOTYzLDEz
ICszOTYyLDEzIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkKICAgICAgICAgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMobV9taW5QcmVmZXJy
ZWRMb2dpY2FsV2lkdGgsIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKTsKICAgICAKICAgICBp
ZiAoc3R5bGVUb1VzZS5sb2dpY2FsTWluV2lkdGgoKS5pc0ZpeGVkKCkgJiYgc3R5bGVUb1VzZS5s
b2dpY2FsTWluV2lkdGgoKS52YWx1ZSgpID4gMCkgewotICAgICAgICBtX21heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCA9IG1heChtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVu
dEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZVRvVXNlLmxvZ2ljYWxNaW5XaWR0aCgp
LnZhbHVlKCkpKTsKLSAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtYXgobV9t
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JC
b3hTaXppbmcoc3R5bGVUb1VzZS5sb2dpY2FsTWluV2lkdGgoKS52YWx1ZSgpKSk7CisgICAgICAg
IG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjptYXgobV9tYXhQcmVmZXJyZWRMb2dp
Y2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGVU
b1VzZS5sb2dpY2FsTWluV2lkdGgoKS52YWx1ZSgpKSk7CisgICAgICAgIG1fbWluUHJlZmVycmVk
TG9naWNhbFdpZHRoID0gc3RkOjptYXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVz
dENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGVUb1VzZS5sb2dpY2FsTWlu
V2lkdGgoKS52YWx1ZSgpKSk7CiAgICAgfQogICAgIAogICAgIGlmIChzdHlsZVRvVXNlLmxvZ2lj
YWxNYXhXaWR0aCgpLmlzRml4ZWQoKSkgewotICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxX
aWR0aCA9IG1pbihtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExv
Z2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZVRvVXNlLmxvZ2ljYWxNYXhXaWR0aCgpLnZhbHVl
KCkpKTsKLSAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtaW4obV9taW5QcmVm
ZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXpp
bmcoc3R5bGVUb1VzZS5sb2dpY2FsTWF4V2lkdGgoKS52YWx1ZSgpKSk7CisgICAgICAgIG1fbWF4
UHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjptaW4obV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lk
dGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGVUb1VzZS5s
b2dpY2FsTWF4V2lkdGgoKS52YWx1ZSgpKSk7CisgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNh
bFdpZHRoID0gc3RkOjptaW4obV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRl
bnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGVUb1VzZS5sb2dpY2FsTWF4V2lkdGgo
KS52YWx1ZSgpKSk7CiAgICAgfQogICAgIAogICAgIC8vIFRhYmxlIGxheW91dCB1c2VzIGludGVn
ZXJzLCBjZWlsIHRoZSBwcmVmZXJyZWQgd2lkdGhzIHRvIGVuc3VyZSB0aGF0IHRoZXkgY2FuIGNv
bnRhaW4gdGhlIGNvbnRlbnRzLgpAQCAtNDAwMSwxNCArNDAwMCwxNCBAQCB2b2lkIFJlbmRlckJs
b2NrOjphZGp1c3RJbnRyaW5zaWNMb2dpY2FsV2lkdGhzRm9yQ29sdW1ucyhMYXlvdXRVbml0JiBt
aW5Mb2dpY2FsVwogICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gbWluTG9naWNhbFdpZHRo
ICogY29sdW1uQ291bnQgKyBnYXBFeHRyYTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBj
b2x1bW5XaWR0aCA9IHN0eWxlKCkuY29sdW1uV2lkdGgoKTsKLSAgICAgICAgICAgIG1pbkxvZ2lj
YWxXaWR0aCA9IG1pbihtaW5Mb2dpY2FsV2lkdGgsIGNvbHVtbldpZHRoKTsKKyAgICAgICAgICAg
IG1pbkxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKG1pbkxvZ2ljYWxXaWR0aCwgY29sdW1uV2lkdGgp
OwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBJZiBjb2x1bW4tY291bnQgaXMgYXV0byBo
ZXJlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCB0byBjYWxjdWxhdGUgdGhlIG1heGltdW0KICAgICAg
ICAgLy8gaW50cmluc2ljIHdpZHRoLCBpbnN0ZWFkIG9mIHByZXRlbmRpbmcgdGhhdCBpdCdzIDEu
IFRoZSBvbmx5IHdheSB0byBkbyB0aGF0IGlzIGJ5CiAgICAgICAgIC8vIHBlcmZvcm1pbmcgYSBs
YXlvdXQgcGFzcywgYnV0IHRoaXMgaXMgbm90IGFuIGFwcHJvcHJpYXRlIHRpbWUgb3IgcGxhY2Ug
Zm9yIGxheW91dC4gVGhlCiAgICAgICAgIC8vIGdvb2QgbmV3cyBpcyB0aGF0IGlmIGhlaWdodCBp
cyB1bmNvbnN0cmFpbmVkIGFuZCB0aGVyZSBhcmUgbm8gZXhwbGljaXQgYnJlYWtzLCB0aGUKICAg
ICAgICAgLy8gcmVzb2x2ZWQgY29sdW1uLWNvdW50IHJlYWxseSBzaG91bGQgYmUgMS4KLSAgICAg
ICAgbWF4TG9naWNhbFdpZHRoID0gbWF4KG1heExvZ2ljYWxXaWR0aCwgY29sdW1uV2lkdGgpICog
Y29sdW1uQ291bnQgKyBnYXBFeHRyYTsKKyAgICAgICAgbWF4TG9naWNhbFdpZHRoID0gc3RkOjpt
YXgobWF4TG9naWNhbFdpZHRoLCBjb2x1bW5XaWR0aCkgKiBjb2x1bW5Db3VudCArIGdhcEV4dHJh
OwogICAgIH0KIH0KIApAQCAtNDExMyw3ICs0MTEyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHN0
cmlwVHJhaWxpbmdTcGFjZShmbG9hdCYgaW5saW5lTWF4LCBmbG9hdCYgaW5saW5lTWluLAogc3Rh
dGljIGlubGluZSB2b2lkIHVwZGF0ZVByZWZlcnJlZFdpZHRoKExheW91dFVuaXQmIHByZWZlcnJl
ZFdpZHRoLCBmbG9hdCYgcmVzdWx0KQogewogICAgIExheW91dFVuaXQgc25hcHBlZFJlc3VsdCA9
IGNlaWxlZExheW91dFVuaXQocmVzdWx0KTsKLSAgICBwcmVmZXJyZWRXaWR0aCA9IG1heChzbmFw
cGVkUmVzdWx0LCBwcmVmZXJyZWRXaWR0aCk7CisgICAgcHJlZmVycmVkV2lkdGggPSBzdGQ6Om1h
eChzbmFwcGVkUmVzdWx0LCBwcmVmZXJyZWRXaWR0aCk7CiB9CiAKIC8vIFdpdGggc3ViLXBpeGVs
IGVuYWJsZWQ6IFdoZW4gY29udmVydGluZyBiZXR3ZWVuIGZsb2F0aW5nIHBvaW50IGFuZCBMYXlv
dXRVbml0cwpAQCAtNDI4NSw3ICs0Mjg0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZUlu
bGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHQKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyBBZGQgb3VyIHdpZHRoIHRvIHRo
ZSBtYXguCi0gICAgICAgICAgICAgICAgaW5saW5lTWF4ICs9IG1heDxmbG9hdD4oMCwgY2hpbGRN
YXgpOworICAgICAgICAgICAgICAgIGlubGluZU1heCArPSBzdGQ6Om1heDxmbG9hdD4oMCwgY2hp
bGRNYXgpOwogCiAgICAgICAgICAgICAgICAgaWYgKCFhdXRvV3JhcCB8fCAhY2FuQnJlYWtSZXBs
YWNlZEVsZW1lbnQgfHwgKGlzUHJldkNoaWxkSW5saW5lRmxvdyAmJiAhc2hvdWxkQnJlYWtMaW5l
QWZ0ZXJUZXh0KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzRmxvYXRpbmco
KSkKQEAgLTQ0MDYsNyArNDQwNSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVJbmxpbmVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0CiAgICAgICAg
ICAgICAgICAgICAgIGlubGluZU1heCA9IGVuZE1heDsKICAgICAgICAgICAgICAgICAgICAgYWRk
ZWRUZXh0SW5kZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgaW5saW5lTWF4ICs9IG1heDxmbG9hdD4oMCwgY2hpbGRNYXgpOworICAgICAgICAg
ICAgICAgICAgICBpbmxpbmVNYXggKz0gc3RkOjptYXg8ZmxvYXQ+KDAsIGNoaWxkTWF4KTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gSWdub3JlIHNwYWNlcyBhZnRlciBhIGxpc3Qg
bWFya2VyLgpAQCAtNDQ1NSwxMSArNDQ1NCwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRl
QmxvY2tQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aAog
ICAgICAgICBpZiAoY2hpbGQtPmlzRmxvYXRpbmcoKSB8fCAoY2hpbGQtPmlzQm94KCkgJiYgdG9S
ZW5kZXJCb3goY2hpbGQpLT5hdm9pZHNGbG9hdHMoKSkpIHsKICAgICAgICAgICAgIExheW91dFVu
aXQgZmxvYXRUb3RhbFdpZHRoID0gZmxvYXRMZWZ0V2lkdGggKyBmbG9hdFJpZ2h0V2lkdGg7CiAg
ICAgICAgICAgICBpZiAoY2hpbGRTdHlsZS5jbGVhcigpICYgQ0xFRlQpIHsKLSAgICAgICAgICAg
ICAgICBtYXhMb2dpY2FsV2lkdGggPSBtYXgoZmxvYXRUb3RhbFdpZHRoLCBtYXhMb2dpY2FsV2lk
dGgpOworICAgICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KGZsb2F0VG90
YWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgICAgICBmbG9hdExlZnRXaWR0
aCA9IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY2hpbGRTdHlsZS5jbGVhcigp
ICYgQ1JJR0hUKSB7Ci0gICAgICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoID0gbWF4KGZsb2F0
VG90YWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgICAgICBtYXhMb2dpY2Fs
V2lkdGggPSBzdGQ6Om1heChmbG9hdFRvdGFsV2lkdGgsIG1heExvZ2ljYWxXaWR0aCk7CiAgICAg
ICAgICAgICAgICAgZmxvYXRSaWdodFdpZHRoID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtNDQ5MCwxMSArNDQ4OSwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlQmxvY2tQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aAogICAgICAg
ICB9CiAKICAgICAgICAgTGF5b3V0VW5pdCB3ID0gY2hpbGRNaW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGggKyBtYXJnaW47Ci0gICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IG1heCh3LCBtaW5Mb2dpY2Fs
V2lkdGgpOworICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBzdGQ6Om1heCh3LCBtaW5Mb2dpY2Fs
V2lkdGgpOwogICAgICAgICAKICAgICAgICAgLy8gSUUgaWdub3JlcyB0YWJsZXMgZm9yIGNhbGN1
bGF0aW9uIG9mIG5vd3JhcC4gTWFrZXMgc29tZSBzZW5zZS4KICAgICAgICAgaWYgKG5vd3JhcCAm
JiAhY2hpbGQtPmlzVGFibGUoKSkKLSAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IG1heCh3
LCBtYXhMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoID0gc3RkOjpt
YXgodywgbWF4TG9naWNhbFdpZHRoKTsKIAogICAgICAgICB3ID0gY2hpbGRNYXhQcmVmZXJyZWRM
b2dpY2FsV2lkdGggKyBtYXJnaW47CiAKQEAgLTQ1MDYsMTMgKzQ1MDUsMTMgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6Y29tcHV0ZUJsb2NrUHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBt
aW5Mb2dpY2FsV2lkdGgKICAgICAgICAgICAgICAgICBib29sIGx0ciA9IGNvbnRhaW5pbmdCbG9j
ayA/IGNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgOiBz
dHlsZVRvVXNlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICAgICAgICAgICAgICBMYXlv
dXRVbml0IG1hcmdpbkxvZ2ljYWxMZWZ0ID0gbHRyID8gbWFyZ2luU3RhcnQgOiBtYXJnaW5FbmQ7
CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5Mb2dpY2FsUmlnaHQgPSBsdHIgPyBt
YXJnaW5FbmQgOiBtYXJnaW5TdGFydDsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IG1heExl
ZnQgPSBtYXJnaW5Mb2dpY2FsTGVmdCA+IDAgPyBtYXgoZmxvYXRMZWZ0V2lkdGgsIG1hcmdpbkxv
Z2ljYWxMZWZ0KSA6IGZsb2F0TGVmdFdpZHRoICsgbWFyZ2luTG9naWNhbExlZnQ7Ci0gICAgICAg
ICAgICAgICAgTGF5b3V0VW5pdCBtYXhSaWdodCA9IG1hcmdpbkxvZ2ljYWxSaWdodCA+IDAgPyBt
YXgoZmxvYXRSaWdodFdpZHRoLCBtYXJnaW5Mb2dpY2FsUmlnaHQpIDogZmxvYXRSaWdodFdpZHRo
ICsgbWFyZ2luTG9naWNhbFJpZ2h0OworICAgICAgICAgICAgICAgIExheW91dFVuaXQgbWF4TGVm
dCA9IG1hcmdpbkxvZ2ljYWxMZWZ0ID4gMCA/IHN0ZDo6bWF4KGZsb2F0TGVmdFdpZHRoLCBtYXJn
aW5Mb2dpY2FsTGVmdCkgOiBmbG9hdExlZnRXaWR0aCArIG1hcmdpbkxvZ2ljYWxMZWZ0OworICAg
ICAgICAgICAgICAgIExheW91dFVuaXQgbWF4UmlnaHQgPSBtYXJnaW5Mb2dpY2FsUmlnaHQgPiAw
ID8gc3RkOjptYXgoZmxvYXRSaWdodFdpZHRoLCBtYXJnaW5Mb2dpY2FsUmlnaHQpIDogZmxvYXRS
aWdodFdpZHRoICsgbWFyZ2luTG9naWNhbFJpZ2h0OwogICAgICAgICAgICAgICAgIHcgPSBjaGls
ZE1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCArIG1heExlZnQgKyBtYXhSaWdodDsKLSAgICAgICAg
ICAgICAgICB3ID0gbWF4KHcsIGZsb2F0TGVmdFdpZHRoICsgZmxvYXRSaWdodFdpZHRoKTsKKyAg
ICAgICAgICAgICAgICB3ID0gc3RkOjptYXgodywgZmxvYXRMZWZ0V2lkdGggKyBmbG9hdFJpZ2h0
V2lkdGgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IG1heExvZ2ljYWxXaWR0aCA9IG1heChmbG9hdExlZnRXaWR0aCArIGZsb2F0UmlnaHRXaWR0aCwg
bWF4TG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBzdGQ6
Om1heChmbG9hdExlZnRXaWR0aCArIGZsb2F0UmlnaHRXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsK
ICAgICAgICAgICAgIGZsb2F0TGVmdFdpZHRoID0gZmxvYXRSaWdodFdpZHRoID0gMDsKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTQ1MjIsMTYgKzQ1MjEsMTYgQEAgdm9pZCBSZW5kZXJCbG9jazo6
Y29tcHV0ZUJsb2NrUHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2Fs
V2lkdGgKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmbG9hdFJpZ2h0V2lkdGgg
Kz0gdzsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBtYXgo
dywgbWF4TG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6
bWF4KHcsIG1heExvZ2ljYWxXaWR0aCk7CiAgICAgICAgIAogICAgICAgICBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpOwogICAgIH0KIAogICAgIC8vIEFsd2F5cyBtYWtlIHN1cmUgdGhlc2Ug
dmFsdWVzIGFyZSBub24tbmVnYXRpdmUuCi0gICAgbWluTG9naWNhbFdpZHRoID0gbWF4PExheW91
dFVuaXQ+KDAsIG1pbkxvZ2ljYWxXaWR0aCk7Ci0gICAgbWF4TG9naWNhbFdpZHRoID0gbWF4PExh
eW91dFVuaXQ+KDAsIG1heExvZ2ljYWxXaWR0aCk7CisgICAgbWluTG9naWNhbFdpZHRoID0gc3Rk
OjptYXg8TGF5b3V0VW5pdD4oMCwgbWluTG9naWNhbFdpZHRoKTsKKyAgICBtYXhMb2dpY2FsV2lk
dGggPSBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBtYXhMb2dpY2FsV2lkdGgpOwogCi0gICAgbWF4
TG9naWNhbFdpZHRoID0gbWF4KGZsb2F0TGVmdFdpZHRoICsgZmxvYXRSaWdodFdpZHRoLCBtYXhM
b2dpY2FsV2lkdGgpOworICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KGZsb2F0TGVmdFdp
ZHRoICsgZmxvYXRSaWdodFdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpOwogfQogCiBib29sIFJlbmRl
ckJsb2NrOjpoYXNMaW5lSWZFbXB0eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDhlOTljNTE0MGNjNzZlZDRiNTM2Mjc1ZGIzNzEz
OGM3MzY5M2NiMWQuLjQxODYwMGY5YWM3ZDA3NDk2YTYxNTE3OWU4ZTY1MGJjODZmMDYyMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC00MCw4
ICs0MCw2IEBACiAjaW5jbHVkZSAiVmVydGljYWxQb3NpdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAi
VmlzaWJsZVBvc2l0aW9uLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogYm9vbCBSZW5kZXJCbG9jazo6c19jYW5Qcm9wYWdhdGVGbG9hdEludG9TaWJs
aW5nID0gZmFsc2U7CkBAIC0yNDksMTcgKzI0NywxNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
Y2xlYXJGbG9hdHMoKQogICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IG9sZExvZ2ljYWxC
b3R0b20gPSBsb2dpY2FsQm90dG9tRm9yRmxvYXQob2xkRmxvYXRpbmdPYmplY3QuZ2V0KCkpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoRm9yRmxvYXQoZmxvYXRpbmdPYmpl
Y3QpICE9IGxvZ2ljYWxXaWR0aEZvckZsb2F0KG9sZEZsb2F0aW5nT2JqZWN0LmdldCgpKSB8fCBs
b2dpY2FsTGVmdEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSAhPSBsb2dpY2FsTGVmdEZvckZsb2F0
KG9sZEZsb2F0aW5nT2JqZWN0LmdldCgpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlTG9naWNhbFRvcCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VMb2dpY2Fs
Qm90dG9tID0gbWF4KGNoYW5nZUxvZ2ljYWxCb3R0b20sIG1heChsb2dpY2FsQm90dG9tLCBvbGRM
b2dpY2FsQm90dG9tKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VMb2dpY2FsQm90
dG9tID0gc3RkOjptYXgoY2hhbmdlTG9naWNhbEJvdHRvbSwgc3RkOjptYXgobG9naWNhbEJvdHRv
bSwgb2xkTG9naWNhbEJvdHRvbSkpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGxvZ2ljYWxCb3R0b20gIT0gb2xkTG9naWNhbEJvdHRv
bSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZUxvZ2ljYWxUb3AgPSBtaW4o
Y2hhbmdlTG9naWNhbFRvcCwgbWluKGxvZ2ljYWxCb3R0b20sIG9sZExvZ2ljYWxCb3R0b20pKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VMb2dpY2FsQm90dG9tID0gbWF4KGNo
YW5nZUxvZ2ljYWxCb3R0b20sIG1heChsb2dpY2FsQm90dG9tLCBvbGRMb2dpY2FsQm90dG9tKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlTG9naWNhbFRvcCA9IHN0ZDo6bWlu
KGNoYW5nZUxvZ2ljYWxUb3AsIHN0ZDo6bWluKGxvZ2ljYWxCb3R0b20sIG9sZExvZ2ljYWxCb3R0
b20pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VMb2dpY2FsQm90dG9tID0g
c3RkOjptYXgoY2hhbmdlTG9naWNhbEJvdHRvbSwgc3RkOjptYXgobG9naWNhbEJvdHRvbSwgb2xk
TG9naWNhbEJvdHRvbSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wID0gbG9naWNhbFRvcEZvckZsb2F0KGZs
b2F0aW5nT2JqZWN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgb2xkTG9n
aWNhbFRvcCA9IGxvZ2ljYWxUb3BGb3JGbG9hdChvbGRGbG9hdGluZ09iamVjdC5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9naWNhbFRvcCAhPSBvbGRMb2dpY2FsVG9wKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlTG9naWNhbFRvcCA9IG1pbihjaGFu
Z2VMb2dpY2FsVG9wLCBtaW4obG9naWNhbFRvcCwgb2xkTG9naWNhbFRvcCkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYW5nZUxvZ2ljYWxCb3R0b20gPSBtYXgoY2hhbmdlTG9naWNh
bEJvdHRvbSwgbWF4KGxvZ2ljYWxUb3AsIG9sZExvZ2ljYWxUb3ApKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VMb2dpY2FsVG9wID0gc3RkOjptaW4oY2hhbmdlTG9naWNhbFRv
cCwgc3RkOjptaW4obG9naWNhbFRvcCwgb2xkTG9naWNhbFRvcCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZUxvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heChjaGFuZ2VMb2dpY2Fs
Qm90dG9tLCBzdGQ6Om1heChsb2dpY2FsVG9wLCBvbGRMb2dpY2FsVG9wKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KIApAQCAtMjY5LDcgKzI2Nyw3
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGVhckZsb2F0cygpCiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VMb2dpY2FsVG9wID0gMDsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlTG9naWNhbEJvdHRv
bSA9IG1heChjaGFuZ2VMb2dpY2FsQm90dG9tLCBsb2dpY2FsQm90dG9tKTsKKyAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlTG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KGNoYW5nZUxvZ2ljYWxCb3R0
b20sIGxvZ2ljYWxCb3R0b20pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMjc5LDcgKzI3Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjbGVhckZs
b2F0cygpCiAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBpdC0+
dmFsdWUuZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIWZsb2F0aW5nT2JqZWN0LT5pc0Rlc2NlbmRh
bnQoKSkgewogICAgICAgICAgICAgICAgIGNoYW5nZUxvZ2ljYWxUb3AgPSAwOwotICAgICAgICAg
ICAgICAgIGNoYW5nZUxvZ2ljYWxCb3R0b20gPSBtYXgoY2hhbmdlTG9naWNhbEJvdHRvbSwgbG9n
aWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSk7CisgICAgICAgICAgICAgICAgY2hh
bmdlTG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KGNoYW5nZUxvZ2ljYWxCb3R0b20sIGxvZ2ljYWxC
b3R0b21Gb3JGbG9hdChmbG9hdGluZ09iamVjdCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKQEAgLTQyOSw4ICs0MjcsOCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSAogICAgICAgICAg
ICAgLy8gSWYgd2UgaGF2ZSBjbGlwcGVkIG92ZXJmbG93LCB3ZSBzaG91bGQgdXNlIGxheW91dCBv
dmVyZmxvdyBhcyB3ZWxsLCBzaW5jZSB2aXN1YWwgb3ZlcmZsb3cgZnJvbSBsaW5lcyBkaWRuJ3Qg
cHJvcGFnYXRlIHRvIG91ciBibG9jaydzIG92ZXJmbG93LgogICAgICAgICAgICAgLy8gTm90ZSB0
aGUgb2xkIGNvZGUgZGlkIHRoaXMgYXMgd2VsbCBidXQgZXZlbiBmb3Igb3ZlcmZsb3c6dmlzaWJs
ZS4gVGhlIGFkZGl0aW9uIG9mIGhhc092ZXJmbG93Q2xpcCgpIGF0IGxlYXN0IHRpZ2h0ZW5zIHVw
IHRoZSBoYWNrIGEgYml0LgogICAgICAgICAgICAgLy8gbGF5b3V0SW5saW5lQ2hpbGRyZW4gc2hv
dWxkIGJlIHBhdGNoZWQgdG8gY29tcHV0ZSB0aGUgZW50aXJlIHJlcGFpbnQgcmVjdC4KLSAgICAg
ICAgICAgIHJlcGFpbnRMb2dpY2FsTGVmdCA9IG1pbihyZXBhaW50TG9naWNhbExlZnQsIGxvZ2lj
YWxMZWZ0TGF5b3V0T3ZlcmZsb3coKSk7Ci0gICAgICAgICAgICByZXBhaW50TG9naWNhbFJpZ2h0
ID0gbWF4KHJlcGFpbnRMb2dpY2FsUmlnaHQsIGxvZ2ljYWxSaWdodExheW91dE92ZXJmbG93KCkp
OworICAgICAgICAgICAgcmVwYWludExvZ2ljYWxMZWZ0ID0gc3RkOjptaW4ocmVwYWludExvZ2lj
YWxMZWZ0LCBsb2dpY2FsTGVmdExheW91dE92ZXJmbG93KCkpOworICAgICAgICAgICAgcmVwYWlu
dExvZ2ljYWxSaWdodCA9IHN0ZDo6bWF4KHJlcGFpbnRMb2dpY2FsUmlnaHQsIGxvZ2ljYWxSaWdo
dExheW91dE92ZXJmbG93KCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBMYXlvdXRS
ZWN0IHJlcGFpbnRSZWN0OwpAQCAtNTczLDcgKzU3MSw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93
OjpsYXlvdXRCbG9ja0NoaWxkKFJlbmRlckJveCYgY2hpbGQsIE1hcmdpbkluZm8mIG1hcmdpbklu
Zm8sCiAgICAgZWxzZSBpZiAoIWNoaWxkLmF2b2lkc0Zsb2F0cygpIHx8IGNoaWxkLnNocmlua1Rv
QXZvaWRGbG9hdHMoKSkgewogICAgICAgICAvLyBJZiBhbiBlbGVtZW50IG1pZ2h0IGJlIGFmZmVj
dGVkIGJ5IHRoZSBwcmVzZW5jZSBvZiBmbG9hdHMsIHRoZW4gYWx3YXlzIG1hcmsgaXQgZm9yCiAg
ICAgICAgIC8vIGxheW91dC4KLSAgICAgICAgTGF5b3V0VW5pdCBmYiA9IG1heChwcmV2aW91c0Zs
b2F0TG9naWNhbEJvdHRvbSwgbG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKCkpOworICAgICAgICBM
YXlvdXRVbml0IGZiID0gc3RkOjptYXgocHJldmlvdXNGbG9hdExvZ2ljYWxCb3R0b20sIGxvd2Vz
dEZsb2F0TG9naWNhbEJvdHRvbSgpKTsKICAgICAgICAgaWYgKGZiID4gbG9naWNhbFRvcEVzdGlt
YXRlKQogICAgICAgICAgICAgbWFya0Rlc2NlbmRhbnRzV2l0aEZsb2F0cyA9IHRydWU7CiAgICAg
fQpAQCAtNTgyLDcgKzU4MCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9ja0No
aWxkKFJlbmRlckJveCYgY2hpbGQsIE1hcmdpbkluZm8mIG1hcmdpbkluZm8sCiAgICAgICAgIGlm
IChtYXJrRGVzY2VuZGFudHNXaXRoRmxvYXRzKQogICAgICAgICAgICAgY2hpbGRCbG9ja0Zsb3ct
Pm1hcmtBbGxEZXNjZW5kYW50c1dpdGhGbG9hdHNGb3JMYXlvdXQoKTsKICAgICAgICAgaWYgKCFj
aGlsZC5pc1dyaXRpbmdNb2RlUm9vdCgpKQotICAgICAgICAgICAgcHJldmlvdXNGbG9hdExvZ2lj
YWxCb3R0b20gPSBtYXgocHJldmlvdXNGbG9hdExvZ2ljYWxCb3R0b20sIG9sZExvZ2ljYWxUb3Ag
KyBjaGlsZEJsb2NrRmxvdy0+bG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tKCkpOworICAgICAgICAg
ICAgcHJldmlvdXNGbG9hdExvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heChwcmV2aW91c0Zsb2F0TG9n
aWNhbEJvdHRvbSwgb2xkTG9naWNhbFRvcCArIGNoaWxkQmxvY2tGbG93LT5sb3dlc3RGbG9hdExv
Z2ljYWxCb3R0b20oKSk7CiAgICAgfQogCiAgICAgaWYgKCFjaGlsZC5uZWVkc0xheW91dCgpKQpA
QCAtNjU5LDcgKzY1Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9ja0NoaWxk
KFJlbmRlckJveCYgY2hpbGQsIE1hcmdpbkluZm8mIG1hcmdpbkluZm8sCiAgICAgLy8gSWYgdGhl
IGNoaWxkIGhhcyBvdmVyaGFuZ2luZyBmbG9hdHMgdGhhdCBpbnRydWRlIGludG8gZm9sbG93aW5n
IHNpYmxpbmdzIChvciBwb3NzaWJseSBvdXQKICAgICAvLyBvZiB0aGlzIGJsb2NrKSwgdGhlbiB0
aGUgcGFyZW50IGdldHMgbm90aWZpZWQgb2YgdGhlIGZsb2F0cyBub3cuCiAgICAgaWYgKGNoaWxk
QmxvY2tGbG93ICYmIGNoaWxkQmxvY2tGbG93LT5jb250YWluc0Zsb2F0cygpKQotICAgICAgICBt
YXhGbG9hdExvZ2ljYWxCb3R0b20gPSBtYXgobWF4RmxvYXRMb2dpY2FsQm90dG9tLCBhZGRPdmVy
aGFuZ2luZ0Zsb2F0cygqY2hpbGRCbG9ja0Zsb3csICFjaGlsZE5lZWRlZExheW91dCkpOworICAg
ICAgICBtYXhGbG9hdExvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heChtYXhGbG9hdExvZ2ljYWxCb3R0
b20sIGFkZE92ZXJoYW5naW5nRmxvYXRzKCpjaGlsZEJsb2NrRmxvdywgIWNoaWxkTmVlZGVkTGF5
b3V0KSk7CiAKICAgICBpZiAoY2hpbGRPZmZzZXQud2lkdGgoKSB8fCBjaGlsZE9mZnNldC5oZWln
aHQoKSkgewogICAgICAgICB2aWV3KCkuYWRkTGF5b3V0RGVsdGEoY2hpbGRPZmZzZXQpOwpAQCAt
ODI3LDggKzgyNSw4IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93Ojpjb2xsYXBzZU1hcmdp
bnMoUmVuZGVyQm94JiBjaGlsZCwgTWFyZ2luSW5mbyYgbWFyZ2luCiAgICAgLy8gRm9yIHNlbGYt
Y29sbGFwc2luZyBibG9ja3MsIGNvbGxhcHNlIG91ciBib3R0b20gbWFyZ2lucyBpbnRvIG91cgog
ICAgIC8vIHRvcCB0byBnZXQgbmV3IHBvc1RvcCBhbmQgbmVnVG9wIHZhbHVlcy4KICAgICBpZiAo
Y2hpbGRJc1NlbGZDb2xsYXBzaW5nKSB7Ci0gICAgICAgIHBvc1RvcCA9IG1heChwb3NUb3AsIGNo
aWxkTWFyZ2lucy5wb3NpdGl2ZU1hcmdpbkFmdGVyKCkpOwotICAgICAgICBuZWdUb3AgPSBtYXgo
bmVnVG9wLCBjaGlsZE1hcmdpbnMubmVnYXRpdmVNYXJnaW5BZnRlcigpKTsKKyAgICAgICAgcG9z
VG9wID0gc3RkOjptYXgocG9zVG9wLCBjaGlsZE1hcmdpbnMucG9zaXRpdmVNYXJnaW5BZnRlcigp
KTsKKyAgICAgICAgbmVnVG9wID0gc3RkOjptYXgobmVnVG9wLCBjaGlsZE1hcmdpbnMubmVnYXRp
dmVNYXJnaW5BZnRlcigpKTsKICAgICB9CiAgICAgCiAgICAgLy8gU2VlIGlmIHRoZSB0b3AgbWFy
Z2luIGlzIHF1aXJreS4gV2Ugb25seSBjYXJlIGlmIHRoaXMgY2hpbGQgaGFzCkBAIC04NDEsNyAr
ODM5LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmNvbGxhcHNlTWFyZ2lucyhSZW5k
ZXJCb3gmIGNoaWxkLCBNYXJnaW5JbmZvJiBtYXJnaW4KICAgICAgICAgICAgIC8vIGJsb2NrLiBJ
ZiBpdCBoYXMgbGFyZ2VyIG1hcmdpbiB2YWx1ZXMsIHRoZW4gd2UgbmVlZCB0byB1cGRhdGUKICAg
ICAgICAgICAgIC8vIG91ciBvd24gbWF4aW1hbCB2YWx1ZXMuCiAgICAgICAgICAgICBpZiAoIWRv
Y3VtZW50KCkuaW5RdWlya3NNb2RlKCkgfHwgIW1hcmdpbkluZm8ucXVpcmtDb250YWluZXIoKSB8
fCAhdG9wUXVpcmspCi0gICAgICAgICAgICAgICAgc2V0TWF4TWFyZ2luQmVmb3JlVmFsdWVzKG1h
eChwb3NUb3AsIG1heFBvc2l0aXZlTWFyZ2luQmVmb3JlKCkpLCBtYXgobmVnVG9wLCBtYXhOZWdh
dGl2ZU1hcmdpbkJlZm9yZSgpKSk7CisgICAgICAgICAgICAgICAgc2V0TWF4TWFyZ2luQmVmb3Jl
VmFsdWVzKHN0ZDo6bWF4KHBvc1RvcCwgbWF4UG9zaXRpdmVNYXJnaW5CZWZvcmUoKSksIHN0ZDo6
bWF4KG5lZ1RvcCwgbWF4TmVnYXRpdmVNYXJnaW5CZWZvcmUoKSkpOwogCiAgICAgICAgICAgICAv
LyBUaGUgbWludXRlIGFueSBvZiB0aGUgbWFyZ2lucyBpbnZvbHZlZCBpc24ndCBhIHF1aXJrLCBk
b24ndAogICAgICAgICAgICAgLy8gY29sbGFwc2UgaXQgYXdheSwgZXZlbiBpZiB0aGUgbWFyZ2lu
IGlzIHNtYWxsZXIgKHd3dy53ZWJyZWZlcmVuY2UuY29tCkBAIC04ODIsOCArODgwLDggQEAgTGF5
b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmNvbGxhcHNlTWFyZ2lucyhSZW5kZXJCb3gmIGNoaWxk
LCBNYXJnaW5JbmZvJiBtYXJnaW4KICAgICAgICAgICAgIC8vIFRoaXMgY2hpbGQgaGFzIG5vIGhl
aWdodC4gV2UgbmVlZCB0byBjb21wdXRlIG91cgogICAgICAgICAgICAgLy8gcG9zaXRpb24gYmVm
b3JlIHdlIGNvbGxhcHNlIHRoZSBjaGlsZCdzIG1hcmdpbnMgdG9nZXRoZXIsCiAgICAgICAgICAg
ICAvLyBzbyB0aGF0IHdlIGNhbiBnZXQgYW4gYWNjdXJhdGUgcG9zaXRpb24gZm9yIHRoZSB6ZXJv
LWhlaWdodCBibG9jay4KLSAgICAgICAgICAgIExheW91dFVuaXQgY29sbGFwc2VkQmVmb3JlUG9z
ID0gbWF4KG1hcmdpbkluZm8ucG9zaXRpdmVNYXJnaW4oKSwgY2hpbGRNYXJnaW5zLnBvc2l0aXZl
TWFyZ2luQmVmb3JlKCkpOwotICAgICAgICAgICAgTGF5b3V0VW5pdCBjb2xsYXBzZWRCZWZvcmVO
ZWcgPSBtYXgobWFyZ2luSW5mby5uZWdhdGl2ZU1hcmdpbigpLCBjaGlsZE1hcmdpbnMubmVnYXRp
dmVNYXJnaW5CZWZvcmUoKSk7CisgICAgICAgICAgICBMYXlvdXRVbml0IGNvbGxhcHNlZEJlZm9y
ZVBvcyA9IHN0ZDo6bWF4KG1hcmdpbkluZm8ucG9zaXRpdmVNYXJnaW4oKSwgY2hpbGRNYXJnaW5z
LnBvc2l0aXZlTWFyZ2luQmVmb3JlKCkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBjb2xsYXBz
ZWRCZWZvcmVOZWcgPSBzdGQ6Om1heChtYXJnaW5JbmZvLm5lZ2F0aXZlTWFyZ2luKCksIGNoaWxk
TWFyZ2lucy5uZWdhdGl2ZU1hcmdpbkJlZm9yZSgpKTsKICAgICAgICAgICAgIG1hcmdpbkluZm8u
c2V0TWFyZ2luKGNvbGxhcHNlZEJlZm9yZVBvcywgY29sbGFwc2VkQmVmb3JlTmVnKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgLy8gTm93IGNvbGxhcHNlIHRoZSBjaGlsZCdzIG1hcmdpbnMg
dG9nZXRoZXIsIHdoaWNoIG1lYW5zIGV4YW1pbmluZyBvdXIKQEAgLTkxMiw3ICs5MTAsNyBAQCBM
YXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6Y29sbGFwc2VNYXJnaW5zKFJlbmRlckJveCYgY2hp
bGQsIE1hcmdpbkluZm8mIG1hcmdpbgogICAgICAgICAgICAgJiYgKCFkb2N1bWVudCgpLmluUXVp
cmtzTW9kZSgpIHx8ICFtYXJnaW5JbmZvLnF1aXJrQ29udGFpbmVyKCkgfHwgIW1hcmdpbkluZm8u
aGFzTWFyZ2luQmVmb3JlUXVpcmsoKSkpKSkgewogICAgICAgICAgICAgLy8gV2UncmUgY29sbGFw
c2luZyB3aXRoIGEgcHJldmlvdXMgc2libGluZydzIG1hcmdpbnMgYW5kIG5vdAogICAgICAgICAg
ICAgLy8gd2l0aCB0aGUgdG9wIG9mIHRoZSBibG9jay4KLSAgICAgICAgICAgIHNldExvZ2ljYWxI
ZWlnaHQobG9naWNhbEhlaWdodCgpICsgbWF4KG1hcmdpbkluZm8ucG9zaXRpdmVNYXJnaW4oKSwg
cG9zVG9wKSAtIG1heChtYXJnaW5JbmZvLm5lZ2F0aXZlTWFyZ2luKCksIG5lZ1RvcCkpOworICAg
ICAgICAgICAgc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KCkgKyBzdGQ6Om1heChtYXJn
aW5JbmZvLnBvc2l0aXZlTWFyZ2luKCksIHBvc1RvcCkgLSBzdGQ6Om1heChtYXJnaW5JbmZvLm5l
Z2F0aXZlTWFyZ2luKCksIG5lZ1RvcCkpOwogICAgICAgICAgICAgbG9naWNhbFRvcCA9IGxvZ2lj
YWxIZWlnaHQoKTsKICAgICAgICAgfQogCkBAIC05MzQsNyArOTMyLDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJCbG9ja0Zsb3c6OmNvbGxhcHNlTWFyZ2lucyhSZW5kZXJCb3gmIGNoaWxkLCBNYXJnaW5J
bmZvJiBtYXJnaW4KICAgICBpZiAobGF5b3V0U3RhdGUtPmlzUGFnaW5hdGVkKCkgJiYgbGF5b3V0
U3RhdGUtPnBhZ2VMb2dpY2FsSGVpZ2h0KCkgJiYgbG9naWNhbFRvcCA+IGJlZm9yZUNvbGxhcHNl
TG9naWNhbFRvcAogICAgICAgICAmJiBoYXNOZXh0UGFnZShiZWZvcmVDb2xsYXBzZUxvZ2ljYWxU
b3ApKSB7CiAgICAgICAgIExheW91dFVuaXQgb2xkTG9naWNhbFRvcCA9IGxvZ2ljYWxUb3A7Ci0g
ICAgICAgIGxvZ2ljYWxUb3AgPSBtaW4obG9naWNhbFRvcCwgbmV4dFBhZ2VMb2dpY2FsVG9wKGJl
Zm9yZUNvbGxhcHNlTG9naWNhbFRvcCkpOworICAgICAgICBsb2dpY2FsVG9wID0gc3RkOjptaW4o
bG9naWNhbFRvcCwgbmV4dFBhZ2VMb2dpY2FsVG9wKGJlZm9yZUNvbGxhcHNlTG9naWNhbFRvcCkp
OwogICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSArIChsb2dpY2FsVG9w
IC0gb2xkTG9naWNhbFRvcCkpOwogICAgIH0KIApAQCAtOTY5LDggKzk2Nyw4IEBAIExheW91dFVu
aXQgUmVuZGVyQmxvY2tGbG93OjpjbGVhckZsb2F0c0lmTmVlZGVkKFJlbmRlckJveCYgY2hpbGQs
IE1hcmdpbkluZm8mIG1hCiAgICAgICAgIC8vIElmIERJU0NBUkQgaXMgc3BlY2lmaWVkIGZvciAt
d2Via2l0LW1hcmdpbi1jb2xsYXBzZSwgcmVzZXQgdGhlIG1hcmdpbiB2YWx1ZXMuCiAgICAgICAg
IGlmICghY2hpbGREaXNjYXJkTWFyZ2luKSB7CiAgICAgICAgICAgICBNYXJnaW5WYWx1ZXMgY2hp
bGRNYXJnaW5zID0gbWFyZ2luVmFsdWVzRm9yQ2hpbGQoY2hpbGQpOwotICAgICAgICAgICAgbWFy
Z2luSW5mby5zZXRQb3NpdGl2ZU1hcmdpbihtYXgoY2hpbGRNYXJnaW5zLnBvc2l0aXZlTWFyZ2lu
QmVmb3JlKCksIGNoaWxkTWFyZ2lucy5wb3NpdGl2ZU1hcmdpbkFmdGVyKCkpKTsKLSAgICAgICAg
ICAgIG1hcmdpbkluZm8uc2V0TmVnYXRpdmVNYXJnaW4obWF4KGNoaWxkTWFyZ2lucy5uZWdhdGl2
ZU1hcmdpbkJlZm9yZSgpLCBjaGlsZE1hcmdpbnMubmVnYXRpdmVNYXJnaW5BZnRlcigpKSk7Cisg
ICAgICAgICAgICBtYXJnaW5JbmZvLnNldFBvc2l0aXZlTWFyZ2luKHN0ZDo6bWF4KGNoaWxkTWFy
Z2lucy5wb3NpdGl2ZU1hcmdpbkJlZm9yZSgpLCBjaGlsZE1hcmdpbnMucG9zaXRpdmVNYXJnaW5B
ZnRlcigpKSk7CisgICAgICAgICAgICBtYXJnaW5JbmZvLnNldE5lZ2F0aXZlTWFyZ2luKHN0ZDo6
bWF4KGNoaWxkTWFyZ2lucy5uZWdhdGl2ZU1hcmdpbkJlZm9yZSgpLCBjaGlsZE1hcmdpbnMubmVn
YXRpdmVNYXJnaW5BZnRlcigpKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbWFyZ2lu
SW5mby5jbGVhck1hcmdpbigpOwogICAgICAgICBtYXJnaW5JbmZvLnNldERpc2NhcmRNYXJnaW4o
Y2hpbGREaXNjYXJkTWFyZ2luKTsKQEAgLTk5Myw3ICs5OTEsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJsb2NrRmxvdzo6Y2xlYXJGbG9hdHNJZk5lZWRlZChSZW5kZXJCb3gmIGNoaWxkLCBNYXJnaW5J
bmZvJiBtYQogICAgICAgICBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbiA9IGNvbGxhcHNlZE1h
cmdpbkJlZm9yZUZvckNoaWxkKGNoaWxkKTsKICAgICAgICAgc2V0TG9naWNhbEhlaWdodChjaGls
ZC5sb2dpY2FsVG9wKCkgLSBjb2xsYXBzZWRNYXJnaW4pOwogICAgICAgICAvLyBBIG5lZ2F0aXZl
IGNvbGxhcHNlZCBtYXJnaW4tdG9wIHZhbHVlIGNhbmNlbHMgaXRzZWxmIG91dCBhcyBpdCBoYXMg
YWxyZWFkeSBiZWVuIGZhY3RvcmVkIGludG8gfHlQb3N8IGFib3ZlLgotICAgICAgICBoZWlnaHRJ
bmNyZWFzZSAtPSBtYXgoTGF5b3V0VW5pdCgpLCBjb2xsYXBzZWRNYXJnaW4pOworICAgICAgICBo
ZWlnaHRJbmNyZWFzZSAtPSBzdGQ6Om1heChMYXlvdXRVbml0KCksIGNvbGxhcHNlZE1hcmdpbik7
CiAgICAgfSBlbHNlCiAgICAgICAgIC8vIEluY3JlYXNlIG91ciBoZWlnaHQgYnkgdGhlIGFtb3Vu
dCB3ZSBoYWQgdG8gY2xlYXIuCiAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdo
dCgpICsgaGVpZ2h0SW5jcmVhc2UpOwpAQCAtMTAzOCw4ICsxMDM2LDggQEAgdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6Om1hcmdpbkJlZm9yZUVzdGltYXRlRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCwg
TGF5b3V0VW5pdCYKICAgICB9CiAKICAgICBMYXlvdXRVbml0IGJlZm9yZUNoaWxkTWFyZ2luID0g
bWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGQpOwotICAgIHBvc2l0aXZlTWFyZ2luQmVmb3JlID0g
bWF4KHBvc2l0aXZlTWFyZ2luQmVmb3JlLCBiZWZvcmVDaGlsZE1hcmdpbik7Ci0gICAgbmVnYXRp
dmVNYXJnaW5CZWZvcmUgPSBtYXgobmVnYXRpdmVNYXJnaW5CZWZvcmUsIC1iZWZvcmVDaGlsZE1h
cmdpbik7CisgICAgcG9zaXRpdmVNYXJnaW5CZWZvcmUgPSBzdGQ6Om1heChwb3NpdGl2ZU1hcmdp
bkJlZm9yZSwgYmVmb3JlQ2hpbGRNYXJnaW4pOworICAgIG5lZ2F0aXZlTWFyZ2luQmVmb3JlID0g
c3RkOjptYXgobmVnYXRpdmVNYXJnaW5CZWZvcmUsIC1iZWZvcmVDaGlsZE1hcmdpbik7CiAKICAg
ICBpZiAoIWNoaWxkLmlzUmVuZGVyQmxvY2tGbG93KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEw
OTIsMTQgKzEwOTAsMTQgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9ja0Zsb3c6OmVzdGltYXRlTG9n
aWNhbFRvcFBvc2l0aW9uKFJlbmRlckJveCYgY2hpbGQsIGNvbnN0IE0KICAgICAgICAgICAgIC8v
IFVzZSB0aGUgY2FjaGVkIGNvbGxhcHNlZCBtYXJnaW4gdmFsdWVzIGZyb20gYSBwcmV2aW91cyBs
YXlvdXQuIE1vc3Qgb2YgdGhlIHRpbWUgdGhleQogICAgICAgICAgICAgLy8gd2lsbCBiZSByaWdo
dC4KICAgICAgICAgICAgIE1hcmdpblZhbHVlcyBtYXJnaW5WYWx1ZXMgPSBtYXJnaW5WYWx1ZXNG
b3JDaGlsZChjaGlsZCk7Ci0gICAgICAgICAgICBwb3NpdGl2ZU1hcmdpbkJlZm9yZSA9IG1heChw
b3NpdGl2ZU1hcmdpbkJlZm9yZSwgbWFyZ2luVmFsdWVzLnBvc2l0aXZlTWFyZ2luQmVmb3JlKCkp
OwotICAgICAgICAgICAgbmVnYXRpdmVNYXJnaW5CZWZvcmUgPSBtYXgobmVnYXRpdmVNYXJnaW5C
ZWZvcmUsIG1hcmdpblZhbHVlcy5uZWdhdGl2ZU1hcmdpbkJlZm9yZSgpKTsKKyAgICAgICAgICAg
IHBvc2l0aXZlTWFyZ2luQmVmb3JlID0gc3RkOjptYXgocG9zaXRpdmVNYXJnaW5CZWZvcmUsIG1h
cmdpblZhbHVlcy5wb3NpdGl2ZU1hcmdpbkJlZm9yZSgpKTsKKyAgICAgICAgICAgIG5lZ2F0aXZl
TWFyZ2luQmVmb3JlID0gc3RkOjptYXgobmVnYXRpdmVNYXJnaW5CZWZvcmUsIG1hcmdpblZhbHVl
cy5uZWdhdGl2ZU1hcmdpbkJlZm9yZSgpKTsKICAgICAgICAgICAgIGRpc2NhcmRNYXJnaW5CZWZv
cmUgPSBtdXN0RGlzY2FyZE1hcmdpbkJlZm9yZUZvckNoaWxkKGNoaWxkKTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIENvbGxhcHNlIHRoZSByZXN1bHQgd2l0aCBvdXIgY3VycmVudCBtYXJnaW5z
LgogICAgICAgICBpZiAoIWRpc2NhcmRNYXJnaW5CZWZvcmUpCi0gICAgICAgICAgICBsb2dpY2Fs
VG9wRXN0aW1hdGUgKz0gbWF4KG1hcmdpbkluZm8ucG9zaXRpdmVNYXJnaW4oKSwgcG9zaXRpdmVN
YXJnaW5CZWZvcmUpIC0gbWF4KG1hcmdpbkluZm8ubmVnYXRpdmVNYXJnaW4oKSwgbmVnYXRpdmVN
YXJnaW5CZWZvcmUpOworICAgICAgICAgICAgbG9naWNhbFRvcEVzdGltYXRlICs9IHN0ZDo6bWF4
KG1hcmdpbkluZm8ucG9zaXRpdmVNYXJnaW4oKSwgcG9zaXRpdmVNYXJnaW5CZWZvcmUpIC0gc3Rk
OjptYXgobWFyZ2luSW5mby5uZWdhdGl2ZU1hcmdpbigpLCBuZWdhdGl2ZU1hcmdpbkJlZm9yZSk7
CiAgICAgfQogCiAgICAgLy8gQWRqdXN0IGxvZ2ljYWxUb3BFc3RpbWF0ZSBkb3duIHRvIHRoZSBu
ZXh0IHBhZ2UgaWYgdGhlIG1hcmdpbnMgYXJlIHNvIGxhcmdlIHRoYXQgd2UgZG9uJ3QgZml0IG9u
IHRoZSBjdXJyZW50CkBAIC0xMTA3LDcgKzExMDUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2Nr
Rmxvdzo6ZXN0aW1hdGVMb2dpY2FsVG9wUG9zaXRpb24oUmVuZGVyQm94JiBjaGlsZCwgY29uc3Qg
TQogICAgIExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IHZpZXcoKS5sYXlvdXRTdGF0ZSgpOwog
ICAgIGlmIChsYXlvdXRTdGF0ZS0+aXNQYWdpbmF0ZWQoKSAmJiBsYXlvdXRTdGF0ZS0+cGFnZUxv
Z2ljYWxIZWlnaHQoKSAmJiBsb2dpY2FsVG9wRXN0aW1hdGUgPiBsb2dpY2FsSGVpZ2h0KCkKICAg
ICAgICAgJiYgaGFzTmV4dFBhZ2UobG9naWNhbEhlaWdodCgpKSkKLSAgICAgICAgbG9naWNhbFRv
cEVzdGltYXRlID0gbWluKGxvZ2ljYWxUb3BFc3RpbWF0ZSwgbmV4dFBhZ2VMb2dpY2FsVG9wKGxv
Z2ljYWxIZWlnaHQoKSkpOworICAgICAgICBsb2dpY2FsVG9wRXN0aW1hdGUgPSBzdGQ6Om1pbihs
b2dpY2FsVG9wRXN0aW1hdGUsIG5leHRQYWdlTG9naWNhbFRvcChsb2dpY2FsSGVpZ2h0KCkpKTsK
IAogICAgIGxvZ2ljYWxUb3BFc3RpbWF0ZSArPSBnZXRDbGVhckRlbHRhKGNoaWxkLCBsb2dpY2Fs
VG9wRXN0aW1hdGUpOwogICAgIApAQCAtMTEzOSw3ICsxMTM3LDcgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OnNldENvbGxhcHNlZEJvdHRvbU1hcmdpbihjb25zdCBNYXJnaW5JbmZvJiBtYXJnaW5J
bmZvKQogCiAgICAgICAgIC8vIFVwZGF0ZSBvdXIgbWF4IHBvcy9uZWcgYm90dG9tIG1hcmdpbnMs
IHNpbmNlIHdlIGNvbGxhcHNlZCBvdXIgYm90dG9tIG1hcmdpbnMKICAgICAgICAgLy8gd2l0aCBv
dXIgY2hpbGRyZW4uCi0gICAgICAgIHNldE1heE1hcmdpbkFmdGVyVmFsdWVzKG1heChtYXhQb3Np
dGl2ZU1hcmdpbkFmdGVyKCksIG1hcmdpbkluZm8ucG9zaXRpdmVNYXJnaW4oKSksIG1heChtYXhO
ZWdhdGl2ZU1hcmdpbkFmdGVyKCksIG1hcmdpbkluZm8ubmVnYXRpdmVNYXJnaW4oKSkpOworICAg
ICAgICBzZXRNYXhNYXJnaW5BZnRlclZhbHVlcyhzdGQ6Om1heChtYXhQb3NpdGl2ZU1hcmdpbkFm
dGVyKCksIG1hcmdpbkluZm8ucG9zaXRpdmVNYXJnaW4oKSksIHN0ZDo6bWF4KG1heE5lZ2F0aXZl
TWFyZ2luQWZ0ZXIoKSwgbWFyZ2luSW5mby5uZWdhdGl2ZU1hcmdpbigpKSk7CiAKICAgICAgICAg
aWYgKCFtYXJnaW5JbmZvLmhhc01hcmdpbkFmdGVyUXVpcmsoKSkKICAgICAgICAgICAgIHNldEhh
c01hcmdpbkFmdGVyUXVpcmsoZmFsc2UpOwpAQCAtMTE2Niw3ICsxMTY0LDcgQEAgdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmhhbmRsZUFmdGVyU2lkZU9mQmxvY2soTGF5b3V0VW5pdCBiZWZvcmVTaWRl
LCBMYXlvdXRVbml0IGEKIAogICAgIC8vIE5lZ2F0aXZlIG1hcmdpbnMgY2FuIGNhdXNlIG91ciBo
ZWlnaHQgdG8gc2hyaW5rIGJlbG93IG91ciBtaW5pbWFsIGhlaWdodCAoYm9yZGVyL3BhZGRpbmcp
LgogICAgIC8vIElmIHRoaXMgaGFwcGVucywgZW5zdXJlIHRoYXQgdGhlIGNvbXB1dGVkIGhlaWdo
dCBpcyBpbmNyZWFzZWQgdG8gdGhlIG1pbmltYWwgaGVpZ2h0LgotICAgIHNldExvZ2ljYWxIZWln
aHQobWF4KGxvZ2ljYWxIZWlnaHQoKSwgYmVmb3JlU2lkZSArIGFmdGVyU2lkZSkpOworICAgIHNl
dExvZ2ljYWxIZWlnaHQoc3RkOjptYXgobG9naWNhbEhlaWdodCgpLCBiZWZvcmVTaWRlICsgYWZ0
ZXJTaWRlKSk7CiAKICAgICAvLyBVcGRhdGUgb3VyIGJvdHRvbSBjb2xsYXBzZWQgbWFyZ2luIGlu
Zm8uCiAgICAgc2V0Q29sbGFwc2VkQm90dG9tTWFyZ2luKG1hcmdpbkluZm8pOwpAQCAtMTQzNCw3
ICsxNDMyLDcgQEAgc3RhdGljIGlubGluZSBMYXlvdXRVbml0IGNhbGN1bGF0ZU1pbmltdW1QYWdl
SGVpZ2h0KFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSwgUm8KIHsKICAgICAvLyBXZSBtYXkgcmVx
dWlyZSBhIGNlcnRhaW4gbWluaW11bSBudW1iZXIgb2YgbGluZXMgcGVyIHBhZ2UgaW4gb3JkZXIg
dG8gc2F0aXNmeQogICAgIC8vIG9ycGhhbnMgYW5kIHdpZG93cywgYW5kIHRoYXQgbWF5IGFmZmVj
dCB0aGUgbWluaW11bSBwYWdlIGhlaWdodC4KLSAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSBtYXg8
dW5zaWduZWQ+KHJlbmRlclN0eWxlLT5oYXNBdXRvT3JwaGFucygpID8gMSA6IHJlbmRlclN0eWxl
LT5vcnBoYW5zKCksIHJlbmRlclN0eWxlLT5oYXNBdXRvV2lkb3dzKCkgPyAxIDogcmVuZGVyU3R5
bGUtPndpZG93cygpKTsKKyAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSBzdGQ6Om1heDx1bnNpZ25l
ZD4ocmVuZGVyU3R5bGUtPmhhc0F1dG9PcnBoYW5zKCkgPyAxIDogcmVuZGVyU3R5bGUtPm9ycGhh
bnMoKSwgcmVuZGVyU3R5bGUtPmhhc0F1dG9XaWRvd3MoKSA/IDEgOiByZW5kZXJTdHlsZS0+d2lk
b3dzKCkpOwogICAgIGlmIChsaW5lQ291bnQgPiAxKSB7CiAgICAgICAgIFJvb3RJbmxpbmVCb3gq
IGxpbmUgPSBsYXN0TGluZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGxpbmVD
b3VudCAmJiBsaW5lLT5wcmV2Um9vdEJveCgpOyBpKyspCkBAIC0xNDQzLDcgKzE0NDEsNyBAQCBz
dGF0aWMgaW5saW5lIExheW91dFVuaXQgY2FsY3VsYXRlTWluaW11bVBhZ2VIZWlnaHQoUmVuZGVy
U3R5bGUqIHJlbmRlclN0eWxlLCBSbwogICAgICAgICAvLyBGSVhNRTogUGFnaW5hdGluZyB1c2lu
ZyBsaW5lIG92ZXJmbG93IGlzbid0IGFsbCBmaW5lLiBTZWUgRklYTUUgaW4KICAgICAgICAgLy8g
YWRqdXN0TGluZVBvc2l0aW9uRm9yUGFnaW5hdGlvbigpIGZvciBtb3JlIGRldGFpbHMuCiAgICAg
ICAgIExheW91dFJlY3Qgb3ZlcmZsb3cgPSBsaW5lLT5sb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0
KGxpbmUtPmxpbmVUb3AoKSwgbGluZS0+bGluZUJvdHRvbSgpKTsKLSAgICAgICAgbGluZVRvcCA9
IG1pbihsaW5lLT5saW5lVG9wV2l0aExlYWRpbmcoKSwgb3ZlcmZsb3cueSgpKTsKKyAgICAgICAg
bGluZVRvcCA9IHN0ZDo6bWluKGxpbmUtPmxpbmVUb3BXaXRoTGVhZGluZygpLCBvdmVyZmxvdy55
KCkpOwogICAgIH0KICAgICByZXR1cm4gbGluZUJvdHRvbSAtIGxpbmVUb3A7CiB9CkBAIC0xNDcw
LDggKzE0NjgsOCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0TGluZVBvc2l0aW9uRm9y
UGFnaW5hdGlvbihSb290SW5saW5lQm94KiBsaW5lQm94LCBMYQogICAgIC8vIFRlY2huaWNhbGx5
IGlmIHRoZSBsb2NhdGlvbiB3ZSBtb3ZlIHRoZSBsaW5lIHRvIGhhcyBhIGRpZmZlcmVudCBsaW5l
IHdpZHRoIHRoYW4gb3VyIG9sZCBwb3NpdGlvbiwgdGhlbiB3ZSBuZWVkIHRvIGRpcnR5IHRoZQog
ICAgIC8vIGxpbmUgYW5kIGFsbCBmb2xsb3dpbmcgbGluZXMuCiAgICAgTGF5b3V0UmVjdCBsb2dp
Y2FsVmlzdWFsT3ZlcmZsb3cgPSBsaW5lQm94LT5sb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0KGxp
bmVCb3gtPmxpbmVUb3AoKSwgbGluZUJveC0+bGluZUJvdHRvbSgpKTsKLSAgICBMYXlvdXRVbml0
IGxvZ2ljYWxPZmZzZXQgPSBtaW4obGluZUJveC0+bGluZVRvcFdpdGhMZWFkaW5nKCksIGxvZ2lj
YWxWaXN1YWxPdmVyZmxvdy55KCkpOwotICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbSA9IG1h
eChsaW5lQm94LT5saW5lQm90dG9tV2l0aExlYWRpbmcoKSwgbG9naWNhbFZpc3VhbE92ZXJmbG93
Lm1heFkoKSk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0ID0gc3RkOjptaW4obGluZUJv
eC0+bGluZVRvcFdpdGhMZWFkaW5nKCksIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy55KCkpOworICAg
IExheW91dFVuaXQgbG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KGxpbmVCb3gtPmxpbmVCb3R0b21X
aXRoTGVhZGluZygpLCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cubWF4WSgpKTsKICAgICBMYXlvdXRV
bml0IGxpbmVIZWlnaHQgPSBsb2dpY2FsQm90dG9tIC0gbG9naWNhbE9mZnNldDsKICAgICB1cGRh
dGVNaW5pbXVtUGFnZUhlaWdodChsb2dpY2FsT2Zmc2V0LCBjYWxjdWxhdGVNaW5pbXVtUGFnZUhl
aWdodCgmc3R5bGUoKSwgbGluZUJveCwgbG9naWNhbE9mZnNldCwgbG9naWNhbEJvdHRvbSkpOwog
ICAgIGxvZ2ljYWxPZmZzZXQgKz0gZGVsdGE7CkBAIC0xNDk5LDE0ICsxNDk3LDE0IEBAIHZvaWQg
UmVuZGVyQmxvY2tGbG93OjphZGp1c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKFJvb3RJbmxp
bmVCb3gqIGxpbmVCb3gsIExhCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChsaW5l
SGVpZ2h0ID4gcGFnZUxvZ2ljYWxIZWlnaHQpIHsKICAgICAgICAgICAgIC8vIFNwbGl0IHRoZSB0
b3AgbWFyZ2luIGluIG9yZGVyIHRvIGF2b2lkIHNwbGl0dGluZyB0aGUgdmlzaWJsZSBwYXJ0IG9m
IHRoZSBsaW5lLgotICAgICAgICAgICAgcmVtYWluaW5nTG9naWNhbEhlaWdodCAtPSBtaW4obGlu
ZUhlaWdodCAtIHBhZ2VMb2dpY2FsSGVpZ2h0LCBtYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbFZp
c3VhbE92ZXJmbG93LnkoKSAtIGxpbmVCb3gtPmxpbmVUb3BXaXRoTGVhZGluZygpKSk7CisgICAg
ICAgICAgICByZW1haW5pbmdMb2dpY2FsSGVpZ2h0IC09IHN0ZDo6bWluKGxpbmVIZWlnaHQgLSBw
YWdlTG9naWNhbEhlaWdodCwgc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbFZpc3VhbE92
ZXJmbG93LnkoKSAtIGxpbmVCb3gtPmxpbmVUb3BXaXRoTGVhZGluZygpKSk7CiAgICAgICAgIH0K
LSAgICAgICAgTGF5b3V0VW5pdCB0b3RhbExvZ2ljYWxIZWlnaHQgPSBsaW5lSGVpZ2h0ICsgbWF4
PExheW91dFVuaXQ+KDAsIGxvZ2ljYWxPZmZzZXQpOworICAgICAgICBMYXlvdXRVbml0IHRvdGFs
TG9naWNhbEhlaWdodCA9IGxpbmVIZWlnaHQgKyBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBsb2dp
Y2FsT2Zmc2V0KTsKICAgICAgICAgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodEF0TmV3T2Zm
c2V0ID0gaGFzVW5pZm9ybVBhZ2VMb2dpY2FsSGVpZ2h0ID8gcGFnZUxvZ2ljYWxIZWlnaHQgOiBw
YWdlTG9naWNhbEhlaWdodEZvck9mZnNldChsb2dpY2FsT2Zmc2V0ICsgcmVtYWluaW5nTG9naWNh
bEhlaWdodCk7CiAgICAgICAgIHNldFBhZ2VCcmVhayhsb2dpY2FsT2Zmc2V0LCBsaW5lSGVpZ2h0
IC0gcmVtYWluaW5nTG9naWNhbEhlaWdodCk7CiAgICAgICAgIGlmICgoKGxpbmVCb3ggPT0gZmly
c3RSb290Qm94KCkgJiYgdG90YWxMb2dpY2FsSGVpZ2h0IDwgcGFnZUxvZ2ljYWxIZWlnaHRBdE5l
d09mZnNldCkgfHwgKCFzdHlsZSgpLmhhc0F1dG9PcnBoYW5zKCkgJiYgc3R5bGUoKS5vcnBoYW5z
KCkgPj0gbGluZUluZGV4KSkKICAgICAgICAgICAgICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWQo
KSAmJiAhaXNUYWJsZUNlbGwoKSkKLSAgICAgICAgICAgIHNldFBhZ2luYXRpb25TdHJ1dChyZW1h
aW5pbmdMb2dpY2FsSGVpZ2h0ICsgbWF4PExheW91dFVuaXQ+KDAsIGxvZ2ljYWxPZmZzZXQpKTsK
KyAgICAgICAgICAgIHNldFBhZ2luYXRpb25TdHJ1dChyZW1haW5pbmdMb2dpY2FsSGVpZ2h0ICsg
c3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbE9mZnNldCkpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGRlbHRhICs9IHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQ7CiAgICAgICAgICAg
ICBsaW5lQm94LT5zZXRQYWdpbmF0aW9uU3RydXQocmVtYWluaW5nTG9naWNhbEhlaWdodCk7CkBA
IC0xOTk0LDcgKzE5OTIsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6cmVtb3ZlRmxvYXRpbmdP
YmplY3QoUmVuZGVyQm94JiBmbG9hdEJveCkKICAgICAgICAgICAgICAgICAgICAgLy8gU3BlY2lh
bC1jYXNlIHplcm8tIGFuZCBsZXNzLXRoYW4temVyby1oZWlnaHQgZmxvYXRzOiB0aG9zZSBkb24n
dCB0b3VjaAogICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbGluZSB0aGF0IHRoZXkncmUgb24s
IGJ1dCBpdCBzdGlsbCBuZWVkcyB0byBiZSBkaXJ0aWVkLiBUaGlzIGlzCiAgICAgICAgICAgICAg
ICAgICAgIC8vIGFjY29tcGxpc2hlZCBieSBwcmV0ZW5kaW5nIHRoZXkgaGF2ZSBhIGhlaWdodCBv
ZiAxLgotICAgICAgICAgICAgICAgICAgICBsb2dpY2FsQm90dG9tID0gbWF4KGxvZ2ljYWxCb3R0
b20sIGxvZ2ljYWxUb3AgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgbG9naWNhbEJvdHRvbSA9
IHN0ZDo6bWF4KGxvZ2ljYWxCb3R0b20sIGxvZ2ljYWxUb3AgKyAxKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgaWYgKGZsb2F0aW5nT2JqZWN0LT5vcmlnaW5hdGluZ0xpbmUo
KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXNlbGZOZWVkc0xheW91dCgpKSB7CkBAIC0y
MDczLDcgKzIwNzEsNyBAQCBMYXlvdXRQb2ludCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVMb2dp
Y2FsTG9jYXRpb25Gb3JGbG9hdChjb25zdCBGbG9hdGluZ09iamVjdAogI2VuZGlmCiAgICAgICAg
IGxvZ2ljYWxSaWdodE9mZnNldCA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQobG9naWNh
bFRvcE9mZnNldCk7CiAKLSAgICBMYXlvdXRVbml0IGZsb2F0TG9naWNhbFdpZHRoID0gbWluKGxv
Z2ljYWxXaWR0aEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSwgbG9naWNhbFJpZ2h0T2Zmc2V0IC0g
bG9naWNhbExlZnRPZmZzZXQpOyAvLyBUaGUgd2lkdGggd2UgbG9vayBmb3IuCisgICAgTGF5b3V0
VW5pdCBmbG9hdExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKGxvZ2ljYWxXaWR0aEZvckZsb2F0KGZs
b2F0aW5nT2JqZWN0KSwgbG9naWNhbFJpZ2h0T2Zmc2V0IC0gbG9naWNhbExlZnRPZmZzZXQpOyAv
LyBUaGUgd2lkdGggd2UgbG9vayBmb3IuCiAKICAgICBMYXlvdXRVbml0IGZsb2F0TG9naWNhbExl
ZnQ7CiAKQEAgLTIwODQsMjggKzIwODIsMjggQEAgTGF5b3V0UG9pbnQgUmVuZGVyQmxvY2tGbG93
Ojpjb21wdXRlTG9naWNhbExvY2F0aW9uRm9yRmxvYXQoY29uc3QgRmxvYXRpbmdPYmplY3QKICAg
ICAgICAgTGF5b3V0VW5pdCBoZWlnaHRSZW1haW5pbmdSaWdodCA9IDE7CiAgICAgICAgIGZsb2F0
TG9naWNhbExlZnQgPSBsb2dpY2FsTGVmdE9mZnNldEZvclBvc2l0aW9uaW5nRmxvYXQobG9naWNh
bFRvcE9mZnNldCwgbG9naWNhbExlZnRPZmZzZXQsIGZhbHNlLCAmaGVpZ2h0UmVtYWluaW5nTGVm
dCk7CiAgICAgICAgIHdoaWxlIChsb2dpY2FsUmlnaHRPZmZzZXRGb3JQb3NpdGlvbmluZ0Zsb2F0
KGxvZ2ljYWxUb3BPZmZzZXQsIGxvZ2ljYWxSaWdodE9mZnNldCwgZmFsc2UsICZoZWlnaHRSZW1h
aW5pbmdSaWdodCkgLSBmbG9hdExvZ2ljYWxMZWZ0IDwgZmxvYXRMb2dpY2FsV2lkdGgpIHsKLSAg
ICAgICAgICAgIGxvZ2ljYWxUb3BPZmZzZXQgKz0gbWluKGhlaWdodFJlbWFpbmluZ0xlZnQsIGhl
aWdodFJlbWFpbmluZ1JpZ2h0KTsKKyAgICAgICAgICAgIGxvZ2ljYWxUb3BPZmZzZXQgKz0gc3Rk
OjptaW4oaGVpZ2h0UmVtYWluaW5nTGVmdCwgaGVpZ2h0UmVtYWluaW5nUmlnaHQpOwogICAgICAg
ICAgICAgZmxvYXRMb2dpY2FsTGVmdCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yUG9zaXRpb25pbmdG
bG9hdChsb2dpY2FsVG9wT2Zmc2V0LCBsb2dpY2FsTGVmdE9mZnNldCwgZmFsc2UsICZoZWlnaHRS
ZW1haW5pbmdMZWZ0KTsKICAgICAgICAgICAgIGlmIChpbnNpZGVGbG93VGhyZWFkKSB7CiAgICAg
ICAgICAgICAgICAgLy8gSGF2ZSB0byByZS1ldmFsdWF0ZSBhbGwgb2Ygb3VyIG9mZnNldHMsIHNp
bmNlIHRoZXkgbWF5IGhhdmUgY2hhbmdlZC4KICAgICAgICAgICAgICAgICBsb2dpY2FsUmlnaHRP
ZmZzZXQgPSBsb2dpY2FsUmlnaHRPZmZzZXRGb3JDb250ZW50KGxvZ2ljYWxUb3BPZmZzZXQpOyAv
LyBDb25zdGFudCBwYXJ0IG9mIHJpZ2h0IG9mZnNldC4KICAgICAgICAgICAgICAgICBsb2dpY2Fs
TGVmdE9mZnNldCA9IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudChsb2dpY2FsVG9wT2Zmc2V0
KTsgLy8gQ29uc3RhbnQgcGFydCBvZiBsZWZ0IG9mZnNldC4KLSAgICAgICAgICAgICAgICBmbG9h
dExvZ2ljYWxXaWR0aCA9IG1pbihsb2dpY2FsV2lkdGhGb3JGbG9hdChmbG9hdGluZ09iamVjdCks
IGxvZ2ljYWxSaWdodE9mZnNldCAtIGxvZ2ljYWxMZWZ0T2Zmc2V0KTsKKyAgICAgICAgICAgICAg
ICBmbG9hdExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKGxvZ2ljYWxXaWR0aEZvckZsb2F0KGZsb2F0
aW5nT2JqZWN0KSwgbG9naWNhbFJpZ2h0T2Zmc2V0IC0gbG9naWNhbExlZnRPZmZzZXQpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGZsb2F0TG9naWNhbExlZnQgPSBtYXgobG9n
aWNhbExlZnRPZmZzZXQgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbExlZnQoKSwgZmxvYXRMb2dp
Y2FsTGVmdCk7CisgICAgICAgIGZsb2F0TG9naWNhbExlZnQgPSBzdGQ6Om1heChsb2dpY2FsTGVm
dE9mZnNldCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsTGVmdCgpLCBmbG9hdExvZ2ljYWxMZWZ0
KTsKICAgICB9IGVsc2UgewogICAgICAgICBMYXlvdXRVbml0IGhlaWdodFJlbWFpbmluZ0xlZnQg
PSAxOwogICAgICAgICBMYXlvdXRVbml0IGhlaWdodFJlbWFpbmluZ1JpZ2h0ID0gMTsKICAgICAg
ICAgZmxvYXRMb2dpY2FsTGVmdCA9IGxvZ2ljYWxSaWdodE9mZnNldEZvclBvc2l0aW9uaW5nRmxv
YXQobG9naWNhbFRvcE9mZnNldCwgbG9naWNhbFJpZ2h0T2Zmc2V0LCBmYWxzZSwgJmhlaWdodFJl
bWFpbmluZ1JpZ2h0KTsKICAgICAgICAgd2hpbGUgKGZsb2F0TG9naWNhbExlZnQgLSBsb2dpY2Fs
TGVmdE9mZnNldEZvclBvc2l0aW9uaW5nRmxvYXQobG9naWNhbFRvcE9mZnNldCwgbG9naWNhbExl
ZnRPZmZzZXQsIGZhbHNlLCAmaGVpZ2h0UmVtYWluaW5nTGVmdCkgPCBmbG9hdExvZ2ljYWxXaWR0
aCkgewotICAgICAgICAgICAgbG9naWNhbFRvcE9mZnNldCArPSBtaW4oaGVpZ2h0UmVtYWluaW5n
TGVmdCwgaGVpZ2h0UmVtYWluaW5nUmlnaHQpOworICAgICAgICAgICAgbG9naWNhbFRvcE9mZnNl
dCArPSBzdGQ6Om1pbihoZWlnaHRSZW1haW5pbmdMZWZ0LCBoZWlnaHRSZW1haW5pbmdSaWdodCk7
CiAgICAgICAgICAgICBmbG9hdExvZ2ljYWxMZWZ0ID0gbG9naWNhbFJpZ2h0T2Zmc2V0Rm9yUG9z
aXRpb25pbmdGbG9hdChsb2dpY2FsVG9wT2Zmc2V0LCBsb2dpY2FsUmlnaHRPZmZzZXQsIGZhbHNl
LCAmaGVpZ2h0UmVtYWluaW5nUmlnaHQpOwogICAgICAgICAgICAgaWYgKGluc2lkZUZsb3dUaHJl
YWQpIHsKICAgICAgICAgICAgICAgICAvLyBIYXZlIHRvIHJlLWV2YWx1YXRlIGFsbCBvZiBvdXIg
b2Zmc2V0cywgc2luY2UgdGhleSBtYXkgaGF2ZSBjaGFuZ2VkLgogICAgICAgICAgICAgICAgIGxv
Z2ljYWxSaWdodE9mZnNldCA9IGxvZ2ljYWxSaWdodE9mZnNldEZvckNvbnRlbnQobG9naWNhbFRv
cE9mZnNldCk7IC8vIENvbnN0YW50IHBhcnQgb2YgcmlnaHQgb2Zmc2V0LgogICAgICAgICAgICAg
ICAgIGxvZ2ljYWxMZWZ0T2Zmc2V0ID0gbG9naWNhbExlZnRPZmZzZXRGb3JDb250ZW50KGxvZ2lj
YWxUb3BPZmZzZXQpOyAvLyBDb25zdGFudCBwYXJ0IG9mIGxlZnQgb2Zmc2V0LgotICAgICAgICAg
ICAgICAgIGZsb2F0TG9naWNhbFdpZHRoID0gbWluKGxvZ2ljYWxXaWR0aEZvckZsb2F0KGZsb2F0
aW5nT2JqZWN0KSwgbG9naWNhbFJpZ2h0T2Zmc2V0IC0gbG9naWNhbExlZnRPZmZzZXQpOworICAg
ICAgICAgICAgICAgIGZsb2F0TG9naWNhbFdpZHRoID0gc3RkOjptaW4obG9naWNhbFdpZHRoRm9y
RmxvYXQoZmxvYXRpbmdPYmplY3QpLCBsb2dpY2FsUmlnaHRPZmZzZXQgLSBsb2dpY2FsTGVmdE9m
ZnNldCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLy8gVXNlIHRoZSBvcmln
aW5hbCB3aWR0aCBvZiB0aGUgZmxvYXQgaGVyZSwgc2luY2UgdGhlIGxvY2FsIHZhcmlhYmxlCkBA
IC0yMTUwLDcgKzIxNDgsNyBAQCBib29sIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25OZXdGbG9h
dHMoKQogICAgIAogICAgIC8vIFRoZSBmbG9hdCBjYW5ub3Qgc3RhcnQgYWJvdmUgdGhlIHRvcCBw
b3NpdGlvbiBvZiB0aGUgbGFzdCBwb3NpdGlvbmVkIGZsb2F0LgogICAgIGlmIChsYXN0UGxhY2Vk
RmxvYXRpbmdPYmplY3QpCi0gICAgICAgIGxvZ2ljYWxUb3AgPSBtYXgobG9naWNhbFRvcEZvckZs
b2F0KGxhc3RQbGFjZWRGbG9hdGluZ09iamVjdCksIGxvZ2ljYWxUb3ApOworICAgICAgICBsb2dp
Y2FsVG9wID0gc3RkOjptYXgobG9naWNhbFRvcEZvckZsb2F0KGxhc3RQbGFjZWRGbG9hdGluZ09i
amVjdCksIGxvZ2ljYWxUb3ApOwogCiAgICAgYXV0byBlbmQgPSBmbG9hdGluZ09iamVjdFNldC5l
bmQoKTsKICAgICAvLyBOb3cgd2FsayB0aHJvdWdoIHRoZSBzZXQgb2YgdW5wb3NpdGlvbmVkIGZs
b2F0cyBhbmQgcGxhY2UgdGhlbS4KQEAgLTIxNjgsOSArMjE2Niw5IEBAIGJvb2wgUmVuZGVyQmxv
Y2tGbG93Ojpwb3NpdGlvbk5ld0Zsb2F0cygpCiAgICAgICAgIExheW91dFJlY3Qgb2xkUmVjdCA9
IGNoaWxkQm94LmZyYW1lUmVjdCgpOwogCiAgICAgICAgIGlmIChjaGlsZEJveC5zdHlsZSgpLmNs
ZWFyKCkgJiBDTEVGVCkKLSAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBtYXgobG93ZXN0RmxvYXRM
b2dpY2FsQm90dG9tKEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQpLCBsb2dpY2FsVG9wKTsKKyAg
ICAgICAgICAgIGxvZ2ljYWxUb3AgPSBzdGQ6Om1heChsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20o
RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdCksIGxvZ2ljYWxUb3ApOwogICAgICAgICBpZiAoY2hp
bGRCb3guc3R5bGUoKS5jbGVhcigpICYgQ1JJR0hUKQotICAgICAgICAgICAgbG9naWNhbFRvcCA9
IG1heChsb3dlc3RGbG9hdExvZ2ljYWxCb3R0b20oRmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQp
LCBsb2dpY2FsVG9wKTsKKyAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBzdGQ6Om1heChsb3dlc3RG
bG9hdExvZ2ljYWxCb3R0b20oRmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQpLCBsb2dpY2FsVG9w
KTsKIAogICAgICAgICBMYXlvdXRQb2ludCBmbG9hdExvZ2ljYWxMb2NhdGlvbiA9IGNvbXB1dGVM
b2dpY2FsTG9jYXRpb25Gb3JGbG9hdChmbG9hdGluZ09iamVjdCwgbG9naWNhbFRvcCk7CiAKQEAg
LTIzMDIsNyArMjMwMCw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2tGbG93Ojpsb3dlc3RGbG9h
dExvZ2ljYWxCb3R0b20oRmxvYXRpbmdPYmplY3Q6OlR5cGUgZmxvYXRUCiAgICAgZm9yIChhdXRv
IGl0ID0gZmxvYXRpbmdPYmplY3RTZXQuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAg
ICAgIEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCA9IGl0LT5nZXQoKTsKICAgICAgICAg
aWYgKGZsb2F0aW5nT2JqZWN0LT5pc1BsYWNlZCgpICYmIGZsb2F0aW5nT2JqZWN0LT50eXBlKCkg
JiBmbG9hdFR5cGUpCi0gICAgICAgICAgICBsb3dlc3RGbG9hdEJvdHRvbSA9IG1heChsb3dlc3RG
bG9hdEJvdHRvbSwgbG9naWNhbEJvdHRvbUZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSk7CisgICAg
ICAgICAgICBsb3dlc3RGbG9hdEJvdHRvbSA9IHN0ZDo6bWF4KGxvd2VzdEZsb2F0Qm90dG9tLCBs
b2dpY2FsQm90dG9tRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpKTsKICAgICB9CiAgICAgcmV0dXJu
IGxvd2VzdEZsb2F0Qm90dG9tOwogfQpAQCAtMjMyMiw5ICsyMzIwLDkgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJCbG9ja0Zsb3c6OmFkZE92ZXJoYW5naW5nRmxvYXRzKFJlbmRlckJsb2NrRmxvdyYgY2hp
bGQsIGJvb2wgbWEKICAgICBhdXRvIGNoaWxkRW5kID0gY2hpbGQubV9mbG9hdGluZ09iamVjdHMt
PnNldCgpLmVuZCgpOwogICAgIGZvciAoYXV0byBjaGlsZEl0ID0gY2hpbGQubV9mbG9hdGluZ09i
amVjdHMtPnNldCgpLmJlZ2luKCk7IGNoaWxkSXQgIT0gY2hpbGRFbmQ7ICsrY2hpbGRJdCkgewog
ICAgICAgICBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QgPSBjaGlsZEl0LT5nZXQoKTsK
LSAgICAgICAgTGF5b3V0VW5pdCBmbG9hdExvZ2ljYWxCb3R0b20gPSBtaW4obG9naWNhbEJvdHRv
bUZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSwgTGF5b3V0VW5pdDo6bWF4KCkgLSBjaGlsZExvZ2lj
YWxUb3ApOworICAgICAgICBMYXlvdXRVbml0IGZsb2F0TG9naWNhbEJvdHRvbSA9IHN0ZDo6bWlu
KGxvZ2ljYWxCb3R0b21Gb3JGbG9hdChmbG9hdGluZ09iamVjdCksIExheW91dFVuaXQ6Om1heCgp
IC0gY2hpbGRMb2dpY2FsVG9wKTsKICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tID0g
Y2hpbGRMb2dpY2FsVG9wICsgZmxvYXRMb2dpY2FsQm90dG9tOwotICAgICAgICBsb3dlc3RGbG9h
dExvZ2ljYWxCb3R0b20gPSBtYXgobG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tLCBsb2dpY2FsQm90
dG9tKTsKKyAgICAgICAgbG93ZXN0RmxvYXRMb2dpY2FsQm90dG9tID0gc3RkOjptYXgobG93ZXN0
RmxvYXRMb2dpY2FsQm90dG9tLCBsb2dpY2FsQm90dG9tKTsKIAogICAgICAgICBpZiAobG9naWNh
bEJvdHRvbSA+IGxvZ2ljYWxIZWlnaHQoKSkgewogICAgICAgICAgICAgLy8gSWYgdGhlIG9iamVj
dCBpcyBub3QgaW4gdGhlIGxpc3QsIHdlIGFkZCBpdCBub3cuCkBAIC0yNTAzLDcgKzI1MDEsNyBA
QCBMYXlvdXRVbml0IFJlbmRlckJsb2NrRmxvdzo6Z2V0Q2xlYXJEZWx0YShSZW5kZXJCb3gmIGNo
aWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxUbwogICAgIH0KIAogICAgIC8vIFdlIGFsc28gY2xlYXIg
ZmxvYXRzIGlmIHdlIGFyZSB0b28gYmlnIHRvIHNpdCBvbiB0aGUgc2FtZSBsaW5lIGFzIGEgZmxv
YXQgKGFuZCB3aXNoIHRvIGF2b2lkIGZsb2F0cyBieSBkZWZhdWx0KS4KLSAgICBMYXlvdXRVbml0
IHJlc3VsdCA9IGNsZWFyU2V0ID8gbWF4PExheW91dFVuaXQ+KDAsIGxvZ2ljYWxCb3R0b20gLSBs
b2dpY2FsVG9wKSA6IExheW91dFVuaXQoKTsKKyAgICBMYXlvdXRVbml0IHJlc3VsdCA9IGNsZWFy
U2V0ID8gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbEJvdHRvbSAtIGxvZ2ljYWxUb3Ap
IDogTGF5b3V0VW5pdCgpOwogICAgIGlmICghcmVzdWx0ICYmIGNoaWxkLmF2b2lkc0Zsb2F0cygp
KSB7CiAgICAgICAgIExheW91dFVuaXQgbmV3TG9naWNhbFRvcCA9IGxvZ2ljYWxUb3A7CiAgICAg
ICAgIHdoaWxlICh0cnVlKSB7CkBAIC0yNjAxLDkgKzI1OTksOSBAQCB2b2lkIFJlbmRlckJsb2Nr
Rmxvdzo6YWRqdXN0Rm9yQm9yZGVyRml0KExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCYgbGVmdCwg
TGF5b3V0VQogCiAgICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFJvb3RCb3goKTsgYm94OyBi
b3ggPSBib3gtPm5leHRSb290Qm94KCkpIHsKICAgICAgICAgICAgIGlmIChib3gtPmZpcnN0Q2hp
bGQoKSkKLSAgICAgICAgICAgICAgICBsZWZ0ID0gbWluKGxlZnQsIHggKyBzdGF0aWNfY2FzdDxM
YXlvdXRVbml0Pihib3gtPmZpcnN0Q2hpbGQoKS0+eCgpKSk7CisgICAgICAgICAgICAgICAgbGVm
dCA9IHN0ZDo6bWluKGxlZnQsIHggKyBzdGF0aWNfY2FzdDxMYXlvdXRVbml0Pihib3gtPmZpcnN0
Q2hpbGQoKS0+eCgpKSk7CiAgICAgICAgICAgICBpZiAoYm94LT5sYXN0Q2hpbGQoKSkKLSAgICAg
ICAgICAgICAgICByaWdodCA9IG1heChyaWdodCwgeCArIHN0YXRpY19jYXN0PExheW91dFVuaXQ+
KGNlaWxmKGJveC0+bGFzdENoaWxkKCktPmxvZ2ljYWxSaWdodCgpKSkpOworICAgICAgICAgICAg
ICAgIHJpZ2h0ID0gc3RkOjptYXgocmlnaHQsIHggKyBzdGF0aWNfY2FzdDxMYXlvdXRVbml0Pihj
ZWlsZihib3gtPmxhc3RDaGlsZCgpLT5sb2dpY2FsUmlnaHQoKSkpKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CiAgICAgICAgIGZvciAoUmVuZGVyQm94KiBvYmogPSBmaXJzdENoaWxkQm94KCk7
IG9iajsgb2JqID0gb2JqLT5uZXh0U2libGluZ0JveCgpKSB7CkBAIC0yNjEyLDggKzI2MTAsOCBA
QCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0Rm9yQm9yZGVyRml0KExheW91dFVuaXQgeCwg
TGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VQogICAgICAgICAgICAgICAgICAgICB0b1JlbmRlckJs
b2NrRmxvdyhvYmopLT5hZGp1c3RGb3JCb3JkZXJGaXQoeCArIG9iai0+eCgpLCBsZWZ0LCByaWdo
dCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAob2JqLT5zdHlsZSgpLnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhIHJlcGxhY2VkIGVs
ZW1lbnQgb3Igc29tZSBraW5kIG9mIG5vbi1ibG9jay1mbG93IG9iamVjdC4KLSAgICAgICAgICAg
ICAgICAgICAgbGVmdCA9IG1pbihsZWZ0LCB4ICsgb2JqLT54KCkpOwotICAgICAgICAgICAgICAg
ICAgICByaWdodCA9IG1heChyaWdodCwgeCArIG9iai0+eCgpICsgb2JqLT53aWR0aCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbGVmdCA9IHN0ZDo6bWluKGxlZnQsIHggKyBvYmotPngoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gc3RkOjptYXgocmlnaHQsIHggKyBvYmotPngoKSAr
IG9iai0+d2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yNjI4LDggKzI2MjYsOCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRqdXN0Rm9y
Qm9yZGVyRml0KExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VQogICAgICAg
ICAgICAgaWYgKHItPnNob3VsZFBhaW50KCkpIHsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IGZsb2F0TGVmdCA9IHhQb3NpdGlvbkZvckZsb2F0SW5jbHVkaW5nTWFyZ2luKHIpIC0gci0+cmVu
ZGVyZXIoKS54KCk7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBmbG9hdFJpZ2h0ID0gZmxv
YXRMZWZ0ICsgci0+cmVuZGVyZXIoKS53aWR0aCgpOwotICAgICAgICAgICAgICAgIGxlZnQgPSBt
aW4obGVmdCwgZmxvYXRMZWZ0KTsKLSAgICAgICAgICAgICAgICByaWdodCA9IG1heChyaWdodCwg
ZmxvYXRSaWdodCk7CisgICAgICAgICAgICAgICAgbGVmdCA9IHN0ZDo6bWluKGxlZnQsIGZsb2F0
TGVmdCk7CisgICAgICAgICAgICAgICAgcmlnaHQgPSBzdGQ6Om1heChyaWdodCwgZmxvYXRSaWdo
dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjQ5LDggKzI2NDcsOCBA
QCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Zml0Qm9yZGVyVG9MaW5lc0lmTmVlZGVkKCkKICAgICAv
LyBDbGFtcCB0byBvdXIgZXhpc3RpbmcgZWRnZXMuIFdlIGNhbiBuZXZlciBncm93LiBXZSBvbmx5
IHNocmluay4KICAgICBMYXlvdXRVbml0IGxlZnRFZGdlID0gYm9yZGVyTGVmdCgpICsgcGFkZGlu
Z0xlZnQoKTsKICAgICBMYXlvdXRVbml0IHJpZ2h0RWRnZSA9IGxlZnRFZGdlICsgb2xkV2lkdGg7
Ci0gICAgbGVmdCA9IG1pbihyaWdodEVkZ2UsIG1heChsZWZ0RWRnZSwgbGVmdCkpOwotICAgIHJp
Z2h0ID0gbWF4KGxlZnRFZGdlLCBtaW4ocmlnaHRFZGdlLCByaWdodCkpOworICAgIGxlZnQgPSBz
dGQ6Om1pbihyaWdodEVkZ2UsIHN0ZDo6bWF4KGxlZnRFZGdlLCBsZWZ0KSk7CisgICAgcmlnaHQg
PSBzdGQ6Om1heChsZWZ0RWRnZSwgc3RkOjptaW4ocmlnaHRFZGdlLCByaWdodCkpOwogICAgIAog
ICAgIExheW91dFVuaXQgbmV3Q29udGVudFdpZHRoID0gcmlnaHQgLSBsZWZ0OwogICAgIGlmIChu
ZXdDb250ZW50V2lkdGggPT0gb2xkV2lkdGgpCkBAIC0yODE0LDcgKzI4MTIsNyBAQCB2b2lkIFJl
bmRlckJsb2NrRmxvdzo6dXBkYXRlTG9naWNhbEhlaWdodCgpCiAgICAgUmVuZGVyQmxvY2s6OnVw
ZGF0ZUxvZ2ljYWxIZWlnaHQoKTsKIAogICAgIGlmIChyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgp
KQotICAgICAgICByZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpLT5zZXRMb2dpY2FsSGVpZ2h0KG1h
eDxMYXlvdXRVbml0PigwLCBsb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNh
bEhlaWdodCgpKSk7CisgICAgICAgIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCktPnNldExvZ2lj
YWxIZWlnaHQoc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbEhlaWdodCgpIC0gYm9yZGVy
QW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSkpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
c2V0UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIGZsb3dG
cmFnbWVudCkKQEAgLTMwMjksNyArMzAyNyw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9j
a0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAK
ICAgICBpZiAoY2xvc2VzdEJveCkgewogICAgICAgICBpZiAobW92ZUNhcmV0VG9Cb3VuZGFyeSkg
ewotICAgICAgICAgICAgTGF5b3V0VW5pdCBmaXJzdFJvb3RCb3hXaXRoQ2hpbGRyZW5Ub3AgPSBt
aW48TGF5b3V0VW5pdD4oZmlyc3RSb290Qm94V2l0aENoaWxkcmVuLT5zZWxlY3Rpb25Ub3AoKSwg
Zmlyc3RSb290Qm94V2l0aENoaWxkcmVuLT5sb2dpY2FsVG9wKCkpOworICAgICAgICAgICAgTGF5
b3V0VW5pdCBmaXJzdFJvb3RCb3hXaXRoQ2hpbGRyZW5Ub3AgPSBzdGQ6Om1pbjxMYXlvdXRVbml0
PihmaXJzdFJvb3RCb3hXaXRoQ2hpbGRyZW4tPnNlbGVjdGlvblRvcCgpLCBmaXJzdFJvb3RCb3hX
aXRoQ2hpbGRyZW4tPmxvZ2ljYWxUb3AoKSk7CiAgICAgICAgICAgICBpZiAocG9pbnRJbkxvZ2lj
YWxDb250ZW50cy55KCkgPCBmaXJzdFJvb3RCb3hXaXRoQ2hpbGRyZW5Ub3AKICAgICAgICAgICAg
ICAgICB8fCAoYmxvY2tzQXJlRmxpcHBlZCAmJiBwb2ludEluTG9naWNhbENvbnRlbnRzLnkoKSA9
PSBmaXJzdFJvb3RCb3hXaXRoQ2hpbGRyZW5Ub3ApKSB7CiAgICAgICAgICAgICAgICAgSW5saW5l
Qm94KiBib3ggPSBmaXJzdFJvb3RCb3hXaXRoQ2hpbGRyZW4tPmZpcnN0TGVhZkNoaWxkKCk7CkBA
IC0zMDcyLDggKzMwNzAsOCBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6YWRkRm9jdXNSaW5nUmVj
dHNGb3JJbmxpbmVDaGlsZHJlbihWZWN0b3I8SW50UmVjdD4mIHJlY3RzLAogICAgIGVuc3VyZUxp
bmVCb3hlcygpOwogCiAgICAgZm9yIChSb290SW5saW5lQm94KiBjdXJyID0gZmlyc3RSb290Qm94
KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0Um9vdEJveCgpKSB7Ci0gICAgICAgIExheW91dFVu
aXQgdG9wID0gbWF4PExheW91dFVuaXQ+KGN1cnItPmxpbmVUb3AoKSwgY3Vyci0+dG9wKCkpOwot
ICAgICAgICBMYXlvdXRVbml0IGJvdHRvbSA9IG1pbjxMYXlvdXRVbml0PihjdXJyLT5saW5lQm90
dG9tKCksIGN1cnItPnRvcCgpICsgY3Vyci0+aGVpZ2h0KCkpOworICAgICAgICBMYXlvdXRVbml0
IHRvcCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KGN1cnItPmxpbmVUb3AoKSwgY3Vyci0+dG9wKCkp
OworICAgICAgICBMYXlvdXRVbml0IGJvdHRvbSA9IHN0ZDo6bWluPExheW91dFVuaXQ+KGN1cnIt
PmxpbmVCb3R0b20oKSwgY3Vyci0+dG9wKCkgKyBjdXJyLT5oZWlnaHQoKSk7CiAgICAgICAgIExh
eW91dFJlY3QgcmVjdChhZGRpdGlvbmFsT2Zmc2V0LngoKSArIGN1cnItPngoKSwgYWRkaXRpb25h
bE9mZnNldC55KCkgKyB0b3AsIGN1cnItPndpZHRoKCksIGJvdHRvbSAtIHRvcCk7CiAgICAgICAg
IGlmICghcmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZWN0cy5hcHBlbmQocGl4ZWxTbmFw
cGVkSW50UmVjdChyZWN0KSk7CkBAIC0zMTE0LDEzICszMTEyLDEzIEBAIGJvb2wgUmVuZGVyQmxv
Y2tGbG93OjpyZWxheW91dEZvclBhZ2luYXRpb24oYm9vbCBoYXNTcGVjaWZpZWRQYWdlTG9naWNh
bEhlaWdodCwKICAgICAgICAgICAgIC8vIFRoZSBmb3JjZWQgcGFnZSBicmVha3MgYXJlIGluIGNv
bnRyb2wgb2YgdGhlIGJhbGFuY2luZy4gIEp1c3Qgc2V0IHRoZSBjb2x1bW4gaGVpZ2h0IHRvIHRo
ZQogICAgICAgICAgICAgLy8gbWF4aW11bSBwYWdlIGJyZWFrIGRpc3RhbmNlLgogICAgICAgICAg
ICAgaWYgKCFwYWdlTG9naWNhbEhlaWdodCkgewotICAgICAgICAgICAgICAgIExheW91dFVuaXQg
ZGlzdGFuY2VCZXR3ZWVuQnJlYWtzID0gbWF4PExheW91dFVuaXQ+KGNvbEluZm8tPm1heGltdW1E
aXN0YW5jZUJldHdlZW5Gb3JjZWRCcmVha3MoKSwKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IGRpc3RhbmNlQmV0d2VlbkJyZWFrcyA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KGNvbEluZm8tPm1h
eGltdW1EaXN0YW5jZUJldHdlZW5Gb3JjZWRCcmVha3MoKSwKICAgICAgICAgICAgICAgICAgICAg
dmlldygpLmxheW91dFN0YXRlKCktPnBhZ2VMb2dpY2FsT2Zmc2V0KHRoaXMsIGJvcmRlckFuZFBh
ZGRpbmdCZWZvcmUoKSArIGxheW91dE92ZXJmbG93TG9naWNhbEJvdHRvbSkgLSBjb2xJbmZvLT5m
b3JjZWRCcmVha09mZnNldCgpKTsKLSAgICAgICAgICAgICAgICBjb2x1bW5IZWlnaHQgPSBtYXgo
Y29sSW5mby0+bWluaW11bUNvbHVtbkhlaWdodCgpLCBkaXN0YW5jZUJldHdlZW5CcmVha3MpOwor
ICAgICAgICAgICAgICAgIGNvbHVtbkhlaWdodCA9IHN0ZDo6bWF4KGNvbEluZm8tPm1pbmltdW1D
b2x1bW5IZWlnaHQoKSwgZGlzdGFuY2VCZXR3ZWVuQnJlYWtzKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIGlmIChsYXlvdXRPdmVyZmxvd0xvZ2ljYWxCb3R0b20gPiBib3VuZGVkTXVs
dGlwbHkocGFnZUxvZ2ljYWxIZWlnaHQsIGRlc2lyZWRDb2x1bW5Db3VudCkpIHsKICAgICAgICAg
ICAgIC8vIE5vdyB0aGF0IHdlIGtub3cgdGhlIGludHJpbnNpYyBoZWlnaHQgb2YgdGhlIGNvbHVt
bnMsIHdlIGhhdmUgdG8gcmViYWxhbmNlIHRoZW0uCi0gICAgICAgICAgICBjb2x1bW5IZWlnaHQg
PSBtYXg8TGF5b3V0VW5pdD4oY29sSW5mby0+bWluaW11bUNvbHVtbkhlaWdodCgpLCBjZWlsZigo
ZmxvYXQpbGF5b3V0T3ZlcmZsb3dMb2dpY2FsQm90dG9tIC8gZGVzaXJlZENvbHVtbkNvdW50KSk7
CisgICAgICAgICAgICBjb2x1bW5IZWlnaHQgPSBzdGQ6Om1heDxMYXlvdXRVbml0Pihjb2xJbmZv
LT5taW5pbXVtQ29sdW1uSGVpZ2h0KCksIGNlaWxmKChmbG9hdClsYXlvdXRPdmVyZmxvd0xvZ2lj
YWxCb3R0b20gLyBkZXNpcmVkQ29sdW1uQ291bnQpKTsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgaWYgKGNvbHVtbkhlaWdodCAmJiBjb2x1bW5IZWlnaHQgIT0gcGFnZUxvZ2ljYWxIZWln
aHQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xp
bmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAKaW5kZXggM2JkMDJiZmU4ODYzMWY1YzJhNGM5YjIzNGUyODNlYzE4MWIyMzExMC4u
NmIzYWQyOGE4YTE0YzQwZTkwZWZkM2Y4ZDM5OTdlOWZkMzhkNWIwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTYzLDcg
KzYzLDYgQEAKICNpbmNsdWRlICJTVkdSb290SW5saW5lQm94LmgiCiAjZW5kaWYKIAotdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5p
Y29kZTsKIApAQCAtNTQ0LDcgKzU0Myw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0
aEZvckxlZnRBbGlnbmVkQmxvY2soYm9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uLCBCCiAgICAg
Ly8gSW4gcGFydGljdWxhciB3aXRoIFJUTCBibG9ja3MsIHdpZGUgbGluZXMgc2hvdWxkIHN0aWxs
IHNwaWxsIG91dCB0byB0aGUgbGVmdC4KICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikg
ewogICAgICAgICBpZiAodG90YWxMb2dpY2FsV2lkdGggPiBhdmFpbGFibGVMb2dpY2FsV2lkdGgg
JiYgdHJhaWxpbmdTcGFjZVJ1bikKLSAgICAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPmJveCgp
LT5zZXRMb2dpY2FsV2lkdGgobWF4PGZsb2F0PigwLCB0cmFpbGluZ1NwYWNlUnVuLT5ib3goKS0+
bG9naWNhbFdpZHRoKCkgLSB0b3RhbExvZ2ljYWxXaWR0aCArIGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCkpOworICAgICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+Ym94KCktPnNldExvZ2ljYWxXaWR0
aChzdGQ6Om1heDxmbG9hdD4oMCwgdHJhaWxpbmdTcGFjZVJ1bi0+Ym94KCktPmxvZ2ljYWxXaWR0
aCgpIC0gdG90YWxMb2dpY2FsV2lkdGggKyBhdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTcwLDcgKzU2OSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0
ZUxvZ2ljYWxXaWR0aEZvclJpZ2h0QWxpZ25lZEJsb2NrKGJvb2wgaXNMZWZ0VG9SaWdodERpcmVj
dGlvbiwKICAgICB9CiAKICAgICBpZiAodG90YWxMb2dpY2FsV2lkdGggPiBhdmFpbGFibGVMb2dp
Y2FsV2lkdGggJiYgdHJhaWxpbmdTcGFjZVJ1bikgewotICAgICAgICB0cmFpbGluZ1NwYWNlUnVu
LT5ib3goKS0+c2V0TG9naWNhbFdpZHRoKG1heDxmbG9hdD4oMCwgdHJhaWxpbmdTcGFjZVJ1bi0+
Ym94KCktPmxvZ2ljYWxXaWR0aCgpIC0gdG90YWxMb2dpY2FsV2lkdGggKyBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgpKTsKKyAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+Ym94KCktPnNldExvZ2ljYWxX
aWR0aChzdGQ6Om1heDxmbG9hdD4oMCwgdHJhaWxpbmdTcGFjZVJ1bi0+Ym94KCktPmxvZ2ljYWxX
aWR0aCgpIC0gdG90YWxMb2dpY2FsV2lkdGggKyBhdmFpbGFibGVMb2dpY2FsV2lkdGgpKTsKICAg
ICAgICAgdG90YWxMb2dpY2FsV2lkdGggLT0gdHJhaWxpbmdTcGFjZVJ1bi0+Ym94KCktPmxvZ2lj
YWxXaWR0aCgpOwogICAgIH0gZWxzZQogICAgICAgICBsb2dpY2FsTGVmdCArPSBhdmFpbGFibGVM
b2dpY2FsV2lkdGggLSB0b3RhbExvZ2ljYWxXaWR0aDsKQEAgLTU4MSwxMSArNTgwLDExIEBAIHN0
YXRpYyB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckNlbnRlckFsaWduZWRCbG9jayhib29sIGlz
TGVmdFRvUmlnaHREaXJlY3Rpb24sCiAgICAgZmxvYXQgdHJhaWxpbmdTcGFjZVdpZHRoID0gMDsK
ICAgICBpZiAodHJhaWxpbmdTcGFjZVJ1bikgewogICAgICAgICB0b3RhbExvZ2ljYWxXaWR0aCAt
PSB0cmFpbGluZ1NwYWNlUnVuLT5ib3goKS0+bG9naWNhbFdpZHRoKCk7Ci0gICAgICAgIHRyYWls
aW5nU3BhY2VXaWR0aCA9IG1pbih0cmFpbGluZ1NwYWNlUnVuLT5ib3goKS0+bG9naWNhbFdpZHRo
KCksIChhdmFpbGFibGVMb2dpY2FsV2lkdGggLSB0b3RhbExvZ2ljYWxXaWR0aCArIDEpIC8gMik7
Ci0gICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPmJveCgpLT5zZXRMb2dpY2FsV2lkdGgobWF4PGZs
b2F0PigwLCB0cmFpbGluZ1NwYWNlV2lkdGgpKTsKKyAgICAgICAgdHJhaWxpbmdTcGFjZVdpZHRo
ID0gc3RkOjptaW4odHJhaWxpbmdTcGFjZVJ1bi0+Ym94KCktPmxvZ2ljYWxXaWR0aCgpLCAoYXZh
aWxhYmxlTG9naWNhbFdpZHRoIC0gdG90YWxMb2dpY2FsV2lkdGggKyAxKSAvIDIpOworICAgICAg
ICB0cmFpbGluZ1NwYWNlUnVuLT5ib3goKS0+c2V0TG9naWNhbFdpZHRoKHN0ZDo6bWF4PGZsb2F0
PigwLCB0cmFpbGluZ1NwYWNlV2lkdGgpKTsKICAgICB9CiAgICAgaWYgKGlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24pCi0gICAgICAgIGxvZ2ljYWxMZWZ0ICs9IG1heDxmbG9hdD4oKGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCAtIHRvdGFsTG9naWNhbFdpZHRoKSAvIDIsIDApOworICAgICAgICBsb2dpY2Fs
TGVmdCArPSBzdGQ6Om1heDxmbG9hdD4oKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIHRvdGFsTG9n
aWNhbFdpZHRoKSAvIDIsIDApOwogICAgIGVsc2UKICAgICAgICAgbG9naWNhbExlZnQgKz0gdG90
YWxMb2dpY2FsV2lkdGggPiBhdmFpbGFibGVMb2dpY2FsV2lkdGggPyAoYXZhaWxhYmxlTG9naWNh
bFdpZHRoIC0gdG90YWxMb2dpY2FsV2lkdGgpIDogKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIHRv
dGFsTG9naWNhbFdpZHRoKSAvIDIgLSB0cmFpbGluZ1NwYWNlV2lkdGg7CiB9CkBAIC03MDYsMTQg
KzcwNSwxNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TG9naWNhbFdpZHRoRm9yVGV4dFJ1bihS
b290SW5saW5lQm94KiBsaW5lQm94LCBCaWRpUnVuKiBydQogICAgIHJ1bi0+Ym94KCktPnNldExv
Z2ljYWxXaWR0aChtZWFzdXJlZFdpZHRoICsgaHlwaGVuV2lkdGgpOwogICAgIGlmICghZmFsbGJh
Y2tGb250cy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHJ1bi0+Ym94KCktPmJlaGF2ZXNM
aWtlVGV4dCgpKTsKLSAgICAgICAgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXA6Oml0
ZXJhdG9yIGl0ID0gdGV4dEJveERhdGFNYXAuYWRkKHRvSW5saW5lVGV4dEJveChydW4tPmJveCgp
KSwgbWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+KCksIEdseXBoT3ZlcmZs
b3coKSkpLml0ZXJhdG9yOworICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250c01h
cDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQodG9JbmxpbmVUZXh0Qm94KHJ1bi0+
Ym94KCkpLCBzdGQ6Om1ha2VfcGFpcihWZWN0b3I8Y29uc3QgU2ltcGxlRm9udERhdGEqPigpLCBH
bHlwaE92ZXJmbG93KCkpKS5pdGVyYXRvcjsKICAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5maXJz
dC5pc0VtcHR5KCkpOwogICAgICAgICBjb3B5VG9WZWN0b3IoZmFsbGJhY2tGb250cywgaXQtPnZh
bHVlLmZpcnN0KTsKICAgICAgICAgcnVuLT5ib3goKS0+cGFyZW50KCktPmNsZWFyRGVzY2VuZGFu
dHNIYXZlU2FtZUxpbmVIZWlnaHRBbmRCYXNlbGluZSgpOwogICAgIH0KICAgICBpZiAoKGdseXBo
T3ZlcmZsb3cudG9wIHx8IGdseXBoT3ZlcmZsb3cuYm90dG9tIHx8IGdseXBoT3ZlcmZsb3cubGVm
dCB8fCBnbHlwaE92ZXJmbG93LnJpZ2h0KSkgewogICAgICAgICBBU1NFUlQocnVuLT5ib3goKS0+
YmVoYXZlc0xpa2VUZXh0KCkpOwotICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tGb250
c01hcDo6aXRlcmF0b3IgaXQgPSB0ZXh0Qm94RGF0YU1hcC5hZGQodG9JbmxpbmVUZXh0Qm94KHJ1
bi0+Ym94KCkpLCBtYWtlX3BhaXIoVmVjdG9yPGNvbnN0IFNpbXBsZUZvbnREYXRhKj4oKSwgR2x5
cGhPdmVyZmxvdygpKSkuaXRlcmF0b3I7CisgICAgICAgIEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFj
a0ZvbnRzTWFwOjppdGVyYXRvciBpdCA9IHRleHRCb3hEYXRhTWFwLmFkZCh0b0lubGluZVRleHRC
b3gocnVuLT5ib3goKSksIHN0ZDo6bWFrZV9wYWlyKFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0
YSo+KCksIEdseXBoT3ZlcmZsb3coKSkpLml0ZXJhdG9yOwogICAgICAgICBpdC0+dmFsdWUuc2Vj
b25kID0gZ2x5cGhPdmVyZmxvdzsKICAgICAgICAgcnVuLT5ib3goKS0+Y2xlYXJLbm93blRvSGF2
ZU5vT3ZlcmZsb3coKTsKICAgICB9CkBAIC04NDUsOCArODQ0LDggQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKFJvb3RJbmxpbmVC
b3gqIGxpbmUKICAgICBpZiAoc2hhcGVJbnNpZGVJbmZvICYmIHNoYXBlSW5zaWRlSW5mby0+aGFz
U2VnbWVudHMoKSkgewogICAgICAgICBCaWRpUnVuKiBzZWdtZW50U3RhcnQgPSBmaXJzdFJ1bjsK
ICAgICAgICAgY29uc3QgU2VnbWVudExpc3QmIHNlZ21lbnRzID0gc2hhcGVJbnNpZGVJbmZvLT5z
ZWdtZW50cygpOwotICAgICAgICBmbG9hdCBsb2dpY2FsTGVmdCA9IG1heDxmbG9hdD4ocm91bmRU
b0ludChzZWdtZW50c1swXS5sb2dpY2FsTGVmdCksIGxpbmVMb2dpY2FsTGVmdCk7Ci0gICAgICAg
IGZsb2F0IGxvZ2ljYWxSaWdodCA9IG1pbjxmbG9hdD4oZmxvb3JUb0ludChzZWdtZW50c1swXS5s
b2dpY2FsUmlnaHQpLCBsaW5lTG9naWNhbFJpZ2h0KTsKKyAgICAgICAgZmxvYXQgbG9naWNhbExl
ZnQgPSBzdGQ6Om1heDxmbG9hdD4ocm91bmRUb0ludChzZWdtZW50c1swXS5sb2dpY2FsTGVmdCks
IGxpbmVMb2dpY2FsTGVmdCk7CisgICAgICAgIGZsb2F0IGxvZ2ljYWxSaWdodCA9IHN0ZDo6bWlu
PGZsb2F0PihmbG9vclRvSW50KHNlZ21lbnRzWzBdLmxvZ2ljYWxSaWdodCksIGxpbmVMb2dpY2Fs
UmlnaHQpOwogICAgICAgICBmbG9hdCBzdGFydExvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnQ7CiAg
ICAgICAgIGZsb2F0IGVuZExvZ2ljYWxSaWdodCA9IGxvZ2ljYWxMZWZ0OwogICAgICAgICBmbG9h
dCBtaW5Mb2dpY2FsTGVmdCA9IGxvZ2ljYWxMZWZ0OwpAQCAtODU0LDggKzg1Myw4IEBAIHZvaWQg
UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShS
b290SW5saW5lQm94KiBsaW5lCiAgICAgICAgIGxpbmVCb3gtPmJlZ2luUGxhY2luZ0JveFJhbmdl
c0luSW5saW5lRGlyZWN0aW9uKGxvZ2ljYWxMZWZ0KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzZWdtZW50cy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgaWYgKGkpIHsKLSAg
ICAgICAgICAgICAgICBsb2dpY2FsTGVmdCA9IG1heDxmbG9hdD4ocm91bmRUb0ludChzZWdtZW50
c1tpXS5sb2dpY2FsTGVmdCksIGxpbmVMb2dpY2FsTGVmdCk7Ci0gICAgICAgICAgICAgICAgbG9n
aWNhbFJpZ2h0ID0gbWluPGZsb2F0PihmbG9vclRvSW50KHNlZ21lbnRzW2ldLmxvZ2ljYWxSaWdo
dCksIGxpbmVMb2dpY2FsUmlnaHQpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ID0gc3Rk
OjptYXg8ZmxvYXQ+KHJvdW5kVG9JbnQoc2VnbWVudHNbaV0ubG9naWNhbExlZnQpLCBsaW5lTG9n
aWNhbExlZnQpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxSaWdodCA9IHN0ZDo6bWluPGZsb2F0
PihmbG9vclRvSW50KHNlZ21lbnRzW2ldLmxvZ2ljYWxSaWdodCksIGxpbmVMb2dpY2FsUmlnaHQp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXZhaWxhYmxlTG9naWNhbFdpZHRoID0gbG9n
aWNhbFJpZ2h0IC0gbG9naWNhbExlZnQ7CiAgICAgICAgICAgICBCaWRpUnVuKiBuZXdTZWdtZW50
U3RhcnQgPSBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9yU2VnbWVudChsaW5lQm94
LCBsaW5lSW5mbywgdGV4dEFsaWduLCBsb2dpY2FsTGVmdCwgYXZhaWxhYmxlTG9naWNhbFdpZHRo
LCBzZWdtZW50U3RhcnQsIHRyYWlsaW5nU3BhY2VSdW4sIHRleHRCb3hEYXRhTWFwLCB2ZXJ0aWNh
bFBvc2l0aW9uQ2FjaGUsIHdvcmRNZWFzdXJlbWVudHMpOwpAQCAtMTczNyw3ICsxNzM2LDcgQEAg
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKExpbmVMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIEkKICAgICAgICAgICAgIGlmIChudW1MaW5lc0F2YWlsYWJs
ZSA8PSAwKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgaW50IG51bUxp
bmVzVG9UYWtlID0gbWluKG51bUxpbmVzQXZhaWxhYmxlLCBudW1MaW5lc05lZWRlZCk7CisgICAg
ICAgICAgICBpbnQgbnVtTGluZXNUb1Rha2UgPSBzdGQ6Om1pbihudW1MaW5lc0F2YWlsYWJsZSwg
bnVtTGluZXNOZWVkZWQpOwogICAgICAgICAgICAgLy8gV2luZCBiYWNrIGZyb20gb3VyIGZpcnN0
IHdpZG93ZWQgbGluZS4KICAgICAgICAgICAgIGxpbmVCb3ggPSBjdXJyZW50Rmlyc3RMaW5lT2ZO
ZXdQYWdlOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1MaW5lc1RvVGFrZTsg
KytpKQpAQCAtMTkzMSw3ICsxOTMwLDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExp
bmVCb3hlcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlcGFpbnQKICAgICAv
LyBFeHBhbmQgdGhlIGxhc3QgbGluZSB0byBhY2NvbW1vZGF0ZSBSdWJ5IGFuZCBlbXBoYXNpcyBt
YXJrcy4KICAgICBpbnQgbGFzdExpbmVBbm5vdGF0aW9uc0FkanVzdG1lbnQgPSAwOwogICAgIGlm
IChsYXN0Um9vdEJveCgpKSB7Ci0gICAgICAgIExheW91dFVuaXQgbG93ZXN0QWxsb3dlZFBvc2l0
aW9uID0gbWF4KGxhc3RSb290Qm94KCktPmxpbmVCb3R0b20oKSwgbG9naWNhbEhlaWdodCgpICsg
cGFkZGluZ0FmdGVyKCkpOworICAgICAgICBMYXlvdXRVbml0IGxvd2VzdEFsbG93ZWRQb3NpdGlv
biA9IHN0ZDo6bWF4KGxhc3RSb290Qm94KCktPmxpbmVCb3R0b20oKSwgbG9naWNhbEhlaWdodCgp
ICsgcGFkZGluZ0FmdGVyKCkpOwogICAgICAgICBpZiAoIXN0eWxlKCkuaXNGbGlwcGVkTGluZXNX
cml0aW5nTW9kZSgpKQogICAgICAgICAgICAgbGFzdExpbmVBbm5vdGF0aW9uc0FkanVzdG1lbnQg
PSBsYXN0Um9vdEJveCgpLT5jb21wdXRlVW5kZXJBbm5vdGF0aW9uQWRqdXN0bWVudChsb3dlc3RB
bGxvd2VkUG9zaXRpb24pOwogICAgICAgICBlbHNlCkBAIC0xOTY4LDggKzE5NjcsOCBAQCB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6Y2hlY2tGbG9hdHNJbkNsZWFuTGluZShSb290SW5saW5lQm94KiBs
aW5lLCBWZWN0b3I8RmxvYXRXaQogCiAgICAgICAgIGlmIChmbG9hdHNbZmxvYXRJbmRleF0ucmVj
dC5zaXplKCkgIT0gbmV3U2l6ZSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBmbG9hdFRvcCA9
IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBmbG9hdHNbZmxvYXRJbmRleF0ucmVjdC55KCkg
OiBmbG9hdHNbZmxvYXRJbmRleF0ucmVjdC54KCk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IGZs
b2F0SGVpZ2h0ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1heChmbG9hdHNbZmxvYXRJ
bmRleF0ucmVjdC5oZWlnaHQoKSwgbmV3U2l6ZS5oZWlnaHQoKSkgOiBtYXgoZmxvYXRzW2Zsb2F0
SW5kZXhdLnJlY3Qud2lkdGgoKSwgbmV3U2l6ZS53aWR0aCgpKTsKLSAgICAgICAgICAgIGZsb2F0
SGVpZ2h0ID0gbWluKGZsb2F0SGVpZ2h0LCBMYXlvdXRVbml0OjptYXgoKSAtIGZsb2F0VG9wKTsK
KyAgICAgICAgICAgIExheW91dFVuaXQgZmxvYXRIZWlnaHQgPSBpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gc3RkOjptYXgoZmxvYXRzW2Zsb2F0SW5kZXhdLnJlY3QuaGVpZ2h0KCksIG5ld1Np
emUuaGVpZ2h0KCkpIDogc3RkOjptYXgoZmxvYXRzW2Zsb2F0SW5kZXhdLnJlY3Qud2lkdGgoKSwg
bmV3U2l6ZS53aWR0aCgpKTsKKyAgICAgICAgICAgIGZsb2F0SGVpZ2h0ID0gc3RkOjptaW4oZmxv
YXRIZWlnaHQsIExheW91dFVuaXQ6Om1heCgpIC0gZmxvYXRUb3ApOwogICAgICAgICAgICAgbGlu
ZS0+bWFya0RpcnR5KCk7CiAgICAgICAgICAgICBtYXJrTGluZXNEaXJ0eUluQmxvY2tSYW5nZShs
aW5lLT5saW5lQm90dG9tV2l0aExlYWRpbmcoKSwgZmxvYXRUb3AgKyBmbG9hdEhlaWdodCwgbGlu
ZSk7CiAgICAgICAgICAgICBmbG9hdHNbZmxvYXRJbmRleF0ucmVjdC5zZXRTaXplKG5ld1NpemUp
OwpAQCAtMjE1OSw3ICsyMTU4LDcgQEAgYm9vbCBSZW5kZXJCbG9ja0Zsb3c6OmNoZWNrUGFnaW5h
dGlvbkFuZEZsb2F0c0F0RW5kTGluZShMaW5lTGF5b3V0U3RhdGUmIGxheW91dFMKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCiAgICAgLy8gU2VlIGlmIGFueSBmbG9hdHMgZW5kIGluIHRoZSBy
YW5nZSBhbG9uZyB3aGljaCB3ZSB3YW50IHRvIHNoaWZ0IHRoZSBsaW5lcyB2ZXJ0aWNhbGx5Lgot
ICAgIExheW91dFVuaXQgbG9naWNhbFRvcCA9IG1pbihsb2dpY2FsSGVpZ2h0KCksIGxheW91dFN0
YXRlLmVuZExpbmVMb2dpY2FsVG9wKCkpOworICAgIExheW91dFVuaXQgbG9naWNhbFRvcCA9IHN0
ZDo6bWluKGxvZ2ljYWxIZWlnaHQoKSwgbGF5b3V0U3RhdGUuZW5kTGluZUxvZ2ljYWxUb3AoKSk7
CiAKICAgICBSb290SW5saW5lQm94KiBsYXN0TGluZSA9IGxheW91dFN0YXRlLmVuZExpbmUoKTsK
ICAgICB3aGlsZSAoUm9vdElubGluZUJveCogbmV4dExpbmUgPSBsYXN0TGluZS0+bmV4dFJvb3RC
b3goKSkKQEAgLTI0NTIsNyArMjQ1MSw3IEBAIHN0YXRpYyB2b2lkIHRyeUh5cGhlbmF0aW5nKFJl
bmRlclRleHQqIHRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEF0b21pY1N0cmluCiAgICAg
aWYgKHByZWZpeExlbmd0aCA8IG1pbmltdW1QcmVmaXhMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHByZWZpeExlbmd0aCA9IGxhc3RIeXBoZW5Mb2NhdGlvbih0ZXh0LT5jaGFyYWN0ZXJz
KCkgKyBsYXN0U3BhY2UsIHBvcyAtIGxhc3RTcGFjZSwgbWluKHByZWZpeExlbmd0aCwgcG9zIC0g
bGFzdFNwYWNlIC0gbWluaW11bVN1ZmZpeExlbmd0aCkgKyAxLCBsb2NhbGVJZGVudGlmaWVyKTsK
KyAgICBwcmVmaXhMZW5ndGggPSBsYXN0SHlwaGVuTG9jYXRpb24odGV4dC0+Y2hhcmFjdGVycygp
ICsgbGFzdFNwYWNlLCBwb3MgLSBsYXN0U3BhY2UsIHN0ZDo6bWluKHByZWZpeExlbmd0aCwgcG9z
IC0gbGFzdFNwYWNlIC0gbWluaW11bVN1ZmZpeExlbmd0aCkgKyAxLCBsb2NhbGVJZGVudGlmaWVy
KTsKICAgICBpZiAoIXByZWZpeExlbmd0aCB8fCBwcmVmaXhMZW5ndGggPCBtaW5pbXVtUHJlZml4
TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKaW5kZXggMTc5YWFjMzdiZjZmMGQyNmFjZjU4Yjg1MTUyYjAyNzg0OTY1YjA3ZC4uN2Q0
YmNiYTliZjEwNzkwM2Q3MWI2MTQxM2Q0ZGZkNmQyNTBiOGQ0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTYyLDggKzYyLDYgQEAKICNpbmNsdWRlICJSZW5kZXJM
YXllckNvbXBvc2l0b3IuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC01MjEsOCAr
NTE5LDggQEAgaW50IFJlbmRlckJveDo6c2Nyb2xsV2lkdGgoKSBjb25zdAogICAgIC8vIEZvciBv
YmplY3RzIHdpdGggdmlzaWJsZSBvdmVyZmxvdywgdGhpcyBtYXRjaGVzIElFLgogICAgIC8vIEZJ
WE1FOiBOZWVkIHRvIHdvcmsgcmlnaHQgd2l0aCB3cml0aW5nIG1vZGVzLgogICAgIGlmIChzdHls
ZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHNuYXBTaXplVG9Q
aXhlbChtYXgoY2xpZW50V2lkdGgoKSwgbGF5b3V0T3ZlcmZsb3dSZWN0KCkubWF4WCgpIC0gYm9y
ZGVyTGVmdCgpKSwgeCgpICsgY2xpZW50TGVmdCgpKTsKLSAgICByZXR1cm4gY2xpZW50V2lkdGgo
KSAtIG1pbjxMYXlvdXRVbml0PigwLCBsYXlvdXRPdmVyZmxvd1JlY3QoKS54KCkgLSBib3JkZXJM
ZWZ0KCkpOworICAgICAgICByZXR1cm4gc25hcFNpemVUb1BpeGVsKHN0ZDo6bWF4KGNsaWVudFdp
ZHRoKCksIGxheW91dE92ZXJmbG93UmVjdCgpLm1heFgoKSAtIGJvcmRlckxlZnQoKSksIHgoKSAr
IGNsaWVudExlZnQoKSk7CisgICAgcmV0dXJuIGNsaWVudFdpZHRoKCkgLSBzdGQ6Om1pbjxMYXlv
dXRVbml0PigwLCBsYXlvdXRPdmVyZmxvd1JlY3QoKS54KCkgLSBib3JkZXJMZWZ0KCkpOwogfQog
CiBpbnQgUmVuZGVyQm94OjpzY3JvbGxIZWlnaHQoKSBjb25zdApAQCAtNTMxLDcgKzUyOSw3IEBA
IGludCBSZW5kZXJCb3g6OnNjcm9sbEhlaWdodCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBsYXll
cigpLT5zY3JvbGxIZWlnaHQoKTsKICAgICAvLyBGb3Igb2JqZWN0cyB3aXRoIHZpc2libGUgb3Zl
cmZsb3csIHRoaXMgbWF0Y2hlcyBJRS4KICAgICAvLyBGSVhNRTogTmVlZCB0byB3b3JrIHJpZ2h0
IHdpdGggd3JpdGluZyBtb2Rlcy4KLSAgICByZXR1cm4gc25hcFNpemVUb1BpeGVsKG1heChjbGll
bnRIZWlnaHQoKSwgbGF5b3V0T3ZlcmZsb3dSZWN0KCkubWF4WSgpIC0gYm9yZGVyVG9wKCkpLCB5
KCkgKyBjbGllbnRUb3AoKSk7CisgICAgcmV0dXJuIHNuYXBTaXplVG9QaXhlbChzdGQ6Om1heChj
bGllbnRIZWlnaHQoKSwgbGF5b3V0T3ZlcmZsb3dSZWN0KCkubWF4WSgpIC0gYm9yZGVyVG9wKCkp
LCB5KCkgKyBjbGllbnRUb3AoKSk7CiB9CiAKIGludCBSZW5kZXJCb3g6OnNjcm9sbExlZnQoKSBj
b25zdApAQCAtNTc3LDggKzU3NSw4IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5M
b2dpY2FsV2lkdGhJblJlZ2lvbkJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhbFdpCiB7CiAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwogICAgIGlmICghc3R5bGVU
b1VzZS5sb2dpY2FsTWF4V2lkdGgoKS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBsb2dpY2FsV2lk
dGggPSBtaW4obG9naWNhbFdpZHRoLCBjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb25Vc2luZyhN
YXhTaXplLCBzdHlsZVRvVXNlLmxvZ2ljYWxNYXhXaWR0aCgpLCBhdmFpbGFibGVXaWR0aCwgY2Is
IHJlZ2lvbikpOwotICAgIHJldHVybiBtYXgobG9naWNhbFdpZHRoLCBjb21wdXRlTG9naWNhbFdp
ZHRoSW5SZWdpb25Vc2luZyhNaW5TaXplLCBzdHlsZVRvVXNlLmxvZ2ljYWxNaW5XaWR0aCgpLCBh
dmFpbGFibGVXaWR0aCwgY2IsIHJlZ2lvbikpOworICAgICAgICBsb2dpY2FsV2lkdGggPSBzdGQ6
Om1pbihsb2dpY2FsV2lkdGgsIGNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvblVzaW5nKE1heFNp
emUsIHN0eWxlVG9Vc2UubG9naWNhbE1heFdpZHRoKCksIGF2YWlsYWJsZVdpZHRoLCBjYiwgcmVn
aW9uKSk7CisgICAgcmV0dXJuIHN0ZDo6bWF4KGxvZ2ljYWxXaWR0aCwgY29tcHV0ZUxvZ2ljYWxX
aWR0aEluUmVnaW9uVXNpbmcoTWluU2l6ZSwgc3R5bGVUb1VzZS5sb2dpY2FsTWluV2lkdGgoKSwg
YXZhaWxhYmxlV2lkdGgsIGNiLCByZWdpb24pKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6
OmNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQp
IGNvbnN0CkBAIC01ODcsOSArNTg1LDkgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFp
bkxvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIGMKICAgICBp
ZiAoIXN0eWxlVG9Vc2UubG9naWNhbE1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkpIHsKICAgICAg
ICAgTGF5b3V0VW5pdCBtYXhIID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZVRvVXNl
LmxvZ2ljYWxNYXhIZWlnaHQoKSk7CiAgICAgICAgIGlmIChtYXhIICE9IC0xKQotICAgICAgICAg
ICAgbG9naWNhbEhlaWdodCA9IG1pbihsb2dpY2FsSGVpZ2h0LCBtYXhIKTsKKyAgICAgICAgICAg
IGxvZ2ljYWxIZWlnaHQgPSBzdGQ6Om1pbihsb2dpY2FsSGVpZ2h0LCBtYXhIKTsKICAgICB9Ci0g
ICAgcmV0dXJuIG1heChsb2dpY2FsSGVpZ2h0LCBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKHN0
eWxlVG9Vc2UubG9naWNhbE1pbkhlaWdodCgpKSk7CisgICAgcmV0dXJuIHN0ZDo6bWF4KGxvZ2lj
YWxIZWlnaHQsIGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGVUb1VzZS5sb2dpY2FsTWlu
SGVpZ2h0KCkpKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnN0cmFpbkNvbnRlbnRC
b3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KSBjb25zdApA
QCAtNTk4LDkgKzU5Niw5IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb25zdHJhaW5Db250ZW50
Qm94TG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQgbG9naWNhCiAgICAgaWYgKCFzdHls
ZVRvVXNlLmxvZ2ljYWxNYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIExheW91
dFVuaXQgbWF4SCA9IGNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChzdHlsZVRvVXNlLmxvZ2lj
YWxNYXhIZWlnaHQoKSk7CiAgICAgICAgIGlmIChtYXhIICE9IC0xKQotICAgICAgICAgICAgbG9n
aWNhbEhlaWdodCA9IG1pbihsb2dpY2FsSGVpZ2h0LCBtYXhIKTsKKyAgICAgICAgICAgIGxvZ2lj
YWxIZWlnaHQgPSBzdGQ6Om1pbihsb2dpY2FsSGVpZ2h0LCBtYXhIKTsKICAgICB9Ci0gICAgcmV0
dXJuIG1heChsb2dpY2FsSGVpZ2h0LCBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoc3R5bGVU
b1VzZS5sb2dpY2FsTWluSGVpZ2h0KCkpKTsKKyAgICByZXR1cm4gc3RkOjptYXgobG9naWNhbEhl
aWdodCwgY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KHN0eWxlVG9Vc2UubG9naWNhbE1pbkhl
aWdodCgpKSk7CiB9CiAKIEludFJlY3QgUmVuZGVyQm94OjphYnNvbHV0ZUNvbnRlbnRCb3goKSBj
b25zdApAQCAtMTA1Nyw3ICsxMDU1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmFkanVzdEJv
cmRlckJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhMYXlvdXRVbml0IHdpZHRoKQogICAgIExh
eW91dFVuaXQgYm9yZGVyc1BsdXNQYWRkaW5nID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0
aCgpOwogICAgIGlmIChzdHlsZSgpLmJveFNpemluZygpID09IENPTlRFTlRfQk9YKQogICAgICAg
ICByZXR1cm4gd2lkdGggKyBib3JkZXJzUGx1c1BhZGRpbmc7Ci0gICAgcmV0dXJuIG1heCh3aWR0
aCwgYm9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICByZXR1cm4gc3RkOjptYXgod2lkdGgsIGJvcmRl
cnNQbHVzUGFkZGluZyk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94OjphZGp1c3RCb3JkZXJC
b3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKExheW91dFVuaXQgaGVpZ2h0KSBjb25zdApAQCAt
MTA2NSwyMSArMTA2MywyMSBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6YWRqdXN0Qm9yZGVyQm94
TG9naWNhbEhlaWdodEZvckJveFNpemluZyhMYXlvdXRVbml0IGhlaWdodAogICAgIExheW91dFVu
aXQgYm9yZGVyc1BsdXNQYWRkaW5nID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKTsK
ICAgICBpZiAoc3R5bGUoKS5ib3hTaXppbmcoKSA9PSBDT05URU5UX0JPWCkKICAgICAgICAgcmV0
dXJuIGhlaWdodCArIGJvcmRlcnNQbHVzUGFkZGluZzsKLSAgICByZXR1cm4gbWF4KGhlaWdodCwg
Ym9yZGVyc1BsdXNQYWRkaW5nKTsKKyAgICByZXR1cm4gc3RkOjptYXgoaGVpZ2h0LCBib3JkZXJz
UGx1c1BhZGRpbmcpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveDo6YWRqdXN0Q29udGVudEJv
eExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhMYXlvdXRVbml0IHdpZHRoKSBjb25zdAogewogICAg
IGlmIChzdHlsZSgpLmJveFNpemluZygpID09IEJPUkRFUl9CT1gpCiAgICAgICAgIHdpZHRoIC09
IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKLSAgICByZXR1cm4gbWF4PExheW91dFVu
aXQ+KDAsIHdpZHRoKTsKKyAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgd2lkdGgp
OwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJveDo6YWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWln
aHRGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCBoZWlnaHQpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxl
KCkuYm94U2l6aW5nKCkgPT0gQk9SREVSX0JPWCkKICAgICAgICAgaGVpZ2h0IC09IGJvcmRlckFu
ZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgcmV0dXJuIG1heDxMYXlvdXRVbml0PigwLCBo
ZWlnaHQpOworICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBoZWlnaHQpOwogfQog
CiAvLyBIaXQgVGVzdGluZwpAQCAtMTU0OSw4ICsxNTQ3LDggQEAgYm9vbCBSZW5kZXJCb3g6OnJl
cGFpbnRMYXllclJlY3RzRm9ySW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBGaWxs
TGF5ZXIKIAogICAgICAgICAgICAgICAgICAgICByZW5kZXJlclJlY3QgPSBMYXlvdXRSZWN0KC1s
YXllclJlbmRlcmVyLT5tYXJnaW5MZWZ0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAtbGF5
ZXJSZW5kZXJlci0+bWFyZ2luVG9wKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXgobGF5
ZXJSZW5kZXJlci0+d2lkdGgoKSArIGxheWVyUmVuZGVyZXItPm1hcmdpbldpZHRoKCkgKyBsYXll
clJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyBsYXllclJlbmRlcmVyLT5ib3JkZXJSaWdodCgpLCBy
dyksCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXgobGF5ZXJSZW5kZXJlci0+aGVpZ2h0KCkg
KyBsYXllclJlbmRlcmVyLT5tYXJnaW5IZWlnaHQoKSArIGxheWVyUmVuZGVyZXItPmJvcmRlclRv
cCgpICsgbGF5ZXJSZW5kZXJlci0+Ym9yZGVyQm90dG9tKCksIHJoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om1heChsYXllclJlbmRlcmVyLT53aWR0aCgpICsgbGF5ZXJSZW5kZXJl
ci0+bWFyZ2luV2lkdGgoKSArIGxheWVyUmVuZGVyZXItPmJvcmRlckxlZnQoKSArIGxheWVyUmVu
ZGVyZXItPmJvcmRlclJpZ2h0KCksIHJ3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bWF4KGxheWVyUmVuZGVyZXItPmhlaWdodCgpICsgbGF5ZXJSZW5kZXJlci0+bWFyZ2luSGVpZ2h0
KCkgKyBsYXllclJlbmRlcmVyLT5ib3JkZXJUb3AoKSArIGxheWVyUmVuZGVyZXItPmJvcmRlckJv
dHRvbSgpLCByaCkpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgIGxheWVyUmVuZGVyZXIgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICByZW5kZXJlclJl
Y3QgPSBib3JkZXJCb3hSZWN0KCk7CkBAIC0xNjg4LDcgKzE2ODYsNyBAQCBMYXlvdXRVbml0IFJl
bmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxk
TWFyZ2luU3RhcgogICAgIExheW91dFVuaXQgbG9naWNhbFRvcFBvc2l0aW9uID0gbG9naWNhbFRv
cCgpOwogICAgIGlmIChyZWdpb24pIHsKICAgICAgICAgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9n
aWNhbFRvcE9mUmVnaW9uID0gcmVnaW9uID8gcmVnaW9uLT5sb2dpY2FsVG9wRm9yRmxvd1RocmVh
ZENvbnRlbnQoKSAtIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSA6IExheW91dFVu
aXQoKTsKLSAgICAgICAgbG9naWNhbFRvcFBvc2l0aW9uID0gbWF4KGxvZ2ljYWxUb3BQb3NpdGlv
biwgbG9naWNhbFRvcFBvc2l0aW9uICsgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJlZ2lvbik7Cisg
ICAgICAgIGxvZ2ljYWxUb3BQb3NpdGlvbiA9IHN0ZDo6bWF4KGxvZ2ljYWxUb3BQb3NpdGlvbiwg
bG9naWNhbFRvcFBvc2l0aW9uICsgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZlJlZ2lvbik7CiAgICAg
ICAgIGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiA9IGNiLT5jbGFtcFRvU3RhcnRBbmRFbmRSZWdpb25z
KHJlZ2lvbik7CiAgICAgfQogCkBAIC0xNzUzLDcgKzE3NTEsNyBAQCBMYXlvdXRVbml0IFJlbmRl
ckJveDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudEluUmVnaW9uKFJlbmRl
clJlZ2lvbgogICAgIFJlbmRlckJveFJlZ2lvbkluZm8qIGJveEluZm8gPSBjYi0+cmVuZGVyQm94
UmVnaW9uSW5mbyhjb250YWluaW5nQmxvY2tSZWdpb24pOwogICAgIGlmICghYm94SW5mbykKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gbWF4PExheW91dFVuaXQ+KDAsIHJlc3Vs
dCAtIChjYi0+bG9naWNhbFdpZHRoKCkgLSBib3hJbmZvLT5sb2dpY2FsV2lkdGgoKSkpOworICAg
IHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCByZXN1bHQgLSAoY2ItPmxvZ2ljYWxXaWR0
aCgpIC0gYm94SW5mby0+bG9naWNhbFdpZHRoKCkpKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJC
b3g6OmNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZUxpbmVXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lv
biogcmVnaW9uKSBjb25zdApAQCAtMTc2Myw3ICsxNzYxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJC
b3g6OmNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZUxpbmVXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lv
biogcmUKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BQb3NpdGlvbiA9IGxvZ2ljYWxUb3AoKTsK
ICAgICBpZiAocmVnaW9uKSB7CiAgICAgICAgIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZlJlZ2lvbiA9IHJlZ2lvbiA/IHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250
ZW50KCkgLSBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgOiBMYXlvdXRVbml0KCk7
Ci0gICAgICAgIGxvZ2ljYWxUb3BQb3NpdGlvbiA9IG1heChsb2dpY2FsVG9wUG9zaXRpb24sIGxv
Z2ljYWxUb3BQb3NpdGlvbiArIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24pOworICAgICAg
ICBsb2dpY2FsVG9wUG9zaXRpb24gPSBzdGQ6Om1heChsb2dpY2FsVG9wUG9zaXRpb24sIGxvZ2lj
YWxUb3BQb3NpdGlvbiArIG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZSZWdpb24pOwogICAgICAgICBj
b250YWluaW5nQmxvY2tSZWdpb24gPSBjYi0+Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhyZWdp
b24pOwogICAgIH0KICAgICByZXR1cm4gY2ItPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aEZvckxpbmVJ
blJlZ2lvbihsb2dpY2FsVG9wUG9zaXRpb24sIGZhbHNlLCBjb250YWluaW5nQmxvY2tSZWdpb24s
IGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoSW5jbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpKTsKQEAg
LTE3ODUsNyArMTc4Myw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjpwZXJwZW5kaWN1bGFyQ29u
dGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodCgpIGNvbnN0CiAgICAgaWYgKCFsb2dpY2FsSGVpZ2h0
TGVuZ3RoLmlzRml4ZWQoKSkgewogICAgICAgICBMYXlvdXRVbml0IGZpbGxGYWxsYmFja0V4dGVu
dCA9IGNvbnRhaW5pbmdCbG9ja1N0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB2aWV3
KCkuZnJhbWVWaWV3KCkudmlzaWJsZUhlaWdodCgpIDogdmlldygpLmZyYW1lVmlldygpLnZpc2li
bGVXaWR0aCgpOwogICAgICAgICBMYXlvdXRVbml0IGZpbGxBdmFpbGFibGVFeHRlbnQgPSBjb250
YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChFeGNsdWRlTWFyZ2luQm9yZGVy
UGFkZGluZyk7Ci0gICAgICAgIHJldHVybiBtaW4oZmlsbEF2YWlsYWJsZUV4dGVudCwgZmlsbEZh
bGxiYWNrRXh0ZW50KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGZpbGxBdmFpbGFibGVFeHRl
bnQsIGZpbGxGYWxsYmFja0V4dGVudCk7CiAgICAgfQogCiAgICAgLy8gVXNlIHRoZSBjb250ZW50
IGJveCBsb2dpY2FsIGhlaWdodCBhcyBzcGVjaWZpZWQgYnkgdGhlIHN0eWxlLgpAQCAtMjE5MCw3
ICsyMTg4LDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbihM
b2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGUKICAgICBMZW5ndGggbG9naWNhbFdp
ZHRoTGVuZ3RoID0gdHJlYXRBc1JlcGxhY2VkID8gTGVuZ3RoKGNvbXB1dGVSZXBsYWNlZExvZ2lj
YWxXaWR0aCgpLCBGaXhlZCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxXaWR0aCgpOwogCiAgICAgUmVu
ZGVyQmxvY2sqIGNiID0gY29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgTGF5b3V0VW5pdCBjb250YWlu
ZXJMb2dpY2FsV2lkdGggPSBtYXg8TGF5b3V0VW5pdD4oMCwgY29udGFpbmluZ0Jsb2NrTG9naWNh
bFdpZHRoRm9yQ29udGVudEluUmVnaW9uKHJlZ2lvbikpOworICAgIExheW91dFVuaXQgY29udGFp
bmVyTG9naWNhbFdpZHRoID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY29udGFpbmluZ0Jsb2Nr
TG9naWNhbFdpZHRoRm9yQ29udGVudEluUmVnaW9uKHJlZ2lvbikpOwogICAgIGJvb2wgaGFzUGVy
cGVuZGljdWxhckNvbnRhaW5pbmdCbG9jayA9IGNiLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgp
ICE9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiAgICAgCiAgICAgaWYgKGlzSW5saW5lKCkg
JiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCkpIHsKQEAgLTIxOTgsNyArMjE5Niw3IEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oTG9naWNhbEV4dGVu
dENvbXB1dGVkVmFsdWVzJiBjb21wdXRlCiAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lu
cy5tX3N0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UubWFyZ2luU3RhcnQo
KSwgY29udGFpbmVyTG9naWNhbFdpZHRoKTsKICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9tYXJn
aW5zLm1fZW5kID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlVG9Vc2UubWFyZ2luRW5kKCks
IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGlmICh0cmVhdEFzUmVwbGFjZWQpCi0g
ICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IG1heDxMYXlvdXRVbml0PihmbG9h
dFZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aExlbmd0aCwgMCkgKyBib3JkZXJBbmRQYWRkaW5n
TG9naWNhbFdpZHRoKCksIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAgICAg
IGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oZmxvYXRWYWx1
ZUZvckxlbmd0aChsb2dpY2FsV2lkdGhMZW5ndGgsIDApICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2lj
YWxXaWR0aCgpLCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTIyNzAsNyArMjI2OCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21w
dXRlSW50cmluc2ljTG9naWNhbFdpZHRoVXNpbmcoTGVuZ3RoIGxvZ2ljYWxXaWR0aExlbmd0CiAg
ICAgaWYgKGxvZ2ljYWxXaWR0aExlbmd0aC50eXBlKCkgPT0gRml0Q29udGVudCkgewogICAgICAg
ICBtaW5Mb2dpY2FsV2lkdGggKz0gYm9yZGVyQW5kUGFkZGluZzsKICAgICAgICAgbWF4TG9naWNh
bFdpZHRoICs9IGJvcmRlckFuZFBhZGRpbmc7Ci0gICAgICAgIHJldHVybiBtYXgobWluTG9naWNh
bFdpZHRoLCBtaW4obWF4TG9naWNhbFdpZHRoLCBmaWxsQXZhaWxhYmxlTWVhc3VyZShhdmFpbGFi
bGVMb2dpY2FsV2lkdGgpKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChtaW5Mb2dpY2FsV2lk
dGgsIHN0ZDo6bWluKG1heExvZ2ljYWxXaWR0aCwgZmlsbEF2YWlsYWJsZU1lYXN1cmUoYXZhaWxh
YmxlTG9naWNhbFdpZHRoKSkpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMjI5MywxMCArMjI5MSwxMCBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2lj
YWxXaWR0aEluUmVnaW9uVXNpbmcoU2l6ZVR5cGUgd2lkdGhUeXBlLCBMZW5ndAogICAgIExheW91
dFVuaXQgbG9naWNhbFdpZHRoUmVzdWx0ID0gZmlsbEF2YWlsYWJsZU1lYXN1cmUoYXZhaWxhYmxl
TG9naWNhbFdpZHRoLCBtYXJnaW5TdGFydCwgbWFyZ2luRW5kKTsKIAogICAgIGlmIChzaHJpbmtU
b0F2b2lkRmxvYXRzKCkgJiYgY2ItPmNvbnRhaW5zRmxvYXRzKCkpCi0gICAgICAgIGxvZ2ljYWxX
aWR0aFJlc3VsdCA9IG1pbihsb2dpY2FsV2lkdGhSZXN1bHQsIHNocmlua0xvZ2ljYWxXaWR0aFRv
QXZvaWRGbG9hdHMobWFyZ2luU3RhcnQsIG1hcmdpbkVuZCwgY2IsIHJlZ2lvbikpOyAgICAgICAg
CisgICAgICAgIGxvZ2ljYWxXaWR0aFJlc3VsdCA9IHN0ZDo6bWluKGxvZ2ljYWxXaWR0aFJlc3Vs
dCwgc2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhtYXJnaW5TdGFydCwgbWFyZ2luRW5k
LCBjYiwgcmVnaW9uKSk7CiAKICAgICBpZiAod2lkdGhUeXBlID09IE1haW5PclByZWZlcnJlZFNp
emUgJiYgc2l6ZXNMb2dpY2FsV2lkdGhUb0ZpdENvbnRlbnQod2lkdGhUeXBlKSkKLSAgICAgICAg
cmV0dXJuIG1heChtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSwgbWluKG1heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCgpLCBsb2dpY2FsV2lkdGhSZXN1bHQpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWF4KG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpLCBzdGQ6Om1pbihtYXhQcmVmZXJyZWRMb2dp
Y2FsV2lkdGgoKSwgbG9naWNhbFdpZHRoUmVzdWx0KSk7CiAgICAgcmV0dXJuIGxvZ2ljYWxXaWR0
aFJlc3VsdDsKIH0KIApAQCAtMjM5Miw3ICsyMzkwLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2ssIExh
eW8KICAgICAgICAgLy8gT3RoZXIgYnJvd3NlcnMgY2VudGVyIHRoZSBtYXJnaW4gYm94IGZvciBh
bGlnbj1jZW50ZXIgZWxlbWVudHMgc28gd2UgbWF0Y2ggdGhlbSBoZXJlLgogICAgICAgICBMYXlv
dXRVbml0IG1hcmdpblN0YXJ0V2lkdGggPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luU3Rh
cnRMZW5ndGgsIGNvbnRhaW5lcldpZHRoKTsKICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5FbmRX
aWR0aCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5lcldp
ZHRoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBjZW50ZXJlZE1hcmdpbkJveFN0YXJ0ID0gbWF4PExh
eW91dFVuaXQ+KDAsIChjb250YWluZXJXaWR0aCAtIGNoaWxkV2lkdGggLSBtYXJnaW5TdGFydFdp
ZHRoIC0gbWFyZ2luRW5kV2lkdGgpIC8gMik7CisgICAgICAgIExheW91dFVuaXQgY2VudGVyZWRN
YXJnaW5Cb3hTdGFydCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIChjb250YWluZXJXaWR0aCAt
IGNoaWxkV2lkdGggLSBtYXJnaW5TdGFydFdpZHRoIC0gbWFyZ2luRW5kV2lkdGgpIC8gMik7CiAg
ICAgICAgIG1hcmdpblN0YXJ0ID0gY2VudGVyZWRNYXJnaW5Cb3hTdGFydCArIG1hcmdpblN0YXJ0
V2lkdGg7CiAgICAgICAgIG1hcmdpbkVuZCA9IGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAt
IG1hcmdpblN0YXJ0ICsgbWFyZ2luRW5kV2lkdGg7CiAgICAgICAgIHJldHVybjsKQEAgLTI2MTks
MTAgKzI2MTcsMTAgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91
dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2EKICAgICAgICAgTGF5b3V0VW5p
dCBtYXJnaW5zID0gY29sbGFwc2VkTWFyZ2luQmVmb3JlKCkgKyBjb2xsYXBzZWRNYXJnaW5BZnRl
cigpOwogICAgICAgICBMYXlvdXRVbml0IHZpc2libGVIZWlnaHQgPSB2aWV3KCkucGFnZU9yVmll
d0xvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgaWYgKGlzUm9vdCgpKQotICAgICAgICAgICAgY29t
cHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBtYXgoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQsIHZpc2li
bGVIZWlnaHQgLSBtYXJnaW5zKTsKKyAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50
ID0gc3RkOjptYXgoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQsIHZpc2libGVIZWlnaHQgLSBtYXJn
aW5zKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IG1hcmdpbnNCb3Jk
ZXJzUGFkZGluZyA9IG1hcmdpbnMgKyBwYXJlbnRCb3goKS0+bWFyZ2luQmVmb3JlKCkgKyBwYXJl
bnRCb3goKS0+bWFyZ2luQWZ0ZXIoKSArIHBhcmVudEJveCgpLT5ib3JkZXJBbmRQYWRkaW5nTG9n
aWNhbEhlaWdodCgpOwotICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBtYXgo
Y29tcHV0ZWRWYWx1ZXMubV9leHRlbnQsIHZpc2libGVIZWlnaHQgLSBtYXJnaW5zQm9yZGVyc1Bh
ZGRpbmcpOworICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBzdGQ6Om1heChj
b21wdXRlZFZhbHVlcy5tX2V4dGVudCwgdmlzaWJsZUhlaWdodCAtIG1hcmdpbnNCb3JkZXJzUGFk
ZGluZyk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNzE1LDcgKzI3MTMsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0
aCYgaGVpZ2h0KSBjb25zdAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChjYnN0eWxlLmxvZ2lj
YWxIZWlnaHQoKS5pc0ZpeGVkKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVp
Z2h0ID0gY2ItPmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGNic3R5
bGUubG9naWNhbEhlaWdodCgpLnZhbHVlKCkpOwotICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBt
YXg8TGF5b3V0VW5pdD4oMCwgY2ItPmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlN
aW5NYXgoY29udGVudEJveEhlaWdodCAtIGNiLT5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCkpKTsK
KyAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY2ItPmNv
bnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoY29udGVudEJveEhlaWdodCAt
IGNiLT5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCkpKTsKICAgICB9IGVsc2UgaWYgKGNic3R5bGUu
bG9naWNhbEhlaWdodCgpLmlzUGVyY2VudCgpICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWRXaXRo
U3BlY2lmaWVkSGVpZ2h0KSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcmVjdXIgYW5kIGNvbXB1
dGUgdGhlIHBlcmNlbnRhZ2UgaGVpZ2h0IGZvciBvdXIgY29udGFpbmluZyBibG9jay4KICAgICAg
ICAgTGF5b3V0VW5pdCBoZWlnaHRXaXRoU2Nyb2xsYmFyID0gY2ItPmNvbXB1dGVQZXJjZW50YWdl
TG9naWNhbEhlaWdodChjYnN0eWxlLmxvZ2ljYWxIZWlnaHQoKSk7CkBAIC0yNzI2LDcgKzI3MjQs
NyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0
KGNvbnN0IExlbmd0aCYgaGVpZ2h0KSBjb25zdAogICAgICAgICAgICAgLy8gcmV0dXJuIHZhbHVl
IGZyb20gdGhlIHJlY3Vyc2l2ZSBjYWxsIHdpbGwgbm90IGhhdmUgYmVlbiBhZGp1c3RlZAogICAg
ICAgICAgICAgLy8geWV0LgogICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVpZ2h0
ID0gY2ItPmNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoY29udGVudEJv
eEhlaWdodFdpdGhTY3JvbGxiYXIgLSBjYi0+c2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpKTsKLSAg
ICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IG1heDxMYXlvdXRVbml0PigwLCBjb250ZW50Qm94
SGVpZ2h0KTsKKyAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6bWF4PExheW91dFVu
aXQ+KDAsIGNvbnRlbnRCb3hIZWlnaHQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChpc091
dE9mRmxvd1Bvc2l0aW9uZWRXaXRoU3BlY2lmaWVkSGVpZ2h0KSB7CiAgICAgICAgIC8vIERvbid0
IGFsbG93IHRoaXMgdG8gYWZmZWN0IHRoZSBibG9jaycgaGVpZ2h0KCkgbWVtYmVyIHZhcmlhYmxl
LCBzaW5jZSB0aGlzCkBAIC0yNzQ5LDcgKzI3NDcsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6
Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpZ2h0KSBjb25z
dAogICAgICAgICAvLyBib3ggbW9kZWwuIFRoaXMgaXMgZXNzZW50aWFsIGZvciBzaXppbmcgaW5z
aWRlCiAgICAgICAgIC8vIHRhYmxlIGNlbGxzIHVzaW5nIHBlcmNlbnRhZ2UgaGVpZ2h0cy4KICAg
ICAgICAgcmVzdWx0IC09IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAg
IHJldHVybiBtYXg8TGF5b3V0VW5pdD4oMCwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bWF4PExheW91dFVuaXQ+KDAsIHJlc3VsdCk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC0yNzYzLDcgKzI3NjEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxh
Y2VkTG9naWNhbFdpZHRoUmVzcGVjdGluZ01pbk1heFdpZHRoKExheW91dFVuaQogewogICAgIExh
eW91dFVuaXQgbWluTG9naWNhbFdpZHRoID0gKHNob3VsZENvbXB1dGVQcmVmZXJyZWQgPT0gQ29t
cHV0ZVByZWZlcnJlZCAmJiBzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLmlzUGVyY2VudCgpKSB8
fCBzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLmlzVW5kZWZpbmVkKCkgPyBsb2dpY2FsV2lkdGgg
OiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2luZyhzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0
aCgpKTsKICAgICBMYXlvdXRVbml0IG1heExvZ2ljYWxXaWR0aCA9IChzaG91bGRDb21wdXRlUHJl
ZmVycmVkID09IENvbXB1dGVQcmVmZXJyZWQgJiYgc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKS5p
c1BlcmNlbnQoKSkgfHwgc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKS5pc1VuZGVmaW5lZCgpID8g
bG9naWNhbFdpZHRoIDogY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUoKS5s
b2dpY2FsTWF4V2lkdGgoKSk7Ci0gICAgcmV0dXJuIG1heChtaW5Mb2dpY2FsV2lkdGgsIG1pbihs
b2dpY2FsV2lkdGgsIG1heExvZ2ljYWxXaWR0aCkpOworICAgIHJldHVybiBzdGQ6Om1heChtaW5M
b2dpY2FsV2lkdGgsIHN0ZDo6bWluKGxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKSk7CiB9
CiAKIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhVc2lu
ZyhMZW5ndGggbG9naWNhbFdpZHRoKSBjb25zdApAQCAtMjgyMCw3ICsyODE4LDcgQEAgTGF5b3V0
VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWlu
TWF4SGVpZ2h0KExheW91dFUKIHsKICAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxIZWlnaHQgPSBj
b21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0
KCkpOwogICAgIExheW91dFVuaXQgbWF4TG9naWNhbEhlaWdodCA9IHN0eWxlKCkubG9naWNhbE1h
eEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBsb2dpY2FsSGVpZ2h0IDogY29tcHV0ZVJlcGxhY2Vk
TG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCkubG9naWNhbE1heEhlaWdodCgpKTsKLSAgICByZXR1
cm4gbWF4KG1pbkxvZ2ljYWxIZWlnaHQsIG1pbihsb2dpY2FsSGVpZ2h0LCBtYXhMb2dpY2FsSGVp
Z2h0KSk7CisgICAgcmV0dXJuIHN0ZDo6bWF4KG1pbkxvZ2ljYWxIZWlnaHQsIHN0ZDo6bWluKGxv
Z2ljYWxIZWlnaHQsIG1heExvZ2ljYWxIZWlnaHQpKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJC
b3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdo
dCkgY29uc3QKQEAgLTI4NjYsNyArMjg2NCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21w
dXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHQpIGNvCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChjYi0+aXNUYWJsZUNlbGwoKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gRG9uJ3QgbGV0IHRhYmxlIGNlbGxzIHNxdWVlemUgcGVyY2VudC1oZWln
aHQgcmVwbGFjZWQgZWxlbWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDxodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1OT4KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IG1heChhdmFpbGFibGVIZWlnaHQsIGludHJpbnNpY0xv
Z2ljYWxIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQg
PSBzdGQ6Om1heChhdmFpbGFibGVIZWlnaHQsIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgobG9naWNhbEhlaWdo
dCwgYXZhaWxhYmxlSGVpZ2h0IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgdG9SZW5kZXJCbG9jayhj
YiktPmFkZFBlcmNlbnRIZWlnaHREZXNjZW5kYW50KGNvbnN0X2Nhc3Q8UmVuZGVyQm94Jj4oKnRo
aXMpKTsKQEAgLTI5OTAsNyArMjk4OCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb250YWlu
aW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRlckJveE1vCiAgICAg
ICAgICAgICBSZW5kZXJSZWdpb24qIGNvbnRhaW5pbmdCbG9ja1JlZ2lvbiA9IGNiLT5jbGFtcFRv
U3RhcnRBbmRFbmRSZWdpb25zKHJlZ2lvbik7CiAgICAgICAgICAgICBib3hJbmZvID0gY2ItPnJl
bmRlckJveFJlZ2lvbkluZm8oY29udGFpbmluZ0Jsb2NrUmVnaW9uKTsKICAgICAgICAgfQotICAg
ICAgICByZXR1cm4gKGJveEluZm8pID8gbWF4PExheW91dFVuaXQ+KDAsIGNiLT5jbGllbnRMb2dp
Y2FsV2lkdGgoKSAtIChjYi0+bG9naWNhbFdpZHRoKCkgLSBib3hJbmZvLT5sb2dpY2FsV2lkdGgo
KSkpIDogY2ItPmNsaWVudExvZ2ljYWxXaWR0aCgpOworICAgICAgICByZXR1cm4gKGJveEluZm8p
ID8gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY2ItPmNsaWVudExvZ2ljYWxXaWR0aCgpIC0gKGNi
LT5sb2dpY2FsV2lkdGgoKSAtIGJveEluZm8tPmxvZ2ljYWxXaWR0aCgpKSkgOiBjYi0+Y2xpZW50
TG9naWNhbFdpZHRoKCk7CiAgICAgfQogCiAgICAgQVNTRVJUKGNvbnRhaW5pbmdCbG9jay0+aXNS
ZW5kZXJJbmxpbmUoKSAmJiBjb250YWluaW5nQmxvY2stPmlzSW5GbG93UG9zaXRpb25lZCgpKTsK
QEAgLTMwMTMsNyArMzAxMSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb250YWluaW5nQmxv
Y2tMb2dpY2FsV2lkdGhGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRlckJveE1vCiAgICAgICAgIGZy
b21MZWZ0ID0gbGFzdC0+bG9naWNhbExlZnQoKSArIGxhc3QtPmJvcmRlckxvZ2ljYWxMZWZ0KCk7
CiAgICAgfQogCi0gICAgcmV0dXJuIG1heDxMYXlvdXRVbml0PigwLCBmcm9tUmlnaHQgLSBmcm9t
TGVmdCk7CisgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGZyb21SaWdodCAtIGZy
b21MZWZ0KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0xvZ2lj
YWxIZWlnaHRGb3JQb3NpdGlvbmVkKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250YWlu
aW5nQmxvY2ssIGJvb2wgY2hlY2tGb3JQZXJwZW5kaWN1bGFyV3JpdGluZ01vZGUpIGNvbnN0CkBA
IC0zMzg2LDcgKzMzODQsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dp
Y2FsV2lkdGhVc2luZyhMZW5ndGggbG9naWNhbFdpZHRoLCBjb25zdCBSZQogICAgICAgICAgICAg
TGF5b3V0VW5pdCBwcmVmZXJyZWRXaWR0aCA9IG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0g
Ym9yZGVyc1BsdXNQYWRkaW5nOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRNaW5X
aWR0aCA9IG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyc1BsdXNQYWRkaW5nOwog
ICAgICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCA9IGF2YWlsYWJsZVNwYWNlIC0g
bG9naWNhbFJpZ2h0VmFsdWU7Ci0gICAgICAgICAgICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9
IG1pbihtYXgocHJlZmVycmVkTWluV2lkdGgsIGF2YWlsYWJsZVdpZHRoKSwgcHJlZmVycmVkV2lk
dGgpOworICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBzdGQ6Om1pbihzdGQ6
Om1heChwcmVmZXJyZWRNaW5XaWR0aCwgYXZhaWxhYmxlV2lkdGgpLCBwcmVmZXJyZWRXaWR0aCk7
CiAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gYXZhaWxhYmxlU3BhY2UgLSAoY29tcHV0
ZWRWYWx1ZXMubV9leHRlbnQgKyBsb2dpY2FsUmlnaHRWYWx1ZSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoIWxvZ2ljYWxMZWZ0SXNBdXRvICYmIGxvZ2ljYWxXaWR0aElzQXV0byAmJiBsb2dpY2FsUmln
aHRJc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgMzogKHVzZSBzaHJpbmstdG8tZml0IGZv
ciB3aWR0aCwgYW5kIG5vIG5lZWQgc29sdmUgb2YgcmlnaHQpCkBAIC0zMzk2LDcgKzMzOTQsNyBA
QCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGhVc2luZyhMZW5n
dGggbG9naWNhbFdpZHRoLCBjb25zdCBSZQogICAgICAgICAgICAgTGF5b3V0VW5pdCBwcmVmZXJy
ZWRXaWR0aCA9IG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyc1BsdXNQYWRkaW5n
OwogICAgICAgICAgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRNaW5XaWR0aCA9IG1pblByZWZlcnJl
ZExvZ2ljYWxXaWR0aCgpIC0gYm9yZGVyc1BsdXNQYWRkaW5nOwogICAgICAgICAgICAgTGF5b3V0
VW5pdCBhdmFpbGFibGVXaWR0aCA9IGF2YWlsYWJsZVNwYWNlIC0gbG9naWNhbExlZnRWYWx1ZTsK
LSAgICAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gbWluKG1heChwcmVmZXJyZWRN
aW5XaWR0aCwgYXZhaWxhYmxlV2lkdGgpLCBwcmVmZXJyZWRXaWR0aCk7CisgICAgICAgICAgICBj
b21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IHN0ZDo6bWluKHN0ZDo6bWF4KHByZWZlcnJlZE1pbldp
ZHRoLCBhdmFpbGFibGVXaWR0aCksIHByZWZlcnJlZFdpZHRoKTsKICAgICAgICAgfSBlbHNlIGlm
IChsb2dpY2FsTGVmdElzQXV0byAmJiAhbG9naWNhbFdpZHRoSXNBdXRvICYmICFsb2dpY2FsUmln
aHRJc0F1dG8pIHsKICAgICAgICAgICAgIC8vIFJVTEUgNDogKHNvbHZlIGZvciBsZWZ0KQogICAg
ICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBhZGp1c3RDb250ZW50Qm94TG9naWNh
bFdpZHRoRm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxXaWR0aCwgY29udGFpbmVy
TG9naWNhbFdpZHRoKSk7CkBAIC0zNjg4LDcgKzM2ODYsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5n
dGgsCiAgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxUb3BJc0F1dG8gJiYgbG9naWNhbEhlaWdo
dElzQXV0byAmJiAhbG9naWNhbEJvdHRvbUlzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSA1
OiAoc29sdmUgb2YgaGVpZ2h0KQogICAgICAgICAgICAgbG9naWNhbFRvcFZhbHVlID0gdmFsdWVG
b3JMZW5ndGgobG9naWNhbFRvcCwgY29udGFpbmVyTG9naWNhbEhlaWdodCk7Ci0gICAgICAgICAg
ICBsb2dpY2FsSGVpZ2h0VmFsdWUgPSBtYXg8TGF5b3V0VW5pdD4oMCwgYXZhaWxhYmxlU3BhY2Ug
LSAobG9naWNhbFRvcFZhbHVlICsgdmFsdWVGb3JMZW5ndGgobG9naWNhbEJvdHRvbSwgY29udGFp
bmVyTG9naWNhbEhlaWdodCkpKTsKKyAgICAgICAgICAgIGxvZ2ljYWxIZWlnaHRWYWx1ZSA9IHN0
ZDo6bWF4PExheW91dFVuaXQ+KDAsIGF2YWlsYWJsZVNwYWNlIC0gKGxvZ2ljYWxUb3BWYWx1ZSAr
IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxCb3R0b20sIGNvbnRhaW5lckxvZ2ljYWxIZWlnaHQpKSk7
CiAgICAgICAgIH0gZWxzZSBpZiAoIWxvZ2ljYWxUb3BJc0F1dG8gJiYgIWxvZ2ljYWxIZWlnaHRJ
c0F1dG8gJiYgbG9naWNhbEJvdHRvbUlzQXV0bykgewogICAgICAgICAgICAgLy8gUlVMRSA2OiAo
bm8gbmVlZCBzb2x2ZSBvZiBib3R0b20pCiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0VmFsdWUg
PSBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0
aChsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBjb250YWluZXJMb2dpY2FsSGVpZ2h0KSk7CkBAIC00MTk0
LDEwICs0MTkyLDEwIEBAIExheW91dFJlY3QgUmVuZGVyQm94OjphcHBseVZpc3VhbEVmZmVjdE92
ZXJmbG93KGNvbnN0IExheW91dFJlY3QmIGJvcmRlckJveCkgY29uCiAgICAgICAgIAogICAgICAg
ICAvLyBJbiBmbGlwcGVkIGJsb2NrcyB3cml0aW5nIG1vZGVzLCB0aGUgcGh5c2ljYWwgc2lkZXMg
YXJlIGludmVydGVkLiBGb3IgZXhhbXBsZSBpbiB2ZXJ0aWNhbC1ybCwgdGhlIHJpZ2h0CiAgICAg
ICAgIC8vIGJvcmRlciBpcyBhdCB0aGUgbG93ZXIgeCBjb29yZGluYXRlIHZhbHVlLgotICAgICAg
ICBvdmVyZmxvd01pblggPSBtaW4ob3ZlcmZsb3dNaW5YLCBib3JkZXJCb3gueCgpIC0gKCghaXNG
bGlwcGVkIHx8IGlzSG9yaXpvbnRhbCkgPyBib3JkZXJPdXRzZXRzLmxlZnQoKSA6IGJvcmRlck91
dHNldHMucmlnaHQoKSkpOwotICAgICAgICBvdmVyZmxvd01heFggPSBtYXgob3ZlcmZsb3dNYXhY
LCBib3JkZXJCb3gubWF4WCgpICsgKCghaXNGbGlwcGVkIHx8IGlzSG9yaXpvbnRhbCkgPyBib3Jk
ZXJPdXRzZXRzLnJpZ2h0KCkgOiBib3JkZXJPdXRzZXRzLmxlZnQoKSkpOwotICAgICAgICBvdmVy
Zmxvd01pblkgPSBtaW4ob3ZlcmZsb3dNaW5ZLCBib3JkZXJCb3gueSgpIC0gKCghaXNGbGlwcGVk
IHx8ICFpc0hvcml6b250YWwpID8gYm9yZGVyT3V0c2V0cy50b3AoKSA6IGJvcmRlck91dHNldHMu
Ym90dG9tKCkpKTsKLSAgICAgICAgb3ZlcmZsb3dNYXhZID0gbWF4KG92ZXJmbG93TWF4WSwgYm9y
ZGVyQm94Lm1heFkoKSArICgoIWlzRmxpcHBlZCB8fCAhaXNIb3Jpem9udGFsKSA/IGJvcmRlck91
dHNldHMuYm90dG9tKCkgOiBib3JkZXJPdXRzZXRzLnRvcCgpKSk7CisgICAgICAgIG92ZXJmbG93
TWluWCA9IHN0ZDo6bWluKG92ZXJmbG93TWluWCwgYm9yZGVyQm94LngoKSAtICgoIWlzRmxpcHBl
ZCB8fCBpc0hvcml6b250YWwpID8gYm9yZGVyT3V0c2V0cy5sZWZ0KCkgOiBib3JkZXJPdXRzZXRz
LnJpZ2h0KCkpKTsKKyAgICAgICAgb3ZlcmZsb3dNYXhYID0gc3RkOjptYXgob3ZlcmZsb3dNYXhY
LCBib3JkZXJCb3gubWF4WCgpICsgKCghaXNGbGlwcGVkIHx8IGlzSG9yaXpvbnRhbCkgPyBib3Jk
ZXJPdXRzZXRzLnJpZ2h0KCkgOiBib3JkZXJPdXRzZXRzLmxlZnQoKSkpOworICAgICAgICBvdmVy
Zmxvd01pblkgPSBzdGQ6Om1pbihvdmVyZmxvd01pblksIGJvcmRlckJveC55KCkgLSAoKCFpc0Zs
aXBwZWQgfHwgIWlzSG9yaXpvbnRhbCkgPyBib3JkZXJPdXRzZXRzLnRvcCgpIDogYm9yZGVyT3V0
c2V0cy5ib3R0b20oKSkpOworICAgICAgICBvdmVyZmxvd01heFkgPSBzdGQ6Om1heChvdmVyZmxv
d01heFksIGJvcmRlckJveC5tYXhZKCkgKyAoKCFpc0ZsaXBwZWQgfHwgIWlzSG9yaXpvbnRhbCkg
PyBib3JkZXJPdXRzZXRzLmJvdHRvbSgpIDogYm9yZGVyT3V0c2V0cy50b3AoKSkpOwogICAgIH0K
IAogICAgIC8vIEFkZCBpbiB0aGUgZmluYWwgb3ZlcmZsb3cgd2l0aCBzaGFkb3dzIGFuZCBvdXRz
ZXRzIGNvbWJpbmVkLgpAQCAtNDI2MSwxMyArNDI1OSwxMyBAQCB2b2lkIFJlbmRlckJveDo6YWRk
TGF5b3V0T3ZlcmZsb3coY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICghaGFzVG9wT3ZlcmZsb3cpCi0gICAgICAgICAgICBvdmVyZmxvd1JlY3Quc2hpZnRZ
RWRnZVRvKG1heChvdmVyZmxvd1JlY3QueSgpLCBjbGllbnRCb3gueSgpKSk7CisgICAgICAgICAg
ICBvdmVyZmxvd1JlY3Quc2hpZnRZRWRnZVRvKHN0ZDo6bWF4KG92ZXJmbG93UmVjdC55KCksIGNs
aWVudEJveC55KCkpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgb3ZlcmZsb3dSZWN0LnNo
aWZ0TWF4WUVkZ2VUbyhtaW4ob3ZlcmZsb3dSZWN0Lm1heFkoKSwgY2xpZW50Qm94Lm1heFkoKSkp
OworICAgICAgICAgICAgb3ZlcmZsb3dSZWN0LnNoaWZ0TWF4WUVkZ2VUbyhzdGQ6Om1pbihvdmVy
Zmxvd1JlY3QubWF4WSgpLCBjbGllbnRCb3gubWF4WSgpKSk7CiAgICAgICAgIGlmICghaGFzTGVm
dE92ZXJmbG93KQotICAgICAgICAgICAgb3ZlcmZsb3dSZWN0LnNoaWZ0WEVkZ2VUbyhtYXgob3Zl
cmZsb3dSZWN0LngoKSwgY2xpZW50Qm94LngoKSkpOworICAgICAgICAgICAgb3ZlcmZsb3dSZWN0
LnNoaWZ0WEVkZ2VUbyhzdGQ6Om1heChvdmVyZmxvd1JlY3QueCgpLCBjbGllbnRCb3gueCgpKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG92ZXJmbG93UmVjdC5zaGlmdE1heFhFZGdlVG8o
bWluKG92ZXJmbG93UmVjdC5tYXhYKCksIGNsaWVudEJveC5tYXhYKCkpKTsKKyAgICAgICAgICAg
IG92ZXJmbG93UmVjdC5zaGlmdE1heFhFZGdlVG8oc3RkOjptaW4ob3ZlcmZsb3dSZWN0Lm1heFgo
KSwgY2xpZW50Qm94Lm1heFgoKSkpOwogICAgICAgICAKICAgICAgICAgLy8gTm93IHJlLXRlc3Qg
d2l0aCB0aGUgYWRqdXN0ZWQgcmVjdGFuZ2xlIGFuZCBzZWUgaWYgaXQgaGFzIGJlY29tZSB1bnJl
YWNoYWJsZSBvciBmdWxseQogICAgICAgICAvLyBjb250YWluZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCAxOTUwMzEzODc3
ZjFmYzE2OTZkOTg4YjNkZjQwOTVjM2IxYzAwNTJiLi5jNWVhYTY5MGM2N2I2YjBiODgzMzZiMGM1
M2M3NDY5YzhiYTI5OWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTUwLDggKzUwLDYgQEAKICNpbmNsdWRlICJSZW5kZXJM
YXllckNvbXBvc2l0b3IuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC05NzcsOCAr
OTc1LDggQEAgSW50U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlRmlsbFRpbGVT
aXplKGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLAogICAgICAgICAgICAgICAgID8gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSkgLyBpbWFnZUludHJpbnNp
Y1NpemUud2lkdGgoKSA6IDE7CiAgICAgICAgICAgICBmbG9hdCB2ZXJ0aWNhbFNjYWxlRmFjdG9y
ID0gaW1hZ2VJbnRyaW5zaWNTaXplLmhlaWdodCgpCiAgICAgICAgICAgICAgICAgPyBzdGF0aWNf
Y2FzdDxmbG9hdD4ocG9zaXRpb25pbmdBcmVhU2l6ZS5oZWlnaHQoKSkgLyBpbWFnZUludHJpbnNp
Y1NpemUuaGVpZ2h0KCkgOiAxOwotICAgICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSB0eXBl
ID09IENvbnRhaW4gPyBtaW4oaG9yaXpvbnRhbFNjYWxlRmFjdG9yLCB2ZXJ0aWNhbFNjYWxlRmFj
dG9yKSA6IG1heChob3Jpem9udGFsU2NhbGVGYWN0b3IsIHZlcnRpY2FsU2NhbGVGYWN0b3IpOwot
ICAgICAgICAgICAgcmV0dXJuIEludFNpemUobWF4KDEsIHN0YXRpY19jYXN0PGludD4oaW1hZ2VJ
bnRyaW5zaWNTaXplLndpZHRoKCkgKiBzY2FsZUZhY3RvcikpLCBtYXgoMSwgc3RhdGljX2Nhc3Q8
aW50PihpbWFnZUludHJpbnNpY1NpemUuaGVpZ2h0KCkgKiBzY2FsZUZhY3RvcikpKTsKKyAgICAg
ICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gdHlwZSA9PSBDb250YWluID8gc3RkOjptaW4oaG9y
aXpvbnRhbFNjYWxlRmFjdG9yLCB2ZXJ0aWNhbFNjYWxlRmFjdG9yKSA6IHN0ZDo6bWF4KGhvcml6
b250YWxTY2FsZUZhY3RvciwgdmVydGljYWxTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICByZXR1
cm4gSW50U2l6ZShzdGQ6Om1heCgxLCBzdGF0aWNfY2FzdDxpbnQ+KGltYWdlSW50cmluc2ljU2l6
ZS53aWR0aCgpICogc2NhbGVGYWN0b3IpKSwgc3RkOjptYXgoMSwgc3RhdGljX2Nhc3Q8aW50Pihp
bWFnZUludHJpbnNpY1NpemUuaGVpZ2h0KCkgKiBzY2FsZUZhY3RvcikpKTsKICAgICAgICB9CiAg
ICAgfQogCkBAIC05ODgsMjEgKzk4NiwyMSBAQCBJbnRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpjYWxjdWxhdGVGaWxsVGlsZVNpemUoY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsCiAKIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpzZXROb1Jl
cGVhdFgoaW50IHhPZmZzZXQpCiB7Ci0gICAgbV9kZXN0UmVjdC5tb3ZlKG1heCh4T2Zmc2V0LCAw
KSwgMCk7Ci0gICAgbV9waGFzZS5zZXRYKC1taW4oeE9mZnNldCwgMCkpOwotICAgIG1fZGVzdFJl
Y3Quc2V0V2lkdGgobV90aWxlU2l6ZS53aWR0aCgpICsgbWluKHhPZmZzZXQsIDApKTsKKyAgICBt
X2Rlc3RSZWN0Lm1vdmUoc3RkOjptYXgoeE9mZnNldCwgMCksIDApOworICAgIG1fcGhhc2Uuc2V0
WCgtc3RkOjptaW4oeE9mZnNldCwgMCkpOworICAgIG1fZGVzdFJlY3Quc2V0V2lkdGgobV90aWxl
U2l6ZS53aWR0aCgpICsgc3RkOjptaW4oeE9mZnNldCwgMCkpOwogfQogdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OnNldE5vUmVwZWF0WShpbnQgeU9m
ZnNldCkKIHsKLSAgICBtX2Rlc3RSZWN0Lm1vdmUoMCwgbWF4KHlPZmZzZXQsIDApKTsKLSAgICBt
X3BoYXNlLnNldFkoLW1pbih5T2Zmc2V0LCAwKSk7Ci0gICAgbV9kZXN0UmVjdC5zZXRIZWlnaHQo
bV90aWxlU2l6ZS5oZWlnaHQoKSArIG1pbih5T2Zmc2V0LCAwKSk7CisgICAgbV9kZXN0UmVjdC5t
b3ZlKDAsIHN0ZDo6bWF4KHlPZmZzZXQsIDApKTsKKyAgICBtX3BoYXNlLnNldFkoLXN0ZDo6bWlu
KHlPZmZzZXQsIDApKTsKKyAgICBtX2Rlc3RSZWN0LnNldEhlaWdodChtX3RpbGVTaXplLmhlaWdo
dCgpICsgc3RkOjptaW4oeU9mZnNldCwgMCkpOwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6dXNlRml4ZWRBdHRhY2htZW50KGNvbnN0IElu
dFBvaW50JiBhdHRhY2htZW50UG9pbnQpCiB7CiAgICAgSW50UG9pbnQgYWxpZ25lZFBvaW50ID0g
YXR0YWNobWVudFBvaW50OwotICAgIG1fcGhhc2UubW92ZShtYXgoYWxpZ25lZFBvaW50LngoKSAt
IG1fZGVzdFJlY3QueCgpLCAwKSwgbWF4KGFsaWduZWRQb2ludC55KCkgLSBtX2Rlc3RSZWN0Lnko
KSwgMCkpOworICAgIG1fcGhhc2UubW92ZShzdGQ6Om1heChhbGlnbmVkUG9pbnQueCgpIC0gbV9k
ZXN0UmVjdC54KCksIDApLCBzdGQ6Om1heChhbGlnbmVkUG9pbnQueSgpIC0gbV9kZXN0UmVjdC55
KCksIDApKTsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dyb3VuZEltYWdl
R2VvbWV0cnk6OmNsaXAoY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCkBAIC0xMjUxLDEwICsxMjQ5
LDEwIEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmll
dyA9ICZ2aWV3KCk7CiAKICAgICBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yID0gc3R5bGVJbWFnZS0+
aW1hZ2VTY2FsZUZhY3RvcigpOwotICAgIGludCB0b3BTbGljZSA9IG1pbjxpbnQ+KGltYWdlSGVp
Z2h0LCB2YWx1ZUZvckxlbmd0aChuaW5lUGllY2VJbWFnZS5pbWFnZVNsaWNlcygpLnRvcCgpLCBp
bWFnZUhlaWdodCkpICogaW1hZ2VTY2FsZUZhY3RvcjsKLSAgICBpbnQgcmlnaHRTbGljZSA9IG1p
bjxpbnQ+KGltYWdlV2lkdGgsIHZhbHVlRm9yTGVuZ3RoKG5pbmVQaWVjZUltYWdlLmltYWdlU2xp
Y2VzKCkucmlnaHQoKSwgaW1hZ2VXaWR0aCkpICogaW1hZ2VTY2FsZUZhY3RvcjsKLSAgICBpbnQg
Ym90dG9tU2xpY2UgPSBtaW48aW50PihpbWFnZUhlaWdodCwgdmFsdWVGb3JMZW5ndGgobmluZVBp
ZWNlSW1hZ2UuaW1hZ2VTbGljZXMoKS5ib3R0b20oKSwgaW1hZ2VIZWlnaHQpKSAqIGltYWdlU2Nh
bGVGYWN0b3I7Ci0gICAgaW50IGxlZnRTbGljZSA9IG1pbjxpbnQ+KGltYWdlV2lkdGgsIHZhbHVl
Rm9yTGVuZ3RoKG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2VzKCkubGVmdCgpLCBpbWFnZVdpZHRo
KSkgKiBpbWFnZVNjYWxlRmFjdG9yOworICAgIGludCB0b3BTbGljZSA9IHN0ZDo6bWluPGludD4o
aW1hZ2VIZWlnaHQsIHZhbHVlRm9yTGVuZ3RoKG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2VzKCku
dG9wKCksIGltYWdlSGVpZ2h0KSkgKiBpbWFnZVNjYWxlRmFjdG9yOworICAgIGludCByaWdodFNs
aWNlID0gc3RkOjptaW48aW50PihpbWFnZVdpZHRoLCB2YWx1ZUZvckxlbmd0aChuaW5lUGllY2VJ
bWFnZS5pbWFnZVNsaWNlcygpLnJpZ2h0KCksIGltYWdlV2lkdGgpKSAqIGltYWdlU2NhbGVGYWN0
b3I7CisgICAgaW50IGJvdHRvbVNsaWNlID0gc3RkOjptaW48aW50PihpbWFnZUhlaWdodCwgdmFs
dWVGb3JMZW5ndGgobmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGljZXMoKS5ib3R0b20oKSwgaW1hZ2VI
ZWlnaHQpKSAqIGltYWdlU2NhbGVGYWN0b3I7CisgICAgaW50IGxlZnRTbGljZSA9IHN0ZDo6bWlu
PGludD4oaW1hZ2VXaWR0aCwgdmFsdWVGb3JMZW5ndGgobmluZVBpZWNlSW1hZ2UuaW1hZ2VTbGlj
ZXMoKS5sZWZ0KCksIGltYWdlV2lkdGgpKSAqIGltYWdlU2NhbGVGYWN0b3I7CiAKICAgICBFTmlu
ZVBpZWNlSW1hZ2VSdWxlIGhSdWxlID0gbmluZVBpZWNlSW1hZ2UuaG9yaXpvbnRhbFJ1bGUoKTsK
ICAgICBFTmluZVBpZWNlSW1hZ2VSdWxlIHZSdWxlID0gbmluZVBpZWNlSW1hZ2UudmVydGljYWxS
dWxlKCk7CkBAIC0xMjY4LDkgKzEyNjYsOSBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAg
IC8vIFRoZSBzcGVjIHNheXM6IEdpdmVuIEx3aWR0aCBhcyB0aGUgd2lkdGggb2YgdGhlIGJvcmRl
ciBpbWFnZSBhcmVhLCBMaGVpZ2h0IGFzIGl0cyBoZWlnaHQsIGFuZCBXc2lkZSBhcyB0aGUgYm9y
ZGVyIGltYWdlIHdpZHRoCiAgICAgLy8gb2Zmc2V0IGZvciB0aGUgc2lkZSwgbGV0IGYgPSBtaW4o
THdpZHRoLyhXbGVmdCtXcmlnaHQpLCBMaGVpZ2h0LyhXdG9wK1dib3R0b20pKS4gSWYgZiA8IDEs
IHRoZW4gYWxsIFcgYXJlIHJlZHVjZWQgYnkKICAgICAvLyBtdWx0aXBseWluZyB0aGVtIGJ5IGYu
Ci0gICAgaW50IGJvcmRlclNpZGVXaWR0aCA9IG1heCgxLCBsZWZ0V2lkdGggKyByaWdodFdpZHRo
KTsKLSAgICBpbnQgYm9yZGVyU2lkZUhlaWdodCA9IG1heCgxLCB0b3BXaWR0aCArIGJvdHRvbVdp
ZHRoKTsKLSAgICBmbG9hdCBib3JkZXJTaWRlU2NhbGVGYWN0b3IgPSBtaW4oKGZsb2F0KWJvcmRl
ckltYWdlUmVjdC53aWR0aCgpIC8gYm9yZGVyU2lkZVdpZHRoLCAoZmxvYXQpYm9yZGVySW1hZ2VS
ZWN0LmhlaWdodCgpIC8gYm9yZGVyU2lkZUhlaWdodCk7CisgICAgaW50IGJvcmRlclNpZGVXaWR0
aCA9IHN0ZDo6bWF4KDEsIGxlZnRXaWR0aCArIHJpZ2h0V2lkdGgpOworICAgIGludCBib3JkZXJT
aWRlSGVpZ2h0ID0gc3RkOjptYXgoMSwgdG9wV2lkdGggKyBib3R0b21XaWR0aCk7CisgICAgZmxv
YXQgYm9yZGVyU2lkZVNjYWxlRmFjdG9yID0gc3RkOjptaW4oKGZsb2F0KWJvcmRlckltYWdlUmVj
dC53aWR0aCgpIC8gYm9yZGVyU2lkZVdpZHRoLCAoZmxvYXQpYm9yZGVySW1hZ2VSZWN0LmhlaWdo
dCgpIC8gYm9yZGVyU2lkZUhlaWdodCk7CiAgICAgaWYgKGJvcmRlclNpZGVTY2FsZUZhY3RvciA8
IDEpIHsKICAgICAgICAgdG9wV2lkdGggKj0gYm9yZGVyU2lkZVNjYWxlRmFjdG9yOwogICAgICAg
ICByaWdodFdpZHRoICo9IGJvcmRlclNpZGVTY2FsZUZhY3RvcjsKQEAgLTE2NjksNyArMTY2Nyw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIGNsaXBCb3JkZXJTaWRlUG9s
eWdvbihncmFwaGljc0NvbnRleHQsIG91dGVyQm9yZGVyLCBpbm5lckJvcmRlciwgc2lkZSwgYWRq
YWNlbnRTaWRlMVN0eWxlc01hdGNoLCBhZGphY2VudFNpZGUyU3R5bGVzTWF0Y2gpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgoZ3Jh
cGhpY3NDb250ZXh0LCBvdXRlckJvcmRlciwgaW5uZXJCb3JkZXIsIHNpZGUsIGVkZ2VzKTsKLSAg
ICAgICAgZmxvYXQgdGhpY2tuZXNzID0gbWF4KG1heChlZGdlVG9SZW5kZXIud2lkdGgsIGFkamFj
ZW50RWRnZTEud2lkdGgpLCBhZGphY2VudEVkZ2UyLndpZHRoKTsKKyAgICAgICAgZmxvYXQgdGhp
Y2tuZXNzID0gc3RkOjptYXgoc3RkOjptYXgoZWRnZVRvUmVuZGVyLndpZHRoLCBhZGphY2VudEVk
Z2UxLndpZHRoKSwgYWRqYWNlbnRFZGdlMi53aWR0aCk7CiAgICAgICAgIGRyYXdCb3hTaWRlRnJv
bVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBvdXRlckJvcmRlci5yZWN0KCksICpwYXRoLCBlZGdlcywg
ZWRnZVRvUmVuZGVyLndpZHRoLCB0aGlja25lc3MsIHNpZGUsIHN0eWxlLAogICAgICAgICAgICAg
Y29sb3JUb1BhaW50LCBlZGdlVG9SZW5kZXIuc3R5bGUsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgfSBlbHNlIHsK
QEAgLTIyODQsNyArMjI4Miw3IEBAIHN0YXRpYyBSb3VuZGVkUmVjdCBjYWxjdWxhdGVBZGp1c3Rl
ZElubmVyQm9yZGVyKGNvbnN0IFJvdW5kZWRSZWN0JmlubmVyQm9yZGVyLCBCCiAgICAgICAgIH0K
ICAgICAgICAgbmV3UmFkaWkuc2V0Qm90dG9tTGVmdChJbnRTaXplKDAsIDApKTsKICAgICAgICAg
bmV3UmFkaWkuc2V0Qm90dG9tUmlnaHQoSW50U2l6ZSgwLCAwKSk7Ci0gICAgICAgIG1heFJhZGlp
ID0gbWF4KG5ld1JhZGlpLnRvcExlZnQoKS5oZWlnaHQoKSwgbmV3UmFkaWkudG9wUmlnaHQoKS5o
ZWlnaHQoKSk7CisgICAgICAgIG1heFJhZGlpID0gc3RkOjptYXgobmV3UmFkaWkudG9wTGVmdCgp
LmhlaWdodCgpLCBuZXdSYWRpaS50b3BSaWdodCgpLmhlaWdodCgpKTsKICAgICAgICAgaWYgKG1h
eFJhZGlpID4gbmV3UmVjdC5oZWlnaHQoKSkKICAgICAgICAgICAgIG5ld1JlY3Quc2V0SGVpZ2h0
KG1heFJhZGlpKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMjk5LDcgKzIyOTcsNyBAQCBzdGF0aWMg
Um91bmRlZFJlY3QgY2FsY3VsYXRlQWRqdXN0ZWRJbm5lckJvcmRlcihjb25zdCBSb3VuZGVkUmVj
dCZpbm5lckJvcmRlciwgQgogICAgICAgICB9CiAgICAgICAgIG5ld1JhZGlpLnNldFRvcExlZnQo
SW50U2l6ZSgwLCAwKSk7CiAgICAgICAgIG5ld1JhZGlpLnNldFRvcFJpZ2h0KEludFNpemUoMCwg
MCkpOwotICAgICAgICBtYXhSYWRpaSA9IG1heChuZXdSYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0
KCksIG5ld1JhZGlpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkpOworICAgICAgICBtYXhSYWRpaSA9
IHN0ZDo6bWF4KG5ld1JhZGlpLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSwgbmV3UmFkaWkuYm90dG9t
UmlnaHQoKS5oZWlnaHQoKSk7CiAgICAgICAgIGlmIChtYXhSYWRpaSA+IG5ld1JlY3QuaGVpZ2h0
KCkpIHsKICAgICAgICAgICAgIG5ld1JlY3QubW92ZSgwLCBuZXdSZWN0LmhlaWdodCgpIC0gbWF4
UmFkaWkpOwogICAgICAgICAgICAgbmV3UmVjdC5zZXRIZWlnaHQobWF4UmFkaWkpOwpAQCAtMjMx
Niw3ICsyMzE0LDcgQEAgc3RhdGljIFJvdW5kZWRSZWN0IGNhbGN1bGF0ZUFkanVzdGVkSW5uZXJC
b3JkZXIoY29uc3QgUm91bmRlZFJlY3QmaW5uZXJCb3JkZXIsIEIKICAgICAgICAgfQogICAgICAg
ICBuZXdSYWRpaS5zZXRUb3BSaWdodChJbnRTaXplKDAsIDApKTsKICAgICAgICAgbmV3UmFkaWku
c2V0Qm90dG9tUmlnaHQoSW50U2l6ZSgwLCAwKSk7Ci0gICAgICAgIG1heFJhZGlpID0gbWF4KG5l
d1JhZGlpLnRvcExlZnQoKS53aWR0aCgpLCBuZXdSYWRpaS5ib3R0b21MZWZ0KCkud2lkdGgoKSk7
CisgICAgICAgIG1heFJhZGlpID0gc3RkOjptYXgobmV3UmFkaWkudG9wTGVmdCgpLndpZHRoKCks
IG5ld1JhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpKTsKICAgICAgICAgaWYgKG1heFJhZGlpID4g
bmV3UmVjdC53aWR0aCgpKQogICAgICAgICAgICAgbmV3UmVjdC5zZXRXaWR0aChtYXhSYWRpaSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMjMzMSw3ICsyMzI5LDcgQEAgc3RhdGljIFJvdW5kZWRSZWN0
IGNhbGN1bGF0ZUFkanVzdGVkSW5uZXJCb3JkZXIoY29uc3QgUm91bmRlZFJlY3QmaW5uZXJCb3Jk
ZXIsIEIKICAgICAgICAgfQogICAgICAgICBuZXdSYWRpaS5zZXRUb3BMZWZ0KEludFNpemUoMCwg
MCkpOwogICAgICAgICBuZXdSYWRpaS5zZXRCb3R0b21MZWZ0KEludFNpemUoMCwgMCkpOwotICAg
ICAgICBtYXhSYWRpaSA9IG1heChuZXdSYWRpaS50b3BSaWdodCgpLndpZHRoKCksIG5ld1JhZGlp
LmJvdHRvbVJpZ2h0KCkud2lkdGgoKSk7CisgICAgICAgIG1heFJhZGlpID0gc3RkOjptYXgobmV3
UmFkaWkudG9wUmlnaHQoKS53aWR0aCgpLCBuZXdSYWRpaS5ib3R0b21SaWdodCgpLndpZHRoKCkp
OwogICAgICAgICBpZiAobWF4UmFkaWkgPiBuZXdSZWN0LndpZHRoKCkpIHsKICAgICAgICAgICAg
IG5ld1JlY3QubW92ZShuZXdSZWN0LndpZHRoKCkgLSBtYXhSYWRpaSwgMCk7CiAgICAgICAgICAg
ICBuZXdSZWN0LnNldFdpZHRoKG1heFJhZGlpKTsKQEAgLTI1MjAsNyArMjUxOCw3IEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5m
bywgY29uc3QgTGF5b3V0UmVjCiAKICAgICAgICAgICAgIC8vIE1vdmUgdGhlIGZpbGwganVzdCBv
dXRzaWRlIHRoZSBjbGlwLCBhZGRpbmcgMSBwaXhlbCBzZXBhcmF0aW9uIHNvIHRoYXQgdGhlIGZp
bGwgZG9lcyBub3QKICAgICAgICAgICAgIC8vIGJsZWVkIGluIChkdWUgdG8gYW50aWFsaWFzaW5n
KSBpZiB0aGUgY29udGV4dCBpcyB0cmFuc2Zvcm1lZC4KLSAgICAgICAgICAgIEludFNpemUgZXh0
cmFPZmZzZXQocGFpbnRSZWN0LnBpeGVsU25hcHBlZFdpZHRoKCkgKyBtYXgoMCwgc2hhZG93T2Zm
c2V0LndpZHRoKCkpICsgc2hhZG93UGFpbnRpbmdFeHRlbnQgKyAyICogc2hhZG93U3ByZWFkICsg
MSwgMCk7CisgICAgICAgICAgICBJbnRTaXplIGV4dHJhT2Zmc2V0KHBhaW50UmVjdC5waXhlbFNu
YXBwZWRXaWR0aCgpICsgc3RkOjptYXgoMCwgc2hhZG93T2Zmc2V0LndpZHRoKCkpICsgc2hhZG93
UGFpbnRpbmdFeHRlbnQgKyAyICogc2hhZG93U3ByZWFkICsgMSwgMCk7CiAgICAgICAgICAgICBz
aGFkb3dPZmZzZXQgLT0gZXh0cmFPZmZzZXQ7CiAgICAgICAgICAgICBmaWxsUmVjdC5tb3ZlKGV4
dHJhT2Zmc2V0KTsKIApAQCAtMjU4NiwxOCArMjU4NCwxOCBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91
dFJlYwogCiAgICAgICAgICAgICBpZiAoIWluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UpIHsKICAgICAg
ICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhvbGVS
ZWN0Lm1vdmUoLW1heChzaGFkb3dPZmZzZXQud2lkdGgoKSwgMCkgLSBzaGFkb3dQYWludGluZ0V4
dGVudCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIGhvbGVSZWN0LnNldFdpZHRoKGhvbGVSZWN0
LndpZHRoKCkgKyBtYXgoc2hhZG93T2Zmc2V0LndpZHRoKCksIDApICsgc2hhZG93UGFpbnRpbmdF
eHRlbnQpOworICAgICAgICAgICAgICAgICAgICBob2xlUmVjdC5tb3ZlKC1zdGQ6Om1heChzaGFk
b3dPZmZzZXQud2lkdGgoKSwgMCkgLSBzaGFkb3dQYWludGluZ0V4dGVudCwgMCk7CisgICAgICAg
ICAgICAgICAgICAgIGhvbGVSZWN0LnNldFdpZHRoKGhvbGVSZWN0LndpZHRoKCkgKyBzdGQ6Om1h
eChzaGFkb3dPZmZzZXQud2lkdGgoKSwgMCkgKyBzaGFkb3dQYWludGluZ0V4dGVudCk7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaG9sZVJlY3QubW92ZSgw
LCAtbWF4KHNoYWRvd09mZnNldC5oZWlnaHQoKSwgMCkgLSBzaGFkb3dQYWludGluZ0V4dGVudCk7
Ci0gICAgICAgICAgICAgICAgICAgIGhvbGVSZWN0LnNldEhlaWdodChob2xlUmVjdC5oZWlnaHQo
KSArIG1heChzaGFkb3dPZmZzZXQuaGVpZ2h0KCksIDApICsgc2hhZG93UGFpbnRpbmdFeHRlbnQp
OworICAgICAgICAgICAgICAgICAgICBob2xlUmVjdC5tb3ZlKDAsIC1zdGQ6Om1heChzaGFkb3dP
ZmZzZXQuaGVpZ2h0KCksIDApIC0gc2hhZG93UGFpbnRpbmdFeHRlbnQpOworICAgICAgICAgICAg
ICAgICAgICBob2xlUmVjdC5zZXRIZWlnaHQoaG9sZVJlY3QuaGVpZ2h0KCkgKyBzdGQ6Om1heChz
aGFkb3dPZmZzZXQuaGVpZ2h0KCksIDApICsgc2hhZG93UGFpbnRpbmdFeHRlbnQpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQotICAgICAg
ICAgICAgICAgICAgICBob2xlUmVjdC5zZXRXaWR0aChob2xlUmVjdC53aWR0aCgpIC0gbWluKHNo
YWRvd09mZnNldC53aWR0aCgpLCAwKSArIHNoYWRvd1BhaW50aW5nRXh0ZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgaG9sZVJlY3Quc2V0V2lkdGgoaG9sZVJlY3Qud2lkdGgoKSAtIHN0ZDo6bWlu
KHNoYWRvd09mZnNldC53aWR0aCgpLCAwKSArIHNoYWRvd1BhaW50aW5nRXh0ZW50KTsKICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGhvbGVSZWN0LnNldEhlaWdodCho
b2xlUmVjdC5oZWlnaHQoKSAtIG1pbihzaGFkb3dPZmZzZXQuaGVpZ2h0KCksIDApICsgc2hhZG93
UGFpbnRpbmdFeHRlbnQpOworICAgICAgICAgICAgICAgICAgICBob2xlUmVjdC5zZXRIZWlnaHQo
aG9sZVJlY3QuaGVpZ2h0KCkgLSBzdGQ6Om1pbihzaGFkb3dPZmZzZXQuaGVpZ2h0KCksIDApICsg
c2hhZG93UGFpbnRpbmdFeHRlbnQpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBDb2xv
ciBmaWxsQ29sb3Ioc2hhZG93Q29sb3IucmVkKCksIHNoYWRvd0NvbG9yLmdyZWVuKCksIHNoYWRv
d0NvbG9yLmJsdWUoKSwgMjU1KTsKQEAgLTI2MTQsNyArMjYxMiw3IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3Qg
TGF5b3V0UmVjCiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBjb250ZXh0LT5j
bGlwKGJvcmRlci5yZWN0KCkpOwogCi0gICAgICAgICAgICBJbnRTaXplIGV4dHJhT2Zmc2V0KDIg
KiBwYWludFJlY3QucGl4ZWxTbmFwcGVkV2lkdGgoKSArIG1heCgwLCBzaGFkb3dPZmZzZXQud2lk
dGgoKSkgKyBzaGFkb3dQYWludGluZ0V4dGVudCAtIDIgKiBzaGFkb3dTcHJlYWQgKyAxLCAwKTsK
KyAgICAgICAgICAgIEludFNpemUgZXh0cmFPZmZzZXQoMiAqIHBhaW50UmVjdC5waXhlbFNuYXBw
ZWRXaWR0aCgpICsgc3RkOjptYXgoMCwgc2hhZG93T2Zmc2V0LndpZHRoKCkpICsgc2hhZG93UGFp
bnRpbmdFeHRlbnQgLSAyICogc2hhZG93U3ByZWFkICsgMSwgMCk7CiAgICAgICAgICAgICBjb250
ZXh0LT50cmFuc2xhdGUoZXh0cmFPZmZzZXQud2lkdGgoKSwgZXh0cmFPZmZzZXQuaGVpZ2h0KCkp
OwogICAgICAgICAgICAgc2hhZG93T2Zmc2V0IC09IGV4dHJhT2Zmc2V0OwogCkBAIC0yNzI4LDcg
KzI3MjYsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2NhbENhcmV0UmVj
dEZvckVtcHR5RWxlbWVudChMYXlvdXRVbml0IHdpZHRoLAogICAgICAgICAgICAgeCAtPSB0ZXh0
SW5kZW50T2Zmc2V0OwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgeCA9IG1pbih4LCBtYXg8
TGF5b3V0VW5pdD4obWF4WCAtIGNhcmV0V2lkdGgsIDApKTsKKyAgICB4ID0gc3RkOjptaW4oeCwg
c3RkOjptYXg8TGF5b3V0VW5pdD4obWF4WCAtIGNhcmV0V2lkdGgsIDApKTsKIAogICAgIExheW91
dFVuaXQgeSA9IHBhZGRpbmdUb3AoKSArIGJvcmRlclRvcCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmlu
ZGV4IDYwODgxOTc5ZjI1YzU5NmRhNmMzZmMzNTE3NmUwYTQ2ODdlYTEzMmYuLjhiOWRmNGU4ZjI4
MmUxODFhNGIwMmY3YTk4ZWJkYjhhMWIxYmQxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC0zMyw4
ICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxleEJveEl0ZXJhdG9yIHsKQEAgLTg3LDcgKzg1LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGNvcHkrc29ydCB0aGUgdmFs
dWVzIG9uY2UgcGVyIGxheW91dCBldmVuIGlmIHRoZSBpdGVyYXRvciBpcyByZXNldC4KICAgICAg
ICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4obV9vcmRpbmFsVmFsdWVzLnNp
emUoKSkgIT0gbV9zb3J0ZWRPcmRpbmFsVmFsdWVzLnNpemUoKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgY29weVRvVmVjdG9yKG1fb3JkaW5hbFZhbHVlcywgbV9zb3J0ZWRPcmRpbmFsVmFs
dWVzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQobV9zb3J0ZWRPcmRpbmFsVmFsdWVz
LmJlZ2luKCksIG1fc29ydGVkT3JkaW5hbFZhbHVlcy5lbmQoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnNvcnQobV9zb3J0ZWRPcmRpbmFsVmFsdWVzLmJlZ2luKCksIG1fc29ydGVk
T3JkaW5hbFZhbHVlcy5lbmQoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50T3JkaW5hbCA9IG1fZm9yd2FyZCA/IG1fc29ydGVkT3JkaW5hbFZh
bHVlc1ttX29yZGluYWxJdGVyYXRpb24gLSAxXSA6IG1fc29ydGVkT3JkaW5hbFZhbHVlc1ttX3Nv
cnRlZE9yZGluYWxWYWx1ZXMuc2l6ZSgpIC0gbV9vcmRpbmFsSXRlcmF0aW9uXTsKICAgICAgICAg
ICAgICAgICB9CkBAIC0xODYsMTAgKzE4NCwxMCBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4
aWJsZUJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTAog
CiAgICAgICAgICAgICBMYXlvdXRVbml0IG1hcmdpbiA9IG1hcmdpbldpZHRoRm9yQ2hpbGQoY2hp
bGQpOwogICAgICAgICAgICAgTGF5b3V0VW5pdCB3aWR0aCA9IGNoaWxkLT5taW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGgoKSArIG1hcmdpbjsKLSAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IG1h
eCh3aWR0aCwgbWluTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9
IHN0ZDo6bWF4KHdpZHRoLCBtaW5Mb2dpY2FsV2lkdGgpOwogCiAgICAgICAgICAgICB3aWR0aCA9
IGNoaWxkLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSArIG1hcmdpbjsKLSAgICAgICAgICAg
IG1heExvZ2ljYWxXaWR0aCA9IG1heCh3aWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKKyAgICAgICAg
ICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KHdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0g
Zmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkg
ewpAQCAtMjAyLDcgKzIwMCw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94Ojpj
b21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5MCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBtYXhMb2dpY2FsV2lkdGggPSBtYXgobWluTG9naWNhbFdpZHRoLCBtYXhM
b2dpY2FsV2lkdGgpOworICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1pbkxvZ2ljYWxX
aWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKIAogICAgIExheW91dFVuaXQgc2Nyb2xsYmFyV2lkdGgg
PSBpbnN0cmluc2ljU2Nyb2xsYmFyTG9naWNhbFdpZHRoKCk7CiAgICAgbWF4TG9naWNhbFdpZHRo
ICs9IHNjcm9sbGJhcldpZHRoOwpAQCAtMjIwLDEzICsyMTgsMTMgQEAgdm9pZCBSZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICAg
ICAgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGgsIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKTsKIAogICAgIGlmIChzdHlsZSgpLm1pbldp
ZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlKCkubWluV2lkdGgoKS52YWx1ZSgpID4gMCkgewotICAg
ICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1heChtX21heFByZWZlcnJlZExvZ2lj
YWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgp
Lm1pbldpZHRoKCkudmFsdWUoKSkpOwotICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0
aCA9IG1heChtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2lj
YWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgpLm1pbldpZHRoKCkudmFsdWUoKSkpOworICAgICAg
ICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxl
KCkubWluV2lkdGgoKS52YWx1ZSgpKSk7CisgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdp
ZHRoID0gc3RkOjptYXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRC
b3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS5taW5XaWR0aCgpLnZhbHVlKCkpKTsK
ICAgICB9CiAKICAgICBpZiAoc3R5bGUoKS5tYXhXaWR0aCgpLmlzRml4ZWQoKSkgewotICAgICAg
ICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1pbihtX21heFByZWZlcnJlZExvZ2ljYWxX
aWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgpLm1h
eFdpZHRoKCkudmFsdWUoKSkpOwotICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9
IG1pbihtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxX
aWR0aEZvckJveFNpemluZyhzdHlsZSgpLm1heFdpZHRoKCkudmFsdWUoKSkpOworICAgICAgICBt
X21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKG1fbWF4UHJlZmVycmVkTG9naWNh
bFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCku
bWF4V2lkdGgoKS52YWx1ZSgpKSk7CisgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
ID0gc3RkOjptaW4obV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hM
b2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKICAg
ICB9CiAKICAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmcgPSBib3JkZXJBbmRQYWRkaW5n
TG9naWNhbFdpZHRoKCk7CkBAIC00NDgsMTYgKzQ0NiwxNiBAQCB2b2lkIFJlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4p
CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBkZXNjZW50ID0gKGNoaWxkLT5oZWlnaHQoKSAr
IGNoaWxkLT5tYXJnaW5IZWlnaHQoKSkgLSBhc2NlbnQ7CiAKICAgICAgICAgICAgICAgICAvLyBV
cGRhdGUgb3VyIG1heGltdW0gYXNjZW50LgotICAgICAgICAgICAgICAgIG1heEFzY2VudCA9IG1h
eChtYXhBc2NlbnQsIGFzY2VudCk7CisgICAgICAgICAgICAgICAgbWF4QXNjZW50ID0gc3RkOjpt
YXgobWF4QXNjZW50LCBhc2NlbnQpOwogCiAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIG91ciBt
YXhpbXVtIGRlc2NlbnQuCi0gICAgICAgICAgICAgICAgbWF4RGVzY2VudCA9IG1heChtYXhEZXNj
ZW50LCBkZXNjZW50KTsKKyAgICAgICAgICAgICAgICBtYXhEZXNjZW50ID0gc3RkOjptYXgobWF4
RGVzY2VudCwgZGVzY2VudCk7CiAKICAgICAgICAgICAgICAgICAvLyBOb3cgdXBkYXRlIG91ciBo
ZWlnaHQuCi0gICAgICAgICAgICAgICAgc2V0SGVpZ2h0KG1heCh5UG9zICsgbWF4QXNjZW50ICsg
bWF4RGVzY2VudCwgaGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICBzZXRIZWlnaHQoc3RkOjpt
YXgoeVBvcyArIG1heEFzY2VudCArIG1heERlc2NlbnQsIGhlaWdodCgpKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2V0SGVpZ2h0KG1heChoZWln
aHQoKSwgeVBvcyArIGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5IZWlnaHQoKSkpOwor
ICAgICAgICAgICAgICAgIHNldEhlaWdodChzdGQ6Om1heChoZWlnaHQoKSwgeVBvcyArIGNoaWxk
LT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5IZWlnaHQoKSkpOwogICAgICAgICB9CiAgICAgICAg
IEFTU0VSVChjaGlsZEluZGV4ID09IGNoaWxkTGF5b3V0RGVsdGFzLnNpemUoKSk7CiAKQEAgLTUx
Niw3ICs1MTQsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9y
aXpvbnRhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICBMYXlvdXRVbml0
IGNoaWxkWSA9IHlQb3M7CiAgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlKCkuYm94QWxpZ24oKSkg
ewogICAgICAgICAgICAgICAgIGNhc2UgQkNFTlRFUjoKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGRZICs9IGNoaWxkLT5tYXJnaW5Ub3AoKSArIG1heDxMYXlvdXRVbml0PigwLCAoY29udGVudEhl
aWdodCgpIC0gKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5IZWlnaHQoKSkpIC8gMik7
CisgICAgICAgICAgICAgICAgICAgIGNoaWxkWSArPSBjaGlsZC0+bWFyZ2luVG9wKCkgKyBzdGQ6
Om1heDxMYXlvdXRVbml0PigwLCAoY29udGVudEhlaWdodCgpIC0gKGNoaWxkLT5oZWlnaHQoKSAr
IGNoaWxkLT5tYXJnaW5IZWlnaHQoKSkpIC8gMik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIGNhc2UgQkJBU0VMSU5FOiB7CiAgICAgICAgICAgICAgICAgICAg
IExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCk7CkBAIC01NzUs
NyArNTczLDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEhvcml6
b250YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICAgICAgICAgICAgICAgICAg
TGF5b3V0VW5pdCBhbGxvd2VkRmxleCA9IGFsbG93ZWRDaGlsZEZsZXgoY2hpbGQsIGV4cGFuZGlu
ZywgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsb3dlZEZsZXgpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHByb2plY3RlZEZsZXggPSAoYWxsb3dl
ZEZsZXggPT0gTGF5b3V0VW5pdDo6bWF4KCkpID8gYWxsb3dlZEZsZXggOiBMYXlvdXRVbml0KGFs
bG93ZWRGbGV4ICogKHRvdGFsRmxleCAvIGNoaWxkLT5zdHlsZSgpLmJveEZsZXgoKSkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlQXZhaWxhYmxlVGhpc1Bhc3MgPSBleHBhbmRp
bmcgPyBtaW4oc3BhY2VBdmFpbGFibGVUaGlzUGFzcywgcHJvamVjdGVkRmxleCkgOiBtYXgoc3Bh
Y2VBdmFpbGFibGVUaGlzUGFzcywgcHJvamVjdGVkRmxleCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3BhY2VBdmFpbGFibGVUaGlzUGFzcyA9IGV4cGFuZGluZyA/IHN0ZDo6bWluKHNw
YWNlQXZhaWxhYmxlVGhpc1Bhc3MsIHByb2plY3RlZEZsZXgpIDogc3RkOjptYXgoc3BhY2VBdmFp
bGFibGVUaGlzUGFzcywgcHJvamVjdGVkRmxleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIH0KIApAQCAtNzYyLDcgKzc2MCw3IEBAIHZvaWQgUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJveChib29sIHJlbGF5b3V0Q2hp
bGRyZW4pCiAgICAgICAgICAgICBzd2l0Y2ggKHN0eWxlKCkuYm94QWxpZ24oKSkgewogICAgICAg
ICAgICAgICAgIGNhc2UgQkNFTlRFUjoKICAgICAgICAgICAgICAgICBjYXNlIEJCQVNFTElORTog
Ly8gQmFzZWxpbmUganVzdCBtYXBzIHRvIGNlbnRlciBmb3IgdmVydGljYWwgYm94ZXMKLSAgICAg
ICAgICAgICAgICAgICAgY2hpbGRYICs9IGNoaWxkLT5tYXJnaW5MZWZ0KCkgKyBtYXg8TGF5b3V0
VW5pdD4oMCwgKGNvbnRlbnRXaWR0aCgpIC0gKGNoaWxkLT53aWR0aCgpICsgY2hpbGQtPm1hcmdp
bldpZHRoKCkpKSAvIDIpOworICAgICAgICAgICAgICAgICAgICBjaGlsZFggKz0gY2hpbGQtPm1h
cmdpbkxlZnQoKSArIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIChjb250ZW50V2lkdGgoKSAtIChj
aGlsZC0+d2lkdGgoKSArIGNoaWxkLT5tYXJnaW5XaWR0aCgpKSkgLyAyKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCRU5EOgogICAgICAgICAgICAg
ICAgICAgICBpZiAoIXN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQpAQCAtODM2LDcg
KzgzNCw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNh
bEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgICAgICAgICBMYXlv
dXRVbml0IGFsbG93ZWRGbGV4ID0gYWxsb3dlZENoaWxkRmxleChjaGlsZCwgZXhwYW5kaW5nLCBp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbGxvd2VkRmxleCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIExheW91dFVuaXQgcHJvamVjdGVkRmxleCA9IChhbGxvd2VkRmxl
eCA9PSBMYXlvdXRVbml0OjptYXgoKSkgPyBhbGxvd2VkRmxleCA6IHN0YXRpY19jYXN0PExheW91
dFVuaXQ+KGFsbG93ZWRGbGV4ICogKHRvdGFsRmxleCAvIGNoaWxkLT5zdHlsZSgpLmJveEZsZXgo
KSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlQXZhaWxhYmxlVGhpc1Bhc3Mg
PSBleHBhbmRpbmcgPyBtaW4oc3BhY2VBdmFpbGFibGVUaGlzUGFzcywgcHJvamVjdGVkRmxleCkg
OiBtYXgoc3BhY2VBdmFpbGFibGVUaGlzUGFzcywgcHJvamVjdGVkRmxleCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3BhY2VBdmFpbGFibGVUaGlzUGFzcyA9IGV4cGFuZGluZyA/IHN0
ZDo6bWluKHNwYWNlQXZhaWxhYmxlVGhpc1Bhc3MsIHByb2plY3RlZEZsZXgpIDogc3RkOjptYXgo
c3BhY2VBdmFpbGFibGVUaGlzUGFzcywgcHJvamVjdGVkRmxleCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KIApAQCAtOTYwLDEzICs5NTgsMTMgQEAg
dm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmFwcGx5TGluZUNsYW1wKEZsZXhCb3hJ
dGVyYXRvciYgaXRlcmF0b3IsIGJvb2wKICAgICAgICAgfQogICAgICAgICBjaGlsZC0+bGF5b3V0
SWZOZWVkZWQoKTsKICAgICAgICAgaWYgKGNoaWxkLT5zdHlsZSgpLmhlaWdodCgpLmlzQXV0bygp
ICYmIGNoaWxkLT5pc1JlbmRlckJsb2NrRmxvdygpKQotICAgICAgICAgICAgbWF4TGluZUNvdW50
ID0gbWF4KG1heExpbmVDb3VudCwgdG9SZW5kZXJCbG9ja0Zsb3coY2hpbGQpLT5saW5lQ291bnQo
KSk7CisgICAgICAgICAgICBtYXhMaW5lQ291bnQgPSBzdGQ6Om1heChtYXhMaW5lQ291bnQsIHRv
UmVuZGVyQmxvY2tGbG93KGNoaWxkKS0+bGluZUNvdW50KCkpOwogICAgIH0KIAogICAgIC8vIEdl
dCB0aGUgbnVtYmVyIG9mIGxpbmVzIGFuZCB0aGVuIGFsdGVyIGFsbCBibG9jayBmbG93IGNoaWxk
cmVuIHdpdGggYXV0byBoZWlnaHQgdG8gdXNlIHRoZQogICAgIC8vIHNwZWNpZmllZCBoZWlnaHQu
IFdlIGFsd2F5cyB0cnkgdG8gbGVhdmUgcm9vbSBmb3IgYXQgbGVhc3Qgb25lIGxpbmUuCiAgICAg
TGluZUNsYW1wVmFsdWUgbGluZUNsYW1wID0gc3R5bGUoKS5saW5lQ2xhbXAoKTsKLSAgICBpbnQg
bnVtVmlzaWJsZUxpbmVzID0gbGluZUNsYW1wLmlzUGVyY2VudGFnZSgpID8gbWF4KDEsIChtYXhM
aW5lQ291bnQgKyAxKSAqIGxpbmVDbGFtcC52YWx1ZSgpIC8gMTAwKSA6IGxpbmVDbGFtcC52YWx1
ZSgpOworICAgIGludCBudW1WaXNpYmxlTGluZXMgPSBsaW5lQ2xhbXAuaXNQZXJjZW50YWdlKCkg
PyBzdGQ6Om1heCgxLCAobWF4TGluZUNvdW50ICsgMSkgKiBsaW5lQ2xhbXAudmFsdWUoKSAvIDEw
MCkgOiBsaW5lQ2xhbXAudmFsdWUoKTsKICAgICBpZiAobnVtVmlzaWJsZUxpbmVzID49IG1heExp
bmVDb3VudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDg2LDcgKzEwODQsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YWxsb3dlZENoaWxkRmxleChSZW5kZXJC
b3gqIGNoaWxkLCBib29sCiAgICAgICAgICAgICAgICAgbWF4V2lkdGggPSBjaGlsZC0+bWluUHJl
ZmVycmVkTG9naWNhbFdpZHRoKCk7CiAgICAgICAgICAgICBpZiAobWF4V2lkdGggPT0gTGF5b3V0
VW5pdDo6bWF4KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1heFdpZHRoOwotICAgICAgICAg
ICAgcmV0dXJuIG1heDxMYXlvdXRVbml0PigwLCBtYXhXaWR0aCAtIHdpZHRoKTsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBtYXhXaWR0aCAtIHdpZHRoKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBGb3Igbm93IGp1c3QgaGFuZGxl
IGZpeGVkIHZhbHVlcy4KICAgICAgICAgICAgIExheW91dFVuaXQgbWF4SGVpZ2h0ID0gTGF5b3V0
VW5pdDo6bWF4KCk7CkBAIC0xMDk1LDcgKzEwOTMsNyBAQCBMYXlvdXRVbml0IFJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveDo6YWxsb3dlZENoaWxkRmxleChSZW5kZXJCb3gqIGNoaWxkLCBib29s
CiAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gY2hpbGQtPnN0eWxlKCkubWF4SGVpZ2h0KCku
dmFsdWUoKTsKICAgICAgICAgICAgIGlmIChtYXhIZWlnaHQgPT0gTGF5b3V0VW5pdDo6bWF4KCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1heEhlaWdodDsKLSAgICAgICAgICAgIHJldHVybiBt
YXg8TGF5b3V0VW5pdD4oMCwgbWF4SGVpZ2h0IC0gaGVpZ2h0KTsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBtYXhIZWlnaHQgLSBoZWlnaHQpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC0xMTEyLDE0ICsxMTEwLDE0IEBAIExheW91dFVuaXQgUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94OjphbGxvd2VkQ2hpbGRGbGV4KFJlbmRlckJveCogY2hpbGQsIGJvb2wK
ICAgICAgICAgZWxzZSBpZiAoY2hpbGQtPnN0eWxlKCkubWluV2lkdGgoKS50eXBlKCkgPT0gQXV0
bykKICAgICAgICAgICAgIG1pbldpZHRoID0gMDsKIAotICAgICAgICBMYXlvdXRVbml0IGFsbG93
ZWRTaHJpbmthZ2UgPSBtaW48TGF5b3V0VW5pdD4oMCwgbWluV2lkdGggLSB3aWR0aCk7CisgICAg
ICAgIExheW91dFVuaXQgYWxsb3dlZFNocmlua2FnZSA9IHN0ZDo6bWluPExheW91dFVuaXQ+KDAs
IG1pbldpZHRoIC0gd2lkdGgpOwogICAgICAgICByZXR1cm4gYWxsb3dlZFNocmlua2FnZTsKICAg
ICB9IGVsc2UgewogICAgICAgICBMZW5ndGggbWluSGVpZ2h0ID0gY2hpbGQtPnN0eWxlKCkubWlu
SGVpZ2h0KCk7CiAgICAgICAgIGlmIChtaW5IZWlnaHQuaXNGaXhlZCgpIHx8IG1pbkhlaWdodC5p
c0F1dG8oKSkgewogICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5IZWlnaHQgPSBjaGlsZC0+c3R5
bGUoKS5taW5IZWlnaHQoKS52YWx1ZSgpOwogICAgICAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHQg
PSBjb250ZW50SGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpOwotICAgICAgICAgICAgTGF5b3V0VW5pdCBh
bGxvd2VkU2hyaW5rYWdlID0gbWluPExheW91dFVuaXQ+KDAsIG1pbkhlaWdodCAtIGhlaWdodCk7
CisgICAgICAgICAgICBMYXlvdXRVbml0IGFsbG93ZWRTaHJpbmthZ2UgPSBzdGQ6Om1pbjxMYXlv
dXRVbml0PigwLCBtaW5IZWlnaHQgLSBoZWlnaHQpOwogICAgICAgICAgICAgcmV0dXJuIGFsbG93
ZWRTaHJpbmthZ2U7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRleCA2M2U3ZGU5Y2M0MzU5
M2FmZjI2NmY0ZDI0ODBmMTM4ZGRmNWViNzQxLi4xOWU5ZWEzZWQ1YmRmN2M1NzkwMjJiYWVlOWJj
YzU3MmJiMWYwOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTM3LDggKzM3LDYgQEAKICNpbmNsdWRlICJWaXNp
YmxlUG9zaXRpb24uaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAg
LTk3LDcgKzk1LDcgQEAgc3RhdGljIGludCBub2RlV2lkdGgoTm9kZSogbm9kZSkKIAogaW50IFJl
bmRlckZpbGVVcGxvYWRDb250cm9sOjptYXhGaWxlbmFtZVdpZHRoKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbWF4KDAsIGNvbnRlbnRCb3hSZWN0KCkucGl4ZWxTbmFwcGVkV2lkdGgoKSAtIG5vZGVX
aWR0aCh1cGxvYWRCdXR0b24oKSkgLSBhZnRlckJ1dHRvblNwYWNpbmcKKyAgICByZXR1cm4gc3Rk
OjptYXgoMCwgY29udGVudEJveFJlY3QoKS5waXhlbFNuYXBwZWRXaWR0aCgpIC0gbm9kZVdpZHRo
KHVwbG9hZEJ1dHRvbigpKSAtIGFmdGVyQnV0dG9uU3BhY2luZwogICAgICAgICAtIChpbnB1dEVs
ZW1lbnQoKS5pY29uKCkgPyBpY29uV2lkdGggKyBpY29uRmlsZW5hbWVTcGFjaW5nIDogMCkpOwog
fQogCkBAIC0xODUsNyArMTgzLDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6Y29t
cHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWMKICAgICBpZiAo
SFRNTElucHV0RWxlbWVudCogYnV0dG9uID0gdXBsb2FkQnV0dG9uKCkpCiAgICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIGJ1dHRvblJlbmRlcmVyID0gYnV0dG9uLT5yZW5kZXJlcigpKQogICAgICAg
ICAgICAgZGVmYXVsdExhYmVsV2lkdGggKz0gYnV0dG9uUmVuZGVyZXItPm1heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCgpICsgYWZ0ZXJCdXR0b25TcGFjaW5nOwotICAgIG1heExvZ2ljYWxXaWR0aCA9
IHN0YXRpY19jYXN0PGludD4oY2VpbGYobWF4KG1pbkRlZmF1bHRMYWJlbFdpZHRoLCBkZWZhdWx0
TGFiZWxXaWR0aCkpKTsKKyAgICBtYXhMb2dpY2FsV2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KGNl
aWxmKHN0ZDo6bWF4KG1pbkRlZmF1bHRMYWJlbFdpZHRoLCBkZWZhdWx0TGFiZWxXaWR0aCkpKTsK
IAogICAgIGlmICghc3R5bGUoKS53aWR0aCgpLmlzUGVyY2VudCgpKQogICAgICAgICBtaW5Mb2dp
Y2FsV2lkdGggPSBtYXhMb2dpY2FsV2lkdGg7CkBAIC0yMDQsMTMgKzIwMiwxMyBAQCB2b2lkIFJl
bmRlckZpbGVVcGxvYWRDb250cm9sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAg
ICAgICAgIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKG1fbWluUHJlZmVycmVkTG9naWNh
bFdpZHRoLCBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCk7CiAKICAgICBpZiAoc3R5bGUoKS5t
aW5XaWR0aCgpLmlzRml4ZWQoKSAmJiBzdHlsZSgpLm1pbldpZHRoKCkudmFsdWUoKSA+IDApIHsK
LSAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtYXgobV9tYXhQcmVmZXJyZWRM
b2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5
bGUoKS5taW5XaWR0aCgpLnZhbHVlKCkpKTsKLSAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGggPSBtYXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hM
b2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS5taW5XaWR0aCgpLnZhbHVlKCkpKTsKKyAg
ICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX21heFByZWZlcnJl
ZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhz
dHlsZSgpLm1pbldpZHRoKCkudmFsdWUoKSkpOworICAgICAgICBtX21pblByZWZlcnJlZExvZ2lj
YWxXaWR0aCA9IHN0ZDo6bWF4KG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250
ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCkubWluV2lkdGgoKS52YWx1ZSgp
KSk7CiAgICAgfQogCiAgICAgaWYgKHN0eWxlKCkubWF4V2lkdGgoKS5pc0ZpeGVkKCkpIHsKLSAg
ICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtaW4obV9tYXhQcmVmZXJyZWRMb2dp
Y2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUo
KS5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKLSAgICAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lk
dGggPSBtaW4obV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dp
Y2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKKyAgICAg
ICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1pbihtX21heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHls
ZSgpLm1heFdpZHRoKCkudmFsdWUoKSkpOworICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxX
aWR0aCA9IHN0ZDo6bWluKG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50
Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCkubWF4V2lkdGgoKS52YWx1ZSgpKSk7
CiAgICAgfQogCiAgICAgaW50IHRvQWRkID0gYm9yZGVyQW5kUGFkZGluZ1dpZHRoKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBkZTg5MjVmZmEwODM3Mjk4
NTExNTgzOTNlYjE2Yjc3YzNhYTU1NmM2Li5jYjYyMGU5MDIwNDQ3NzZkNDBhZjRmNzE5NGQ4NTQ3
YzViZjA2MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAg
LTQ3LDggKzQ3LDYgQEAKICNpbmNsdWRlICJTVkdJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGFj
a1N0YXRzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTE0MSw3ICsxMzksNyBAQCBib29sIFJl
bmRlckltYWdlOjpzZXRJbWFnZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSAv
KiA9IDAgKi8pCiAgICAgICAgIEZvbnRDYWNoZVB1cmdlUHJldmVudGVyIGZvbnRDYWNoZVB1cmdl
UHJldmVudGVyOwogCiAgICAgICAgIGNvbnN0IEZvbnQmIGZvbnQgPSBzdHlsZSgpLmZvbnQoKTsK
LSAgICAgICAgSW50U2l6ZSBwYWRkZWRUZXh0U2l6ZShwYWRkaW5nV2lkdGggKyBtaW4oY2VpbGYo
Zm9udC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCBtX2Fs
dFRleHQsIHN0eWxlKCkpKSksIG1heEFsdFRleHRXaWR0aCksIHBhZGRpbmdIZWlnaHQgKyBtaW4o
Zm9udC5mb250TWV0cmljcygpLmhlaWdodCgpLCBtYXhBbHRUZXh0SGVpZ2h0KSk7CisgICAgICAg
IEludFNpemUgcGFkZGVkVGV4dFNpemUocGFkZGluZ1dpZHRoICsgc3RkOjptaW4oY2VpbGYoZm9u
dC53aWR0aChSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCBtX2FsdFRl
eHQsIHN0eWxlKCkpKSksIG1heEFsdFRleHRXaWR0aCksIHBhZGRpbmdIZWlnaHQgKyBzdGQ6Om1p
bihmb250LmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCksIG1heEFsdFRleHRIZWlnaHQpKTsKICAgICAg
ICAgaW1hZ2VTaXplID0gaW1hZ2VTaXplLmV4cGFuZGVkVG8ocGFkZGVkVGV4dFNpemUpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCBiOGM4
ZDcxYWIwMTEyOGZhNGM3MzAwOGY1YWZjZTRlNzA3MzRkNmYzLi41MmRlNTgyODk0YjRmMmM2N2U2
YmY2ZmUzODllYzdiZDExZDY4YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcApAQCAtNDcsOCArNDcsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjZW5kaWYK
IAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJJ
bmxpbmU6OlJlbmRlcklubGluZShFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxl
PiBzdHlsZSkKQEAgLTcyNCw3ICs3MjIsNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlTWFy
Z2luKGNvbnN0IFJlbmRlcklubGluZSogcmVuZGVyZXIsIGNvbnN0IExlbmd0aCYgbWFyZwogICAg
IGlmIChtYXJnaW4uaXNGaXhlZCgpKQogICAgICAgICByZXR1cm4gbWFyZ2luLnZhbHVlKCk7CiAg
ICAgaWYgKG1hcmdpbi5pc1BlcmNlbnQoKSkKLSAgICAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChtYXJnaW4sIG1heDxMYXlvdXRVbml0PigwLCByZW5kZXJlci0+Y29udGFpbmluZ0Js
b2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKSk7CisgICAgICAgIHJldHVybiBtaW5pbXVt
VmFsdWVGb3JMZW5ndGgobWFyZ2luLCBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCByZW5kZXJlci0+
Y29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKSk7CiAgICAgaWYgKG1h
cmdpbi5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKQogICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5n
dGgobWFyZ2luLCAwLCAmcmVuZGVyZXItPnZpZXcoKSk7CiAgICAgcmV0dXJuIDA7CkBAIC0xMDE5
LDggKzEwMTcsOCBAQCBMYXlvdXRSZWN0IFJlbmRlcklubGluZTo6bGluZXNWaXN1YWxPdmVyZmxv
d0JvdW5kaW5nQm94KCkgY29uc3QKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0U2lkZSA9IExh
eW91dFVuaXQ6Om1heCgpOwogICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0U2lkZSA9IExheW91
dFVuaXQ6Om1pbigpOwogICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IGZpcnN0TGluZUJv
eCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkgewotICAgICAgICBsb2dpY2Fs
TGVmdFNpZGUgPSBtaW4obG9naWNhbExlZnRTaWRlLCBjdXJyLT5sb2dpY2FsTGVmdFZpc3VhbE92
ZXJmbG93KCkpOwotICAgICAgICBsb2dpY2FsUmlnaHRTaWRlID0gbWF4KGxvZ2ljYWxSaWdodFNp
ZGUsIGN1cnItPmxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93KCkpOworICAgICAgICBsb2dpY2Fs
TGVmdFNpZGUgPSBzdGQ6Om1pbihsb2dpY2FsTGVmdFNpZGUsIGN1cnItPmxvZ2ljYWxMZWZ0Vmlz
dWFsT3ZlcmZsb3coKSk7CisgICAgICAgIGxvZ2ljYWxSaWdodFNpZGUgPSBzdGQ6Om1heChsb2dp
Y2FsUmlnaHRTaWRlLCBjdXJyLT5sb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdygpKTsKICAgICB9
CiAKICAgICBjb25zdCBSb290SW5saW5lQm94JiBmaXJzdFJvb3RCb3ggPSBmaXJzdExpbmVCb3go
KS0+cm9vdCgpOwpAQCAtMTQ3NSw4ICsxNDczLDggQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50
T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YK
ICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdCgpKTsKICAgICBmb3IgKElubGluZUZsb3dCb3gq
IGN1cnIgPSBmaXJzdExpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkp
IHsKICAgICAgICAgY29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IGN1cnItPnJvb3QoKTsK
LSAgICAgICAgTGF5b3V0VW5pdCB0b3AgPSBtYXg8TGF5b3V0VW5pdD4ocm9vdEJveC5saW5lVG9w
KCksIGN1cnItPmxvZ2ljYWxUb3AoKSk7Ci0gICAgICAgIExheW91dFVuaXQgYm90dG9tID0gbWlu
PExheW91dFVuaXQ+KHJvb3RCb3gubGluZUJvdHRvbSgpLCBjdXJyLT5sb2dpY2FsQm90dG9tKCkp
OworICAgICAgICBMYXlvdXRVbml0IHRvcCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KHJvb3RCb3gu
bGluZVRvcCgpLCBjdXJyLT5sb2dpY2FsVG9wKCkpOworICAgICAgICBMYXlvdXRVbml0IGJvdHRv
bSA9IHN0ZDo6bWluPExheW91dFVuaXQ+KHJvb3RCb3gubGluZUJvdHRvbSgpLCBjdXJyLT5sb2dp
Y2FsQm90dG9tKCkpOwogICAgICAgICByZWN0cy5hcHBlbmQoTGF5b3V0UmVjdChjdXJyLT54KCks
IHRvcCwgY3Vyci0+bG9naWNhbFdpZHRoKCksIGJvdHRvbSAtIHRvcCkpOwogICAgIH0KICAgICBy
ZWN0cy5hcHBlbmQoTGF5b3V0UmVjdCgpKTsKQEAgLTE1NDQsNyArMTU0Miw3IEBAIHZvaWQgUmVu
ZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBjb25zdCBMCiAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRl
eHQsCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAogICAg
ICAgICAgICAgcGl4ZWxTbmFwcGVkQm94LnkoKSAtIG91dGxpbmVXaWR0aCwKLSAgICAgICAgICAg
IG1pbihwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLCAobGFzdGxpbmUuaXNF
bXB0eSgpID8gMTAwMDAwMCA6IHBpeGVsU25hcHBlZExhc3RMaW5lLngoKSkpLAorICAgICAgICAg
ICAgc3RkOjptaW4ocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxpbmVXaWR0aCwgKGxhc3Rs
aW5lLmlzRW1wdHkoKSA/IDEwMDAwMDAgOiBwaXhlbFNuYXBwZWRMYXN0TGluZS54KCkpKSwKICAg
ICAgICAgICAgIHBpeGVsU25hcHBlZEJveC55KCksCiAgICAgICAgICAgICBCU1RvcCwgb3V0bGlu
ZUNvbG9yLCBvdXRsaW5lU3R5bGUsCiAgICAgICAgICAgICBvdXRsaW5lV2lkdGgsCkBAIC0xNTUz
LDcgKzE1NTEsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgIAogICAgIGlmIChsYXN0
bGluZS5tYXhYKCkgPCB0aGlzbGluZS5tYXhYKCkpCiAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lk
ZShncmFwaGljc0NvbnRleHQsCi0gICAgICAgICAgICBtYXgobGFzdGxpbmUuaXNFbXB0eSgpID8g
LTEwMDAwMDAgOiBwaXhlbFNuYXBwZWRMYXN0TGluZS5tYXhYKCksIHBpeGVsU25hcHBlZEJveC54
KCkgLSBvdXRsaW5lV2lkdGgpLAorICAgICAgICAgICAgc3RkOjptYXgobGFzdGxpbmUuaXNFbXB0
eSgpID8gLTEwMDAwMDAgOiBwaXhlbFNuYXBwZWRMYXN0TGluZS5tYXhYKCksIHBpeGVsU25hcHBl
ZEJveC54KCkgLSBvdXRsaW5lV2lkdGgpLAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94Lnko
KSAtIG91dGxpbmVXaWR0aCwKICAgICAgICAgICAgIHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBv
dXRsaW5lV2lkdGgsCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgpLApAQCAtMTU3Nyw3
ICsxNTc1LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgZHJhd0xpbmVGb3JC
b3hTaWRlKGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIHBpeGVsU25hcHBlZEJveC54KCkg
LSBvdXRsaW5lV2lkdGgsCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gubWF4WSgpLAotICAg
ICAgICAgICAgbWluKHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsICFuZXh0
bGluZS5pc0VtcHR5KCkgPyBwaXhlbFNuYXBwZWROZXh0TGluZS54KCkgKyAxIDogMTAwMDAwMCks
CisgICAgICAgICAgICBzdGQ6Om1pbihwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdp
ZHRoLCAhbmV4dGxpbmUuaXNFbXB0eSgpID8gcGl4ZWxTbmFwcGVkTmV4dExpbmUueCgpICsgMSA6
IDEwMDAwMDApLAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94Lm1heFkoKSArIG91dGxpbmVX
aWR0aCwKICAgICAgICAgICAgIEJTQm90dG9tLCBvdXRsaW5lQ29sb3IsIG91dGxpbmVTdHlsZSwK
ICAgICAgICAgICAgIG91dGxpbmVXaWR0aCwKQEAgLTE1ODYsNyArMTU4NCw3IEBAIHZvaWQgUmVu
ZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBjb25zdCBMCiAgICAgCiAgICAgaWYgKG5leHRsaW5lLm1heFgoKSA8IHRoaXNsaW5l
Lm1heFgoKSkKICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwKLSAg
ICAgICAgICAgIG1heCghbmV4dGxpbmUuaXNFbXB0eSgpID8gcGl4ZWxTbmFwcGVkTmV4dExpbmUu
bWF4WCgpIDogLTEwMDAwMDAsIHBpeGVsU25hcHBlZEJveC54KCkgLSBvdXRsaW5lV2lkdGgpLAor
ICAgICAgICAgICAgc3RkOjptYXgoIW5leHRsaW5lLmlzRW1wdHkoKSA/IHBpeGVsU25hcHBlZE5l
eHRMaW5lLm1heFgoKSA6IC0xMDAwMDAwLCBwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdp
ZHRoKSwKICAgICAgICAgICAgIHBpeGVsU25hcHBlZEJveC5tYXhZKCksCiAgICAgICAgICAgICBw
aXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLAogICAgICAgICAgICAgcGl4ZWxT
bmFwcGVkQm94Lm1heFkoKSArIG91dGxpbmVXaWR0aCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmluZGV4IGMxMzllNWE5ZTNiYTk5N2E0NDI5YWYwNzViZDllNTkzMThi
ZTRlNWMuLjNjYWI1YWU5M2Q3NTc4ZWQ2ZTI0Y2ExMzQ3ZTZjYTA0NGMzYWU0NjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTM0LDggKzEzNCw2IEBACiAK
ICNkZWZpbmUgTUlOX0lOVEVSU0VDVF9GT1JfUkVWRUFMIDMyCiAKLXVzaW5nIG5hbWVzcGFjZSBz
dGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
QEAgLTIxODMsOCArMjE4MSw4IEBAIEludFNpemUgUmVuZGVyTGF5ZXI6OmNsYW1wU2Nyb2xsT2Zm
c2V0KGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCkgY29uc3QKICAgICBpbnQgbWF4WCA9IHNj
cm9sbFdpZHRoKCkgLSBib3gtPnBpeGVsU25hcHBlZENsaWVudFdpZHRoKCk7CiAgICAgaW50IG1h
eFkgPSBzY3JvbGxIZWlnaHQoKSAtIGJveC0+cGl4ZWxTbmFwcGVkQ2xpZW50SGVpZ2h0KCk7CiAK
LSAgICBpbnQgeCA9IG1heChtaW4oc2Nyb2xsT2Zmc2V0LndpZHRoKCksIG1heFgpLCAwKTsKLSAg
ICBpbnQgeSA9IG1heChtaW4oc2Nyb2xsT2Zmc2V0LmhlaWdodCgpLCBtYXhZKSwgMCk7CisgICAg
aW50IHggPSBzdGQ6Om1heChzdGQ6Om1pbihzY3JvbGxPZmZzZXQud2lkdGgoKSwgbWF4WCksIDAp
OworICAgIGludCB5ID0gc3RkOjptYXgoc3RkOjptaW4oc2Nyb2xsT2Zmc2V0LmhlaWdodCgpLCBt
YXhZKSwgMCk7CiAgICAgcmV0dXJuIEludFNpemUoeCwgeSk7CiB9CiAKQEAgLTIzMzYsOCArMjMz
NCw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0
UmVjdCYgcmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tCiAgICAgICAgICAgICAgICAgaW50IHhPZmZz
ZXQgPSByb3VuZFRvSW50KGV4cG9zZVJlY3QueCgpKTsKICAgICAgICAgICAgICAgICBpbnQgeU9m
ZnNldCA9IHJvdW5kVG9JbnQoZXhwb3NlUmVjdC55KCkpOwogICAgICAgICAgICAgICAgIC8vIEFk
anVzdCBvZmZzZXRzIGlmIHRoZXkncmUgb3V0c2lkZSBvZiB0aGUgYWxsb3dhYmxlIHJhbmdlLgot
ICAgICAgICAgICAgICAgIHhPZmZzZXQgPSBtYXgoMCwgbWluKGZyYW1lVmlldy5jb250ZW50c1dp
ZHRoKCksIHhPZmZzZXQpKTsKLSAgICAgICAgICAgICAgICB5T2Zmc2V0ID0gbWF4KDAsIG1pbihm
cmFtZVZpZXcuY29udGVudHNIZWlnaHQoKSwgeU9mZnNldCkpOworICAgICAgICAgICAgICAgIHhP
ZmZzZXQgPSBzdGQ6Om1heCgwLCBzdGQ6Om1pbihmcmFtZVZpZXcuY29udGVudHNXaWR0aCgpLCB4
T2Zmc2V0KSk7CisgICAgICAgICAgICAgICAgeU9mZnNldCA9IHN0ZDo6bWF4KDAsIHN0ZDo6bWlu
KGZyYW1lVmlldy5jb250ZW50c0hlaWdodCgpLCB5T2Zmc2V0KSk7CiAKICAgICAgICAgICAgICAg
ICBmcmFtZVZpZXcuc2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoeE9mZnNldCwgeU9mZnNldCkp
OwogICAgICAgICAgICAgICAgIGlmIChmcmFtZVZpZXcuc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9Q
YXJlbnQoKSkgewpAQCAtMjU5Miw4ICsyNTkwLDggQEAgSW50UmVjdCBSZW5kZXJMYXllcjo6dmlz
aWJsZUNvbnRlbnRSZWN0KFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyBzY3IK
ICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQoc2Nyb2xsWE9mZnNldCgp
LCBzY3JvbGxZT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgICAgIEludFNpemUobWF4KDAsIG1f
bGF5ZXJTaXplLndpZHRoKCkgLSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKSwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXgoMCwgbV9sYXllclNpemUuaGVpZ2h0KCkgLSBob3Jpem9udGFs
U2Nyb2xsYmFySGVpZ2h0KSkpOworICAgICAgICAgICAgICAgICAgIEludFNpemUoc3RkOjptYXgo
MCwgbV9sYXllclNpemUud2lkdGgoKSAtIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXgoMCwgbV9sYXllclNpemUuaGVpZ2h0KCkgLSBo
b3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KSkpOwogfQogCiBJbnRTaXplIFJlbmRlckxheWVyOjpv
dmVyaGFuZ0Ftb3VudCgpIGNvbnN0CkBAIC0zMTU1LDEzICszMTUzLDEzIEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dCgpCiAgICAgLy8gU2V0IHVwIHRoZSBy
YW5nZSAoYW5kIHBhZ2Ugc3RlcC9saW5lIHN0ZXApLgogICAgIGlmIChtX2hCYXIpIHsKICAgICAg
ICAgaW50IGNsaWVudFdpZHRoID0gYm94LT5waXhlbFNuYXBwZWRDbGllbnRXaWR0aCgpOwotICAg
ICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgobWF4PGludD4oY2xpZW50V2lkdGggKiBTY3JvbGxiYXI6
Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBjbGllbnRXaWR0aCAtIFNjcm9sbGJhcjo6
bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpKSwgMSk7CisgICAgICAgIGludCBwYWdlU3RlcCA9IHN0
ZDo6bWF4KHN0ZDo6bWF4PGludD4oY2xpZW50V2lkdGggKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9u
VG9TdGVwV2hlblBhZ2luZygpLCBjbGllbnRXaWR0aCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJl
dHdlZW5QYWdlcygpKSwgMSk7CiAgICAgICAgIG1faEJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpw
aXhlbHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7CiAgICAgICAgIG1faEJhci0+c2V0UHJvcG9y
dGlvbihjbGllbnRXaWR0aCwgbV9zY3JvbGxTaXplLndpZHRoKCkpOwogICAgIH0KICAgICBpZiAo
bV92QmFyKSB7CiAgICAgICAgIGludCBjbGllbnRIZWlnaHQgPSBib3gtPnBpeGVsU25hcHBlZENs
aWVudEhlaWdodCgpOwotICAgICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgobWF4PGludD4oY2xpZW50
SGVpZ2h0ICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcoKSwgY2xpZW50
SGVpZ2h0IC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkpLCAxKTsKKyAgICAg
ICAgaW50IHBhZ2VTdGVwID0gc3RkOjptYXgoc3RkOjptYXg8aW50PihjbGllbnRIZWlnaHQgKiBT
Y3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBjbGllbnRIZWlnaHQgLSBT
Y3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSksIDEpOwogICAgICAgICBtX3ZCYXIt
PnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwogICAg
ICAgICBtX3ZCYXItPnNldFByb3BvcnRpb24oY2xpZW50SGVpZ2h0LCBtX3Njcm9sbFNpemUuaGVp
Z2h0KCkpOwogICAgIH0KQEAgLTM0MTcsNyArMzQxNSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6Omhp
dFRlc3RPdmVyZmxvd0NvbnRyb2xzKEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSW50UG9p
bnQmCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpbnQgcmVzaXplQ29u
dHJvbFNpemUgPSBtYXgocmVzaXplQ29udHJvbFJlY3QuaGVpZ2h0KCksIDApOworICAgIGludCBy
ZXNpemVDb250cm9sU2l6ZSA9IHN0ZDo6bWF4KHJlc2l6ZUNvbnRyb2xSZWN0LmhlaWdodCgpLCAw
KTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGl0IHRlc3QgdGhlIG1fc2Nyb2xsQ29ybmVy
IGFuZCBwYXNzIGl0IGJhY2sgdGhyb3VnaCB0aGUgcmVzdWx0LgogCkBAIC0zNDMyLDcgKzM0MzAs
NyBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scyhIaXRUZXN0UmVz
dWx0JiByZXN1bHQsIGNvbnN0IEludFBvaW50JgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmVz
aXplQ29udHJvbFNpemUgPSBtYXgocmVzaXplQ29udHJvbFJlY3Qud2lkdGgoKSwgMCk7CisgICAg
cmVzaXplQ29udHJvbFNpemUgPSBzdGQ6Om1heChyZXNpemVDb250cm9sUmVjdC53aWR0aCgpLCAw
KTsKICAgICBpZiAobV9oQmFyICYmIG1faEJhci0+c2hvdWxkUGFydGljaXBhdGVJbkhpdFRlc3Rp
bmcoKSkgewogICAgICAgICBMYXlvdXRSZWN0IGhCYXJSZWN0KGhvcml6b250YWxTY3JvbGxiYXJT
dGFydCgwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3gtPmhlaWdodCgpIC0gYm94
LT5ib3JkZXJCb3R0b20oKSAtIG1faEJhci0+aGVpZ2h0KCksCkBAIC00NjUyLDcgKzQ2NTAsNyBA
QCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9v
dExheWVyLCBSZW5kZXJMYXllciogY29udAogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgdXNl
ZCBmb3Iga2VlcGluZyB0cmFjayBvZiB0aGUgei1kZXB0aCBvZiB0aGUgaGl0IHBvaW50IG9mIDNk
LXRyYW5zZm9ybWVkCiAgICAgLy8gZGVzY2VuZGFudHMuCi0gICAgZG91YmxlIGxvY2FsWk9mZnNl
dCA9IC1udW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOworICAgIGRvdWJsZSBsb2Nh
bFpPZmZzZXQgPSAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwogICAg
IGRvdWJsZSogek9mZnNldEZvckRlc2NlbmRhbnRzUHRyID0gMDsKICAgICBkb3VibGUqIHpPZmZz
ZXRGb3JDb250ZW50c1B0ciA9IDA7CiAgICAgCkBAIC01NDYyLDggKzU0NjAsOCBAQCBMYXlvdXRS
ZWN0IFJlbmRlckxheWVyOjpjYWxjdWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciog
YW5jZXN0b3JMYXllciwgYwogICAgICAgICAvLyB0aGVuIGl0IGhhcyB0byBiZSBiaWcgZW5vdWdo
IHRvIGNvdmVyIHRoZSB2aWV3cG9ydCBpbiBvcmRlciB0byBkaXNwbGF5IHRoZSBiYWNrZ3JvdW5k
LiBUaGlzIGlzIGFraW4KICAgICAgICAgLy8gdG8gdGhlIGNvZGUgaW4gUmVuZGVyQm94OjpwYWlu
dFJvb3RCb3hGaWxsTGF5ZXJzKCkuCiAgICAgICAgIGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3
ID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCk7Ci0gICAgICAgIGJvdW5kaW5nQm94UmVj
dC5zZXRXaWR0aChtYXgoYm91bmRpbmdCb3hSZWN0LndpZHRoKCksIGZyYW1lVmlldy5jb250ZW50
c1dpZHRoKCkgLSBib3VuZGluZ0JveFJlY3QueCgpKSk7Ci0gICAgICAgIGJvdW5kaW5nQm94UmVj
dC5zZXRIZWlnaHQobWF4KGJvdW5kaW5nQm94UmVjdC5oZWlnaHQoKSwgZnJhbWVWaWV3LmNvbnRl
bnRzSGVpZ2h0KCkgLSBib3VuZGluZ0JveFJlY3QueSgpKSk7CisgICAgICAgIGJvdW5kaW5nQm94
UmVjdC5zZXRXaWR0aChzdGQ6Om1heChib3VuZGluZ0JveFJlY3Qud2lkdGgoKSwgZnJhbWVWaWV3
LmNvbnRlbnRzV2lkdGgoKSAtIGJvdW5kaW5nQm94UmVjdC54KCkpKTsKKyAgICAgICAgYm91bmRp
bmdCb3hSZWN0LnNldEhlaWdodChzdGQ6Om1heChib3VuZGluZ0JveFJlY3QuaGVpZ2h0KCksIGZy
YW1lVmlldy5jb250ZW50c0hlaWdodCgpIC0gYm91bmRpbmdCb3hSZWN0LnkoKSkpOwogICAgIH0K
IAogICAgIExheW91dFJlY3QgdW5pb25Cb3VuZHMgPSBib3VuZGluZ0JveFJlY3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDFkMjhm
NmE1MmQwOTRkMDI2YmY0ZTJiZDAwODM1M2EyZGUzMTQwMDkuLjc5NjIzNjVkMzYwMGFlNDQwMjFk
YTBlYmJkOWJiYzllY2M0NTg5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC03NCw4ICs3NCw2IEBACiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggNWRi
Y2MxZTY4NjkxOWQ0NzA4MTYzZTRlMGRmN2FhM2M5NzU4ZjU1MC4uYmE1MjhjNjdlNGVkNWUyMjEy
MzFhODhhNzgzMjJlYWZjZjZmOTVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtMjgsOCArMjgsNiBAQAogI2luY2x1
ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCi11c2luZyBuYW1l
c3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdDo6c193YXNGbG9hdGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKaW5kZXggZjhkYTQ3MmQ5YzlhZTNmODYxN2Q4ZDIx
NTRiMGE0NTM1YmZkMGM0OS4uODYwMGJiYjY1YjY4ZGFiZDY4MDc2Y2I3OWYzZTJmYTUwODg5MmRm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3Bw
CkBAIC0zOSw4ICszOSw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJv
b3RJbmxpbmVCb3guaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjaWZuZGVmIE5ERUJVRwpAQCAtMTYxLDcgKzE1OSw3IEBAIGJvb2wgUmVuZGVyTGlu
ZUJveExpc3Q6OnJhbmdlSW50ZXJzZWN0c1JlY3QoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRl
cmVyLCBMYXlvCiAgICAgTGF5b3V0VW5pdCBwaHlzaWNhbFN0YXJ0ID0gYmxvY2stPmZsaXBGb3JX
cml0aW5nTW9kZShsb2dpY2FsVG9wKTsKICAgICBMYXlvdXRVbml0IHBoeXNpY2FsRW5kID0gYmxv
Y2stPmZsaXBGb3JXcml0aW5nTW9kZShsb2dpY2FsQm90dG9tKTsKICAgICBMYXlvdXRVbml0IHBo
eXNpY2FsRXh0ZW50ID0gYWJzb2x1dGVWYWx1ZShwaHlzaWNhbEVuZCAtIHBoeXNpY2FsU3RhcnQp
OwotICAgIHBoeXNpY2FsU3RhcnQgPSBtaW4ocGh5c2ljYWxTdGFydCwgcGh5c2ljYWxFbmQpOwor
ICAgIHBoeXNpY2FsU3RhcnQgPSBzdGQ6Om1pbihwaHlzaWNhbFN0YXJ0LCBwaHlzaWNhbEVuZCk7
CiAgICAgCiAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkpIHsKICAgICAgICAgcGh5c2ljYWxTdGFydCArPSBvZmZzZXQueSgpOwpAQCAtMTg2LDEwICsx
ODQsMTAgQEAgYm9vbCBSZW5kZXJMaW5lQm94TGlzdDo6YW55TGluZUludGVyc2VjdHNSZWN0KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciwgY28KICAgICBjb25zdCBSb290SW5saW5lQm94
JiBsYXN0Um9vdEJveCA9IGxhc3RMaW5lQm94KCktPnJvb3QoKTsKICAgICBMYXlvdXRVbml0IGZp
cnN0TGluZVRvcCA9IGZpcnN0TGluZUJveCgpLT5sb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3coZmly
c3RSb290Qm94LmxpbmVUb3AoKSk7CiAgICAgaWYgKHVzZVByaW50UmVjdCAmJiAhZmlyc3RMaW5l
Qm94KCktPnBhcmVudCgpKQotICAgICAgICBmaXJzdExpbmVUb3AgPSBtaW4oZmlyc3RMaW5lVG9w
LCBmaXJzdFJvb3RCb3gubGluZVRvcCgpKTsKKyAgICAgICAgZmlyc3RMaW5lVG9wID0gc3RkOjpt
aW4oZmlyc3RMaW5lVG9wLCBmaXJzdFJvb3RCb3gubGluZVRvcCgpKTsKICAgICBMYXlvdXRVbml0
IGxhc3RMaW5lQm90dG9tID0gbGFzdExpbmVCb3goKS0+bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJm
bG93KGxhc3RSb290Qm94LmxpbmVCb3R0b20oKSk7CiAgICAgaWYgKHVzZVByaW50UmVjdCAmJiAh
bGFzdExpbmVCb3goKS0+cGFyZW50KCkpCi0gICAgICAgIGxhc3RMaW5lQm90dG9tID0gbWF4KGxh
c3RMaW5lQm90dG9tLCBsYXN0Um9vdEJveC5saW5lQm90dG9tKCkpOworICAgICAgICBsYXN0TGlu
ZUJvdHRvbSA9IHN0ZDo6bWF4KGxhc3RMaW5lQm90dG9tLCBsYXN0Um9vdEJveC5saW5lQm90dG9t
KCkpOwogICAgIExheW91dFVuaXQgbG9naWNhbFRvcCA9IGZpcnN0TGluZVRvcCAtIG91dGxpbmVT
aXplOwogICAgIExheW91dFVuaXQgbG9naWNhbEJvdHRvbSA9IG91dGxpbmVTaXplICsgbGFzdExp
bmVCb3R0b207CiAgICAgCkBAIC0xOTksNyArMTk3LDcgQEAgYm9vbCBSZW5kZXJMaW5lQm94TGlz
dDo6YW55TGluZUludGVyc2VjdHNSZWN0KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciwg
Y28KIGJvb2wgUmVuZGVyTGluZUJveExpc3Q6OmxpbmVJbnRlcnNlY3RzRGlydHlSZWN0KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIG9mZnNldCkgY29uc3QKIHsKICAg
ICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0gYm94LT5yb290KCk7Ci0gICAgTGF5b3V0
VW5pdCBsb2dpY2FsVG9wID0gbWluPExheW91dFVuaXQ+KGJveC0+bG9naWNhbFRvcFZpc3VhbE92
ZXJmbG93KHJvb3RCb3gubGluZVRvcCgpKSwgcm9vdEJveC5zZWxlY3Rpb25Ub3AoKSkgLSByZW5k
ZXJlci0+bWF4aW1hbE91dGxpbmVTaXplKHBhaW50SW5mby5waGFzZSk7CisgICAgTGF5b3V0VW5p
dCBsb2dpY2FsVG9wID0gc3RkOjptaW48TGF5b3V0VW5pdD4oYm94LT5sb2dpY2FsVG9wVmlzdWFs
T3ZlcmZsb3cocm9vdEJveC5saW5lVG9wKCkpLCByb290Qm94LnNlbGVjdGlvblRvcCgpKSAtIHJl
bmRlcmVyLT5tYXhpbWFsT3V0bGluZVNpemUocGFpbnRJbmZvLnBoYXNlKTsKICAgICBMYXlvdXRV
bml0IGxvZ2ljYWxCb3R0b20gPSBib3gtPmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdyhyb290
Qm94LmxpbmVCb3R0b20oKSkgKyByZW5kZXJlci0+bWF4aW1hbE91dGxpbmVTaXplKHBhaW50SW5m
by5waGFzZSk7CiAgICAgCiAgICAgcmV0dXJuIHJhbmdlSW50ZXJzZWN0c1JlY3QocmVuZGVyZXIs
IGxvZ2ljYWxUb3AsIGxvZ2ljYWxCb3R0b20sIHBhaW50SW5mby5yZWN0LCBvZmZzZXQpOwpAQCAt
MjQ0LDEzICsyNDIsMTMgQEAgdm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6cGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlbmRlcmVyLCBQYWludEluZm8mIHBhaW50SW4KICAgICAgICAgICAgIExh
eW91dFVuaXQgYm90dG9tRm9yUGFnaW5hdGlvbkNoZWNrID0gY3Vyci0+bG9naWNhbExlZnRWaXN1
YWxPdmVyZmxvdygpOwogICAgICAgICAgICAgaWYgKCFjdXJyLT5wYXJlbnQoKSkgewogICAgICAg
ICAgICAgICAgIC8vIFdlJ3JlIGEgcm9vdCBib3guICBVc2UgbGluZVRvcCBhbmQgbGluZUJvdHRv
bSBhcyB3ZWxsIGhlcmUuCi0gICAgICAgICAgICAgICAgdG9wRm9yUGFnaW5hdGlvbkNoZWNrID0g
bWluKHRvcEZvclBhZ2luYXRpb25DaGVjaywgcm9vdEJveC5saW5lVG9wKCkpOwotICAgICAgICAg
ICAgICAgIGJvdHRvbUZvclBhZ2luYXRpb25DaGVjayA9IG1heChib3R0b21Gb3JQYWdpbmF0aW9u
Q2hlY2ssIHJvb3RCb3gubGluZUJvdHRvbSgpKTsKKyAgICAgICAgICAgICAgICB0b3BGb3JQYWdp
bmF0aW9uQ2hlY2sgPSBzdGQ6Om1pbih0b3BGb3JQYWdpbmF0aW9uQ2hlY2ssIHJvb3RCb3gubGlu
ZVRvcCgpKTsKKyAgICAgICAgICAgICAgICBib3R0b21Gb3JQYWdpbmF0aW9uQ2hlY2sgPSBzdGQ6
Om1heChib3R0b21Gb3JQYWdpbmF0aW9uQ2hlY2ssIHJvb3RCb3gubGluZUJvdHRvbSgpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChib3R0b21Gb3JQYWdpbmF0aW9uQ2hlY2sgLSB0
b3BGb3JQYWdpbmF0aW9uQ2hlY2sgPD0gdi5wcmludFJlY3QoKS5oZWlnaHQoKSkgewogICAgICAg
ICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBib3R0b21Gb3JQYWdpbmF0aW9uQ2hlY2sg
PiB2LnByaW50UmVjdCgpLm1heFkoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoUm9vdElu
bGluZUJveCogbmV4dFJvb3RCb3ggPSByb290Qm94Lm5leHRSb290Qm94KCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBib3R0b21Gb3JQYWdpbmF0aW9uQ2hlY2sgPSBtaW4oYm90dG9tRm9yUGFn
aW5hdGlvbkNoZWNrLCBtaW48TGF5b3V0VW5pdD4obmV4dFJvb3RCb3gtPmxvZ2ljYWxUb3BWaXN1
YWxPdmVyZmxvdygpLCBuZXh0Um9vdEJveC0+bGluZVRvcCgpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBib3R0b21Gb3JQYWdpbmF0aW9uQ2hlY2sgPSBzdGQ6Om1pbihib3R0b21Gb3JQYWdp
bmF0aW9uQ2hlY2ssIHN0ZDo6bWluPExheW91dFVuaXQ+KG5leHRSb290Qm94LT5sb2dpY2FsVG9w
VmlzdWFsT3ZlcmZsb3coKSwgbmV4dFJvb3RCb3gtPmxpbmVUb3AoKSkpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpICsgYm90dG9tRm9yUGFn
aW5hdGlvbkNoZWNrID4gdi5wcmludFJlY3QoKS5tYXhZKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIHRvcEZvclBhZ2luYXRpb25DaGVjayA8IHYudHJ1bmNh
dGVkQXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRl
eCAyNGIzMzg3MDI5MzJiM2VlODliN2IxODJhM2QzM2U0NDVlZjliMTg0Li4yZjg5ZDQwOTQ1YzBh
MzljMDA1MjVhYzQzOTA2MjI1ODA3YTA0YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCkBAIC02MSw4ICs2MSw2IEBACiAjaW5jbHVkZSA8bWF0aC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEzMyw3
ICsxMzEsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAg
ICAgICAgICAgICBUZXh0UnVuIHRleHRSdW4gPSBjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGl0ZW1G
b250LCB0ZXh0LCBzdHlsZSgpLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKICAg
ICAgICAgICAgICAgICB0ZXh0UnVuLmRpc2FibGVSb3VuZGluZ0hhY2tzKCk7CiAgICAgICAgICAg
ICAgICAgZmxvYXQgdGV4dFdpZHRoID0gaXRlbUZvbnQud2lkdGgodGV4dFJ1bik7Ci0gICAgICAg
ICAgICAgICAgd2lkdGggPSBtYXgod2lkdGgsIHRleHRXaWR0aCk7CisgICAgICAgICAgICAgICAg
d2lkdGggPSBzdGQ6Om1heCh3aWR0aCwgdGV4dFdpZHRoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICBtX29wdGlvbnNXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oY2VpbGYod2lk
dGgpKTsKQEAgLTE3Miw3ICsxNzAsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OmxheW91dCgpCiAg
ICAgaWYgKG1fdkJhcikgewogICAgICAgICBib29sIGVuYWJsZWQgPSBudW1WaXNpYmxlSXRlbXMo
KSA8IG51bUl0ZW1zKCk7CiAgICAgICAgIG1fdkJhci0+c2V0RW5hYmxlZChlbmFibGVkKTsKLSAg
ICAgICAgbV92QmFyLT5zZXRTdGVwcygxLCBtYXgoMSwgbnVtVmlzaWJsZUl0ZW1zKCkgLSAxKSwg
aXRlbUhlaWdodCgpKTsKKyAgICAgICAgbV92QmFyLT5zZXRTdGVwcygxLCBzdGQ6Om1heCgxLCBu
dW1WaXNpYmxlSXRlbXMoKSAtIDEpLCBpdGVtSGVpZ2h0KCkpOwogICAgICAgICBtX3ZCYXItPnNl
dFByb3BvcnRpb24obnVtVmlzaWJsZUl0ZW1zKCksIG51bUl0ZW1zKCkpOwogICAgICAgICBpZiAo
IWVuYWJsZWQpIHsKICAgICAgICAgICAgIHNjcm9sbFRvT2Zmc2V0V2l0aG91dEFuaW1hdGlvbihW
ZXJ0aWNhbFNjcm9sbGJhciwgMCk7CkBAIC0yMTcsMTMgKzIxNSwxMyBAQCB2b2lkIFJlbmRlckxp
c3RCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICAgICAgY29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxXaWR0aHMobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIG1fbWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoKTsKIAogICAgIGlmIChzdHlsZSgpLm1pbldpZHRoKCkuaXNGaXhl
ZCgpICYmIHN0eWxlKCkubWluV2lkdGgoKS52YWx1ZSgpID4gMCkgewotICAgICAgICBtX21heFBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1heChtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRq
dXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgpLm1pbldpZHRoKCku
dmFsdWUoKSkpOwotICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1heChtX21p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJv
eFNpemluZyhzdHlsZSgpLm1pbldpZHRoKCkudmFsdWUoKSkpOworICAgICAgICBtX21heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLCBh
ZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCkubWluV2lkdGgo
KS52YWx1ZSgpKSk7CisgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjpt
YXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lk
dGhGb3JCb3hTaXppbmcoc3R5bGUoKS5taW5XaWR0aCgpLnZhbHVlKCkpKTsKICAgICB9CiAKICAg
ICBpZiAoc3R5bGUoKS5tYXhXaWR0aCgpLmlzRml4ZWQoKSkgewotICAgICAgICBtX21heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCA9IG1pbihtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0
Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgpLm1heFdpZHRoKCkudmFs
dWUoKSkpOwotICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1pbihtX21pblBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNp
emluZyhzdHlsZSgpLm1heFdpZHRoKCkudmFsdWUoKSkpOworICAgICAgICBtX21heFByZWZlcnJl
ZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1
c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCkubWF4V2lkdGgoKS52
YWx1ZSgpKSk7CisgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjptaW4o
bV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhG
b3JCb3hTaXppbmcoc3R5bGUoKS5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKICAgICB9CiAKICAgICBM
YXlvdXRVbml0IHRvQWRkID0gYm9yZGVyQW5kUGFkZGluZ1dpZHRoKCk7CkBAIC0yMzcsNyArMjM1
LDcgQEAgaW50IFJlbmRlckxpc3RCb3g6OnNpemUoKSBjb25zdAogewogICAgIGludCBzcGVjaWZp
ZWRTaXplID0gc2VsZWN0RWxlbWVudCgpLnNpemUoKTsKICAgICBpZiAoc3BlY2lmaWVkU2l6ZSA+
IDEpCi0gICAgICAgIHJldHVybiBtYXgobWluU2l6ZSwgc3BlY2lmaWVkU2l6ZSk7CisgICAgICAg
IHJldHVybiBzdGQ6Om1heChtaW5TaXplLCBzcGVjaWZpZWRTaXplKTsKIAogICAgIHJldHVybiBk
ZWZhdWx0U2l6ZTsKIH0KQEAgLTI0NSw3ICsyNDMsNyBAQCBpbnQgUmVuZGVyTGlzdEJveDo6c2l6
ZSgpIGNvbnN0CiBpbnQgUmVuZGVyTGlzdEJveDo6bnVtVmlzaWJsZUl0ZW1zKCkgY29uc3QKIHsK
ICAgICAvLyBPbmx5IGNvdW50IGZ1bGx5IHZpc2libGUgcm93cy4gQnV0IGRvbid0IHJldHVybiAw
IGV2ZW4gaWYgb25seSBwYXJ0IG9mIGEgcm93IHNob3dzLgotICAgIHJldHVybiBtYXg8aW50Pigx
LCAoY29udGVudEhlaWdodCgpICsgcm93U3BhY2luZykgLyBpdGVtSGVpZ2h0KCkpOworICAgIHJl
dHVybiBzdGQ6Om1heDxpbnQ+KDEsIChjb250ZW50SGVpZ2h0KCkgKyByb3dTcGFjaW5nKSAvIGl0
ZW1IZWlnaHQoKSk7CiB9CiAKIGludCBSZW5kZXJMaXN0Qm94OjpudW1JdGVtcygpIGNvbnN0CkBA
IC01MDIsNyArNTAwLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYW5TY3JvbGwoY29uc3QgSW50
UG9pbnQmIHBhblN0YXJ0TW91c2VQb3NpdGlvbikKICAgICBpbnQgeURlbHRhID0gbGFzdEtub3du
TW91c2VQb3NpdGlvbi55KCkgLSBwYW5TdGFydE1vdXNlUG9zaXRpb24ueSgpOwogCiAgICAgLy8g
SWYgdGhlIHBvaW50IGlzIHRvbyBmYXIgZnJvbSB0aGUgY2VudGVyIHdlIGxpbWl0IHRoZSBzcGVl
ZAotICAgIHlEZWx0YSA9IG1heDxpbnQ+KG1pbjxpbnQ+KHlEZWx0YSwgbWF4U3BlZWQpLCAtbWF4
U3BlZWQpOworICAgIHlEZWx0YSA9IHN0ZDo6bWF4PGludD4oc3RkOjptaW48aW50Pih5RGVsdGEs
IG1heFNwZWVkKSwgLW1heFNwZWVkKTsKICAgICAKICAgICBpZiAoYWJzKHlEZWx0YSkgPCBpY29u
UmFkaXVzKSAvLyBhdCB0aGUgY2VudGVyIHdlIGxldCB0aGUgc3BhY2UgZm9yIHRoZSBpY29uCiAg
ICAgICAgIHJldHVybjsKQEAgLTY1NSw3ICs2NTMsNyBAQCBpbnQgUmVuZGVyTGlzdEJveDo6c2Ny
b2xsV2lkdGgoKSBjb25zdAogCiBpbnQgUmVuZGVyTGlzdEJveDo6c2Nyb2xsSGVpZ2h0KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbWF4KHBpeGVsU25hcHBlZENsaWVudEhlaWdodCgpLCByb3VuZFRv
SW50KGxpc3RIZWlnaHQoKSkpOworICAgIHJldHVybiBzdGQ6Om1heChwaXhlbFNuYXBwZWRDbGll
bnRIZWlnaHQoKSwgcm91bmRUb0ludChsaXN0SGVpZ2h0KCkpKTsKIH0KIAogaW50IFJlbmRlckxp
c3RCb3g6OnNjcm9sbExlZnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0SXRlbS5jcHAKaW5kZXggYTQxNmQ4ZDNjOTViYzJkY2UxOGU5ZDU2MDdjMDllMzE4MzBh
Mzk2My4uYWRlNWUwYWY2MGI2NWFhN2I2ZDFlODRhMWJhMWYxN2Q0MTBhOWY5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCkBAIC0zNiw4ICszNiw2IEBA
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDY2ZGQwY2VjMDVmYzY3M2I4YWUwYjUxZWI0
NWRmMGM5MTFlNDk1YTkuLjY1ZWU1M2UyYWU2OGJjMDNhY2JlNjIxOTJlMTQyYTUyZjczNDVlZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAg
LTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5j
bHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCmluZGV4IDg2ZmMwZjFlZGRm
NWM2ZGJhZmFiMzIyZmIwZmYzMzJmOWQzY2E1NzkuLjliOGRjNjcyNzRkZmU4M2VjZWE1Y2E5MGIw
N2VlN2U4OTFlOTkyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNYXJxdWVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVl
ZS5jcHAKQEAgLTUyLDggKzUyLDYgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtNzcsNyArNzUsNyBAQCBp
bnQgUmVuZGVyTWFycXVlZTo6bWFycXVlZVNwZWVkKCkgY29uc3QKICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gbV9sYXllci0+cmVuZGVyZXIoKS5lbGVtZW50KCk7CiAgICAgaWYgKGVsZW1lbnQgJiYg
ZWxlbWVudC0+aGFzVGFnTmFtZShtYXJxdWVlVGFnKSkgewogICAgICAgICBIVE1MTWFycXVlZUVs
ZW1lbnQqIG1hcnF1ZWVFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1hcnF1ZWVFbGVtZW50Kj4o
ZWxlbWVudCk7Ci0gICAgICAgIHJlc3VsdCA9IG1heChyZXN1bHQsIG1hcnF1ZWVFbGVtZW50LT5t
aW5pbXVtRGVsYXkoKSk7CisgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdCwgbWFycXVl
ZUVsZW1lbnQtPm1pbmltdW1EZWxheSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
QEAgLTEyNiwxMyArMTI0LDEzIEBAIGludCBSZW5kZXJNYXJxdWVlOjpjb21wdXRlUG9zaXRpb24o
RU1hcnF1ZWVEaXJlY3Rpb24gZGlyLCBib29sIHN0b3BBdENvbnRlbnRFZGdlCiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGRpciA9PSBNUklHSFQpIHsKICAgICAgICAgICAgIGlmIChzdG9wQXRDb250
ZW50RWRnZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWF4PExheW91dFVuaXQ+KDAsIGx0ciA/
IChjb250ZW50V2lkdGggLSBjbGllbnRXaWR0aCkgOiAoY2xpZW50V2lkdGggLSBjb250ZW50V2lk
dGgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbHRy
ID8gKGNvbnRlbnRXaWR0aCAtIGNsaWVudFdpZHRoKSA6IChjbGllbnRXaWR0aCAtIGNvbnRlbnRX
aWR0aCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBsdHIgPyBj
b250ZW50V2lkdGggOiBjbGllbnRXaWR0aDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGlmIChzdG9wQXRDb250ZW50RWRnZSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bWluPExheW91dFVuaXQ+KDAsIGx0ciA/IChjb250ZW50V2lkdGggLSBjbGllbnRXaWR0aCkgOiAo
Y2xpZW50V2lkdGggLSBjb250ZW50V2lkdGgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjptaW48TGF5b3V0VW5pdD4oMCwgbHRyID8gKGNvbnRlbnRXaWR0aCAtIGNsaWVudFdpZHRoKSA6
IChjbGllbnRXaWR0aCAtIGNvbnRlbnRXaWR0aCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIHJldHVybiBsdHIgPyAtY2xpZW50V2lkdGggOiAtY29udGVudFdpZHRoOwogICAg
ICAgICB9CkBAIC0xNDIsMTMgKzE0MCwxMyBAQCBpbnQgUmVuZGVyTWFycXVlZTo6Y29tcHV0ZVBv
c2l0aW9uKEVNYXJxdWVlRGlyZWN0aW9uIGRpciwgYm9vbCBzdG9wQXRDb250ZW50RWRnZQogICAg
ICAgICBpbnQgY2xpZW50SGVpZ2h0ID0gYm94LT5jbGllbnRIZWlnaHQoKTsKICAgICAgICAgaWYg
KGRpciA9PSBNVVApIHsKICAgICAgICAgICAgIGlmIChzdG9wQXRDb250ZW50RWRnZSkKLSAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1pbihjb250ZW50SGVpZ2h0IC0gY2xpZW50SGVpZ2h0LCAwKTsK
KyAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGNvbnRlbnRIZWlnaHQgLSBjbGllbnRI
ZWlnaHQsIDApOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiAtY2xp
ZW50SGVpZ2h0OwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKHN0
b3BBdENvbnRlbnRFZGdlKQotICAgICAgICAgICAgICAgIHJldHVybiBtYXgoY29udGVudEhlaWdo
dCAtIGNsaWVudEhlaWdodCwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNv
bnRlbnRIZWlnaHQgLSBjbGllbnRIZWlnaHQsIDApOwogICAgICAgICAgICAgZWxzZSAKICAgICAg
ICAgICAgICAgICByZXR1cm4gY29udGVudEhlaWdodDsKICAgICAgICAgfQpAQCAtMjg3LDkgKzI4
NSw5IEBAIHZvaWQgUmVuZGVyTWFycXVlZTo6dGltZXJGaXJlZChUaW1lcjxSZW5kZXJNYXJxdWVl
PiopCiAgICAgICAgIGludCBjdXJyZW50UG9zID0gKGlzSG9yaXpvbnRhbCgpID8gbV9sYXllci0+
c2Nyb2xsWE9mZnNldCgpIDogbV9sYXllci0+c2Nyb2xsWU9mZnNldCgpKTsKICAgICAgICAgbmV3
UG9zID0gIGN1cnJlbnRQb3MgKyAoYWRkSW5jcmVtZW50ID8gaW5jcmVtZW50IDogLWluY3JlbWVu
dCk7CiAgICAgICAgIGlmIChwb3NpdGl2ZSkKLSAgICAgICAgICAgIG5ld1BvcyA9IG1pbihuZXdQ
b3MsIGVuZFBvaW50KTsKKyAgICAgICAgICAgIG5ld1BvcyA9IHN0ZDo6bWluKG5ld1BvcywgZW5k
UG9pbnQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXdQb3MgPSBtYXgobmV3UG9zLCBl
bmRQb2ludCk7CisgICAgICAgICAgICBuZXdQb3MgPSBzdGQ6Om1heChuZXdQb3MsIGVuZFBvaW50
KTsKICAgICB9CiAKICAgICBpZiAobmV3UG9zID09IGVuZFBvaW50KSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAKaW5kZXggNGEwYTFkOTBi
ZGFlMjU1YjcxNDQwN2I0MTAzYzlhZmE3NDlmY2ZjNi4uN2U5MDg5MDNiODM1NWEzOGZhMzg2M2U4
YzY3ODg3NWEyNjgwYWEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lZGlhQ29udHJvbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZWRpYUNvbnRyb2xzLmNwcApAQCAtNjUsOCArNjUsNyBAQCBpbmxpbmUgdm9pZCB3a0RyYXdN
ZWRpYVNsaWRlclRyYWNrKENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDR1JlY3QmIHJlY3Qs
IGZsbwogCiAjZW5kaWYKICAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDBhZTFjZGZlZjZhMDQ2YjllYWI0ODZkYTRhOTZkZjQz
OTZhMTVjMTYuLjM5YTA2Y2U5NTY5YTczNTY5MjllM2IwMGYwYzNiMGRlMDliN2ExOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtNDgsOCArNDgs
NiBAQAogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlIDxtYXRoLmg+CiAKLXVzaW5nIG5h
bWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKQEAgLTE4OCw5ICsxODYsOSBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojp1cGRhdGVP
cHRpb25zV2lkdGgoKQogICAgICAgICAgICAgICAgIG9wdGlvbldpZHRoICs9IG1pbmltdW1WYWx1
ZUZvckxlbmd0aChvcHRpb25TdHlsZS0+dGV4dEluZGVudCgpLCAwKTsKICAgICAgICAgICAgIGlm
ICghdGV4dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgb3B0aW9uV2lkdGggKz0gc3R5bGUo
KS5mb250KCkud2lkdGgodGV4dCk7Ci0gICAgICAgICAgICBtYXhPcHRpb25XaWR0aCA9IG1heCht
YXhPcHRpb25XaWR0aCwgb3B0aW9uV2lkdGgpOworICAgICAgICAgICAgbWF4T3B0aW9uV2lkdGgg
PSBzdGQ6Om1heChtYXhPcHRpb25XaWR0aCwgb3B0aW9uV2lkdGgpOwogICAgICAgICB9IGVsc2Ug
aWYgKCF0ZXh0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1heE9wdGlvbldpZHRoID0gbWF4KG1h
eE9wdGlvbldpZHRoLCBzdHlsZSgpLmZvbnQoKS53aWR0aCh0ZXh0KSk7CisgICAgICAgICAgICBt
YXhPcHRpb25XaWR0aCA9IHN0ZDo6bWF4KG1heE9wdGlvbldpZHRoLCBzdHlsZSgpLmZvbnQoKS53
aWR0aCh0ZXh0KSk7CiAgICAgfQogCiAgICAgaW50IHdpZHRoID0gc3RhdGljX2Nhc3Q8aW50Pihj
ZWlsZihtYXhPcHRpb25XaWR0aCkpOwpAQCAtMjcyLDcgKzI3MCw3IEBAIExheW91dFJlY3QgUmVu
ZGVyTWVudUxpc3Q6OmNvbnRyb2xDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25h
bE9mZnNldCkKIAogdm9pZCBSZW5kZXJNZW51TGlzdDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxX
aWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2Fs
V2lkdGgpIGNvbnN0CiB7Ci0gICAgbWF4TG9naWNhbFdpZHRoID0gbWF4KG1fb3B0aW9uc1dpZHRo
LCB0aGVtZSgpLT5taW5pbXVtTWVudUxpc3RTaXplKCZzdHlsZSgpKSkgKyBtX2lubmVyQmxvY2st
PnBhZGRpbmdMZWZ0KCkgKyBtX2lubmVyQmxvY2stPnBhZGRpbmdSaWdodCgpOworICAgIG1heExv
Z2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fb3B0aW9uc1dpZHRoLCB0aGVtZSgpLT5taW5pbXVtTWVu
dUxpc3RTaXplKCZzdHlsZSgpKSkgKyBtX2lubmVyQmxvY2stPnBhZGRpbmdMZWZ0KCkgKyBtX2lu
bmVyQmxvY2stPnBhZGRpbmdSaWdodCgpOwogICAgIGlmICghc3R5bGUoKS53aWR0aCgpLmlzUGVy
Y2VudCgpKQogICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBtYXhMb2dpY2FsV2lkdGg7CiB9CkBA
IC0yODgsMTMgKzI4NiwxMyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojpjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocygpCiAgICAgICAgIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKG1f
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCk7CiAK
ICAgICBpZiAoc3R5bGUoKS5taW5XaWR0aCgpLmlzRml4ZWQoKSAmJiBzdHlsZSgpLm1pbldpZHRo
KCkudmFsdWUoKSA+IDApIHsKLSAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBt
YXgobV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lk
dGhGb3JCb3hTaXppbmcoc3R5bGUoKS5taW5XaWR0aCgpLnZhbHVlKCkpKTsKLSAgICAgICAgbV9t
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtYXgobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgs
IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS5taW5XaWR0
aCgpLnZhbHVlKCkpKTsKKyAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6
Om1heChtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxX
aWR0aEZvckJveFNpemluZyhzdHlsZSgpLm1pbldpZHRoKCkudmFsdWUoKSkpOworICAgICAgICBt
X21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbWluUHJlZmVycmVkTG9naWNh
bFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCku
bWluV2lkdGgoKS52YWx1ZSgpKSk7CiAgICAgfQogCiAgICAgaWYgKHN0eWxlKCkubWF4V2lkdGgo
KS5pc0ZpeGVkKCkpIHsKLSAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtaW4o
bV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhG
b3JCb3hTaXppbmcoc3R5bGUoKS5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKLSAgICAgICAgbV9taW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtaW4obV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFk
anVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS5tYXhXaWR0aCgp
LnZhbHVlKCkpKTsKKyAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1p
bihtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0
aEZvckJveFNpemluZyhzdHlsZSgpLm1heFdpZHRoKCkudmFsdWUoKSkpOworICAgICAgICBtX21p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKG1fbWluUHJlZmVycmVkTG9naWNhbFdp
ZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCkubWF4
V2lkdGgoKS52YWx1ZSgpKSk7CiAgICAgfQogCiAgICAgTGF5b3V0VW5pdCB0b0FkZCA9IGJvcmRl
ckFuZFBhZGRpbmdXaWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1ldGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5j
cHAKaW5kZXggZmIyYWY1MjFjNDAwZTQwYzg0MzIzNGQ3YTNmMWJkNzFlODRlMjY0Ni4uMDEwNmZi
ZDRmOWEzMWQ4MzM3MDYxYjA0ZWM5ZWYyZWZiZjlkMzc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uQmxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uQmxvY2suY3Bw
CmluZGV4IGI2MGQ2NjY4NjY0ZjlhNmEzMjNjM2ZhMmE2OGZlOGFmMTdjYTZhZDEuLjg0MDIwZGFj
NjdhZjg2ZDY5YWFmOTg2OWEwOTg0Yzg2NzM4ZDlkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5CbG9jay5jcHAKQEAgLTMxLDggKzMxLDYg
QEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRh
LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVu
ZGVyTXVsdGlDb2x1bW5CbG9jazo6UmVuZGVyTXVsdGlDb2x1bW5CbG9jayhFbGVtZW50JiBlbGVt
ZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCmluZGV4IGRmZDkyNjg4NzU1ZTQyNDk2
ODYzOTA4NDkyMmRmZDhhNzRjZDBmZTkuLjc4MmI1N2EwMjJjMjk1NzE5ZTczMzg1ZmFkZWEwYTZj
ZTk0ZDBlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uU2V0LmNwcApAQCAtMzEsOCArMzEsNiBAQAogI2luY2x1ZGUgIlJlbmRlck11bHRpQ29s
dW1uQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaCIKIAot
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJNdWx0
aUNvbHVtblNldDo6UmVuZGVyTXVsdGlDb2x1bW5TZXQoUmVuZGVyRmxvd1RocmVhZCYgZmxvd1Ro
cmVhZCwgUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCkBAIC01NSw3ICs1Myw3IEBAIExheW91
dFVuaXQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmhlaWdodEFkanVzdGVkRm9yU2V0T2Zmc2V0KExh
eW91dFVuaXQgaGVpZ2h0KSBjCiAgICAgTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFRvcCA9IGxv
Z2ljYWxUb3AoKSAtIG11bHRpY29sQmxvY2stPmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKIAog
ICAgIGhlaWdodCAtPSBjb250ZW50TG9naWNhbFRvcDsKLSAgICByZXR1cm4gbWF4KGhlaWdodCwg
TGF5b3V0VW5pdCgxKSk7IC8vIExldCdzIGF2b2lkIHplcm8gaGVpZ2h0LCBhcyB0aGF0IHdvdWxk
IHByb2JhYmx5IGNhdXNlIGFuIGluZmluaXRlIGFtb3VudCBvZiBjb2x1bW5zIHRvIGJlIGNyZWF0
ZWQuCisgICAgcmV0dXJuIHN0ZDo6bWF4KGhlaWdodCwgTGF5b3V0VW5pdCgxKSk7IC8vIExldCdz
IGF2b2lkIHplcm8gaGVpZ2h0LCBhcyB0aGF0IHdvdWxkIHByb2JhYmx5IGNhdXNlIGFuIGluZmlu
aXRlIGFtb3VudCBvZiBjb2x1bW5zIHRvIGJlIGNyZWF0ZWQuCiB9CiAKIExheW91dFVuaXQgUmVu
ZGVyTXVsdGlDb2x1bW5TZXQ6OnBhZ2VMb2dpY2FsVG9wRm9yT2Zmc2V0KExheW91dFVuaXQgb2Zm
c2V0KSBjb25zdApAQCAtODMsNyArODEsNyBAQCBib29sIFJlbmRlck11bHRpQ29sdW1uU2V0Ojpj
YWxjdWxhdGVCYWxhbmNlZEhlaWdodChib29sIGluaXRpYWwpCiAgICAgaWYgKGluaXRpYWwpIHsK
ICAgICAgICAgLy8gU3RhcnQgd2l0aCB0aGUgbG93ZXN0IGltYWdpbmFibGUgY29sdW1uIGhlaWdo
dC4KICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0R3Vlc3MgPSBjZWlsZihmbG9hdChm
bG93VGhyZWFkKCktPmxvZ2ljYWxIZWlnaHQoKSkgLyBmbG9hdChtX2NvbXB1dGVkQ29sdW1uQ291
bnQpKTsKLSAgICAgICAgbG9naWNhbEhlaWdodEd1ZXNzID0gbWF4KGxvZ2ljYWxIZWlnaHRHdWVz
cywgbV9taW5pbXVtQ29sdW1uSGVpZ2h0KTsKKyAgICAgICAgbG9naWNhbEhlaWdodEd1ZXNzID0g
c3RkOjptYXgobG9naWNhbEhlaWdodEd1ZXNzLCBtX21pbmltdW1Db2x1bW5IZWlnaHQpOwogICAg
ICAgICBzZXRBbmRDb25zdHJhaW5Db2x1bW5IZWlnaHQobG9naWNhbEhlaWdodEd1ZXNzKTsKIAog
ICAgICAgICAvLyBUaGUgbXVsdGljb2wgY29udGFpbmVyIG5vdyB0eXBpY2FsbHkgbmVlZHMgYXQg
bGVhc3Qgb25lIG1vcmUgbGF5b3V0IHBhc3Mgd2l0aCBhIG5ldwpAQCAtMTQwLDcgKzEzOCw3IEBA
IHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpCiAgICAgTGF5
b3V0VW5pdCBjb2xHYXAgPSBjb2x1bW5HYXAoKTsKICAgICBMYXlvdXRVbml0IG1pbmltdW1Db250
ZW50TG9naWNhbFdpZHRoID0gY29sQ291bnQgKiBjb21wdXRlZENvbHVtbldpZHRoKCkgKyAoY29s
Q291bnQgLSAxKSAqIGNvbEdhcDsKICAgICBMYXlvdXRVbml0IGN1cnJlbnRDb250ZW50TG9naWNh
bFdpZHRoID0gY29udGVudExvZ2ljYWxXaWR0aCgpOwotICAgIExheW91dFVuaXQgZGVsdGEgPSBt
YXgoTGF5b3V0VW5pdCgpLCBtaW5pbXVtQ29udGVudExvZ2ljYWxXaWR0aCAtIGN1cnJlbnRDb250
ZW50TG9naWNhbFdpZHRoKTsKKyAgICBMYXlvdXRVbml0IGRlbHRhID0gc3RkOjptYXgoTGF5b3V0
VW5pdCgpLCBtaW5pbXVtQ29udGVudExvZ2ljYWxXaWR0aCAtIGN1cnJlbnRDb250ZW50TG9naWNh
bFdpZHRoKTsKICAgICBpZiAoIWRlbHRhKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCmluZGV4
IDg0MmM3OGU3ODE4NGIxZTRlNTI0MmE3MDFhM2UzNjY5ZmMxNTUzNDQuLjMxYTEzYzA1NzE0NmQ2
ZDVmOWI0MzE4ODA4MTExYWE2OGY0OGY4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcApAQCAtMzgsOCArMzgsNiBAQAog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAKLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQ6OlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50JiBkb2N1bWVudCwg
UGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCmluZGV4IDQ0ZTlkYjcwNDM1YWRmMDM0ZTcwYjZhMWIwNjZlOGUzMzI1YTcz
YmEuLmU5NTk3NjA5YjE5ZmRhZGY5NzA2NGI3MjM1MzA1OGI4NWU1OTRkNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC02Nyw4ICs2Nyw2IEBACiAjaW5j
bHVkZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAg
LTkwOCwzNSArOTA2LDM1IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3TGluZUZvckJveFNpZGUo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB4MSwKIAogICAgICAgICAgICAg
ICAgIHN3aXRjaCAoc2lkZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEJTVG9wOgotICAg
ICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwg
eDEgKyBtYXgoKC1hZGphY2VudFdpZHRoMSAqIDIgKyAxKSAvIDMsIDApLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB5MSwgeDIgLSBtYXgoKC1hZGphY2VudFdpZHRoMiAqIDIg
KyAxKSAvIDMsIDApLCB5MSArIHRoaXJkT2ZUaGlja25lc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIHN0ZDo6bWF4KCgt
YWRqYWNlbnRXaWR0aDEgKiAyICsgMSkgLyAzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeTEsIHgyIC0gc3RkOjptYXgoKC1hZGphY2VudFdpZHRoMiAqIDIgKyAxKSAv
IDMsIDApLCB5MSArIHRoaXJkT2ZUaGlja25lc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpZGUsIGNvbG9yLCBTT0xJRCwgYWRqYWNlbnQxQmlnVGhpcmQsIGFkamFjZW50
MkJpZ1RoaXJkLCBhbnRpYWxpYXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVG
b3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBtYXgoKGFkamFjZW50V2lkdGgxICogMiAr
IDEpIC8gMywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyIC0gdGhp
cmRPZlRoaWNrbmVzcywgeDIgLSBtYXgoKGFkamFjZW50V2lkdGgyICogMiArIDEpIC8gMywgMCks
IHkyLAorICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgeDEgKyBzdGQ6Om1heCgoYWRqYWNlbnRXaWR0aDEgKiAyICsgMSkgLyAzLCAwKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTIgLSB0aGlyZE9mVGhpY2tuZXNz
LCB4MiAtIHN0ZDo6bWF4KChhZGphY2VudFdpZHRoMiAqIDIgKyAxKSAvIDMsIDApLCB5MiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZSwgY29sb3IsIFNPTElELCBhZGph
Y2VudDFCaWdUaGlyZCwgYWRqYWNlbnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCU0xlZnQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0
LCB4MSwgeTEgKyBtYXgoKC1hZGphY2VudFdpZHRoMSAqIDIgKyAxKSAvIDMsIDApLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSArIHRoaXJkT2ZUaGlja25lc3MsIHkyIC0g
bWF4KCgtYWRqYWNlbnRXaWR0aDIgKiAyICsgMSkgLyAzLCAwKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxLCB5MSArIHN0ZDo6
bWF4KCgtYWRqYWNlbnRXaWR0aDEgKiAyICsgMSkgLyAzLCAwKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDEgKyB0aGlyZE9mVGhpY2tuZXNzLCB5MiAtIHN0ZDo6bWF4KCgt
YWRqYWNlbnRXaWR0aDIgKiAyICsgMSkgLyAzLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2lkZSwgY29sb3IsIFNPTElELCBhZGphY2VudDFCaWdUaGlyZCwgYWRqYWNl
bnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGlu
ZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MiAtIHRoaXJkT2ZUaGlja25lc3MsIHkxICsg
bWF4KChhZGphY2VudFdpZHRoMSAqIDIgKyAxKSAvIDMsIDApLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4MiwgeTIgLSBtYXgoKGFkamFjZW50V2lkdGgyICogMiArIDEpIC8g
MywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhp
Y3NDb250ZXh0LCB4MiAtIHRoaXJkT2ZUaGlja25lc3MsIHkxICsgc3RkOjptYXgoKGFkamFjZW50
V2lkdGgxICogMiArIDEpIC8gMywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHgyLCB5MiAtIHN0ZDo6bWF4KChhZGphY2VudFdpZHRoMiAqIDIgKyAxKSAvIDMsIDApLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlLCBjb2xvciwgU09MSUQsIGFk
amFjZW50MUJpZ1RoaXJkLCBhZGphY2VudDJCaWdUaGlyZCwgYW50aWFsaWFzKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEJTQm90dG9t
OgotICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29u
dGV4dCwgeDEgKyBtYXgoKGFkamFjZW50V2lkdGgxICogMiArIDEpIC8gMywgMCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkxLCB4MiAtIG1heCgoYWRqYWNlbnRXaWR0aDIg
KiAyICsgMSkgLyAzLCAwKSwgeTEgKyB0aGlyZE9mVGhpY2tuZXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBzdGQ6Om1h
eCgoYWRqYWNlbnRXaWR0aDEgKiAyICsgMSkgLyAzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeTEsIHgyIC0gc3RkOjptYXgoKGFkamFjZW50V2lkdGgyICogMiArIDEp
IC8gMywgMCksIHkxICsgdGhpcmRPZlRoaWNrbmVzcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2lkZSwgY29sb3IsIFNPTElELCBhZGphY2VudDFCaWdUaGlyZCwgYWRqYWNl
bnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGlu
ZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIG1heCgoLWFkamFjZW50V2lkdGgxICog
MiArIDEpIC8gMywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyIC0g
dGhpcmRPZlRoaWNrbmVzcywgeDIgLSBtYXgoKC1hZGphY2VudFdpZHRoMiAqIDIgKyAxKSAvIDMs
IDApLCB5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFw
aGljc0NvbnRleHQsIHgxICsgc3RkOjptYXgoKC1hZGphY2VudFdpZHRoMSAqIDIgKyAxKSAvIDMs
IDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MiAtIHRoaXJkT2ZUaGlj
a25lc3MsIHgyIC0gc3RkOjptYXgoKC1hZGphY2VudFdpZHRoMiAqIDIgKyAxKSAvIDMsIDApLCB5
MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZSwgY29sb3IsIFNPTElE
LCBhZGphY2VudDFCaWdUaGlyZCwgYWRqYWNlbnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBCU1Jp
Z2h0OgotICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwgeDEsIHkxICsgbWF4KChhZGphY2VudFdpZHRoMSAqIDIgKyAxKSAvIDMsIDApLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSArIHRoaXJkT2ZUaGlja25lc3Ms
IHkyIC0gbWF4KChhZGphY2VudFdpZHRoMiAqIDIgKyAxKSAvIDMsIDApLAorICAgICAgICAgICAg
ICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEsIHkxICsg
c3RkOjptYXgoKGFkamFjZW50V2lkdGgxICogMiArIDEpIC8gMywgMCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgxICsgdGhpcmRPZlRoaWNrbmVzcywgeTIgLSBzdGQ6Om1h
eCgoYWRqYWNlbnRXaWR0aDIgKiAyICsgMSkgLyAzLCAwKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2lkZSwgY29sb3IsIFNPTElELCBhZGphY2VudDFCaWdUaGlyZCwgYWRq
YWNlbnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MiAtIHRoaXJkT2ZUaGlja25lc3MsIHkx
ICsgbWF4KCgtYWRqYWNlbnRXaWR0aDEgKiAyICsgMSkgLyAzLCAwKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDIsIHkyIC0gbWF4KCgtYWRqYWNlbnRXaWR0aDIgKiAyICsg
MSkgLyAzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsIHgyIC0gdGhpcmRPZlRoaWNrbmVzcywgeTEgKyBzdGQ6Om1heCgoLWFk
amFjZW50V2lkdGgxICogMiArIDEpIC8gMywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgyLCB5MiAtIHN0ZDo6bWF4KCgtYWRqYWNlbnRXaWR0aDIgKiAyICsgMSkgLyAz
LCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZSwgY29sb3IsIFNP
TElELCBhZGphY2VudDFCaWdUaGlyZCwgYWRqYWNlbnQyQmlnVGhpcmQsIGFudGlhbGlhcyk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKQEAgLTk2MiwyNyArOTYwLDI3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3TGluZUZvckJv
eFNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB4MSwKIAogICAgICAg
ICAgICAgc3dpdGNoIChzaWRlKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBCU1RvcDoKLSAgICAg
ICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBt
YXgoLWFkamFjZW50V2lkdGgxLCAwKSAvIDIsIHkxLCB4MiAtIG1heCgtYWRqYWNlbnRXaWR0aDIs
IDApIC8gMiwgKHkxICsgeTIgKyAxKSAvIDIsCisgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5l
Rm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxICsgc3RkOjptYXgoLWFkamFjZW50V2lkdGgx
LCAwKSAvIDIsIHkxLCB4MiAtIHN0ZDo6bWF4KC1hZGphY2VudFdpZHRoMiwgMCkgLyAyLCAoeTEg
KyB5MiArIDEpIC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlLCBjb2xv
ciwgczEsIGFkamFjZW50MUJpZ0hhbGYsIGFkamFjZW50MkJpZ0hhbGYsIGFudGlhbGlhcyk7Ci0g
ICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgx
ICsgbWF4KGFkamFjZW50V2lkdGgxICsgMSwgMCkgLyAyLCAoeTEgKyB5MiArIDEpIC8gMiwgeDIg
LSBtYXgoYWRqYWNlbnRXaWR0aDIgKyAxLCAwKSAvIDIsIHkyLAorICAgICAgICAgICAgICAgICAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSArIHN0ZDo6bWF4KGFkamFj
ZW50V2lkdGgxICsgMSwgMCkgLyAyLCAoeTEgKyB5MiArIDEpIC8gMiwgeDIgLSBzdGQ6Om1heChh
ZGphY2VudFdpZHRoMiArIDEsIDApIC8gMiwgeTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2lkZSwgY29sb3IsIHMyLCBhZGphY2VudFdpZHRoMSAvIDIsIGFkamFjZW50V2lkdGgy
IC8gMiwgYW50aWFsaWFzKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgY2FzZSBCU0xlZnQ6Ci0gICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lk
ZShncmFwaGljc0NvbnRleHQsIHgxLCB5MSArIG1heCgtYWRqYWNlbnRXaWR0aDEsIDApIC8gMiwg
KHgxICsgeDIgKyAxKSAvIDIsIHkyIC0gbWF4KC1hZGphY2VudFdpZHRoMiwgMCkgLyAyLAorICAg
ICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSwg
eTEgKyBzdGQ6Om1heCgtYWRqYWNlbnRXaWR0aDEsIDApIC8gMiwgKHgxICsgeDIgKyAxKSAvIDIs
IHkyIC0gc3RkOjptYXgoLWFkamFjZW50V2lkdGgyLCAwKSAvIDIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2lkZSwgY29sb3IsIHMxLCBhZGphY2VudDFCaWdIYWxmLCBhZGphY2Vu
dDJCaWdIYWxmLCBhbnRpYWxpYXMpOwotICAgICAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJv
eFNpZGUoZ3JhcGhpY3NDb250ZXh0LCAoeDEgKyB4MiArIDEpIC8gMiwgeTEgKyBtYXgoYWRqYWNl
bnRXaWR0aDEgKyAxLCAwKSAvIDIsIHgyLCB5MiAtIG1heChhZGphY2VudFdpZHRoMiArIDEsIDAp
IC8gMiwKKyAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29u
dGV4dCwgKHgxICsgeDIgKyAxKSAvIDIsIHkxICsgc3RkOjptYXgoYWRqYWNlbnRXaWR0aDEgKyAx
LCAwKSAvIDIsIHgyLCB5MiAtIHN0ZDo6bWF4KGFkamFjZW50V2lkdGgyICsgMSwgMCkgLyAyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGUsIGNvbG9yLCBzMiwgYWRqYWNlbnRX
aWR0aDEgLyAyLCBhZGphY2VudFdpZHRoMiAvIDIsIGFudGlhbGlhcyk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQlNCb3R0b206Ci0gICAgICAgICAg
ICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxICsgbWF4KGFk
amFjZW50V2lkdGgxLCAwKSAvIDIsIHkxLCB4MiAtIG1heChhZGphY2VudFdpZHRoMiwgMCkgLyAy
LCAoeTEgKyB5MiArIDEpIC8gMiwKKyAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgeDEgKyBzdGQ6Om1heChhZGphY2VudFdpZHRoMSwgMCkgLyAy
LCB5MSwgeDIgLSBzdGQ6Om1heChhZGphY2VudFdpZHRoMiwgMCkgLyAyLCAoeTEgKyB5MiArIDEp
IC8gMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlLCBjb2xvciwgczIsIGFk
amFjZW50MUJpZ0hhbGYsIGFkamFjZW50MkJpZ0hhbGYsIGFudGlhbGlhcyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxICsgbWF4KC1h
ZGphY2VudFdpZHRoMSArIDEsIDApIC8gMiwgKHkxICsgeTIgKyAxKSAvIDIsIHgyIC0gbWF4KC1h
ZGphY2VudFdpZHRoMiArIDEsIDApIC8gMiwgeTIsCisgICAgICAgICAgICAgICAgICAgIGRyYXdM
aW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsIHgxICsgc3RkOjptYXgoLWFkamFjZW50V2lk
dGgxICsgMSwgMCkgLyAyLCAoeTEgKyB5MiArIDEpIC8gMiwgeDIgLSBzdGQ6Om1heCgtYWRqYWNl
bnRXaWR0aDIgKyAxLCAwKSAvIDIsIHkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpZGUsIGNvbG9yLCBzMSwgYWRqYWNlbnRXaWR0aDEgLyAyLCBhZGphY2VudFdpZHRoMiAvIDIs
IGFudGlhbGlhcyk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IGNhc2UgQlNSaWdodDoKLSAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdy
YXBoaWNzQ29udGV4dCwgeDEsIHkxICsgbWF4KGFkamFjZW50V2lkdGgxLCAwKSAvIDIsICh4MSAr
IHgyICsgMSkgLyAyLCB5MiAtIG1heChhZGphY2VudFdpZHRoMiwgMCkgLyAyLAorICAgICAgICAg
ICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCB4MSwgeTEgKyBz
dGQ6Om1heChhZGphY2VudFdpZHRoMSwgMCkgLyAyLCAoeDEgKyB4MiArIDEpIC8gMiwgeTIgLSBz
dGQ6Om1heChhZGphY2VudFdpZHRoMiwgMCkgLyAyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpZGUsIGNvbG9yLCBzMiwgYWRqYWNlbnQxQmlnSGFsZiwgYWRqYWNlbnQyQmlnSGFs
ZiwgYW50aWFsaWFzKTsKLSAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdy
YXBoaWNzQ29udGV4dCwgKHgxICsgeDIgKyAxKSAvIDIsIHkxICsgbWF4KC1hZGphY2VudFdpZHRo
MSArIDEsIDApIC8gMiwgeDIsIHkyIC0gbWF4KC1hZGphY2VudFdpZHRoMiArIDEsIDApIC8gMiwK
KyAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwg
KHgxICsgeDIgKyAxKSAvIDIsIHkxICsgc3RkOjptYXgoLWFkamFjZW50V2lkdGgxICsgMSwgMCkg
LyAyLCB4MiwgeTIgLSBzdGQ6Om1heCgtYWRqYWNlbnRXaWR0aDIgKyAxLCAwKSAvIDIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZSwgY29sb3IsIHMxLCBhZGphY2VudFdpZHRo
MSAvIDIsIGFkamFjZW50V2lkdGgyIC8gMiwgYW50aWFsaWFzKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xMDE3LDI4ICsxMDE1LDI4IEBAIHZvaWQgUmVu
ZGVyT2JqZWN0OjpkcmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGludCB4MSwKICAgICAgICAgICAgIEZsb2F0UG9pbnQgcXVhZFs0XTsKICAgICAgICAg
ICAgIHN3aXRjaCAoc2lkZSkgewogICAgICAgICAgICAgICAgIGNhc2UgQlNUb3A6Ci0gICAgICAg
ICAgICAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50KHgxICsgbWF4KC1hZGphY2VudFdpZHRo
MSwgMCksIHkxKTsKLSAgICAgICAgICAgICAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQoeDEg
KyBtYXgoYWRqYWNlbnRXaWR0aDEsIDApLCB5Mik7Ci0gICAgICAgICAgICAgICAgICAgIHF1YWRb
Ml0gPSBGbG9hdFBvaW50KHgyIC0gbWF4KGFkamFjZW50V2lkdGgyLCAwKSwgeTIpOwotICAgICAg
ICAgICAgICAgICAgICBxdWFkWzNdID0gRmxvYXRQb2ludCh4MiAtIG1heCgtYWRqYWNlbnRXaWR0
aDIsIDApLCB5MSk7CisgICAgICAgICAgICAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50KHgx
ICsgc3RkOjptYXgoLWFkamFjZW50V2lkdGgxLCAwKSwgeTEpOworICAgICAgICAgICAgICAgICAg
ICBxdWFkWzFdID0gRmxvYXRQb2ludCh4MSArIHN0ZDo6bWF4KGFkamFjZW50V2lkdGgxLCAwKSwg
eTIpOworICAgICAgICAgICAgICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh4MiAtIHN0ZDo6
bWF4KGFkamFjZW50V2lkdGgyLCAwKSwgeTIpOworICAgICAgICAgICAgICAgICAgICBxdWFkWzNd
ID0gRmxvYXRQb2ludCh4MiAtIHN0ZDo6bWF4KC1hZGphY2VudFdpZHRoMiwgMCksIHkxKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBCU0JvdHRvbToK
LSAgICAgICAgICAgICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQoeDEgKyBtYXgoYWRqYWNl
bnRXaWR0aDEsIDApLCB5MSk7Ci0gICAgICAgICAgICAgICAgICAgIHF1YWRbMV0gPSBGbG9hdFBv
aW50KHgxICsgbWF4KC1hZGphY2VudFdpZHRoMSwgMCksIHkyKTsKLSAgICAgICAgICAgICAgICAg
ICAgcXVhZFsyXSA9IEZsb2F0UG9pbnQoeDIgLSBtYXgoLWFkamFjZW50V2lkdGgyLCAwKSwgeTIp
OwotICAgICAgICAgICAgICAgICAgICBxdWFkWzNdID0gRmxvYXRQb2ludCh4MiAtIG1heChhZGph
Y2VudFdpZHRoMiwgMCksIHkxKTsKKyAgICAgICAgICAgICAgICAgICAgcXVhZFswXSA9IEZsb2F0
UG9pbnQoeDEgKyBzdGQ6Om1heChhZGphY2VudFdpZHRoMSwgMCksIHkxKTsKKyAgICAgICAgICAg
ICAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQoeDEgKyBzdGQ6Om1heCgtYWRqYWNlbnRXaWR0
aDEsIDApLCB5Mik7CisgICAgICAgICAgICAgICAgICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHgy
IC0gc3RkOjptYXgoLWFkamFjZW50V2lkdGgyLCAwKSwgeTIpOworICAgICAgICAgICAgICAgICAg
ICBxdWFkWzNdID0gRmxvYXRQb2ludCh4MiAtIHN0ZDo6bWF4KGFkamFjZW50V2lkdGgyLCAwKSwg
eTEpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIEJT
TGVmdDoKLSAgICAgICAgICAgICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQoeDEsIHkxICsg
bWF4KC1hZGphY2VudFdpZHRoMSwgMCkpOwotICAgICAgICAgICAgICAgICAgICBxdWFkWzFdID0g
RmxvYXRQb2ludCh4MSwgeTIgLSBtYXgoLWFkamFjZW50V2lkdGgyLCAwKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHgyLCB5MiAtIG1heChhZGphY2VudFdpZHRo
MiwgMCkpOwotICAgICAgICAgICAgICAgICAgICBxdWFkWzNdID0gRmxvYXRQb2ludCh4MiwgeTEg
KyBtYXgoYWRqYWNlbnRXaWR0aDEsIDApKTsKKyAgICAgICAgICAgICAgICAgICAgcXVhZFswXSA9
IEZsb2F0UG9pbnQoeDEsIHkxICsgc3RkOjptYXgoLWFkamFjZW50V2lkdGgxLCAwKSk7CisgICAg
ICAgICAgICAgICAgICAgIHF1YWRbMV0gPSBGbG9hdFBvaW50KHgxLCB5MiAtIHN0ZDo6bWF4KC1h
ZGphY2VudFdpZHRoMiwgMCkpOworICAgICAgICAgICAgICAgICAgICBxdWFkWzJdID0gRmxvYXRQ
b2ludCh4MiwgeTIgLSBzdGQ6Om1heChhZGphY2VudFdpZHRoMiwgMCkpOworICAgICAgICAgICAg
ICAgICAgICBxdWFkWzNdID0gRmxvYXRQb2ludCh4MiwgeTEgKyBzdGQ6Om1heChhZGphY2VudFdp
ZHRoMSwgMCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBj
YXNlIEJTUmlnaHQ6Ci0gICAgICAgICAgICAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50KHgx
LCB5MSArIG1heChhZGphY2VudFdpZHRoMSwgMCkpOwotICAgICAgICAgICAgICAgICAgICBxdWFk
WzFdID0gRmxvYXRQb2ludCh4MSwgeTIgLSBtYXgoYWRqYWNlbnRXaWR0aDIsIDApKTsKLSAgICAg
ICAgICAgICAgICAgICAgcXVhZFsyXSA9IEZsb2F0UG9pbnQoeDIsIHkyIC0gbWF4KC1hZGphY2Vu
dFdpZHRoMiwgMCkpOwotICAgICAgICAgICAgICAgICAgICBxdWFkWzNdID0gRmxvYXRQb2ludCh4
MiwgeTEgKyBtYXgoLWFkamFjZW50V2lkdGgxLCAwKSk7CisgICAgICAgICAgICAgICAgICAgIHF1
YWRbMF0gPSBGbG9hdFBvaW50KHgxLCB5MSArIHN0ZDo6bWF4KGFkamFjZW50V2lkdGgxLCAwKSk7
CisgICAgICAgICAgICAgICAgICAgIHF1YWRbMV0gPSBGbG9hdFBvaW50KHgxLCB5MiAtIHN0ZDo6
bWF4KGFkamFjZW50V2lkdGgyLCAwKSk7CisgICAgICAgICAgICAgICAgICAgIHF1YWRbMl0gPSBG
bG9hdFBvaW50KHgyLCB5MiAtIHN0ZDo6bWF4KC1hZGphY2VudFdpZHRoMiwgMCkpOworICAgICAg
ICAgICAgICAgICAgICBxdWFkWzNdID0gRmxvYXRQb2ludCh4MiwgeTEgKyBzdGQ6Om1heCgtYWRq
YWNlbnRXaWR0aDEsIDApKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAKQEAgLTE0MjQsMTYgKzE0MjIsMTYgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OnJlcGFpbnRB
ZnRlckxheW91dElmTmVlZGVkKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGEKICAg
ICAgICAgc3R5bGUoKS5nZXRCb3hTaGFkb3dIb3Jpem9udGFsRXh0ZW50KHNoYWRvd0xlZnQsIHNo
YWRvd1JpZ2h0KTsKICAgICAgICAgaW50IGJvcmRlclJpZ2h0ID0gaXNCb3goKSA/IHRvUmVuZGVy
Qm94KHRoaXMpLT5ib3JkZXJSaWdodCgpIDogMDsKICAgICAgICAgTGF5b3V0VW5pdCBib3hXaWR0
aCA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+d2lkdGgoKSA6IExheW91dFVuaXQoKTsK
LSAgICAgICAgTGF5b3V0VW5pdCBtaW5JbnNldFJpZ2h0U2hhZG93RXh0ZW50ID0gbWluPExheW91
dFVuaXQ+KC1pbnNldFNoYWRvd0V4dGVudC5yaWdodCgpLCBtaW48TGF5b3V0VW5pdD4obmV3Qm91
bmRzLndpZHRoKCksIG9sZEJvdW5kcy53aWR0aCgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgYm9y
ZGVyV2lkdGggPSBtYXg8TGF5b3V0VW5pdD4oYm9yZGVyUmlnaHQsIG1heDxMYXlvdXRVbml0Pih2
YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgYm94
V2lkdGgsICZ2aWV3KCkpLCB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKCkud2lkdGgoKSwgYm94V2lkdGgpKSk7Ci0gICAgICAgIExheW91dFVuaXQgZGVjb3Jh
dGlvbnNXaWR0aCA9IG1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0eWxlLm91dGxpbmVPZmZzZXQo
KSwgYm9yZGVyV2lkdGggKyBtaW5JbnNldFJpZ2h0U2hhZG93RXh0ZW50KSArIG1heDxMYXlvdXRV
bml0PihvdXRsaW5lV2lkdGgsIHNoYWRvd1JpZ2h0KTsKLSAgICAgICAgTGF5b3V0UmVjdCByaWdo
dFJlY3QobmV3T3V0bGluZUJveC54KCkgKyBtaW4obmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRP
dXRsaW5lQm94LndpZHRoKCkpIC0gZGVjb3JhdGlvbnNXaWR0aCwKKyAgICAgICAgTGF5b3V0VW5p
dCBtaW5JbnNldFJpZ2h0U2hhZG93RXh0ZW50ID0gc3RkOjptaW48TGF5b3V0VW5pdD4oLWluc2V0
U2hhZG93RXh0ZW50LnJpZ2h0KCksIHN0ZDo6bWluPExheW91dFVuaXQ+KG5ld0JvdW5kcy53aWR0
aCgpLCBvbGRCb3VuZHMud2lkdGgoKSkpOworICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRo
ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oYm9yZGVyUmlnaHQsIHN0ZDo6bWF4PExheW91dFVuaXQ+
KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLCBi
b3hXaWR0aCwgJnZpZXcoKSksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tUmln
aHRSYWRpdXMoKS53aWR0aCgpLCBib3hXaWR0aCkpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBkZWNv
cmF0aW9uc1dpZHRoID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS5vdXRsaW5l
T2Zmc2V0KCksIGJvcmRlcldpZHRoICsgbWluSW5zZXRSaWdodFNoYWRvd0V4dGVudCkgKyBzdGQ6
Om1heDxMYXlvdXRVbml0PihvdXRsaW5lV2lkdGgsIHNoYWRvd1JpZ2h0KTsKKyAgICAgICAgTGF5
b3V0UmVjdCByaWdodFJlY3QobmV3T3V0bGluZUJveC54KCkgKyBzdGQ6Om1pbihuZXdPdXRsaW5l
Qm94LndpZHRoKCksIG9sZE91dGxpbmVCb3gud2lkdGgoKSkgLSBkZWNvcmF0aW9uc1dpZHRoLAog
ICAgICAgICAgICAgbmV3T3V0bGluZUJveC55KCksCiAgICAgICAgICAgICB3aWR0aCArIGRlY29y
YXRpb25zV2lkdGgsCi0gICAgICAgICAgICBtYXgobmV3T3V0bGluZUJveC5oZWlnaHQoKSwgb2xk
T3V0bGluZUJveC5oZWlnaHQoKSkpOwotICAgICAgICBMYXlvdXRVbml0IHJpZ2h0ID0gbWluPExh
eW91dFVuaXQ+KG5ld0JvdW5kcy5tYXhYKCksIG9sZEJvdW5kcy5tYXhYKCkpOworICAgICAgICAg
ICAgc3RkOjptYXgobmV3T3V0bGluZUJveC5oZWlnaHQoKSwgb2xkT3V0bGluZUJveC5oZWlnaHQo
KSkpOworICAgICAgICBMYXlvdXRVbml0IHJpZ2h0ID0gc3RkOjptaW48TGF5b3V0VW5pdD4obmV3
Qm91bmRzLm1heFgoKSwgb2xkQm91bmRzLm1heFgoKSk7CiAgICAgICAgIGlmIChyaWdodFJlY3Qu
eCgpIDwgcmlnaHQpIHsKLSAgICAgICAgICAgIHJpZ2h0UmVjdC5zZXRXaWR0aChtaW4ocmlnaHRS
ZWN0LndpZHRoKCksIHJpZ2h0IC0gcmlnaHRSZWN0LngoKSkpOworICAgICAgICAgICAgcmlnaHRS
ZWN0LnNldFdpZHRoKHN0ZDo6bWluKHJpZ2h0UmVjdC53aWR0aCgpLCByaWdodCAtIHJpZ2h0UmVj
dC54KCkpKTsKICAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFp
bmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0KHJpZ2h0UmVjdCkpOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTQ0NCwxNiArMTQ0MiwxNiBAQCBib29sIFJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5
b3V0SWZOZWVkZWQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYQogICAgICAgICBz
dHlsZSgpLmdldEJveFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvd1RvcCwgc2hhZG93Qm90dG9t
KTsKICAgICAgICAgaW50IGJvcmRlckJvdHRvbSA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlz
KS0+Ym9yZGVyQm90dG9tKCkgOiAwOwogICAgICAgICBMYXlvdXRVbml0IGJveEhlaWdodCA9IGlz
Qm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+aGVpZ2h0KCkgOiBMYXlvdXRVbml0KCk7Ci0gICAg
ICAgIExheW91dFVuaXQgbWluSW5zZXRCb3R0b21TaGFkb3dFeHRlbnQgPSBtaW48TGF5b3V0VW5p
dD4oLWluc2V0U2hhZG93RXh0ZW50LmJvdHRvbSgpLCBtaW48TGF5b3V0VW5pdD4obmV3Qm91bmRz
LmhlaWdodCgpLCBvbGRCb3VuZHMuaGVpZ2h0KCkpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBib3Jk
ZXJIZWlnaHQgPSBtYXg8TGF5b3V0VW5pdD4oYm9yZGVyQm90dG9tLCBtYXg8TGF5b3V0VW5pdD4o
dmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCks
IGJveEhlaWdodCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90dG9tUmlnaHRSYWRp
dXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0LCAmdmlldygpKSkpOwotICAgICAgICBMYXlvdXRVbml0
IGRlY29yYXRpb25zSGVpZ2h0ID0gbWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUub3V0bGlu
ZU9mZnNldCgpLCBib3JkZXJIZWlnaHQgKyBtaW5JbnNldEJvdHRvbVNoYWRvd0V4dGVudCkgKyBt
YXg8TGF5b3V0VW5pdD4ob3V0bGluZVdpZHRoLCBzaGFkb3dCb3R0b20pOworICAgICAgICBMYXlv
dXRVbml0IG1pbkluc2V0Qm90dG9tU2hhZG93RXh0ZW50ID0gc3RkOjptaW48TGF5b3V0VW5pdD4o
LWluc2V0U2hhZG93RXh0ZW50LmJvdHRvbSgpLCBzdGQ6Om1pbjxMYXlvdXRVbml0PihuZXdCb3Vu
ZHMuaGVpZ2h0KCksIG9sZEJvdW5kcy5oZWlnaHQoKSkpOworICAgICAgICBMYXlvdXRVbml0IGJv
cmRlckhlaWdodCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KGJvcmRlckJvdHRvbSwgc3RkOjptYXg8
TGF5b3V0VW5pdD4odmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVz
KCkuaGVpZ2h0KCksIGJveEhlaWdodCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgYm94SGVpZ2h0LCAmdmlldygpKSkpOworICAgICAg
ICBMYXlvdXRVbml0IGRlY29yYXRpb25zSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oLW91
dGxpbmVTdHlsZS5vdXRsaW5lT2Zmc2V0KCksIGJvcmRlckhlaWdodCArIG1pbkluc2V0Qm90dG9t
U2hhZG93RXh0ZW50KSArIHN0ZDo6bWF4PExheW91dFVuaXQ+KG91dGxpbmVXaWR0aCwgc2hhZG93
Qm90dG9tKTsKICAgICAgICAgTGF5b3V0UmVjdCBib3R0b21SZWN0KG5ld091dGxpbmVCb3gueCgp
LAotICAgICAgICAgICAgbWluKG5ld091dGxpbmVCb3gubWF4WSgpLCBvbGRPdXRsaW5lQm94Lm1h
eFkoKSkgLSBkZWNvcmF0aW9uc0hlaWdodCwKLSAgICAgICAgICAgIG1heChuZXdPdXRsaW5lQm94
LndpZHRoKCksIG9sZE91dGxpbmVCb3gud2lkdGgoKSksCisgICAgICAgICAgICBzdGQ6Om1pbihu
ZXdPdXRsaW5lQm94Lm1heFkoKSwgb2xkT3V0bGluZUJveC5tYXhZKCkpIC0gZGVjb3JhdGlvbnNI
ZWlnaHQsCisgICAgICAgICAgICBzdGQ6Om1heChuZXdPdXRsaW5lQm94LndpZHRoKCksIG9sZE91
dGxpbmVCb3gud2lkdGgoKSksCiAgICAgICAgICAgICBoZWlnaHQgKyBkZWNvcmF0aW9uc0hlaWdo
dCk7Ci0gICAgICAgIExheW91dFVuaXQgYm90dG9tID0gbWluKG5ld0JvdW5kcy5tYXhZKCksIG9s
ZEJvdW5kcy5tYXhZKCkpOworICAgICAgICBMYXlvdXRVbml0IGJvdHRvbSA9IHN0ZDo6bWluKG5l
d0JvdW5kcy5tYXhZKCksIG9sZEJvdW5kcy5tYXhZKCkpOwogICAgICAgICBpZiAoYm90dG9tUmVj
dC55KCkgPCBib3R0b20pIHsKLSAgICAgICAgICAgIGJvdHRvbVJlY3Quc2V0SGVpZ2h0KG1pbihi
b3R0b21SZWN0LmhlaWdodCgpLCBib3R0b20gLSBib3R0b21SZWN0LnkoKSkpOworICAgICAgICAg
ICAgYm90dG9tUmVjdC5zZXRIZWlnaHQoc3RkOjptaW4oYm90dG9tUmVjdC5oZWlnaHQoKSwgYm90
dG9tIC0gYm90dG9tUmVjdC55KCkpKTsKICAgICAgICAgICAgIHJlcGFpbnRVc2luZ0NvbnRhaW5l
cihyZXBhaW50Q29udGFpbmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGJvdHRvbVJlY3QpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTIzNzksNyArMjM3Nyw3IEBAIGludCBSZW5kZXJPYmplY3Q6OmNh
cmV0TWluT2Zmc2V0KCkgY29uc3QKIGludCBSZW5kZXJPYmplY3Q6OmNhcmV0TWF4T2Zmc2V0KCkg
Y29uc3QKIHsKICAgICBpZiAoaXNSZXBsYWNlZCgpKQotICAgICAgICByZXR1cm4gbm9kZSgpID8g
bWF4KDFVLCBub2RlKCktPmNoaWxkTm9kZUNvdW50KCkpIDogMTsKKyAgICAgICAgcmV0dXJuIG5v
ZGUoKSA/IHN0ZDo6bWF4KDFVLCBub2RlKCktPmNoaWxkTm9kZUNvdW50KCkpIDogMTsKICAgICBp
ZiAoaXNIUigpKQogICAgICAgICByZXR1cm4gMTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCmluZGV4IDA0YWRlOGRmMjhmZmEwYzAy
MWRlMDAwYTFkZjhlZWZjNTJlMjI3MDguLjM3ODlkNzcwZTA0YmNkMjk3MTVhMGYwYmQzNDcyOTI5
YjdhOWNhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9n
cmVzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNw
cApAQCAtMjksOCArMjksNiBAQAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBSZW5kZXJQcm9ncmVzczo6UmVuZGVyUHJvZ3Jlc3MoSFRNTEVsZW1lbnQmIGVs
ZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCAwM2I3MGYxYTNiMzFmODYxMzJiYWI5MWEzNjE3Yjhm
ZjZlNGI2MzJjLi5jNWNlOGRhZWUwNTBhMzU0MWZjZmI0MWQwNTk3Zjc3MDMyNmU5ZjBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtNDUsOCArNDUsNiBA
QAogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYvU3RhY2tTdGF0cy5o
PgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRl
clJlZ2lvbjo6UmVuZGVyUmVnaW9uKEVsZW1lbnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5
bGU+IHN0eWxlLCBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKQpAQCAtMTMyLDE1ICsxMzAs
MTUgQEAgTGF5b3V0UmVjdCBSZW5kZXJSZWdpb246Om92ZXJmbG93UmVjdEZvckZsb3dUaHJlYWRQ
b3J0aW9uKGNvbnN0IExheW91dFJlY3QmIGZsb3cKICAgICBMYXlvdXRSZWN0IGNsaXBSZWN0Owog
ICAgIGlmIChtX2Zsb3dUaHJlYWQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAg
ICAgTGF5b3V0VW5pdCBtaW5ZID0gaXNGaXJzdFBvcnRpb24gPyAoZmxvd1RocmVhZE92ZXJmbG93
LnkoKSAtIG91dGxpbmVTaXplKSA6IGZsb3dUaHJlYWRQb3J0aW9uUmVjdC55KCk7Ci0gICAgICAg
IExheW91dFVuaXQgbWF4WSA9IGlzTGFzdFBvcnRpb24gPyBtYXgoZmxvd1RocmVhZFBvcnRpb25S
ZWN0Lm1heFkoKSwgZmxvd1RocmVhZE92ZXJmbG93Lm1heFkoKSkgKyBvdXRsaW5lU2l6ZSA6IGZs
b3dUaHJlYWRQb3J0aW9uUmVjdC5tYXhZKCk7Ci0gICAgICAgIExheW91dFVuaXQgbWluWCA9IGNs
aXBYID8gZmxvd1RocmVhZFBvcnRpb25SZWN0LngoKSA6IG1pbihmbG93VGhyZWFkUG9ydGlvblJl
Y3QueCgpLCBmbG93VGhyZWFkT3ZlcmZsb3cueCgpIC0gb3V0bGluZVNpemUpOwotICAgICAgICBM
YXlvdXRVbml0IG1heFggPSBjbGlwWCA/IGZsb3dUaHJlYWRQb3J0aW9uUmVjdC5tYXhYKCkgOiBt
YXgoZmxvd1RocmVhZFBvcnRpb25SZWN0Lm1heFgoKSwgKGZsb3dUaHJlYWRPdmVyZmxvdy5tYXhY
KCkgKyBvdXRsaW5lU2l6ZSkpOworICAgICAgICBMYXlvdXRVbml0IG1heFkgPSBpc0xhc3RQb3J0
aW9uID8gc3RkOjptYXgoZmxvd1RocmVhZFBvcnRpb25SZWN0Lm1heFkoKSwgZmxvd1RocmVhZE92
ZXJmbG93Lm1heFkoKSkgKyBvdXRsaW5lU2l6ZSA6IGZsb3dUaHJlYWRQb3J0aW9uUmVjdC5tYXhZ
KCk7CisgICAgICAgIExheW91dFVuaXQgbWluWCA9IGNsaXBYID8gZmxvd1RocmVhZFBvcnRpb25S
ZWN0LngoKSA6IHN0ZDo6bWluKGZsb3dUaHJlYWRQb3J0aW9uUmVjdC54KCksIGZsb3dUaHJlYWRP
dmVyZmxvdy54KCkgLSBvdXRsaW5lU2l6ZSk7CisgICAgICAgIExheW91dFVuaXQgbWF4WCA9IGNs
aXBYID8gZmxvd1RocmVhZFBvcnRpb25SZWN0Lm1heFgoKSA6IHN0ZDo6bWF4KGZsb3dUaHJlYWRQ
b3J0aW9uUmVjdC5tYXhYKCksIChmbG93VGhyZWFkT3ZlcmZsb3cubWF4WCgpICsgb3V0bGluZVNp
emUpKTsKICAgICAgICAgY2xpcFJlY3QgPSBMYXlvdXRSZWN0KG1pblgsIG1pblksIG1heFggLSBt
aW5YLCBtYXhZIC0gbWluWSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTGF5b3V0VW5pdCBtaW5Y
ID0gaXNGaXJzdFBvcnRpb24gPyAoZmxvd1RocmVhZE92ZXJmbG93LngoKSAtIG91dGxpbmVTaXpl
KSA6IGZsb3dUaHJlYWRQb3J0aW9uUmVjdC54KCk7Ci0gICAgICAgIExheW91dFVuaXQgbWF4WCA9
IGlzTGFzdFBvcnRpb24gPyBtYXgoZmxvd1RocmVhZFBvcnRpb25SZWN0Lm1heFgoKSwgZmxvd1Ro
cmVhZE92ZXJmbG93Lm1heFgoKSkgKyBvdXRsaW5lU2l6ZSA6IGZsb3dUaHJlYWRQb3J0aW9uUmVj
dC5tYXhYKCk7Ci0gICAgICAgIExheW91dFVuaXQgbWluWSA9IGNsaXBZID8gZmxvd1RocmVhZFBv
cnRpb25SZWN0LnkoKSA6IG1pbihmbG93VGhyZWFkUG9ydGlvblJlY3QueSgpLCAoZmxvd1RocmVh
ZE92ZXJmbG93LnkoKSAtIG91dGxpbmVTaXplKSk7Ci0gICAgICAgIExheW91dFVuaXQgbWF4WSA9
IGNsaXBZID8gZmxvd1RocmVhZFBvcnRpb25SZWN0Lm1heFkoKSA6IG1heChmbG93VGhyZWFkUG9y
dGlvblJlY3QueSgpLCAoZmxvd1RocmVhZE92ZXJmbG93Lm1heFkoKSArIG91dGxpbmVTaXplKSk7
CisgICAgICAgIExheW91dFVuaXQgbWF4WCA9IGlzTGFzdFBvcnRpb24gPyBzdGQ6Om1heChmbG93
VGhyZWFkUG9ydGlvblJlY3QubWF4WCgpLCBmbG93VGhyZWFkT3ZlcmZsb3cubWF4WCgpKSArIG91
dGxpbmVTaXplIDogZmxvd1RocmVhZFBvcnRpb25SZWN0Lm1heFgoKTsKKyAgICAgICAgTGF5b3V0
VW5pdCBtaW5ZID0gY2xpcFkgPyBmbG93VGhyZWFkUG9ydGlvblJlY3QueSgpIDogc3RkOjptaW4o
Zmxvd1RocmVhZFBvcnRpb25SZWN0LnkoKSwgKGZsb3dUaHJlYWRPdmVyZmxvdy55KCkgLSBvdXRs
aW5lU2l6ZSkpOworICAgICAgICBMYXlvdXRVbml0IG1heFkgPSBjbGlwWSA/IGZsb3dUaHJlYWRQ
b3J0aW9uUmVjdC5tYXhZKCkgOiBzdGQ6Om1heChmbG93VGhyZWFkUG9ydGlvblJlY3QueSgpLCAo
Zmxvd1RocmVhZE92ZXJmbG93Lm1heFkoKSArIG91dGxpbmVTaXplKSk7CiAgICAgICAgIGNsaXBS
ZWN0ID0gTGF5b3V0UmVjdChtaW5YLCBtaW5ZLCBtYXhYIC0gbWluWCwgbWF4WSAtIG1pblkpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5k
ZXggNGE2YzlkNDYzNDA3ZDU3ZTllYmY2ZWJkNmJmYThhY2I0OGQwODE3NC4uMjFhODM3MmMwOGEy
NmViNTQxZGFlZjE3YTZjNDE0ZGE1MmY0ZWI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAiVmlzaWJs
ZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KIAotdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBpbnQgY0RlZmF1bHRXaWR0
aCA9IDMwMDsKQEAgLTIwMCw4ICsxOTgsOCBAQCBib29sIFJlbmRlclJlcGxhY2VkOjpzaG91bGRQ
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAg
ICAgICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0gbV9pbmxpbmVCb3hXcmFwcGVyLT5y
b290KCk7CiAgICAgICAgIExheW91dFVuaXQgc2VsVG9wID0gcGFpbnRPZmZzZXQueSgpICsgcm9v
dEJveC5zZWxlY3Rpb25Ub3AoKTsKICAgICAgICAgTGF5b3V0VW5pdCBzZWxCb3R0b20gPSBwYWlu
dE9mZnNldC55KCkgKyBzZWxUb3AgKyByb290Qm94LnNlbGVjdGlvbkhlaWdodCgpOwotICAgICAg
ICB0b3AgPSBtaW4oc2VsVG9wLCB0b3ApOwotICAgICAgICBib3R0b20gPSBtYXgoc2VsQm90dG9t
LCBib3R0b20pOworICAgICAgICB0b3AgPSBzdGQ6Om1pbihzZWxUb3AsIHRvcCk7CisgICAgICAg
IGJvdHRvbSA9IHN0ZDo6bWF4KHNlbEJvdHRvbSwgYm90dG9tKTsKICAgICB9CiAgICAgCiAgICAg
TGF5b3V0UmVjdCBsb2NhbFJlcGFpbnRSZWN0ID0gcGFpbnRJbmZvLnJlY3Q7CkBAIC00MDIsNyAr
NDAwLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNh
bFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2gKICAgICAgICAgICAgICAgICAvLyBUaGlz
IHNvbHZlcyBhYm92ZSBlcXVhdGlvbiBmb3IgJ3dpZHRoJyAoPT0gbG9naWNhbFdpZHRoKS4KICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVu
Z3RoKHN0eWxlKCkubWFyZ2luU3RhcnQoKSwgbG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IG1hcmdpbkVuZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLm1h
cmdpbkVuZCgpLCBsb2dpY2FsV2lkdGgpOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9
IG1heDxMYXlvdXRVbml0PigwLCBsb2dpY2FsV2lkdGggLSAobWFyZ2luU3RhcnQgKyBtYXJnaW5F
bmQgKyAod2lkdGgoKSAtIGNsaWVudFdpZHRoKCkpKSk7CisgICAgICAgICAgICAgICAgbG9naWNh
bFdpZHRoID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgbG9naWNhbFdpZHRoIC0gKG1hcmdpblN0
YXJ0ICsgbWFyZ2luRW5kICsgKHdpZHRoKCkgLSBjbGllbnRXaWR0aCgpKSkpOwogICAgICAgICAg
ICAgICAgIGlmIChpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplKQogICAgICAgICAgICAgICAgICAg
ICBsb2dpY2FsV2lkdGggPSBsb2dpY2FsV2lkdGggKiBjb25zdHJhaW5lZFNpemUud2lkdGgoKSAv
IDEwMDsKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRo
UmVzcGVjdGluZ01pbk1heFdpZHRoKGxvZ2ljYWxXaWR0aCwgc2hvdWxkQ29tcHV0ZVByZWZlcnJl
ZCk7CkBAIC00NzksMTMgKzQ3NywxMyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUHJl
ZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
ID0gMDsKIAogICAgIGlmIChzdHlsZVRvVXNlLmxvZ2ljYWxNaW5XaWR0aCgpLmlzRml4ZWQoKSAm
JiBzdHlsZVRvVXNlLmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkgPiAwKSB7Ci0gICAgICAgIG1f
bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4KG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRo
LCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlVG9Vc2UubG9n
aWNhbE1pbldpZHRoKCkudmFsdWUoKSkpOwotICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxX
aWR0aCA9IG1heChtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExv
Z2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZVRvVXNlLmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVl
KCkpKTsKKyAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX21h
eFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJv
eFNpemluZyhzdHlsZVRvVXNlLmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkpKTsKKyAgICAgICAg
bV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX21pblByZWZlcnJlZExvZ2lj
YWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZVRv
VXNlLmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHN0
eWxlVG9Vc2UubG9naWNhbE1heFdpZHRoKCkuaXNGaXhlZCgpKSB7Ci0gICAgICAgIG1fbWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoID0gbWluKG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1
c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlVG9Vc2UubG9naWNhbE1h
eFdpZHRoKCkudmFsdWUoKSkpOwotICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9
IG1pbihtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxX
aWR0aEZvckJveFNpemluZyhzdHlsZVRvVXNlLmxvZ2ljYWxNYXhXaWR0aCgpLnZhbHVlKCkpKTsK
KyAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1pbihtX21heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemlu
ZyhzdHlsZVRvVXNlLmxvZ2ljYWxNYXhXaWR0aCgpLnZhbHVlKCkpKTsKKyAgICAgICAgbV9taW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1pbihtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0
aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZVRvVXNlLmxv
Z2ljYWxNYXhXaWR0aCgpLnZhbHVlKCkpKTsKICAgICB9CiAKICAgICBMYXlvdXRVbml0IGJvcmRl
ckFuZFBhZGRpbmcgPSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcAppbmRleCA1NjBjZDQyMjY1ZmVlOTBi
ZjIyODNiNDUwOTdhZGU3ZGRjMTBkODg1Li42N2JlNzJiNTY5Y2MyZDYyMzFmMGZmODQ3MzNlNzMw
NTk1MDQ5NmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5j
cHAKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJSZW5kZXJSdWJ5UnVuLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyUnVieVRleHQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZW5kZXJSdWJ5QmFzZTo6UmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmIGRv
Y3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSdWJ5UnVuLmNwcAppbmRleCA1YzE1MTE0Nzk0MzdlNjkzNzM1YzVlZDVjMDVj
OTgwZDE1MDg5NjcwLi42Y2M2ZmMwNjFkMDVjZTU3NDcyNTc5ZTg2NDFhYTA5MjIxM2FjNDljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCkBAIC0zOSw4ICsz
OSw2IEBACiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1N0
YWNrU3RhdHMuaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBSZW5kZXJSdWJ5UnVuOjpSZW5kZXJSdWJ5UnVuKERvY3VtZW50JiBkb2N1bWVudCwgUGFz
c1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCkBAIC0zMDAsMTEgKzI5OCwxMSBAQCB2b2lkIFJlbmRl
clJ1YnlSdW46OmdldE92ZXJoYW5nKGJvb2wgZmlyc3RMaW5lLCBSZW5kZXJPYmplY3QqIHN0YXJ0
UmVuZGVyZXIsIFJlbgogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbG9naWNhbFdpZHRoID0g
dGhpcy0+bG9naWNhbFdpZHRoKCk7Ci0gICAgaW50IGxvZ2ljYWxMZWZ0T3ZlcmhhbmcgPSBudW1l
cmljX2xpbWl0czxpbnQ+OjptYXgoKTsKLSAgICBpbnQgbG9naWNhbFJpZ2h0T3ZlcmhhbmcgPSBu
dW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKKyAgICBpbnQgbG9naWNhbExlZnRPdmVyaGFuZyA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgaW50IGxvZ2ljYWxSaWdodE92
ZXJoYW5nID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKICAgICBmb3IgKFJvb3RJ
bmxpbmVCb3gqIHJvb3RJbmxpbmVCb3ggPSBydWJ5QmFzZS0+Zmlyc3RSb290Qm94KCk7IHJvb3RJ
bmxpbmVCb3g7IHJvb3RJbmxpbmVCb3ggPSByb290SW5saW5lQm94LT5uZXh0Um9vdEJveCgpKSB7
Ci0gICAgICAgIGxvZ2ljYWxMZWZ0T3ZlcmhhbmcgPSBtaW48aW50Pihsb2dpY2FsTGVmdE92ZXJo
YW5nLCByb290SW5saW5lQm94LT5sb2dpY2FsTGVmdCgpKTsKLSAgICAgICAgbG9naWNhbFJpZ2h0
T3ZlcmhhbmcgPSBtaW48aW50Pihsb2dpY2FsUmlnaHRPdmVyaGFuZywgbG9naWNhbFdpZHRoIC0g
cm9vdElubGluZUJveC0+bG9naWNhbFJpZ2h0KCkpOworICAgICAgICBsb2dpY2FsTGVmdE92ZXJo
YW5nID0gc3RkOjptaW48aW50Pihsb2dpY2FsTGVmdE92ZXJoYW5nLCByb290SW5saW5lQm94LT5s
b2dpY2FsTGVmdCgpKTsKKyAgICAgICAgbG9naWNhbFJpZ2h0T3ZlcmhhbmcgPSBzdGQ6Om1pbjxp
bnQ+KGxvZ2ljYWxSaWdodE92ZXJoYW5nLCBsb2dpY2FsV2lkdGggLSByb290SW5saW5lQm94LT5s
b2dpY2FsUmlnaHQoKSk7CiAgICAgfQogCiAgICAgc3RhcnRPdmVyaGFuZyA9IHN0eWxlKCkuaXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbG9naWNhbExlZnRPdmVyaGFuZyA6IGxvZ2ljYWxSaWdo
dE92ZXJoYW5nOwpAQCAtMzIxLDkgKzMxOSw5IEBAIHZvaWQgUmVuZGVyUnVieVJ1bjo6Z2V0T3Zl
cmhhbmcoYm9vbCBmaXJzdExpbmUsIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgUmVuCiAg
ICAgY29uc3QgUmVuZGVyU3R5bGUmIHJ1YnlUZXh0U3R5bGUgPSBmaXJzdExpbmUgPyBydWJ5VGV4
dC0+Zmlyc3RMaW5lU3R5bGUoKSA6IHJ1YnlUZXh0LT5zdHlsZSgpOwogICAgIGludCBoYWxmV2lk
dGhPZkZvbnRTaXplID0gcnVieVRleHRTdHlsZS5mb250U2l6ZSgpIC8gMjsKICAgICBpZiAoc3Rh
cnRPdmVyaGFuZykKLSAgICAgICAgc3RhcnRPdmVyaGFuZyA9IG1pbjxpbnQ+KHN0YXJ0T3Zlcmhh
bmcsIG1pbjxpbnQ+KHRvUmVuZGVyVGV4dChzdGFydFJlbmRlcmVyKS0+bWluTG9naWNhbFdpZHRo
KCksIGhhbGZXaWR0aE9mRm9udFNpemUpKTsKKyAgICAgICAgc3RhcnRPdmVyaGFuZyA9IHN0ZDo6
bWluPGludD4oc3RhcnRPdmVyaGFuZywgc3RkOjptaW48aW50Pih0b1JlbmRlclRleHQoc3RhcnRS
ZW5kZXJlciktPm1pbkxvZ2ljYWxXaWR0aCgpLCBoYWxmV2lkdGhPZkZvbnRTaXplKSk7CiAgICAg
aWYgKGVuZE92ZXJoYW5nKQotICAgICAgICBlbmRPdmVyaGFuZyA9IG1pbjxpbnQ+KGVuZE92ZXJo
YW5nLCBtaW48aW50Pih0b1JlbmRlclRleHQoZW5kUmVuZGVyZXIpLT5taW5Mb2dpY2FsV2lkdGgo
KSwgaGFsZldpZHRoT2ZGb250U2l6ZSkpOworICAgICAgICBlbmRPdmVyaGFuZyA9IHN0ZDo6bWlu
PGludD4oZW5kT3ZlcmhhbmcsIHN0ZDo6bWluPGludD4odG9SZW5kZXJUZXh0KGVuZFJlbmRlcmVy
KS0+bWluTG9naWNhbFdpZHRoKCksIGhhbGZXaWR0aE9mRm9udFNpemUpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJ1YnlUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5VGV4
dC5jcHAKaW5kZXggMTI1N2ExZDNlZWRlNGZlZTgzZDQ3NjY5MmJiMzA4YTE5MDAzZmIyZi4uMjRj
NzIyMjA2ZTY5M2YxYmM0NzliMDc3NzUzZjI2MTc3NTM2YWEzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCkBAIC0zMyw4ICszMyw2IEBACiAKICNpbmNs
dWRlICJSZW5kZXJSdWJ5VGV4dC5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFJlbmRlclJ1YnlUZXh0OjpSZW5kZXJSdWJ5VGV4dChFbGVtZW50JiBl
bGVtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKQEAgLTc3LDcgKzc1LDcgQEAgdm9p
ZCBSZW5kZXJSdWJ5VGV4dDo6YWRqdXN0SW5saW5lRGlyZWN0aW9uTGluZUJvdW5kcyhpbnQgZXhw
YW5zaW9uT3Bwb3J0dW5pdHlDb3UKICAgICAvLyBydWJ5IGNoYXJhY3RlciBvbiBlYWNoIHNpZGUu
CiAgICAgZmxvYXQgaW5zZXQgPSAobG9naWNhbFdpZHRoIC0gbWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoKSAvIChleHBhbnNpb25PcHBvcnR1bml0eUNvdW50ICsgMSk7CiAgICAgaWYgKGV4cGFuc2lv
bk9wcG9ydHVuaXR5Q291bnQpCi0gICAgICAgIGluc2V0ID0gbWluPGZsb2F0PigyICogc3R5bGUo
KS5mb250U2l6ZSgpLCBpbnNldCk7CisgICAgICAgIGluc2V0ID0gc3RkOjptaW48ZmxvYXQ+KDIg
KiBzdHlsZSgpLmZvbnRTaXplKCksIGluc2V0KTsKIAogICAgIGxvZ2ljYWxMZWZ0ICs9IGluc2V0
IC8gMjsKICAgICBsb2dpY2FsV2lkdGggLT0gaW5zZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggMDllY2RiZmIwMTNjYjU2ODI4
NzJlYTY2YWE0Mjg5MmY3ODlmMjAzYy4uZDA1YjhlYzgyMGFkNmVhNWE0NzdlMWFlYjFlMzU0ZmQx
NjUzYzhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclBhcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJQYXJ0LmNwcApAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNp
bmNsdWRlIDx3dGYvU3RhY2tTdGF0cy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNjcm9sbGJhclBhcnQ6OlJlbmRlclNjcm9sbGJhclBh
cnQoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSwgUmVuZGVy
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkKQEAgLTk5LDcgKzk3LDcg
QEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYmFyV2lkdGgoKQogICAg
IGludCB3ID0gY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1haW5PclByZWZlcnJlZFNpemUs
IHN0eWxlKCkud2lkdGgoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOwogICAgIGludCBtaW5X
aWR0aCA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhNaW5TaXplLCBzdHlsZSgpLm1pbldp
ZHRoKCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKICAgICBpbnQgbWF4V2lkdGggPSBzdHls
ZSgpLm1heFdpZHRoKCkuaXNVbmRlZmluZWQoKSA/IHcgOiBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNz
VXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS5tYXhXaWR0aCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmll
dyk7Ci0gICAgc2V0V2lkdGgobWF4KG1pbldpZHRoLCBtaW4obWF4V2lkdGgsIHcpKSk7CisgICAg
c2V0V2lkdGgoc3RkOjptYXgobWluV2lkdGgsIHN0ZDo6bWluKG1heFdpZHRoLCB3KSkpOwogICAg
IAogICAgIC8vIEJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcyBjYW4gYWxsIGhhdmUgbWFyZ2lucyBh
bG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLiAKICAgICBtX21hcmdpbkJveC5zZXRMZWZ0
KG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLm1hcmdpbkxlZnQoKSwgdmlzaWJsZVNpemUs
IHJlbmRlclZpZXcpKTsKQEAgLTExNyw3ICsxMTUsNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclBh
cnQ6OmNvbXB1dGVTY3JvbGxiYXJIZWlnaHQoKQogICAgIGludCBoID0gY2FsY1Njcm9sbGJhclRo
aWNrbmVzc1VzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkuaGVpZ2h0KCksIHZpc2li
bGVTaXplLCByZW5kZXJWaWV3KTsKICAgICBpbnQgbWluSGVpZ2h0ID0gY2FsY1Njcm9sbGJhclRo
aWNrbmVzc1VzaW5nKE1pblNpemUsIHN0eWxlKCkubWluSGVpZ2h0KCksIHZpc2libGVTaXplLCBy
ZW5kZXJWaWV3KTsKICAgICBpbnQgbWF4SGVpZ2h0ID0gc3R5bGUoKS5tYXhIZWlnaHQoKS5pc1Vu
ZGVmaW5lZCgpID8gaCA6IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhNYXhTaXplLCBzdHls
ZSgpLm1heEhlaWdodCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7Ci0gICAgc2V0SGVpZ2h0
KG1heChtaW5IZWlnaHQsIG1pbihtYXhIZWlnaHQsIGgpKSk7CisgICAgc2V0SGVpZ2h0KHN0ZDo6
bWF4KG1pbkhlaWdodCwgc3RkOjptaW4obWF4SGVpZ2h0LCBoKSkpOwogCiAgICAgLy8gQnV0dG9u
cyBhbmQgdHJhY2sgcGllY2VzIGNhbiBhbGwgaGF2ZSBtYXJnaW5zIGFsb25nIHRoZSBheGlzIG9m
IHRoZSBzY3JvbGxiYXIuIAogICAgIG1fbWFyZ2luQm94LnNldFRvcChtaW5pbXVtVmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5tYXJnaW5Ub3AoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4IDcx
NjE2MWYxMjk2MWQ2NGMxM2Q5NGY3MGVlNmFlOTJmMmYyYzY0ZDAuLjgwNGI3NWI4ZDk4NjM4NTYy
YWFhZGRkZDdkOGE3Mjg2MmRhNTViNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNlYXJjaEZpZWxkLmNwcApAQCAtNDYsOCArNDYsNiBAQAogI2luY2x1ZGUgIlN0eWxl
UmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKIAotdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwpAQCAtMTQ2LDE0ICsxNDQsMTQgQEAgTGF5b3V0VW5pdCBSZW5kZXJTZWFy
Y2hGaWVsZDo6Y29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdo
dCwKICAgICBIVE1MRWxlbWVudCogcmVzdWx0c0J1dHRvbiA9IHJlc3VsdHNCdXR0b25FbGVtZW50
KCk7CiAgICAgaWYgKFJlbmRlckJveCogcmVzdWx0c1JlbmRlcmVyID0gcmVzdWx0c0J1dHRvbiA/
IHJlc3VsdHNCdXR0b24tPnJlbmRlckJveCgpIDogMCkgewogICAgICAgICByZXN1bHRzUmVuZGVy
ZXItPnVwZGF0ZUxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgbm9uQ29udGVudEhlaWdodCA9IG1h
eChub25Db250ZW50SGVpZ2h0LCByZXN1bHRzUmVuZGVyZXItPmJvcmRlckFuZFBhZGRpbmdMb2dp
Y2FsSGVpZ2h0KCkgKyByZXN1bHRzUmVuZGVyZXItPm1hcmdpbkxvZ2ljYWxIZWlnaHQoKSk7Ci0g
ICAgICAgIGxpbmVIZWlnaHQgPSBtYXgobGluZUhlaWdodCwgcmVzdWx0c1JlbmRlcmVyLT5sb2dp
Y2FsSGVpZ2h0KCkpOworICAgICAgICBub25Db250ZW50SGVpZ2h0ID0gc3RkOjptYXgobm9uQ29u
dGVudEhlaWdodCwgcmVzdWx0c1JlbmRlcmVyLT5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdo
dCgpICsgcmVzdWx0c1JlbmRlcmVyLT5tYXJnaW5Mb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICBs
aW5lSGVpZ2h0ID0gc3RkOjptYXgobGluZUhlaWdodCwgcmVzdWx0c1JlbmRlcmVyLT5sb2dpY2Fs
SGVpZ2h0KCkpOwogICAgIH0KICAgICBIVE1MRWxlbWVudCogY2FuY2VsQnV0dG9uID0gY2FuY2Vs
QnV0dG9uRWxlbWVudCgpOwogICAgIGlmIChSZW5kZXJCb3gqIGNhbmNlbFJlbmRlcmVyID0gY2Fu
Y2VsQnV0dG9uID8gY2FuY2VsQnV0dG9uLT5yZW5kZXJCb3goKSA6IDApIHsKICAgICAgICAgY2Fu
Y2VsUmVuZGVyZXItPnVwZGF0ZUxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgbm9uQ29udGVudEhl
aWdodCA9IG1heChub25Db250ZW50SGVpZ2h0LCBjYW5jZWxSZW5kZXJlci0+Ym9yZGVyQW5kUGFk
ZGluZ0xvZ2ljYWxIZWlnaHQoKSArIGNhbmNlbFJlbmRlcmVyLT5tYXJnaW5Mb2dpY2FsSGVpZ2h0
KCkpOwotICAgICAgICBsaW5lSGVpZ2h0ID0gbWF4KGxpbmVIZWlnaHQsIGNhbmNlbFJlbmRlcmVy
LT5sb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICBub25Db250ZW50SGVpZ2h0ID0gc3RkOjptYXgo
bm9uQ29udGVudEhlaWdodCwgY2FuY2VsUmVuZGVyZXItPmJvcmRlckFuZFBhZGRpbmdMb2dpY2Fs
SGVpZ2h0KCkgKyBjYW5jZWxSZW5kZXJlci0+bWFyZ2luTG9naWNhbEhlaWdodCgpKTsKKyAgICAg
ICAgbGluZUhlaWdodCA9IHN0ZDo6bWF4KGxpbmVIZWlnaHQsIGNhbmNlbFJlbmRlcmVyLT5sb2dp
Y2FsSGVpZ2h0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBsaW5lSGVpZ2h0ICsgbm9uQ29udGVu
dEhlaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDkz
ZjUzZGFjOTY4MzJlYmQxM2Y3ZTdjMDc5MjdiMzEzYzFmOGMyYmIuLmMyYjJjMzU5ODFmMTEwODlm
MWZhYmRkN2MyMzBjZWFiYmZlN2JkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcApAQCAtNDUsOCArNDUsNiBAQAogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0
YS5oIgogI2luY2x1ZGUgPHd0Zi9TdGFja1N0YXRzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAg
LTI4NCwzMiArMjgyLDMyIEBAIHZvaWQgUmVuZGVyVGFibGU6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgp
CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luVG90YWwgPSBtYXJnaW5TdGFydCArIG1hcmdpbkVu
ZDsKIAogICAgICAgICAvLyBTdWJ0cmFjdCBvdXQgb3VyIG1hcmdpbnMgdG8gZ2V0IHRoZSBhdmFp
bGFibGUgY29udGVudCB3aWR0aC4KLSAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVDb250ZW50
TG9naWNhbFdpZHRoID0gbWF4PExheW91dFVuaXQ+KDAsIGNvbnRhaW5lcldpZHRoSW5JbmxpbmVE
aXJlY3Rpb24gLSBtYXJnaW5Ub3RhbCk7CisgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlQ29u
dGVudExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGNvbnRhaW5lcldpZHRo
SW5JbmxpbmVEaXJlY3Rpb24gLSBtYXJnaW5Ub3RhbCk7CiAgICAgICAgIGlmIChzaHJpbmtUb0F2
b2lkRmxvYXRzKCkgJiYgY2ItPmNvbnRhaW5zRmxvYXRzKCkgJiYgIWhhc1BlcnBlbmRpY3VsYXJD
b250YWluaW5nQmxvY2spIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXb3JrIHdpdGggcmVnaW9u
cyBzb21lZGF5LgogICAgICAgICAgICAgYXZhaWxhYmxlQ29udGVudExvZ2ljYWxXaWR0aCA9IHNo
cmlua0xvZ2ljYWxXaWR0aFRvQXZvaWRGbG9hdHMobWFyZ2luU3RhcnQsIG1hcmdpbkVuZCwgY2Is
IDApOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRW5zdXJlIHdlIGFyZW4ndCBiaWdnZXIgdGhh
biBvdXIgYXZhaWxhYmxlIHdpZHRoLgotICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWluPGludD4o
YXZhaWxhYmxlQ29udGVudExvZ2ljYWxXaWR0aCwgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkp
KTsKKyAgICAgICAgc2V0TG9naWNhbFdpZHRoKHN0ZDo6bWluPGludD4oYXZhaWxhYmxlQ29udGVu
dExvZ2ljYWxXaWR0aCwgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkpKTsKICAgICB9CiAKICAg
ICAvLyBFbnN1cmUgd2UgYXJlbid0IHNtYWxsZXIgdGhhbiBvdXIgbWluIHByZWZlcnJlZCB3aWR0
aC4KLSAgICBzZXRMb2dpY2FsV2lkdGgobWF4PGludD4obG9naWNhbFdpZHRoKCksIG1pblByZWZl
cnJlZExvZ2ljYWxXaWR0aCgpKSk7CisgICAgc2V0TG9naWNhbFdpZHRoKHN0ZDo6bWF4PGludD4o
bG9naWNhbFdpZHRoKCksIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKSk7CiAKICAgICAKICAg
ICAvLyBFbnN1cmUgd2UgYXJlbid0IGJpZ2dlciB0aGFuIG91ciBtYXgtd2lkdGggc3R5bGUuCiAg
ICAgTGVuZ3RoIHN0eWxlTWF4TG9naWNhbFdpZHRoID0gc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgo
KTsKICAgICBpZiAoKHN0eWxlTWF4TG9naWNhbFdpZHRoLmlzU3BlY2lmaWVkKCkgJiYgIXN0eWxl
TWF4TG9naWNhbFdpZHRoLmlzTmVnYXRpdmUoKSkgfHwgc3R5bGVNYXhMb2dpY2FsV2lkdGguaXNJ
bnRyaW5zaWMoKSkgewogICAgICAgICBMYXlvdXRVbml0IGNvbXB1dGVkTWF4TG9naWNhbFdpZHRo
ID0gY29udmVydFN0eWxlTG9naWNhbFdpZHRoVG9Db21wdXRlZFdpZHRoKHN0eWxlTWF4TG9naWNh
bFdpZHRoLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwotICAgICAgICBzZXRMb2dpY2FsV2lkdGgo
bWluPGludD4obG9naWNhbFdpZHRoKCksIGNvbXB1dGVkTWF4TG9naWNhbFdpZHRoKSk7CisgICAg
ICAgIHNldExvZ2ljYWxXaWR0aChzdGQ6Om1pbjxpbnQ+KGxvZ2ljYWxXaWR0aCgpLCBjb21wdXRl
ZE1heExvZ2ljYWxXaWR0aCkpOwogICAgIH0KIAogICAgIC8vIEVuc3VyZSB3ZSBhcmVuJ3Qgc21h
bGxlciB0aGFuIG91ciBtaW4td2lkdGggc3R5bGUuCiAgICAgTGVuZ3RoIHN0eWxlTWluTG9naWNh
bFdpZHRoID0gc3R5bGUoKS5sb2dpY2FsTWluV2lkdGgoKTsKICAgICBpZiAoKHN0eWxlTWluTG9n
aWNhbFdpZHRoLmlzU3BlY2lmaWVkKCkgJiYgIXN0eWxlTWluTG9naWNhbFdpZHRoLmlzTmVnYXRp
dmUoKSkgfHwgc3R5bGVNaW5Mb2dpY2FsV2lkdGguaXNJbnRyaW5zaWMoKSkgewogICAgICAgICBM
YXlvdXRVbml0IGNvbXB1dGVkTWluTG9naWNhbFdpZHRoID0gY29udmVydFN0eWxlTG9naWNhbFdp
ZHRoVG9Db21wdXRlZFdpZHRoKHN0eWxlTWluTG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dpY2Fs
V2lkdGgpOwotICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWF4PGludD4obG9naWNhbFdpZHRoKCks
IGNvbXB1dGVkTWluTG9naWNhbFdpZHRoKSk7CisgICAgICAgIHNldExvZ2ljYWxXaWR0aChzdGQ6
Om1heDxpbnQ+KGxvZ2ljYWxXaWR0aCgpLCBjb21wdXRlZE1pbkxvZ2ljYWxXaWR0aCkpOwogICAg
IH0KIAogICAgIC8vIEZpbmFsbHksIHdpdGggb3VyIHRydWUgd2lkdGggZGV0ZXJtaW5lZCwgY29t
cHV0ZSBvdXIgbWFyZ2lucyBmb3IgcmVhbC4KQEAgLTM2Niw3ICszNjQsNyBAQCBMYXlvdXRVbml0
IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodChj
b25zdCBMZW5ndGgmCiAgICAgICAgIGNvbXB1dGVkTG9naWNhbEhlaWdodCA9IG1pbmltdW1WYWx1
ZUZvckxlbmd0aChzdHlsZUxvZ2ljYWxIZWlnaHQsIDApOwogICAgIGVsc2UKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG1heDxMYXlvdXRVbml0PigwLCBjb21wdXRl
ZExvZ2ljYWxIZWlnaHQpOworICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBjb21w
dXRlZExvZ2ljYWxIZWlnaHQpOwogfQogCiB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXRDYXB0aW9u
KFJlbmRlclRhYmxlQ2FwdGlvbiogY2FwdGlvbikKQEAgLTQ4Miw3ICs0ODAsNyBAQCB2b2lkIFJl
bmRlclRhYmxlOjpsYXlvdXQoKQogICAgICAgICB9CiAgICAgICAgIGlmIChsb2dpY2FsSGVpZ2h0
KCkgIT0gb2xkVGFibGVMb2dpY2FsVG9wKSB7CiAgICAgICAgICAgICBzZWN0aW9uTW92ZWQgPSB0
cnVlOwotICAgICAgICAgICAgbW92ZWRTZWN0aW9uTG9naWNhbFRvcCA9IG1pbihsb2dpY2FsSGVp
Z2h0KCksIG9sZFRhYmxlTG9naWNhbFRvcCk7CisgICAgICAgICAgICBtb3ZlZFNlY3Rpb25Mb2dp
Y2FsVG9wID0gc3RkOjptaW4obG9naWNhbEhlaWdodCgpLCBvbGRUYWJsZUxvZ2ljYWxUb3ApOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC01MDMsMTMgKzUwMSwxMyBAQCB2b2lkIFJlbmRlclRhYmxl
OjpsYXlvdXQoKQogICAgIExlbmd0aCBsb2dpY2FsTWF4SGVpZ2h0TGVuZ3RoID0gc3R5bGUoKS5s
b2dpY2FsTWF4SGVpZ2h0KCk7CiAgICAgaWYgKGxvZ2ljYWxNYXhIZWlnaHRMZW5ndGguaXNTcGVj
aWZpZWQoKSAmJiAhbG9naWNhbE1heEhlaWdodExlbmd0aC5pc05lZ2F0aXZlKCkpIHsKICAgICAg
ICAgTGF5b3V0VW5pdCBjb21wdXRlZE1heExvZ2ljYWxIZWlnaHQgPSBjb252ZXJ0U3R5bGVMb2dp
Y2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodChsb2dpY2FsTWF4SGVpZ2h0TGVuZ3RoKTsKLSAgICAg
ICAgY29tcHV0ZWRMb2dpY2FsSGVpZ2h0ID0gbWluKGNvbXB1dGVkTG9naWNhbEhlaWdodCwgY29t
cHV0ZWRNYXhMb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgY29tcHV0ZWRMb2dpY2FsSGVpZ2h0ID0g
c3RkOjptaW4oY29tcHV0ZWRMb2dpY2FsSGVpZ2h0LCBjb21wdXRlZE1heExvZ2ljYWxIZWlnaHQp
OwogICAgIH0KIAogICAgIExlbmd0aCBsb2dpY2FsTWluSGVpZ2h0TGVuZ3RoID0gc3R5bGUoKS5s
b2dpY2FsTWluSGVpZ2h0KCk7CiAgICAgaWYgKGxvZ2ljYWxNaW5IZWlnaHRMZW5ndGguaXNTcGVj
aWZpZWQoKSAmJiAhbG9naWNhbE1pbkhlaWdodExlbmd0aC5pc05lZ2F0aXZlKCkpIHsKICAgICAg
ICAgTGF5b3V0VW5pdCBjb21wdXRlZE1pbkxvZ2ljYWxIZWlnaHQgPSBjb252ZXJ0U3R5bGVMb2dp
Y2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodChsb2dpY2FsTWluSGVpZ2h0TGVuZ3RoKTsKLSAgICAg
ICAgY29tcHV0ZWRMb2dpY2FsSGVpZ2h0ID0gbWF4KGNvbXB1dGVkTG9naWNhbEhlaWdodCwgY29t
cHV0ZWRNaW5Mb2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgY29tcHV0ZWRMb2dpY2FsSGVpZ2h0ID0g
c3RkOjptYXgoY29tcHV0ZWRMb2dpY2FsSGVpZ2h0LCBjb21wdXRlZE1pbkxvZ2ljYWxIZWlnaHQp
OwogICAgIH0KIAogICAgIGRpc3RyaWJ1dGVFeHRyYUxvZ2ljYWxIZWlnaHQoZmxvb3JUb0ludChj
b21wdXRlZExvZ2ljYWxIZWlnaHQgLSB0b3RhbFNlY3Rpb25Mb2dpY2FsSGVpZ2h0KSk7CkBAIC01
MzIsNyArNTMwLDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0KCkKICAgICB3aGlsZSAoc2Vj
dGlvbikgewogICAgICAgICBpZiAoIXNlY3Rpb25Nb3ZlZCAmJiBzZWN0aW9uLT5sb2dpY2FsVG9w
KCkgIT0gbG9naWNhbEhlaWdodCgpKSB7CiAgICAgICAgICAgICBzZWN0aW9uTW92ZWQgPSB0cnVl
OwotICAgICAgICAgICAgbW92ZWRTZWN0aW9uTG9naWNhbFRvcCA9IG1pbihsb2dpY2FsSGVpZ2h0
KCksIHNlY3Rpb24tPmxvZ2ljYWxUb3AoKSkgKyAoc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gc2VjdGlvbi0+dmlzdWFsT3ZlcmZsb3dSZWN0KCkueSgpIDogc2VjdGlvbi0+dmlz
dWFsT3ZlcmZsb3dSZWN0KCkueCgpKTsKKyAgICAgICAgICAgIG1vdmVkU2VjdGlvbkxvZ2ljYWxU
b3AgPSBzdGQ6Om1pbihsb2dpY2FsSGVpZ2h0KCksIHNlY3Rpb24tPmxvZ2ljYWxUb3AoKSkgKyAo
c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gc2VjdGlvbi0+dmlzdWFsT3ZlcmZs
b3dSZWN0KCkueSgpIDogc2VjdGlvbi0+dmlzdWFsT3ZlcmZsb3dSZWN0KCkueCgpKTsKICAgICAg
ICAgfQogICAgICAgICBzZWN0aW9uLT5zZXRMb2dpY2FsTG9jYXRpb24oTGF5b3V0UG9pbnQoc2Vj
dGlvbkxvZ2ljYWxMZWZ0LCBsb2dpY2FsSGVpZ2h0KCkpKTsKIApAQCAtNzczLDcgKzc3MSw3IEBA
IHZvaWQgUmVuZGVyVGFibGU6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICBt
X3RhYmxlTGF5b3V0LT5hcHBseVByZWZlcnJlZExvZ2ljYWxXaWR0aFF1aXJrcyhtX21pblByZWZl
cnJlZExvZ2ljYWxXaWR0aCwgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgpOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FwdGlvbnMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG1f
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4KG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
LCBtX2NhcHRpb25zW2ldLT5taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIG1f
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gc3RkOjptYXgobV9taW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGgsIG1fY2FwdGlvbnNbaV0tPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKTsKIAogICAg
IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgcHJvYmFibHkgYmUgY2hlY2tpbmcgZm9yIGlzU3BlY2lmaWVkIHNpbmNlIHlvdSBzaG91
bGQgYmUgYWJsZSB0byB1c2UgcGVyY2VudGFnZSwgY2FsYyBvciB2aWV3cG9ydCByZWxhdGl2ZSB2
YWx1ZXMgZm9yIG1pbi13aWR0aC4KQEAgLTk4NCw3ICs5ODIsNyBAQCBpbnQgUmVuZGVyVGFibGU6
OmNhbGNCb3JkZXJTdGFydCgpIGNvbnN0CiAgICAgICAgIGlmIChjb2x1bW5BZGpvaW5pbmdCb3Jk
ZXIuc3R5bGUoKSA9PSBCSElEREVOKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlm
IChjb2x1bW5BZGpvaW5pbmdCb3JkZXIuc3R5bGUoKSA+IEJISURERU4pCi0gICAgICAgICAgICBi
b3JkZXJXaWR0aCA9IG1heChib3JkZXJXaWR0aCwgY29sdW1uQWRqb2luaW5nQm9yZGVyLndpZHRo
KCkpOworICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBzdGQ6Om1heChib3JkZXJXaWR0aCwgY29s
dW1uQWRqb2luaW5nQm9yZGVyLndpZHRoKCkpOwogICAgICAgICAvLyBGSVhNRTogVGhpcyBsb2dp
YyBkb2Vzbid0IHByb3Blcmx5IGFjY291bnQgZm9yIHRoZSBmaXJzdCBjb2x1bW4gaW4gdGhlIGZp
cnN0IGNvbHVtbi1ncm91cCBjYXNlLgogICAgIH0KIApAQCAtOTk0LDcgKzk5Miw3IEBAIGludCBS
ZW5kZXJUYWJsZTo6Y2FsY0JvcmRlclN0YXJ0KCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiAw
OwogCiAgICAgICAgIGlmIChzZWN0aW9uQWRqb2luaW5nQm9yZGVyLnN0eWxlKCkgPiBCSElEREVO
KQotICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBtYXgoYm9yZGVyV2lkdGgsIHNlY3Rpb25BZGpv
aW5pbmdCb3JkZXIud2lkdGgoKSk7CisgICAgICAgICAgICBib3JkZXJXaWR0aCA9IHN0ZDo6bWF4
KGJvcmRlcldpZHRoLCBzZWN0aW9uQWRqb2luaW5nQm9yZGVyLndpZHRoKCkpOwogCiAgICAgICAg
IGlmIChjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGFkam9pbmluZ1N0YXJ0Q2VsbCA9IHRvcE5vbkVt
cHR5U2VjdGlvbi0+Zmlyc3RSb3dDZWxsQWRqb2luaW5nVGFibGVTdGFydCgpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgd2l0aCBwZXJwZW5kaWN1bGFyIGFuZCBmbGlw
cGVkIGNlbGxzLgpAQCAtMTAwNyw5ICsxMDA1LDkgQEAgaW50IFJlbmRlclRhYmxlOjpjYWxjQm9y
ZGVyU3RhcnQoKSBjb25zdAogICAgICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgICAg
ICBpZiAoc3RhcnRDZWxsQWRqb2luaW5nQm9yZGVyLnN0eWxlKCkgPiBCSElEREVOKQotICAgICAg
ICAgICAgICAgIGJvcmRlcldpZHRoID0gbWF4KGJvcmRlcldpZHRoLCBzdGFydENlbGxBZGpvaW5p
bmdCb3JkZXIud2lkdGgoKSk7CisgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGggPSBzdGQ6Om1h
eChib3JkZXJXaWR0aCwgc3RhcnRDZWxsQWRqb2luaW5nQm9yZGVyLndpZHRoKCkpOwogICAgICAg
ICAgICAgaWYgKGZpcnN0Um93QWRqb2luaW5nQm9yZGVyLnN0eWxlKCkgPiBCSElEREVOKQotICAg
ICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gbWF4KGJvcmRlcldpZHRoLCBmaXJzdFJvd0Fkam9p
bmluZ0JvcmRlci53aWR0aCgpKTsKKyAgICAgICAgICAgICAgICBib3JkZXJXaWR0aCA9IHN0ZDo6
bWF4KGJvcmRlcldpZHRoLCBmaXJzdFJvd0Fkam9pbmluZ0JvcmRlci53aWR0aCgpKTsKICAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4gKGJvcmRlcldpZHRoICsgKHN0eWxlKCkuaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpID8gMCA6IDEpKSAvIDI7CkBAIC0xMDM5LDcgKzEwMzcsNyBAQCBpbnQg
UmVuZGVyVGFibGU6OmNhbGNCb3JkZXJFbmQoKSBjb25zdAogICAgICAgICBpZiAoY29sdW1uQWRq
b2luaW5nQm9yZGVyLnN0eWxlKCkgPT0gQkhJRERFTikKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICBpZiAoY29sdW1uQWRqb2luaW5nQm9yZGVyLnN0eWxlKCkgPiBCSElEREVOKQotICAg
ICAgICAgICAgYm9yZGVyV2lkdGggPSBtYXgoYm9yZGVyV2lkdGgsIGNvbHVtbkFkam9pbmluZ0Jv
cmRlci53aWR0aCgpKTsKKyAgICAgICAgICAgIGJvcmRlcldpZHRoID0gc3RkOjptYXgoYm9yZGVy
V2lkdGgsIGNvbHVtbkFkam9pbmluZ0JvcmRlci53aWR0aCgpKTsKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgbG9naWMgZG9lc24ndCBwcm9wZXJseSBhY2NvdW50IGZvciB0aGUgbGFzdCBjb2x1bW4g
aW4gdGhlIGxhc3QgY29sdW1uLWdyb3VwIGNhc2UuCiAgICAgfQogCkBAIC0xMDQ5LDcgKzEwNDcs
NyBAQCBpbnQgUmVuZGVyVGFibGU6OmNhbGNCb3JkZXJFbmQoKSBjb25zdAogICAgICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICAgICAgaWYgKHNlY3Rpb25BZGpvaW5pbmdCb3JkZXIuc3R5bGUoKSA+
IEJISURERU4pCi0gICAgICAgICAgICBib3JkZXJXaWR0aCA9IG1heChib3JkZXJXaWR0aCwgc2Vj
dGlvbkFkam9pbmluZ0JvcmRlci53aWR0aCgpKTsKKyAgICAgICAgICAgIGJvcmRlcldpZHRoID0g
c3RkOjptYXgoYm9yZGVyV2lkdGgsIHNlY3Rpb25BZGpvaW5pbmdCb3JkZXIud2lkdGgoKSk7CiAK
ICAgICAgICAgaWYgKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogYWRqb2luaW5nRW5kQ2VsbCA9IHRv
cE5vbkVtcHR5U2VjdGlvbi0+Zmlyc3RSb3dDZWxsQWRqb2luaW5nVGFibGVFbmQoKSkgewogICAg
ICAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIHdpdGggcGVycGVuZGljdWxhciBhbmQg
ZmxpcHBlZCBjZWxscy4KQEAgLTEwNjIsOSArMTA2MCw5IEBAIGludCBSZW5kZXJUYWJsZTo6Y2Fs
Y0JvcmRlckVuZCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAg
ICAgIGlmIChlbmRDZWxsQWRqb2luaW5nQm9yZGVyLnN0eWxlKCkgPiBCSElEREVOKQotICAgICAg
ICAgICAgICAgIGJvcmRlcldpZHRoID0gbWF4KGJvcmRlcldpZHRoLCBlbmRDZWxsQWRqb2luaW5n
Qm9yZGVyLndpZHRoKCkpOworICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gc3RkOjptYXgo
Ym9yZGVyV2lkdGgsIGVuZENlbGxBZGpvaW5pbmdCb3JkZXIud2lkdGgoKSk7CiAgICAgICAgICAg
ICBpZiAoZmlyc3RSb3dBZGpvaW5pbmdCb3JkZXIuc3R5bGUoKSA+IEJISURERU4pCi0gICAgICAg
ICAgICAgICAgYm9yZGVyV2lkdGggPSBtYXgoYm9yZGVyV2lkdGgsIGZpcnN0Um93QWRqb2luaW5n
Qm9yZGVyLndpZHRoKCkpOworICAgICAgICAgICAgICAgIGJvcmRlcldpZHRoID0gc3RkOjptYXgo
Ym9yZGVyV2lkdGgsIGZpcnN0Um93QWRqb2luaW5nQm9yZGVyLndpZHRoKCkpOwogICAgICAgICB9
CiAgICAgfQogICAgIHJldHVybiAoYm9yZGVyV2lkdGggKyAoc3R5bGUoKS5pc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkgPyAxIDogMCkpIC8gMjsKQEAgLTExMDksNyArMTEwNyw3IEBAIGludCBSZW5k
ZXJUYWJsZTo6b3V0ZXJCb3JkZXJCZWZvcmUoKSBjb25zdAogICAgIGlmICh0Yi5zdHlsZSgpID09
IEJISURERU4pCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICh0Yi5zdHlsZSgpID4gQkhJRERF
TikKLSAgICAgICAgYm9yZGVyV2lkdGggPSBtYXg8aW50Pihib3JkZXJXaWR0aCwgdGIud2lkdGgo
KSAvIDIpOworICAgICAgICBib3JkZXJXaWR0aCA9IHN0ZDo6bWF4PGludD4oYm9yZGVyV2lkdGgs
IHRiLndpZHRoKCkgLyAyKTsKICAgICByZXR1cm4gYm9yZGVyV2lkdGg7CiB9CiAKQEAgLTExMjgs
NyArMTEyNiw3IEBAIGludCBSZW5kZXJUYWJsZTo6b3V0ZXJCb3JkZXJBZnRlcigpIGNvbnN0CiAg
ICAgaWYgKHRiLnN0eWxlKCkgPT0gQkhJRERFTikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYg
KHRiLnN0eWxlKCkgPiBCSElEREVOKQotICAgICAgICBib3JkZXJXaWR0aCA9IG1heDxpbnQ+KGJv
cmRlcldpZHRoLCAodGIud2lkdGgoKSArIDEpIC8gMik7CisgICAgICAgIGJvcmRlcldpZHRoID0g
c3RkOjptYXg8aW50Pihib3JkZXJXaWR0aCwgKHRiLndpZHRoKCkgKyAxKSAvIDIpOwogICAgIHJl
dHVybiBib3JkZXJXaWR0aDsKIH0KIApAQCAtMTE1MSw3ICsxMTQ5LDcgQEAgaW50IFJlbmRlclRh
YmxlOjpvdXRlckJvcmRlclN0YXJ0KCkgY29uc3QKICAgICAgICAgaWYgKHN3IDwgMCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhbGxIaWRkZW4gPSBmYWxzZTsKLSAgICAgICAgYm9y
ZGVyV2lkdGggPSBtYXgoYm9yZGVyV2lkdGgsIHN3KTsKKyAgICAgICAgYm9yZGVyV2lkdGggPSBz
dGQ6Om1heChib3JkZXJXaWR0aCwgc3cpOwogICAgIH0KICAgICBpZiAoYWxsSGlkZGVuKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTExNzgsNyArMTE3Niw3IEBAIGludCBSZW5kZXJUYWJsZTo6b3V0
ZXJCb3JkZXJFbmQoKSBjb25zdAogICAgICAgICBpZiAoc3cgPCAwKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGFsbEhpZGRlbiA9IGZhbHNlOwotICAgICAgICBib3JkZXJXaWR0aCA9
IG1heChib3JkZXJXaWR0aCwgc3cpOworICAgICAgICBib3JkZXJXaWR0aCA9IHN0ZDo6bWF4KGJv
cmRlcldpZHRoLCBzdyk7CiAgICAgfQogICAgIGlmIChhbGxIaWRkZW4pCiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRl
eCAzYTkwNDUzMzdmYjVjZWUyOTcyZWZlNmYwNjFiNWI0NzkwMDU0OTIyLi4yZjA5NzI0OTVkYmU4
Y2I2NjM1ODYxZWEwOGYzOWM3ZGVjZGVmYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtNDIsOCArNDIsNiBAQAogI2luY2x1ZGUgIk1hdGhN
TE5hbWVzLmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtOTEsMTAgKzg5LDEwIEBA
IHVuc2lnbmVkIFJlbmRlclRhYmxlQ2VsbDo6cGFyc2VDb2xTcGFuRnJvbURPTSgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7CiAgICAgaWYgKGVsZW1lbnQoKS0+aGFzVGFnTmFtZSh0
ZFRhZykgfHwgZWxlbWVudCgpLT5oYXNUYWdOYW1lKHRoVGFnKSkKLSAgICAgICAgcmV0dXJuIG1p
bjx1bnNpZ25lZD4odG9IVE1MVGFibGVDZWxsRWxlbWVudChlbGVtZW50KCkpLT5jb2xTcGFuKCks
IG1heENvbHVtbkluZGV4KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPih0b0hU
TUxUYWJsZUNlbGxFbGVtZW50KGVsZW1lbnQoKSktPmNvbFNwYW4oKSwgbWF4Q29sdW1uSW5kZXgp
OwogI2lmIEVOQUJMRShNQVRITUwpCiAgICAgaWYgKGVsZW1lbnQoKS0+aGFzVGFnTmFtZShNYXRo
TUxOYW1lczo6bXRkVGFnKSkKLSAgICAgICAgcmV0dXJuIG1pbjx1bnNpZ25lZD4odG9NYXRoTUxF
bGVtZW50KGVsZW1lbnQoKSktPmNvbFNwYW4oKSwgbWF4Q29sdW1uSW5kZXgpOworICAgICAgICBy
ZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KHRvTWF0aE1MRWxlbWVudChlbGVtZW50KCkpLT5jb2xT
cGFuKCksIG1heENvbHVtbkluZGV4KTsKICNlbmRpZgogICAgIHJldHVybiAxOwogfQpAQCAtMTAz
LDEwICsxMDEsMTAgQEAgdW5zaWduZWQgUmVuZGVyVGFibGVDZWxsOjpwYXJzZVJvd1NwYW5Gcm9t
RE9NKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKICAgICBpZiAoZWxlbWVudCgp
LT5oYXNUYWdOYW1lKHRkVGFnKSB8fCBlbGVtZW50KCktPmhhc1RhZ05hbWUodGhUYWcpKQotICAg
ICAgICByZXR1cm4gbWluPHVuc2lnbmVkPih0b0hUTUxUYWJsZUNlbGxFbGVtZW50KGVsZW1lbnQo
KSktPnJvd1NwYW4oKSwgbWF4Um93SW5kZXgpOworICAgICAgICByZXR1cm4gc3RkOjptaW48dW5z
aWduZWQ+KHRvSFRNTFRhYmxlQ2VsbEVsZW1lbnQoZWxlbWVudCgpKS0+cm93U3BhbigpLCBtYXhS
b3dJbmRleCk7CiAjaWYgRU5BQkxFKE1BVEhNTCkKICAgICBpZiAoZWxlbWVudCgpLT5oYXNUYWdO
YW1lKE1hdGhNTE5hbWVzOjptdGRUYWcpKQotICAgICAgICByZXR1cm4gbWluPHVuc2lnbmVkPih0
b01hdGhNTEVsZW1lbnQoZWxlbWVudCgpKS0+cm93U3BhbigpLCBtYXhSb3dJbmRleCk7CisgICAg
ICAgIHJldHVybiBzdGQ6Om1pbjx1bnNpZ25lZD4odG9NYXRoTUxFbGVtZW50KGVsZW1lbnQoKSkt
PnJvd1NwYW4oKSwgbWF4Um93SW5kZXgpOwogI2VuZGlmCiAgICAgcmV0dXJuIDE7CiB9CkBAIC0x
NjUsNyArMTYzLDcgQEAgTGVuZ3RoIFJlbmRlclRhYmxlQ2VsbDo6bG9naWNhbFdpZHRoRnJvbUNv
bHVtbnMoUmVuZGVyVGFibGVDb2wqIGZpcnN0Q29sRm9yVGhpc0MKICAgICAvLyBDb2x1bW4gd2lk
dGhzIHNwZWNpZmllZCBvbiA8Y29sPiBhcHBseSB0byB0aGUgYm9yZGVyIGJveCBvZiB0aGUgY2Vs
bCwgc2VlIGJ1ZyA4MTI2LgogICAgIC8vIEZJWE1FOiBXaHkgaXMgYm9yZGVyL3BhZGRpbmcgaWdu
b3JlZCBpbiB0aGUgbmVnYXRpdmUgd2lkdGggY2FzZT8KICAgICBpZiAoY29sV2lkdGhTdW0gPiAw
KQotICAgICAgICByZXR1cm4gTGVuZ3RoKG1heCgwLCBjb2xXaWR0aFN1bSAtIGJvcmRlckFuZFBh
ZGRpbmdMb2dpY2FsV2lkdGgoKS5jZWlsKCkpLCBGaXhlZCk7CisgICAgICAgIHJldHVybiBMZW5n
dGgoc3RkOjptYXgoMCwgY29sV2lkdGhTdW0gLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRo
KCkuY2VpbCgpKSwgRml4ZWQpOwogICAgIHJldHVybiBMZW5ndGgoY29sV2lkdGhTdW0sIEZpeGVk
KTsKIH0KIApAQCAtMTg3LDcgKzE4NSw3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgICAgICAgICAvLyB0byBtYWtlIHRoZSBtaW53
aWR0aCBvZiB0aGUgY2VsbCBpbnRvIHRoZSBmaXhlZCB3aWR0aC4gIFRoZXkgZG8gdGhpcwogICAg
ICAgICAgICAgLy8gZXZlbiBpbiBzdHJpY3QgbW9kZSwgc28gZG8gbm90IG1ha2UgdGhpcyBhIHF1
aXJrLiAgQWZmZWN0ZWQgdGhlIHRvcAogICAgICAgICAgICAgLy8gb2YgaGlwdG9wLmNvbS4KLSAg
ICAgICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4PExheW91dFVuaXQ+KHcu
dmFsdWUoKSwgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgpOworICAgICAgICAgICAgbV9taW5Q
cmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heDxMYXlvdXRVbml0Pih3LnZhbHVlKCksIG1f
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKTsKICAgICB9CiB9CiAKQEAgLTI2NCw3ICsyNjIsNyBA
QCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6bGF5b3V0KCkKICAgICAvLyBvZiB0aGVtIHdyb25nLiBT
byBpZiBvdXIgY29udGVudCdzIGludHJpbnNpYyBoZWlnaHQgaGFzIGNoYW5nZWQgcHVzaCB0aGUg
bmV3IGNvbnRlbnQgdXAgaW50byB0aGUgaW50cmluc2ljIHBhZGRpbmcgYW5kIHJlbGF5b3V0IHNv
IHRoYXQgdGhlIHJlc3Qgb2YKICAgICAvLyB0YWJsZSBhbmQgcm93IGxheW91dCBjYW4gdXNlIHRo
ZSBjb3JyZWN0IGJhc2VsaW5lIGFuZCBoZWlnaHQgZm9yIHRoaXMgY2VsbC4KICAgICBpZiAoaXNC
YXNlbGluZUFsaWduZWQoKSAmJiBzZWN0aW9uKCktPnJvd0Jhc2VsaW5lKHJvd0luZGV4KCkpICYm
IGNlbGxCYXNlbGluZVBvc2l0aW9uKCkgPiBzZWN0aW9uKCktPnJvd0Jhc2VsaW5lKHJvd0luZGV4
KCkpKSB7Ci0gICAgICAgIGludCBuZXdJbnRyaW5zaWNQYWRkaW5nQmVmb3JlID0gbWF4PExheW91
dFVuaXQ+KDAsIGludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSAtIG1heDxMYXlvdXRVbml0PigwLCBj
ZWxsQmFzZWxpbmVQb3NpdGlvbigpIC0gb2xkQ2VsbEJhc2VsaW5lKSk7CisgICAgICAgIGludCBu
ZXdJbnRyaW5zaWNQYWRkaW5nQmVmb3JlID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgaW50cmlu
c2ljUGFkZGluZ0JlZm9yZSgpIC0gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgY2VsbEJhc2VsaW5l
UG9zaXRpb24oKSAtIG9sZENlbGxCYXNlbGluZSkpOwogICAgICAgICBzZXRJbnRyaW5zaWNQYWRk
aW5nQmVmb3JlKG5ld0ludHJpbnNpY1BhZGRpbmdCZWZvcmUpOwogICAgICAgICBzZXROZWVkc0xh
eW91dChNYXJrT25seVRoaXMpOwogICAgICAgICBsYXlvdXRCbG9jayhjZWxsV2lkdGhDaGFuZ2Vk
KCkpOwpAQCAtMzE4LDcgKzMxNiw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpwYWRk
aW5nQWZ0ZXIoKSBjb25zdAogdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnNldE92ZXJyaWRlTG9naWNh
bENvbnRlbnRIZWlnaHRGcm9tUm93SGVpZ2h0KExheW91dFVuaXQgcm93SGVpZ2h0KQogewogICAg
IGNsZWFySW50cmluc2ljUGFkZGluZygpOwotICAgIHNldE92ZXJyaWRlTG9naWNhbENvbnRlbnRI
ZWlnaHQobWF4PExheW91dFVuaXQ+KDAsIHJvd0hlaWdodCAtIGJvcmRlckFuZFBhZGRpbmdMb2dp
Y2FsSGVpZ2h0KCkpKTsKKyAgICBzZXRPdmVycmlkZUxvZ2ljYWxDb250ZW50SGVpZ2h0KHN0ZDo6
bWF4PExheW91dFVuaXQ+KDAsIHJvd0hlaWdodCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVp
Z2h0KCkpKTsKIH0KIAogTGF5b3V0U2l6ZSBSZW5kZXJUYWJsZUNlbGw6Om9mZnNldEZyb21Db250
YWluZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wqIG9m
ZnNldERlcGVuZHNPblBvaW50KSBjb25zdApAQCAtMzQzLDM2ICszNDEsMzYgQEAgTGF5b3V0UmVj
dCBSZW5kZXJUYWJsZUNlbGw6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJl
bmRlckxheWVyTW9kZWwKIAogICAgIGJvb2wgcnRsID0gIXN0eWxlRm9yQ2VsbEZsb3coKS5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgaW50IG91dGxpbmVTaXplID0gc3R5bGUoKS5vdXRs
aW5lU2l6ZSgpOwotICAgIGludCBsZWZ0ID0gbWF4KGJvcmRlckhhbGZMZWZ0KHRydWUpLCBvdXRs
aW5lU2l6ZSk7Ci0gICAgaW50IHJpZ2h0ID0gbWF4KGJvcmRlckhhbGZSaWdodCh0cnVlKSwgb3V0
bGluZVNpemUpOwotICAgIGludCB0b3AgPSBtYXgoYm9yZGVySGFsZlRvcCh0cnVlKSwgb3V0bGlu
ZVNpemUpOwotICAgIGludCBib3R0b20gPSBtYXgoYm9yZGVySGFsZkJvdHRvbSh0cnVlKSwgb3V0
bGluZVNpemUpOworICAgIGludCBsZWZ0ID0gc3RkOjptYXgoYm9yZGVySGFsZkxlZnQodHJ1ZSks
IG91dGxpbmVTaXplKTsKKyAgICBpbnQgcmlnaHQgPSBzdGQ6Om1heChib3JkZXJIYWxmUmlnaHQo
dHJ1ZSksIG91dGxpbmVTaXplKTsKKyAgICBpbnQgdG9wID0gc3RkOjptYXgoYm9yZGVySGFsZlRv
cCh0cnVlKSwgb3V0bGluZVNpemUpOworICAgIGludCBib3R0b20gPSBzdGQ6Om1heChib3JkZXJI
YWxmQm90dG9tKHRydWUpLCBvdXRsaW5lU2l6ZSk7CiAgICAgaWYgKChsZWZ0ICYmICFydGwpIHx8
IChyaWdodCAmJiBydGwpKSB7CiAgICAgICAgIGlmIChSZW5kZXJUYWJsZUNlbGwqIGJlZm9yZSA9
IHRhYmxlKCktPmNlbGxCZWZvcmUodGhpcykpIHsKLSAgICAgICAgICAgIHRvcCA9IG1heCh0b3As
IGJlZm9yZS0+Ym9yZGVySGFsZlRvcCh0cnVlKSk7Ci0gICAgICAgICAgICBib3R0b20gPSBtYXgo
Ym90dG9tLCBiZWZvcmUtPmJvcmRlckhhbGZCb3R0b20odHJ1ZSkpOworICAgICAgICAgICAgdG9w
ID0gc3RkOjptYXgodG9wLCBiZWZvcmUtPmJvcmRlckhhbGZUb3AodHJ1ZSkpOworICAgICAgICAg
ICAgYm90dG9tID0gc3RkOjptYXgoYm90dG9tLCBiZWZvcmUtPmJvcmRlckhhbGZCb3R0b20odHJ1
ZSkpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICgobGVmdCAmJiBydGwpIHx8IChyaWdodCAm
JiAhcnRsKSkgewogICAgICAgICBpZiAoUmVuZGVyVGFibGVDZWxsKiBhZnRlciA9IHRhYmxlKCkt
PmNlbGxBZnRlcih0aGlzKSkgewotICAgICAgICAgICAgdG9wID0gbWF4KHRvcCwgYWZ0ZXItPmJv
cmRlckhhbGZUb3AodHJ1ZSkpOwotICAgICAgICAgICAgYm90dG9tID0gbWF4KGJvdHRvbSwgYWZ0
ZXItPmJvcmRlckhhbGZCb3R0b20odHJ1ZSkpOworICAgICAgICAgICAgdG9wID0gc3RkOjptYXgo
dG9wLCBhZnRlci0+Ym9yZGVySGFsZlRvcCh0cnVlKSk7CisgICAgICAgICAgICBib3R0b20gPSBz
dGQ6Om1heChib3R0b20sIGFmdGVyLT5ib3JkZXJIYWxmQm90dG9tKHRydWUpKTsKICAgICAgICAg
fQogICAgIH0KICAgICBpZiAodG9wKSB7CiAgICAgICAgIGlmIChSZW5kZXJUYWJsZUNlbGwqIGFi
b3ZlID0gdGFibGUoKS0+Y2VsbEFib3ZlKHRoaXMpKSB7Ci0gICAgICAgICAgICBsZWZ0ID0gbWF4
KGxlZnQsIGFib3ZlLT5ib3JkZXJIYWxmTGVmdCh0cnVlKSk7Ci0gICAgICAgICAgICByaWdodCA9
IG1heChyaWdodCwgYWJvdmUtPmJvcmRlckhhbGZSaWdodCh0cnVlKSk7CisgICAgICAgICAgICBs
ZWZ0ID0gc3RkOjptYXgobGVmdCwgYWJvdmUtPmJvcmRlckhhbGZMZWZ0KHRydWUpKTsKKyAgICAg
ICAgICAgIHJpZ2h0ID0gc3RkOjptYXgocmlnaHQsIGFib3ZlLT5ib3JkZXJIYWxmUmlnaHQodHJ1
ZSkpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChib3R0b20pIHsKICAgICAgICAgaWYgKFJl
bmRlclRhYmxlQ2VsbCogYmVsb3cgPSB0YWJsZSgpLT5jZWxsQmVsb3codGhpcykpIHsKLSAgICAg
ICAgICAgIGxlZnQgPSBtYXgobGVmdCwgYmVsb3ctPmJvcmRlckhhbGZMZWZ0KHRydWUpKTsKLSAg
ICAgICAgICAgIHJpZ2h0ID0gbWF4KHJpZ2h0LCBiZWxvdy0+Ym9yZGVySGFsZlJpZ2h0KHRydWUp
KTsKKyAgICAgICAgICAgIGxlZnQgPSBzdGQ6Om1heChsZWZ0LCBiZWxvdy0+Ym9yZGVySGFsZkxl
ZnQodHJ1ZSkpOworICAgICAgICAgICAgcmlnaHQgPSBzdGQ6Om1heChyaWdodCwgYmVsb3ctPmJv
cmRlckhhbGZSaWdodCh0cnVlKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgTGF5b3V0UG9pbnQg
bG9jYXRpb24obWF4PExheW91dFVuaXQ+KGxlZnQsIC12aXN1YWxPdmVyZmxvd1JlY3QoKS54KCkp
LCBtYXg8TGF5b3V0VW5pdD4odG9wLCAtdmlzdWFsT3ZlcmZsb3dSZWN0KCkueSgpKSk7Ci0gICAg
TGF5b3V0UmVjdCByKC1sb2NhdGlvbi54KCksIC1sb2NhdGlvbi55KCksIGxvY2F0aW9uLngoKSAr
IG1heCh3aWR0aCgpICsgcmlnaHQsIHZpc3VhbE92ZXJmbG93UmVjdCgpLm1heFgoKSksIGxvY2F0
aW9uLnkoKSArIG1heChoZWlnaHQoKSArIGJvdHRvbSwgdmlzdWFsT3ZlcmZsb3dSZWN0KCkubWF4
WSgpKSk7CisgICAgTGF5b3V0UG9pbnQgbG9jYXRpb24oc3RkOjptYXg8TGF5b3V0VW5pdD4obGVm
dCwgLXZpc3VhbE92ZXJmbG93UmVjdCgpLngoKSksIHN0ZDo6bWF4PExheW91dFVuaXQ+KHRvcCwg
LXZpc3VhbE92ZXJmbG93UmVjdCgpLnkoKSkpOworICAgIExheW91dFJlY3QgcigtbG9jYXRpb24u
eCgpLCAtbG9jYXRpb24ueSgpLCBsb2NhdGlvbi54KCkgKyBzdGQ6Om1heCh3aWR0aCgpICsgcmln
aHQsIHZpc3VhbE92ZXJmbG93UmVjdCgpLm1heFgoKSksIGxvY2F0aW9uLnkoKSArIHN0ZDo6bWF4
KGhlaWdodCgpICsgYm90dG9tLCB2aXN1YWxPdmVyZmxvd1JlY3QoKS5tYXhZKCkpKTsKIAogICAg
IC8vIEZJWE1FOiBsYXlvdXREZWx0YSBuZWVkcyB0byBiZSBhcHBsaWVkIGluIHBhcnRzIGJlZm9y
ZS9hZnRlciB0cmFuc2Zvcm1zIGFuZAogICAgIC8vIHJlcGFpbnQgY29udGFpbmVycy4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzA4CkBAIC0xMTQzLDggKzExNDEs
OCBAQCBib29sIFJlbmRlclRhYmxlQ2VsbDo6YWxpZ25MZWZ0UmlnaHRCb3JkZXJQYWludFJlY3Qo
aW50JiBsZWZ0WE9mZnNldCwgaW50JiByaWdodAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZUZvclRvcENlbGwgPSBzdHlsZUZvckNlbGxGbG93KCk7CiAgICAgaW50IGxlZnQgPSBjYWNoZWRD
b2xsYXBzZWRMZWZ0Qm9yZGVyKCZzdHlsZUZvclRvcENlbGwpLndpZHRoKCk7CiAgICAgaW50IHJp
Z2h0ID0gY2FjaGVkQ29sbGFwc2VkUmlnaHRCb3JkZXIoJnN0eWxlRm9yVG9wQ2VsbCkud2lkdGgo
KTsKLSAgICBsZWZ0WE9mZnNldCA9IG1heDxpbnQ+KGxlZnRYT2Zmc2V0LCBsZWZ0KTsKLSAgICBy
aWdodFhPZmZzZXQgPSBtYXg8aW50PihyaWdodFhPZmZzZXQsIHJpZ2h0KTsKKyAgICBsZWZ0WE9m
ZnNldCA9IHN0ZDo6bWF4PGludD4obGVmdFhPZmZzZXQsIGxlZnQpOworICAgIHJpZ2h0WE9mZnNl
dCA9IHN0ZDo6bWF4PGludD4ocmlnaHRYT2Zmc2V0LCByaWdodCk7CiAgICAgaWYgKGNvbFNwYW4o
KSA+IDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNTUs
OCArMTE1Myw4IEBAIGJvb2wgUmVuZGVyVGFibGVDZWxsOjphbGlnblRvcEJvdHRvbUJvcmRlclBh
aW50UmVjdChpbnQmIHRvcFlPZmZzZXQsIGludCYgYm90dG9tCiAgICAgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlRm9yQm90dG9tQ2VsbCA9IHN0eWxlRm9yQ2VsbEZsb3coKTsKICAgICBpbnQgdG9w
ID0gY2FjaGVkQ29sbGFwc2VkVG9wQm9yZGVyKCZzdHlsZUZvckJvdHRvbUNlbGwpLndpZHRoKCk7
CiAgICAgaW50IGJvdHRvbSA9IGNhY2hlZENvbGxhcHNlZEJvdHRvbUJvcmRlcigmc3R5bGVGb3JC
b3R0b21DZWxsKS53aWR0aCgpOwotICAgIHRvcFlPZmZzZXQgPSBtYXg8aW50Pih0b3BZT2Zmc2V0
LCB0b3ApOwotICAgIGJvdHRvbVlPZmZzZXQgPSBtYXg8aW50Pihib3R0b21ZT2Zmc2V0LCBib3R0
b20pOworICAgIHRvcFlPZmZzZXQgPSBzdGQ6Om1heDxpbnQ+KHRvcFlPZmZzZXQsIHRvcCk7Cisg
ICAgYm90dG9tWU9mZnNldCA9IHN0ZDo6bWF4PGludD4oYm90dG9tWU9mZnNldCwgYm90dG9tKTsK
ICAgICBpZiAocm93U3BhbigpID4gMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcAppbmRleCBhMTA1NWE2OGM2ODE3OWJhMjkzNjdjODI5NGI5MWZhMmM0NmRhMDE4Li4wYWQ0
NjZjNGM2NTUwMDMwYmI0MzFjNjY4NzY1MTkyNGQ3YjRmZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtMzgsOCArMzgsNiBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KIAot
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwpAQCAtMjA0LDcgKzIwMiw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0
aW9uOjplbnN1cmVSb3dzKHVuc2lnbmVkIG51bVJvd3MpCiAgICAgdW5zaWduZWQgb2xkU2l6ZSA9
IG1fZ3JpZC5zaXplKCk7CiAgICAgbV9ncmlkLmdyb3cobnVtUm93cyk7CiAKLSAgICB1bnNpZ25l
ZCBlZmZlY3RpdmVDb2x1bW5Db3VudCA9IG1heCgxdSwgdGFibGUoKS0+bnVtRWZmQ29scygpKTsK
KyAgICB1bnNpZ25lZCBlZmZlY3RpdmVDb2x1bW5Db3VudCA9IHN0ZDo6bWF4KDF1LCB0YWJsZSgp
LT5udW1FZmZDb2xzKCkpOwogICAgIGZvciAodW5zaWduZWQgcm93ID0gb2xkU2l6ZTsgcm93IDwg
bV9ncmlkLnNpemUoKTsgKytyb3cpCiAgICAgICAgIG1fZ3JpZFtyb3ddLnJvdy5ncm93KGVmZmVj
dGl2ZUNvbHVtbkNvdW50KTsKIH0KQEAgLTI5Miw3ICsyOTAsNyBAQCBpbnQgUmVuZGVyVGFibGVT
ZWN0aW9uOjpjYWxjUm93TG9naWNhbEhlaWdodCgpCiAgICAgICAgIExheW91dFVuaXQgYmFzZWxp
bmVEZXNjZW50ID0gMDsKIAogICAgICAgICAvLyBPdXIgYmFzZSBzaXplIGlzIHRoZSBiaWdnZXN0
IGxvZ2ljYWwgaGVpZ2h0IGZyb20gb3VyIGNlbGxzJyBzdHlsZXMgKGV4Y2x1ZGluZyByb3cgc3Bh
bm5pbmcgY2VsbHMpLgotICAgICAgICBtX3Jvd1Bvc1tyICsgMV0gPSBtYXgobV9yb3dQb3Nbcl0g
KyBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQsIDApLnJvdW5k
KCksIDApOworICAgICAgICBtX3Jvd1Bvc1tyICsgMV0gPSBzdGQ6Om1heChtX3Jvd1Bvc1tyXSAr
IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2dyaWRbcl0ubG9naWNhbEhlaWdodCwgMCkucm91bmQo
KSwgMCk7CiAKICAgICAgICAgUm93JiByb3cgPSBtX2dyaWRbcl0ucm93OwogICAgICAgICB1bnNp
Z25lZCB0b3RhbENvbHMgPSByb3cuc2l6ZSgpOwpAQCAtMzQzLDIyICszNDEsMjIgQEAgaW50IFJl
bmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0xvZ2ljYWxIZWlnaHQoKQogICAgICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgICAgIGludCBjZWxsTG9naWNhbEhlaWdodCA9IGNlbGwtPmxvZ2lj
YWxIZWlnaHRGb3JSb3dTaXppbmcoKTsKLSAgICAgICAgICAgICAgICBtX3Jvd1Bvc1tyICsgMV0g
PSBtYXgobV9yb3dQb3NbciArIDFdLCBtX3Jvd1Bvc1tjZWxsU3RhcnRSb3ddICsgY2VsbExvZ2lj
YWxIZWlnaHQpOworICAgICAgICAgICAgICAgIG1fcm93UG9zW3IgKyAxXSA9IHN0ZDo6bWF4KG1f
cm93UG9zW3IgKyAxXSwgbV9yb3dQb3NbY2VsbFN0YXJ0Um93XSArIGNlbGxMb2dpY2FsSGVpZ2h0
KTsKIAogICAgICAgICAgICAgICAgIC8vIEZpbmQgb3V0IHRoZSBiYXNlbGluZS4gVGhlIGJhc2Vs
aW5lIGlzIHNldCBvbiB0aGUgZmlyc3Qgcm93IGluIGEgcm93c3Bhbi4KICAgICAgICAgICAgICAg
ICBpZiAoY2VsbC0+aXNCYXNlbGluZUFsaWduZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBM
YXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24gPSBjZWxsLT5jZWxsQmFzZWxpbmVQb3NpdGlvbigp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZWxpbmVQb3NpdGlvbiA+IGNlbGwtPmJvcmRl
ckFuZFBhZGRpbmdCZWZvcmUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmlkW2Nl
bGxTdGFydFJvd10uYmFzZWxpbmUgPSBtYXgobV9ncmlkW2NlbGxTdGFydFJvd10uYmFzZWxpbmUs
IGJhc2VsaW5lUG9zaXRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmlkW2NlbGxT
dGFydFJvd10uYmFzZWxpbmUgPSBzdGQ6Om1heChtX2dyaWRbY2VsbFN0YXJ0Um93XS5iYXNlbGlu
ZSwgYmFzZWxpbmVQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZGVz
Y2VudCBvZiBhIGNlbGwgdGhhdCBzcGFucyBtdWx0aXBsZSByb3dzIGRvZXMgbm90IGFmZmVjdCB0
aGUgaGVpZ2h0IG9mIHRoZSBmaXJzdCByb3cgaXQgc3BhbnMsIHNvIGRvbid0IGxldCBpdAogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gYmVjb21lIHRoZSBiYXNlbGluZSBkZXNjZW50IGFwcGxp
ZWQgdG8gdGhlIHJlc3Qgb2YgdGhlIHJvdy4gQWxzbyB3ZSBkb24ndCBhY2NvdW50IGZvciB0aGUg
YmFzZWxpbmUgZGVzY2VudCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9uLXNwYW5u
aW5nIGNlbGxzIHdoZW4gY29tcHV0aW5nIGEgc3Bhbm5pbmcgY2VsbCdzIGV4dGVudC4KICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBjZWxsU3RhcnRSb3dCYXNlbGluZURlc2NlbnQgPSAwOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwtPnJvd1NwYW4oKSA9PSAxKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVEZXNjZW50ID0gbWF4KGJhc2VsaW5lRGVz
Y2VudCwgY2VsbExvZ2ljYWxIZWlnaHQgLSAoYmFzZWxpbmVQb3NpdGlvbiAtIGNlbGwtPmludHJp
bnNpY1BhZGRpbmdCZWZvcmUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2Vs
aW5lRGVzY2VudCA9IHN0ZDo6bWF4KGJhc2VsaW5lRGVzY2VudCwgY2VsbExvZ2ljYWxIZWlnaHQg
LSAoYmFzZWxpbmVQb3NpdGlvbiAtIGNlbGwtPmludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSkpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxTdGFydFJvd0Jhc2VsaW5lRGVzY2VudCA9
IGJhc2VsaW5lRGVzY2VudDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcm93UG9zW2NlbGxTdGFydFJvdyArIDFdID0gbWF4PGludD4obV9yb3dQ
b3NbY2VsbFN0YXJ0Um93ICsgMV0sIG1fcm93UG9zW2NlbGxTdGFydFJvd10gKyBtX2dyaWRbY2Vs
bFN0YXJ0Um93XS5iYXNlbGluZSArIGNlbGxTdGFydFJvd0Jhc2VsaW5lRGVzY2VudCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBtX3Jvd1Bvc1tjZWxsU3RhcnRSb3cgKyAxXSA9IHN0ZDo6bWF4
PGludD4obV9yb3dQb3NbY2VsbFN0YXJ0Um93ICsgMV0sIG1fcm93UG9zW2NlbGxTdGFydFJvd10g
KyBtX2dyaWRbY2VsbFN0YXJ0Um93XS5iYXNlbGluZSArIGNlbGxTdGFydFJvd0Jhc2VsaW5lRGVz
Y2VudCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CkBAIC0zNjYsNyArMzY0LDcgQEAgaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jv
d0xvZ2ljYWxIZWlnaHQoKQogCiAgICAgICAgIC8vIEFkZCB0aGUgYm9yZGVyLXNwYWNpbmcgdG8g
b3VyIGZpbmFsIHBvc2l0aW9uLgogICAgICAgICBtX3Jvd1Bvc1tyICsgMV0gKz0gbV9ncmlkW3Jd
LnJvd1JlbmRlcmVyID8gc3BhY2luZyA6IDA7Ci0gICAgICAgIG1fcm93UG9zW3IgKyAxXSA9IG1h
eChtX3Jvd1Bvc1tyICsgMV0sIG1fcm93UG9zW3JdKTsKKyAgICAgICAgbV9yb3dQb3NbciArIDFd
ID0gc3RkOjptYXgobV9yb3dQb3NbciArIDFdLCBtX3Jvd1Bvc1tyXSk7CiAgICAgfQogCiAgICAg
QVNTRVJUKCFuZWVkc0xheW91dCgpKTsKQEAgLTQyOSwxNCArNDI3LDE0IEBAIHZvaWQgUmVuZGVy
VGFibGVTZWN0aW9uOjpkaXN0cmlidXRlRXh0cmFMb2dpY2FsSGVpZ2h0VG9QZXJjZW50Um93cyhp
bnQmIGV4dHJhTG9nCiAgICAgdW5zaWduZWQgdG90YWxSb3dzID0gbV9ncmlkLnNpemUoKTsKICAg
ICBpbnQgdG90YWxIZWlnaHQgPSBtX3Jvd1Bvc1t0b3RhbFJvd3NdICsgZXh0cmFMb2dpY2FsSGVp
Z2h0OwogICAgIGludCB0b3RhbExvZ2ljYWxIZWlnaHRBZGRlZCA9IDA7Ci0gICAgdG90YWxQZXJj
ZW50ID0gbWluKHRvdGFsUGVyY2VudCwgMTAwKTsKKyAgICB0b3RhbFBlcmNlbnQgPSBzdGQ6Om1p
bih0b3RhbFBlcmNlbnQsIDEwMCk7CiAgICAgaW50IHJvd0hlaWdodCA9IG1fcm93UG9zWzFdIC0g
bV9yb3dQb3NbMF07CiAgICAgZm9yICh1bnNpZ25lZCByID0gMDsgciA8IHRvdGFsUm93czsgKyty
KSB7CiAgICAgICAgIGlmICh0b3RhbFBlcmNlbnQgPiAwICYmIG1fZ3JpZFtyXS5sb2dpY2FsSGVp
Z2h0LmlzUGVyY2VudCgpKSB7Ci0gICAgICAgICAgICBpbnQgdG9BZGQgPSBtaW48aW50PihleHRy
YUxvZ2ljYWxIZWlnaHQsICh0b3RhbEhlaWdodCAqIG1fZ3JpZFtyXS5sb2dpY2FsSGVpZ2h0LnBl
cmNlbnQoKSAvIDEwMCkgLSByb3dIZWlnaHQpOworICAgICAgICAgICAgaW50IHRvQWRkID0gc3Rk
OjptaW48aW50PihleHRyYUxvZ2ljYWxIZWlnaHQsICh0b3RhbEhlaWdodCAqIG1fZ3JpZFtyXS5s
b2dpY2FsSGVpZ2h0LnBlcmNlbnQoKSAvIDEwMCkgLSByb3dIZWlnaHQpOwogICAgICAgICAgICAg
Ly8gSWYgdG9BZGQgaXMgbmVnYXRpdmUsIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBzaHJpbmsgdGhl
IHJvdyAodGhpcyBidWcKICAgICAgICAgICAgIC8vIGFmZmVjdGVkIE91dGxvb2sgV2ViIEFjY2Vz
cykuCi0gICAgICAgICAgICB0b0FkZCA9IG1heCgwLCB0b0FkZCk7CisgICAgICAgICAgICB0b0Fk
ZCA9IHN0ZDo6bWF4KDAsIHRvQWRkKTsKICAgICAgICAgICAgIHRvdGFsTG9naWNhbEhlaWdodEFk
ZGVkICs9IHRvQWRkOwogICAgICAgICAgICAgZXh0cmFMb2dpY2FsSGVpZ2h0IC09IHRvQWRkOwog
ICAgICAgICAgICAgdG90YWxQZXJjZW50IC09IG1fZ3JpZFtyXS5sb2dpY2FsSGVpZ2h0LnBlcmNl
bnQoKTsKQEAgLTYxNiw3ICs2MTQsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0
Um93cygpCiAgICAgICAgICAgICAgICAgaWYgKGNlbGwtPmlzQmFzZWxpbmVBbGlnbmVkKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBiYXNlbGluZSA9IGNlbGwtPmNlbGxCYXNl
bGluZVBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlbGluZSA+IGNlbGwt
PmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jp
ZFtyXS5iYXNlbGluZSA9IG1heChtX2dyaWRbcl0uYmFzZWxpbmUsIGJhc2VsaW5lKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JpZFtyXS5iYXNlbGluZSA9IHN0ZDo6bWF4KG1fZ3JpZFty
XS5iYXNlbGluZSwgYmFzZWxpbmUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IApAQCAtNjM3LDcgKzYzNSw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpsYXlvdXRSb3dz
KCkKICAgICAgICAgICAgICAgICAvLyBXZSdsbCBhbHNvIGRvIGEgYmFzaWMgaW5jcmVhc2Ugb2Yg
dGhlIHJvdyBoZWlnaHQgdG8gYWNjb21tb2RhdGUgdGhlIGNlbGwgaWYgaXQncyBiaWdnZXIsIGJ1
dCB0aGlzIGlzbid0IHF1aXRlIHJpZ2h0CiAgICAgICAgICAgICAgICAgLy8gZWl0aGVyLiBJdCdz
IGF0IGxlYXN0IHN0YWJsZSB0aG91Z2ggYW5kIHdvbid0IHJlc3VsdCBpbiBhbiBpbmZpbml0ZSAj
IG9mIHJlbGF5b3V0cyB0aGF0IG1heSBuZXZlciBzdGFiaWxpemUuCiAgICAgICAgICAgICAgICAg
aWYgKGNlbGwtPmxvZ2ljYWxIZWlnaHQoKSA+IHJIZWlnaHQpCi0gICAgICAgICAgICAgICAgICAg
IHJvd0hlaWdodEluY3JlYXNlRm9yUGFnaW5hdGlvbiA9IG1heDxpbnQ+KHJvd0hlaWdodEluY3Jl
YXNlRm9yUGFnaW5hdGlvbiwgY2VsbC0+bG9naWNhbEhlaWdodCgpIC0gckhlaWdodCk7CisgICAg
ICAgICAgICAgICAgICAgIHJvd0hlaWdodEluY3JlYXNlRm9yUGFnaW5hdGlvbiA9IHN0ZDo6bWF4
PGludD4ocm93SGVpZ2h0SW5jcmVhc2VGb3JQYWdpbmF0aW9uLCBjZWxsLT5sb2dpY2FsSGVpZ2h0
KCkgLSBySGVpZ2h0KTsKICAgICAgICAgICAgICAgICBjZWxsLT5zZXRMb2dpY2FsSGVpZ2h0KHJI
ZWlnaHQpOwogICAgICAgICAgICAgfQogCkBAIC05MzEsNyArOTI5LDcgQEAgaW50IFJlbmRlclRh
YmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgICAgICBjb25zdCBSZW5k
ZXJUYWJsZUNlbGwqIGNlbGwgPSBjcy5wcmltYXJ5Q2VsbCgpOwogICAgICAgICAvLyBPbmx5IGNl
bGxzIHdpdGggY29udGVudCBoYXZlIGEgYmFzZWxpbmUKICAgICAgICAgaWYgKGNlbGwgJiYgY2Vs
bC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgICAgIGZpcnN0TGluZUJhc2VsaW5l
ID0gbWF4PGludD4oZmlyc3RMaW5lQmFzZWxpbmUsIGNlbGwtPmxvZ2ljYWxUb3AoKSArIGNlbGwt
PmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkp
OworICAgICAgICAgICAgZmlyc3RMaW5lQmFzZWxpbmUgPSBzdGQ6Om1heDxpbnQ+KGZpcnN0TGlu
ZUJhc2VsaW5lLCBjZWxsLT5sb2dpY2FsVG9wKCkgKyBjZWxsLT5ib3JkZXJBbmRQYWRkaW5nQmVm
b3JlKCkgKyBjZWxsLT5jb250ZW50TG9naWNhbEhlaWdodCgpKTsKICAgICB9CiAKICAgICByZXR1
cm4gZmlyc3RMaW5lQmFzZWxpbmU7CkBAIC0xNTUwLDE5ICsxNTQ4LDE5IEBAIHZvaWQgUmVuZGVy
VGFibGVTZWN0aW9uOjpyZW1vdmVDYWNoZWRDb2xsYXBzZWRCb3JkZXJzKGNvbnN0IFJlbmRlclRh
YmxlQ2VsbCogY2VsCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBmb3IgKGludCBzaWRlID0g
Q0JTQmVmb3JlOyBzaWRlIDw9IENCU0VuZDsgKytzaWRlKQotICAgICAgICBtX2NlbGxzQ29sbGFw
c2VkQm9yZGVycy5yZW1vdmUobWFrZV9wYWlyKGNlbGwsIHNpZGUpKTsKKyAgICAgICAgbV9jZWxs
c0NvbGxhcHNlZEJvcmRlcnMucmVtb3ZlKHN0ZDo6bWFrZV9wYWlyKGNlbGwsIHNpZGUpKTsKIH0K
IAogdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnNldENhY2hlZENvbGxhcHNlZEJvcmRlcihjb25z
dCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwsIENvbGxhcHNlZEJvcmRlclNpZGUgc2lkZSwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUgYm9yZGVyKQogewogICAgIEFTU0VSVCh0YWJsZSgpLT5jb2xsYXBzZUJv
cmRlcnMoKSk7Ci0gICAgbV9jZWxsc0NvbGxhcHNlZEJvcmRlcnMuc2V0KG1ha2VfcGFpcihjZWxs
LCBzaWRlKSwgYm9yZGVyKTsKKyAgICBtX2NlbGxzQ29sbGFwc2VkQm9yZGVycy5zZXQoc3RkOjpt
YWtlX3BhaXIoY2VsbCwgc2lkZSksIGJvcmRlcik7CiB9CiAKIENvbGxhcHNlZEJvcmRlclZhbHVl
JiBSZW5kZXJUYWJsZVNlY3Rpb246OmNhY2hlZENvbGxhcHNlZEJvcmRlcihjb25zdCBSZW5kZXJU
YWJsZUNlbGwqIGNlbGwsIENvbGxhcHNlZEJvcmRlclNpZGUgc2lkZSkKIHsKICAgICBBU1NFUlQo
dGFibGUoKS0+Y29sbGFwc2VCb3JkZXJzKCkpOwotICAgIEhhc2hNYXA8cGFpcjxjb25zdCBSZW5k
ZXJUYWJsZUNlbGwqLCBpbnQ+LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZT46Oml0ZXJhdG9yIGl0ID0g
bV9jZWxsc0NvbGxhcHNlZEJvcmRlcnMuZmluZChtYWtlX3BhaXIoY2VsbCwgc2lkZSkpOworICAg
IEhhc2hNYXA8cGFpcjxjb25zdCBSZW5kZXJUYWJsZUNlbGwqLCBpbnQ+LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZT46Oml0ZXJhdG9yIGl0ID0gbV9jZWxsc0NvbGxhcHNlZEJvcmRlcnMuZmluZChzdGQ6
Om1ha2VfcGFpcihjZWxsLCBzaWRlKSk7CiAgICAgQVNTRVJUKGl0ICE9IG1fY2VsbHNDb2xsYXBz
ZWRCb3JkZXJzLmVuZCgpKTsKICAgICByZXR1cm4gaXQtPnZhbHVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDk5OWFjNWNkYjgzNDJjOTc4YWM4ODRkNTM3
ZDRlYmRiMTU3NDhmN2MuLjNkMmQ5OGM3MzI5YWZmZjkwY2QyYjY2ODhiNjFlMGMxMDQzMzk0YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTQ3LDcgKzQ3LDYg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvdW5p
Y29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFt
ZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwogCkBAIC0xMDcsNyArMTA2LDcg
QEAgc3RhdGljIHZvaWQgbWFrZUNhcGl0YWxpemVkKFN0cmluZyogc3RyaW5nLCBVQ2hhciBwcmV2
aW91cykKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmctPmxlbmd0aCgpOwogICAgIGNvbnN0
IFN0cmluZ0ltcGwmIHN0cmluZ0ltcGwgPSAqc3RyaW5nLT5pbXBsKCk7CiAKLSAgICBpZiAobGVu
Z3RoID49IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgaWYgKGxlbmd0aCA+
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIENSQVNIKCk7
CiAKICAgICBTdHJpbmdCdWZmZXI8VUNoYXI+IHN0cmluZ1dpdGhQcmV2aW91cyhsZW5ndGggKyAx
KTsKQEAgLTI5NCw4ICsyOTMsOCBAQCBWZWN0b3I8SW50UmVjdD4gUmVuZGVyVGV4dDo6YWJzb2x1
dGVSZWN0c0ZvclJhbmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsCiAgICAgLy8gdGhh
dCB3b3VsZCBjYXVzZSBtYW55IHJpcHBsZSBlZmZlY3RzLCBzbyBmb3Igbm93IHdlJ2xsIGp1c3Qg
Y2xhbXAgb3VyIHVuc2lnbmVkIHBhcmFtZXRlcnMgdG8gSU5UX01BWC4KICAgICBBU1NFUlQoZW5k
ID09IFVJTlRfTUFYIHx8IGVuZCA8PSBJTlRfTUFYKTsKICAgICBBU1NFUlQoc3RhcnQgPD0gSU5U
X01BWCk7Ci0gICAgc3RhcnQgPSBtaW4oc3RhcnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRf
TUFYKSk7Ci0gICAgZW5kID0gbWluKGVuZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9NQVgp
KTsKKyAgICBzdGFydCA9IHN0ZDo6bWluKHN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5U
X01BWCkpOworICAgIGVuZCA9IHN0ZDo6bWluKGVuZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElO
VF9NQVgpKTsKICAgICAKICAgICByZXR1cm4gbV9saW5lQm94ZXMuYWJzb2x1dGVSZWN0c0ZvclJh
bmdlKCp0aGlzLCBzdGFydCwgZW5kLCB1c2VTZWxlY3Rpb25IZWlnaHQsIHdhc0ZpeGVkKTsKIH0K
QEAgLTMyNSw4ICszMjQsOCBAQCBWZWN0b3I8RmxvYXRRdWFkPiBSZW5kZXJUZXh0OjphYnNvbHV0
ZVF1YWRzRm9yUmFuZ2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZAogICAgIC8vIHRoYXQg
d291bGQgY2F1c2UgbWFueSByaXBwbGUgZWZmZWN0cywgc28gZm9yIG5vdyB3ZSdsbCBqdXN0IGNs
YW1wIG91ciB1bnNpZ25lZCBwYXJhbWV0ZXJzIHRvIElOVF9NQVguCiAgICAgQVNTRVJUKGVuZCA9
PSBVSU5UX01BWCB8fCBlbmQgPD0gSU5UX01BWCk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IElOVF9N
QVgpOwotICAgIHN0YXJ0ID0gbWluKHN0YXJ0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01B
WCkpOwotICAgIGVuZCA9IG1pbihlbmQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRfTUFYKSk7
CisgICAgc3RhcnQgPSBzdGQ6Om1pbihzdGFydCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KElOVF9N
QVgpKTsKKyAgICBlbmQgPSBzdGQ6Om1pbihlbmQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihJTlRf
TUFYKSk7CiAgICAgCiAgICAgcmV0dXJuIG1fbGluZUJveGVzLmFic29sdXRlUXVhZHNGb3JSYW5n
ZSgqdGhpcywgc3RhcnQsIGVuZCwgdXNlU2VsZWN0aW9uSGVpZ2h0LCB3YXNGaXhlZCk7CiB9CkBA
IC01NTgsNyArNTU3LDcgQEAgc3RhdGljIGZsb2F0IG1heFdvcmRGcmFnbWVudFdpZHRoKFJlbmRl
clRleHQqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgIHN1ZmZpeFN0YXJ0ICs9IGZyYWdtZW50TGVuZ3RoOwotICAgICAg
ICBtYXhGcmFnbWVudFdpZHRoID0gbWF4KG1heEZyYWdtZW50V2lkdGgsIGZyYWdtZW50V2lkdGgp
OworICAgICAgICBtYXhGcmFnbWVudFdpZHRoID0gc3RkOjptYXgobWF4RnJhZ21lbnRXaWR0aCwg
ZnJhZ21lbnRXaWR0aCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1heEZyYWdtZW50V2lkdGg7CkBA
IC02MDAsNyArNTk5LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgU2kKIAogICAgIC8vIElmIGF1
dG9tYXRpYyBoeXBoZW5hdGlvbiBpcyBhbGxvd2VkLCB3ZSBrZWVwIHRyYWNrIG9mIHRoZSB3aWR0
aCBvZiB0aGUgd2lkZXN0IHdvcmQgKG9yIHdvcmQKICAgICAvLyBmcmFnbWVudCkgZW5jb3VudGVy
ZWQgc28gZmFyLCBhbmQgb25seSB0cnkgaHlwaGVuYXRpbmcgd29yZHMgdGhhdCBhcmUgd2lkZXIu
Ci0gICAgZmxvYXQgbWF4V29yZFdpZHRoID0gbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKTsK
KyAgICBmbG9hdCBtYXhXb3JkV2lkdGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4
KCk7CiAgICAgaW50IG1pbmltdW1QcmVmaXhMZW5ndGggPSAwOwogICAgIGludCBtaW5pbXVtU3Vm
Zml4TGVuZ3RoID0gMDsKICAgICBpZiAoc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnNBdXRvICYm
IGNhbkh5cGhlbmF0ZShzdHlsZS5sb2NhbGUoKSkpIHsKQEAgLTcwNiwxMCArNzA1LDEwIEBAIHZv
aWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdp
ZHRoLCBIYXNoU2V0PGNvbnN0IFNpCiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1ZmZpeFdpZHRoID0gd2lkdGhGcm9tQ2FjaGUoZiwgaSArIHN1ZmZp
eFN0YXJ0LCB3b3JkTGVuIC0gc3VmZml4U3RhcnQsIGxlYWRXaWR0aCArIGN1cnJNYXhXaWR0aCwg
MCwgMCwgc3R5bGUpOwogCi0gICAgICAgICAgICAgICAgICAgIG1heEZyYWdtZW50V2lkdGggPSBt
YXgobWF4RnJhZ21lbnRXaWR0aCwgc3VmZml4V2lkdGgpOworICAgICAgICAgICAgICAgICAgICBt
YXhGcmFnbWVudFdpZHRoID0gc3RkOjptYXgobWF4RnJhZ21lbnRXaWR0aCwgc3VmZml4V2lkdGgp
OwogCiAgICAgICAgICAgICAgICAgICAgIGN1cnJNaW5XaWR0aCArPSBtYXhGcmFnbWVudFdpZHRo
IC0gdzsKLSAgICAgICAgICAgICAgICAgICAgbWF4V29yZFdpZHRoID0gbWF4KG1heFdvcmRXaWR0
aCwgbWF4RnJhZ21lbnRXaWR0aCk7CisgICAgICAgICAgICAgICAgICAgIG1heFdvcmRXaWR0aCA9
IHN0ZDo6bWF4KG1heFdvcmRXaWR0aCwgbWF4RnJhZ21lbnRXaWR0aCk7CiAgICAgICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIG1heFdvcmRXaWR0aCA9IHc7CiAgICAgICAg
ICAgICB9CkBAIC03OTMsOCArNzkyLDggQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgU2kKICAgICBp
ZiAoKG5lZWRzV29yZFNwYWNpbmcgJiYgbGVuID4gMSkgfHwgKGlnbm9yaW5nU3BhY2VzICYmICFm
aXJzdFdvcmQpKQogICAgICAgICBjdXJyTWF4V2lkdGggKz0gd29yZFNwYWNpbmc7CiAKLSAgICBt
X21pbldpZHRoID0gbWF4KGN1cnJNaW5XaWR0aCwgbV9taW5XaWR0aCk7Ci0gICAgbV9tYXhXaWR0
aCA9IG1heChjdXJyTWF4V2lkdGgsIG1fbWF4V2lkdGgpOworICAgIG1fbWluV2lkdGggPSBzdGQ6
Om1heChjdXJyTWluV2lkdGgsIG1fbWluV2lkdGgpOworICAgIG1fbWF4V2lkdGggPSBzdGQ6Om1h
eChjdXJyTWF4V2lkdGgsIG1fbWF4V2lkdGgpOwogCiAgICAgaWYgKCFzdHlsZS5hdXRvV3JhcCgp
KQogICAgICAgICBtX21pbldpZHRoID0gbV9tYXhXaWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IGIwMmYxN2IxNTk2NzNjYmMwODU5
ODE2ZDUyMjNlN2U4ODY1NzkwMWMuLjhmY2JhYTIzMjY1ZThiYThlMWQzNGU3ZTZkZjBkOTZlZWRi
NGI0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmNwcApAQCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBz
dGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRl
eHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJl
bmRlclN0eWxlPiBzdHlsZSkKQEAgLTI2NywxMyArMjY1LDEzIEBAIHZvaWQgUmVuZGVyVGV4dENv
bnRyb2w6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICAgICAgY29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxXaWR0aHMobV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIG1fbWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoKTsKIAogICAgIGlmIChzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgp
LmlzRml4ZWQoKSAmJiBzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkgPiAwKSB7Ci0g
ICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4KG1fbWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxl
KCkubG9naWNhbE1pbldpZHRoKCkudmFsdWUoKSkpOwotICAgICAgICBtX21pblByZWZlcnJlZExv
Z2ljYWxXaWR0aCA9IG1heChtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVu
dEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLnZh
bHVlKCkpKTsKKyAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heCht
X21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZv
ckJveFNpemluZyhzdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkpKTsKKyAgICAgICAg
bV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX21pblByZWZlcnJlZExvZ2lj
YWxXaWR0aCwgYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhzdHlsZSgp
LmxvZ2ljYWxNaW5XaWR0aCgpLnZhbHVlKCkpKTsKICAgICB9CiAKICAgICBpZiAoc3R5bGUoKS5s
b2dpY2FsTWF4V2lkdGgoKS5pc0ZpeGVkKCkpIHsKLSAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dp
Y2FsV2lkdGggPSBtaW4obV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGFkanVzdENvbnRlbnRC
b3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcoc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKS52YWx1
ZSgpKSk7Ci0gICAgICAgIG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWluKG1fbWluUHJl
ZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6
aW5nKHN0eWxlKCkubG9naWNhbE1heFdpZHRoKCkudmFsdWUoKSkpOworICAgICAgICBtX21heFBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWluKG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRo
LCBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCkubG9naWNh
bE1heFdpZHRoKCkudmFsdWUoKSkpOworICAgICAgICBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0
aCA9IHN0ZDo6bWluKG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoLCBhZGp1c3RDb250ZW50Qm94
TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKHN0eWxlKCkubG9naWNhbE1heFdpZHRoKCkudmFsdWUo
KSkpOwogICAgIH0KIAogICAgIExheW91dFVuaXQgdG9BZGQgPSBib3JkZXJBbmRQYWRkaW5nTG9n
aWNhbFdpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IDkwY2IzNjE2ZDFhZDc4YjMxODg1YmYy
NDhhYmQ0NjBmZTViMjFjOTIuLmYxNTUwYzdiMjM2ZmEwOGNjMWVjYzY5ZGQzYzk3YTFlNGUyN2Q3
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC00NSw4ICs0NSw2IEBACiAjaW5jbHVkZSAiVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSA8d3RmL1N0YWNrU3RhdHMuaD4KIAotdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CmluZGV4IGE0NzllMjA0ZGRhMzMyMDRkMTRlOTJhMTZlNTJjYmJmZDVjMWI0MWUuLjUyN2VmODY0
Y2EzZjAyNDFhYzhkNjlhMDBkY2ExOGNjODIyZDgyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTcyLDggKzcyLDYgQEAKICNpbmNsdWRlICJIVE1M
TWV0ZXJFbGVtZW50LmgiCiAjZW5kaWYKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogLy8gVGhl
IG1ldGhvZHMgaW4gdGhpcyBmaWxlIGFyZSBzcGVjaWZpYyB0byB0aGUgTWFjIE9TIFggcGxhdGZv
cm0uCiAKIC8vIEZJWE1FOiBUaGUgcGxhdGZvcm0taW5kZXBlbmRlbnQgY29kZSBpbiB0aGlzIGNs
YXNzIHNob3VsZCBiZSBmYWN0b3JlZCBvdXQgYW5kIG1lcmdlZCB3aXRoIFJlbmRlclRoZW1lU2Fm
YXJpLgpAQCAtMTA0Niw3ICsxMDQ0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9n
cmVzc0JhcihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmYKIAogICAg
IHRyYWNrSW5mby5ib3VuZHMgPSBJbnRSZWN0KEludFBvaW50KCksIGluZmxhdGVkUmVjdC5zaXpl
KCkpOwogICAgIHRyYWNrSW5mby5taW4gPSAwOwotICAgIHRyYWNrSW5mby5tYXggPSBudW1lcmlj
X2xpbWl0czxTSW50MzI+OjptYXgoKTsKKyAgICB0cmFja0luZm8ubWF4ID0gc3RkOjpudW1lcmlj
X2xpbWl0czxTSW50MzI+OjptYXgoKTsKICAgICB0cmFja0luZm8udmFsdWUgPSBscm91bmQocmVu
ZGVyUHJvZ3Jlc3MtPnBvc2l0aW9uKCkgKiBuZXh0YWZ0ZXIodHJhY2tJbmZvLm1heCwgMCkpOwog
ICAgIHRyYWNrSW5mby50cmFja0luZm8ucHJvZ3Jlc3MucGhhc2UgPSBscm91bmQocmVuZGVyUHJv
Z3Jlc3MtPmFuaW1hdGlvblByb2dyZXNzKCkgKiBuZXh0YWZ0ZXIocHJvZ3Jlc3NBbmltYXRpb25O
dW1GcmFtZXMsIDApICogZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIHRyYWNrSW5mby5hdHRyaWJ1
dGVzID0ga1RoZW1lVHJhY2tIb3Jpem9udGFsOwpAQCAtMTIwMyw3ICsxMjAxLDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50SW5mbyYgcGFpbnQKICAgICBwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKG8sIHBh
aW50SW5mbywgYm91bmRzKTsKIAogICAgIC8vIFNpbmNlIHdlIGFjdHVhbGx5IGtub3cgdGhlIHNp
emUgb2YgdGhlIGNvbnRyb2wgaGVyZSwgd2UgcmVzdHJpY3QgdGhlIGZvbnQgc2NhbGUgdG8gbWFr
ZSBzdXJlIHRoZSBhcnJvd3Mgd2lsbCBmaXQgdmVydGljYWxseSBpbiB0aGUgYm91bmRzCi0gICAg
ZmxvYXQgZm9udFNjYWxlID0gbWluKG8tPnN0eWxlKCkuZm9udFNpemUoKSAvIGJhc2VGb250U2l6
ZSwgYm91bmRzLmhlaWdodCgpIC8gKGJhc2VBcnJvd0hlaWdodCAqIDIgKyBiYXNlU3BhY2VCZXR3
ZWVuQXJyb3dzKSk7CisgICAgZmxvYXQgZm9udFNjYWxlID0gc3RkOjptaW4oby0+c3R5bGUoKS5m
b250U2l6ZSgpIC8gYmFzZUZvbnRTaXplLCBib3VuZHMuaGVpZ2h0KCkgLyAoYmFzZUFycm93SGVp
Z2h0ICogMiArIGJhc2VTcGFjZUJldHdlZW5BcnJvd3MpKTsKICAgICBmbG9hdCBjZW50ZXJZID0g
Ym91bmRzLnkoKSArIGJvdW5kcy5oZWlnaHQoKSAvIDIuMGY7CiAgICAgZmxvYXQgYXJyb3dIZWln
aHQgPSBiYXNlQXJyb3dIZWlnaHQgKiBmb250U2NhbGU7CiAgICAgZmxvYXQgYXJyb3dXaWR0aCA9
IGJhc2VBcnJvd1dpZHRoICogZm9udFNjYWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcAppbmRleCBkOTY1YzE4N2EzNDdjMjQyMDU5ZTRhNWFkNWNiZTM2MjUyMjAy
ODViLi5mYzIwOTVkMDhmYjE4OGI1ZjYwMjQ4NzU0MmM1MDg4YzM3MTY4YTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMzYsOCArMzYsNiBAQAogI2lu
Y2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBz
dGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hNYXA8Y29uc3QgV2lkZ2V0
KiwgUmVuZGVyV2lkZ2V0Kj4mIHdpZGdldFJlbmRlcmVyTWFwKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCA2NTMyNjEzNDA0YzEzZGNiZjg5NWI4NGNl
OGUzZGI0MGQ2OWNlNjEzLi5mNTJhOTQ2MzJiNzFjZmQyY2I1ZDNhZDFmOTlhNjQ0ZjMzMzMwZGNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCkBAIC0zNyw4
ICszNyw2IEBACiAjaW5jbHVkZSAiVmVydGljYWxQb3NpdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSA8
d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCiBzdHJ1Y3QgU2FtZVNpemVBc1Jvb3RJbmxpbmVCb3ggOiBwdWJs
aWMgSW5saW5lRmxvd0JveCB7CkBAIC0yOTMsNyArMjkxLDcgQEAgTGF5b3V0VW5pdCBSb290SW5s
aW5lQm94OjphbGlnbkJveGVzSW5CbG9ja0RpcmVjdGlvbihMYXlvdXRVbml0IGhlaWdodE9mQmxv
Y2ssIEcKICAgICBjb21wdXRlTG9naWNhbEJveEhlaWdodHModGhpcywgbWF4UG9zaXRpb25Ub3As
IG1heFBvc2l0aW9uQm90dG9tLCBtYXhBc2NlbnQsIG1heERlc2NlbnQsIHNldE1heEFzY2VudCwg
c2V0TWF4RGVzY2VudCwgbm9RdWlya3NNb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXh0Qm94RGF0YU1hcCwgYmFzZWxpbmVUeXBlKCksIHZlcnRpY2FsUG9zaXRpb25DYWNoZSk7
CiAKLSAgICBpZiAobWF4QXNjZW50ICsgbWF4RGVzY2VudCA8IG1heChtYXhQb3NpdGlvblRvcCwg
bWF4UG9zaXRpb25Cb3R0b20pKQorICAgIGlmIChtYXhBc2NlbnQgKyBtYXhEZXNjZW50IDwgc3Rk
OjptYXgobWF4UG9zaXRpb25Ub3AsIG1heFBvc2l0aW9uQm90dG9tKSkKICAgICAgICAgYWRqdXN0
TWF4QXNjZW50QW5kRGVzY2VudChtYXhBc2NlbnQsIG1heERlc2NlbnQsIG1heFBvc2l0aW9uVG9w
LCBtYXhQb3NpdGlvbkJvdHRvbSk7CiAKICAgICBMYXlvdXRVbml0IG1heEhlaWdodCA9IG1heEFz
Y2VudCArIG1heERlc2NlbnQ7CkBAIC0zMDksNyArMzA3LDcgQEAgTGF5b3V0VW5pdCBSb290SW5s
aW5lQm94OjphbGlnbkJveGVzSW5CbG9ja0RpcmVjdGlvbihMYXlvdXRVbml0IGhlaWdodE9mQmxv
Y2ssIEcKICAgICBtX2hhc0Fubm90YXRpb25zQmVmb3JlID0gaGFzQW5ub3RhdGlvbnNCZWZvcmU7
CiAgICAgbV9oYXNBbm5vdGF0aW9uc0FmdGVyID0gaGFzQW5ub3RhdGlvbnNBZnRlcjsKICAgICAK
LSAgICBtYXhIZWlnaHQgPSBtYXg8TGF5b3V0VW5pdD4oMCwgbWF4SGVpZ2h0KTsgLy8gRklYTUU6
IElzIHRoaXMgcmVhbGx5IG5lY2Vzc2FyeT8KKyAgICBtYXhIZWlnaHQgPSBzdGQ6Om1heDxMYXlv
dXRVbml0PigwLCBtYXhIZWlnaHQpOyAvLyBGSVhNRTogSXMgdGhpcyByZWFsbHkgbmVjZXNzYXJ5
PwogCiAgICAgc2V0TGluZVRvcEJvdHRvbVBvc2l0aW9ucyhsaW5lVG9wLCBsaW5lQm90dG9tLCBo
ZWlnaHRPZkJsb2NrLCBoZWlnaHRPZkJsb2NrICsgbWF4SGVpZ2h0KTsKICAgICBzZXRQYWdpbmF0
ZWRMaW5lV2lkdGgoYmxvY2tGbG93KCkuYXZhaWxhYmxlTG9naWNhbFdpZHRoRm9yQ29udGVudCho
ZWlnaHRPZkJsb2NrKSk7CkBAIC0zNTMsNyArMzUxLDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5l
Qm94OjpiZWZvcmVBbm5vdGF0aW9uc0FkanVzdG1lbnQoKSBjb25zdAogICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKIAogICAgICAgICAvLyBBbm5vdGF0aW9ucyBvdmVyIHRoaXMgbGluZSBtYXkg
cHVzaCB1cyBmdXJ0aGVyIGRvd24uCi0gICAgICAgIExheW91dFVuaXQgaGlnaGVzdEFsbG93ZWRQ
b3NpdGlvbiA9IHByZXZSb290Qm94KCkgPyBtaW4ocHJldlJvb3RCb3goKS0+bGluZUJvdHRvbSgp
LCBsaW5lVG9wKCkpICsgcmVzdWx0IDogc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oYmxvY2tGbG93
KCkuYm9yZGVyQmVmb3JlKCkpOworICAgICAgICBMYXlvdXRVbml0IGhpZ2hlc3RBbGxvd2VkUG9z
aXRpb24gPSBwcmV2Um9vdEJveCgpID8gc3RkOjptaW4ocHJldlJvb3RCb3goKS0+bGluZUJvdHRv
bSgpLCBsaW5lVG9wKCkpICsgcmVzdWx0IDogc3RhdGljX2Nhc3Q8TGF5b3V0VW5pdD4oYmxvY2tG
bG93KCkuYm9yZGVyQmVmb3JlKCkpOwogICAgICAgICByZXN1bHQgPSBjb21wdXRlT3ZlckFubm90
YXRpb25BZGp1c3RtZW50KGhpZ2hlc3RBbGxvd2VkUG9zaXRpb24pOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIEFubm90YXRpb25zIHVuZGVyIHRoaXMgbGluZSBtYXkgcHVzaCB1cyB1cC4KQEAg
LTM2NCw3ICszNjIsNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OmJlZm9yZUFubm90YXRp
b25zQWRqdXN0bWVudCgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAg
ICAgIC8vIFdlIGhhdmUgdG8gY29tcHV0ZSB0aGUgZXhwYW5zaW9uIGZvciBhbm5vdGF0aW9ucyBv
dmVyIHRoZSBwcmV2aW91cyBsaW5lIHRvIHNlZSBob3cgbXVjaCB3ZSBzaG91bGQgbW92ZS4KLSAg
ICAgICAgTGF5b3V0VW5pdCBsb3dlc3RBbGxvd2VkUG9zaXRpb24gPSBtYXgocHJldlJvb3RCb3go
KS0+bGluZUJvdHRvbSgpLCBsaW5lVG9wKCkpIC0gcmVzdWx0OworICAgICAgICBMYXlvdXRVbml0
IGxvd2VzdEFsbG93ZWRQb3NpdGlvbiA9IHN0ZDo6bWF4KHByZXZSb290Qm94KCktPmxpbmVCb3R0
b20oKSwgbGluZVRvcCgpKSAtIHJlc3VsdDsKICAgICAgICAgcmVzdWx0ID0gcHJldlJvb3RCb3go
KS0+Y29tcHV0ZU92ZXJBbm5vdGF0aW9uQWRqdXN0bWVudChsb3dlc3RBbGxvd2VkUG9zaXRpb24p
OwogICAgIH0KIApAQCAtNjU3LDcgKzY1NSw3IEBAIExheW91dFVuaXQgUm9vdElubGluZUJveDo6
c2VsZWN0aW9uVG9wQWRqdXN0ZWRGb3JQcmVjZWRpbmdCbG9jaygpIGNvbnN0CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0b3A7CiAKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxhc3RM
aW5lU2VsZWN0aW9uQm90dG9tID0gbGFzdExpbmUtPnNlbGVjdGlvbkJvdHRvbSgpICsgb2Zmc2V0
VG9CbG9ja0JlZm9yZS5oZWlnaHQoKTsKLSAgICAgICAgICAgICAgICB0b3AgPSBtYXgodG9wLCBs
YXN0TGluZVNlbGVjdGlvbkJvdHRvbSk7CisgICAgICAgICAgICAgICAgdG9wID0gc3RkOjptYXgo
dG9wLCBsYXN0TGluZVNlbGVjdGlvbkJvdHRvbSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CkBAIC02OTMsNyArNjkxLDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpzZWxl
Y3Rpb25Cb3R0b20oKSBjb25zdAogCiBpbnQgUm9vdElubGluZUJveDo6YmxvY2tEaXJlY3Rpb25Q
b2ludEluTGluZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFibG9ja0Zsb3coKS5zdHlsZSgpLmlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBtYXgobGluZVRvcCgpLCBzZWxlY3Rpb25Ub3Ao
KSkgOiBtaW4obGluZUJvdHRvbSgpLCBzZWxlY3Rpb25Cb3R0b20oKSk7CisgICAgcmV0dXJuICFi
bG9ja0Zsb3coKS5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBzdGQ6Om1h
eChsaW5lVG9wKCksIHNlbGVjdGlvblRvcCgpKSA6IHN0ZDo6bWluKGxpbmVCb3R0b20oKSwgc2Vs
ZWN0aW9uQm90dG9tKCkpOwogfQogCiBSZW5kZXJCbG9ja0Zsb3cmIFJvb3RJbmxpbmVCb3g6OmJs
b2NrRmxvdygpIGNvbnN0CkBAIC03OTcsMTQgKzc5NSwxNCBAQCBMYXlvdXRSZWN0IFJvb3RJbmxp
bmVCb3g6OnBhZGRlZExheW91dE92ZXJmbG93UmVjdChMYXlvdXRVbml0IGVuZFBhZGRpbmcpIGNv
bnN0CiAgICAgLy8gRklYTUU6IEF1ZGl0IHdoZXRoZXIgdG8gdXNlIHBpeGVsIHNuYXBwZWQgdmFs
dWVzIHdoZW4gbm90IHVzaW5nIGludGVnZXJzIGZvciBsYXlvdXQ6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzY1NgogICAgIGlmIChpc0hvcml6b250YWwoKSkgewog
ICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICAgICAgbGluZUxh
eW91dE92ZXJmbG93LnNoaWZ0TWF4WEVkZ2VUbyhtYXg8TGF5b3V0VW5pdD4obGluZUxheW91dE92
ZXJmbG93Lm1heFgoKSwgcGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0KCkgKyBlbmRQYWRkaW5nKSk7
CisgICAgICAgICAgICBsaW5lTGF5b3V0T3ZlcmZsb3cuc2hpZnRNYXhYRWRnZVRvKHN0ZDo6bWF4
PExheW91dFVuaXQ+KGxpbmVMYXlvdXRPdmVyZmxvdy5tYXhYKCksIHBpeGVsU25hcHBlZExvZ2lj
YWxSaWdodCgpICsgZW5kUGFkZGluZykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBsaW5l
TGF5b3V0T3ZlcmZsb3cuc2hpZnRYRWRnZVRvKG1pbjxMYXlvdXRVbml0PihsaW5lTGF5b3V0T3Zl
cmZsb3cueCgpLCBwaXhlbFNuYXBwZWRMb2dpY2FsTGVmdCgpIC0gZW5kUGFkZGluZykpOworICAg
ICAgICAgICAgbGluZUxheW91dE92ZXJmbG93LnNoaWZ0WEVkZ2VUbyhzdGQ6Om1pbjxMYXlvdXRV
bml0PihsaW5lTGF5b3V0T3ZlcmZsb3cueCgpLCBwaXhlbFNuYXBwZWRMb2dpY2FsTGVmdCgpIC0g
ZW5kUGFkZGluZykpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpCi0gICAgICAgICAgICBsaW5lTGF5b3V0T3ZlcmZsb3cuc2hpZnRNYXhZRWRnZVRv
KG1heDxMYXlvdXRVbml0PihsaW5lTGF5b3V0T3ZlcmZsb3cubWF4WSgpLCBwaXhlbFNuYXBwZWRM
b2dpY2FsUmlnaHQoKSArIGVuZFBhZGRpbmcpKTsKKyAgICAgICAgICAgIGxpbmVMYXlvdXRPdmVy
Zmxvdy5zaGlmdE1heFlFZGdlVG8oc3RkOjptYXg8TGF5b3V0VW5pdD4obGluZUxheW91dE92ZXJm
bG93Lm1heFkoKSwgcGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0KCkgKyBlbmRQYWRkaW5nKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxpbmVMYXlvdXRPdmVyZmxvdy5zaGlmdFlFZGdlVG8o
bWluPExheW91dFVuaXQ+KGxpbmVMYXlvdXRPdmVyZmxvdy55KCksIHBpeGVsU25hcHBlZExvZ2lj
YWxMZWZ0KCkgLSBlbmRQYWRkaW5nKSk7CisgICAgICAgICAgICBsaW5lTGF5b3V0T3ZlcmZsb3cu
c2hpZnRZRWRnZVRvKHN0ZDo6bWluPExheW91dFVuaXQ+KGxpbmVMYXlvdXRPdmVyZmxvdy55KCks
IHBpeGVsU25hcHBlZExvZ2ljYWxMZWZ0KCkgLSBlbmRQYWRkaW5nKSk7CiAgICAgfQogICAgIAog
ICAgIHJldHVybiBsaW5lTGF5b3V0T3ZlcmZsb3c7CkBAIC04MTcsOCArODE1LDggQEAgc3RhdGlj
IHZvaWQgc2V0QXNjZW50QW5kRGVzY2VudChpbnQmIGFzY2VudCwgaW50JiBkZXNjZW50LCBpbnQg
bmV3QXNjZW50LCBpbnQgbmUKICAgICAgICAgYXNjZW50ID0gbmV3QXNjZW50OwogICAgICAgICBk
ZXNjZW50ID0gbmV3RGVzY2VudDsKICAgICB9IGVsc2UgewotICAgICAgICBhc2NlbnQgPSBtYXgo
YXNjZW50LCBuZXdBc2NlbnQpOwotICAgICAgICBkZXNjZW50ID0gbWF4KGRlc2NlbnQsIG5ld0Rl
c2NlbnQpOworICAgICAgICBhc2NlbnQgPSBzdGQ6Om1heChhc2NlbnQsIG5ld0FzY2VudCk7Cisg
ICAgICAgIGRlc2NlbnQgPSBzdGQ6Om1heChkZXNjZW50LCBuZXdEZXNjZW50KTsKICAgICB9CiB9
CiAKQEAgLTkwNiw4ICs5MDQsOCBAQCB2b2lkIFJvb3RJbmxpbmVCb3g6OmFzY2VudEFuZERlc2Nl
bnRGb3JCb3goSW5saW5lQm94KiBib3gsIEdseXBoT3ZlcmZsb3dBbmRGYWxsYgogICAgICAgICBz
ZXRBc2NlbnRBbmREZXNjZW50KGFzY2VudCwgZGVzY2VudCwgZ2x5cGhPdmVyZmxvdy0+dG9wLCBn
bHlwaE92ZXJmbG93LT5ib3R0b20sIGFzY2VudERlc2NlbnRTZXQpOwogICAgICAgICBhZmZlY3Rz
QXNjZW50ID0gZ2x5cGhPdmVyZmxvdy0+dG9wIC0gYm94LT5sb2dpY2FsVG9wKCkgPiAwOwogICAg
ICAgICBhZmZlY3RzRGVzY2VudCA9IGdseXBoT3ZlcmZsb3ctPmJvdHRvbSArIGJveC0+bG9naWNh
bFRvcCgpID4gMDsgCi0gICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IG1pbihnbHlwaE92ZXJm
bG93LT50b3AsIG1heCgwLCBnbHlwaE92ZXJmbG93LT50b3AgLSBib3hMaW5lU3R5bGUuZm9udE1l
dHJpY3MoKS5hc2NlbnQoYmFzZWxpbmVUeXBlKCkpKSk7Ci0gICAgICAgIGdseXBoT3ZlcmZsb3ct
PmJvdHRvbSA9IG1pbihnbHlwaE92ZXJmbG93LT5ib3R0b20sIG1heCgwLCBnbHlwaE92ZXJmbG93
LT5ib3R0b20gLSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNjZW50KGJhc2VsaW5lVHlw
ZSgpKSkpOworICAgICAgICBnbHlwaE92ZXJmbG93LT50b3AgPSBzdGQ6Om1pbihnbHlwaE92ZXJm
bG93LT50b3AsIHN0ZDo6bWF4KDAsIGdseXBoT3ZlcmZsb3ctPnRvcCAtIGJveExpbmVTdHlsZS5m
b250TWV0cmljcygpLmFzY2VudChiYXNlbGluZVR5cGUoKSkpKTsKKyAgICAgICAgZ2x5cGhPdmVy
Zmxvdy0+Ym90dG9tID0gc3RkOjptaW4oZ2x5cGhPdmVyZmxvdy0+Ym90dG9tLCBzdGQ6Om1heCgw
LCBnbHlwaE92ZXJmbG93LT5ib3R0b20gLSBib3hMaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5kZXNj
ZW50KGJhc2VsaW5lVHlwZSgpKSkpOwogICAgIH0KIAogICAgIGlmIChpbmNsdWRlTWFyZ2luRm9y
Qm94KGJveCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvb3QuY3BwCmluZGV4IDA2ZTE4YWMxMDQ1OTZlNThjYTMxMjc0YTNiYmM3NzY5
NjRmY2IyOGMuLmY1ZTcwMjY3MjkyMDU3NDBkYWFhNzU1MjJhYjI2YTdhYWUyNjU5MWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290
LmNwcApAQCAtMzUsOCArMzUsNiBAQAogI2luY2x1ZGUgIlJlbmRlckl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTWF0aE1MUm93LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKIC8vIEZJWE1FOiBUaGlzIHdob2xlIGZpbGUgc2hvdWxkIGJl
IGNoYW5nZWQgdG8gd29yayB3aXRoIHZhcmlvdXMgd3JpdGluZyBtb2Rlcy4gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODk1MS4KQEAgLTE5Niw3ICsxOTQsNyBA
QCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OmxheW91dCgpCiAgICAgLy8gQmFzZSBoZWlnaHQgYWJv
dmUgd2hpY2ggdGhlIHNoYXBlIG9mIHRoZSByb290IGNoYW5nZXMKICAgICBmbG9hdCB0aHJlc2hv
bGRIZWlnaHQgPSBnVGhyZXNob2xkQmFzZUhlaWdodEVtcyAqIHN0eWxlKCkuZm9udFNpemUoKTsK
ICAgICBpZiAoYmFzZUhlaWdodCA+IHRocmVzaG9sZEhlaWdodCAmJiB0aHJlc2hvbGRIZWlnaHQp
IHsKLSAgICAgICAgZmxvYXQgc2hpZnQgPSBtaW48ZmxvYXQ+KChiYXNlSGVpZ2h0IC0gdGhyZXNo
b2xkSGVpZ2h0KSAvIHRocmVzaG9sZEhlaWdodCwgMS4wZik7CisgICAgICAgIGZsb2F0IHNoaWZ0
ID0gc3RkOjptaW48ZmxvYXQ+KChiYXNlSGVpZ2h0IC0gdGhyZXNob2xkSGVpZ2h0KSAvIHRocmVz
aG9sZEhlaWdodCwgMS4wZik7CiAgICAgICAgIG1fb3ZlcmJhckxlZnRQb2ludFNoaWZ0ID0gc3Rh
dGljX2Nhc3Q8aW50PihzaGlmdCAqIGdSYWRpY2FsQm90dG9tUG9pbnRYRnJvbnQgKiBmcm9udFdp
ZHRoKTsKICAgICAgICAgbV9pbnRyaW5zaWNQYWRkaW5nQWZ0ZXIgPSBscm91bmRmKGdCaWdSb290
Qm90dG9tUGFkZGluZ0VtcyAqIHN0eWxlKCkuZm9udFNpemUoKSk7CiAgICAgfSBlbHNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGNl
ZTRmOWQ0YmRmNTBiZjBmZDQyMTJjNGNmNTVlZjQxMzQ1MzIzYzkuLmQ2ZTk0MWM3Y2I1MTdkODhl
N2JkN2I3OTFiMTRlODAzZWNjMmJmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNTEsOCArNTEsNiBAQAogI2luY2x1ZGUgIlRleHRB
dXRvc2l6ZXIuaCIKICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzQm9yZGVyVmFsdWUgewpAQCAtMTA4OSwyMiAr
MTA4NywyMiBAQCBzdGF0aWMgZmxvYXQgY2FsY0NvbnN0cmFpbnRTY2FsZUZvcihjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaQogICAgIC8vIHRvcAogICAgIHJhZGlp
U3VtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhZGlpLnRvcExlZnQoKS53aWR0aCgpKSArIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihyYWRpaS50b3BSaWdodCgpLndpZHRoKCkpOyAvLyBDYXN0cyB0
byBhdm9pZCBpbnRlZ2VyIG92ZXJmbG93LgogICAgIGlmIChyYWRpaVN1bSA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihyZWN0LndpZHRoKCkpKQotICAgICAgICBmYWN0b3IgPSBtaW4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHJlY3Qud2lkdGgoKSkgLyByYWRpaVN1bSwgZmFjdG9yKTsKKyAgICAgICAgZmFj
dG9yID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3Qud2lkdGgoKSkgLyByYWRpaVN1
bSwgZmFjdG9yKTsKIAogICAgIC8vIGJvdHRvbQogICAgIHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHJhZGlpLmJvdHRvbUxlZnQoKS53aWR0aCgpKSArIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihyYWRpaS5ib3R0b21SaWdodCgpLndpZHRoKCkpOwogICAgIGlmIChyYWRpaVN1bSA+IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LndpZHRoKCkpKQotICAgICAgICBmYWN0b3IgPSBtaW4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3Qud2lkdGgoKSkgLyByYWRpaVN1bSwgZmFjdG9yKTsKKyAg
ICAgICAgZmFjdG9yID0gc3RkOjptaW4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlY3Qud2lkdGgoKSkg
LyByYWRpaVN1bSwgZmFjdG9yKTsKICAgICAKICAgICAvLyBsZWZ0CiAgICAgcmFkaWlTdW0gPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFkaWkudG9wTGVmdCgpLmhlaWdodCgpKSArIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihyYWRpaS5ib3R0b21MZWZ0KCkuaGVpZ2h0KCkpOwogICAgIGlmIChyYWRp
aVN1bSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LmhlaWdodCgpKSkKLSAgICAgICAgZmFj
dG9yID0gbWluKHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LmhlaWdodCgpKSAvIHJhZGlpU3VtLCBm
YWN0b3IpOworICAgICAgICBmYWN0b3IgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxmbG9hdD4ocmVj
dC5oZWlnaHQoKSkgLyByYWRpaVN1bSwgZmFjdG9yKTsKICAgICAKICAgICAvLyByaWdodAogICAg
IHJhZGlpU3VtID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhZGlpLnRvcFJpZ2h0KCkuaGVpZ2h0
KCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhZGlpLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCkp
OwogICAgIGlmIChyYWRpaVN1bSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWN0LmhlaWdodCgp
KSkKLSAgICAgICAgZmFjdG9yID0gbWluKHN0YXRpY19jYXN0PGZsb2F0PihyZWN0LmhlaWdodCgp
KSAvIHJhZGlpU3VtLCBmYWN0b3IpOworICAgICAgICBmYWN0b3IgPSBzdGQ6Om1pbihzdGF0aWNf
Y2FzdDxmbG9hdD4ocmVjdC5oZWlnaHQoKSkgLyByYWRpaVN1bSwgZmFjdG9yKTsKICAgICAKICAg
ICBBU1NFUlQoZmFjdG9yIDw9IDEpOwogICAgIHJldHVybiBmYWN0b3I7CkBAIC0xNDQyLDcgKzE0
NDAsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRGb250U2l6ZShmbG9hdCBzaXplKQogICAgIGlm
ICghc3RkOjppc2Zpbml0ZShzaXplKSB8fCBzaXplIDwgMCkKICAgICAgICAgc2l6ZSA9IDA7CiAg
ICAgZWxzZQotICAgICAgICBzaXplID0gbWluKG1heGltdW1BbGxvd2VkRm9udFNpemUsIHNpemUp
OworICAgICAgICBzaXplID0gc3RkOjptaW4obWF4aW11bUFsbG93ZWRGb250U2l6ZSwgc2l6ZSk7
CiAKICAgICBGb250U2VsZWN0b3IqIGN1cnJlbnRGb250U2VsZWN0b3IgPSBmb250KCkuZm9udFNl
bGVjdG9yKCk7CiAgICAgRm9udERlc2NyaXB0aW9uIGRlc2MoZm9udERlc2NyaXB0aW9uKCkpOwpA
QCAtMTQ3MywxMCArMTQ3MSwxMCBAQCB2b2lkIFJlbmRlclN0eWxlOjpnZXRTaGFkb3dFeHRlbnQo
Y29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBMYXlvdXRVbml0ICZ0b3AsIExheQogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgaW50IGV4dGVudEFuZFNwcmVhZCA9IHNoYWRvdy0+cGFp
bnRpbmdFeHRlbnQoKSArIHNoYWRvdy0+c3ByZWFkKCk7Ci0gICAgICAgIHRvcCA9IG1pbjxMYXlv
dXRVbml0Pih0b3AsIHNoYWRvdy0+eSgpIC0gZXh0ZW50QW5kU3ByZWFkKTsKLSAgICAgICAgcmln
aHQgPSBtYXg8TGF5b3V0VW5pdD4ocmlnaHQsIHNoYWRvdy0+eCgpICsgZXh0ZW50QW5kU3ByZWFk
KTsKLSAgICAgICAgYm90dG9tID0gbWF4PExheW91dFVuaXQ+KGJvdHRvbSwgc2hhZG93LT55KCkg
KyBleHRlbnRBbmRTcHJlYWQpOwotICAgICAgICBsZWZ0ID0gbWluPExheW91dFVuaXQ+KGxlZnQs
IHNoYWRvdy0+eCgpIC0gZXh0ZW50QW5kU3ByZWFkKTsKKyAgICAgICAgdG9wID0gc3RkOjptaW48
TGF5b3V0VW5pdD4odG9wLCBzaGFkb3ctPnkoKSAtIGV4dGVudEFuZFNwcmVhZCk7CisgICAgICAg
IHJpZ2h0ID0gc3RkOjptYXg8TGF5b3V0VW5pdD4ocmlnaHQsIHNoYWRvdy0+eCgpICsgZXh0ZW50
QW5kU3ByZWFkKTsKKyAgICAgICAgYm90dG9tID0gc3RkOjptYXg8TGF5b3V0VW5pdD4oYm90dG9t
LCBzaGFkb3ctPnkoKSArIGV4dGVudEFuZFNwcmVhZCk7CisgICAgICAgIGxlZnQgPSBzdGQ6Om1p
bjxMYXlvdXRVbml0PihsZWZ0LCBzaGFkb3ctPngoKSAtIGV4dGVudEFuZFNwcmVhZCk7CiAgICAg
fQogfQogCkBAIC0xNDkyLDEwICsxNDkwLDEwIEBAIExheW91dEJveEV4dGVudCBSZW5kZXJTdHls
ZTo6Z2V0U2hhZG93SW5zZXRFeHRlbnQoY29uc3QgU2hhZG93RGF0YSogc2hhZG93KSBjb25zCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpbnQgZXh0ZW50QW5kU3ByZWFkID0gc2hh
ZG93LT5wYWludGluZ0V4dGVudCgpICsgc2hhZG93LT5zcHJlYWQoKTsKLSAgICAgICAgdG9wID0g
bWF4PExheW91dFVuaXQ+KHRvcCwgc2hhZG93LT55KCkgKyBleHRlbnRBbmRTcHJlYWQpOwotICAg
ICAgICByaWdodCA9IG1pbjxMYXlvdXRVbml0PihyaWdodCwgc2hhZG93LT54KCkgLSBleHRlbnRB
bmRTcHJlYWQpOwotICAgICAgICBib3R0b20gPSBtaW48TGF5b3V0VW5pdD4oYm90dG9tLCBzaGFk
b3ctPnkoKSAtIGV4dGVudEFuZFNwcmVhZCk7Ci0gICAgICAgIGxlZnQgPSBtYXg8TGF5b3V0VW5p
dD4obGVmdCwgc2hhZG93LT54KCkgKyBleHRlbnRBbmRTcHJlYWQpOworICAgICAgICB0b3AgPSBz
dGQ6Om1heDxMYXlvdXRVbml0Pih0b3AsIHNoYWRvdy0+eSgpICsgZXh0ZW50QW5kU3ByZWFkKTsK
KyAgICAgICAgcmlnaHQgPSBzdGQ6Om1pbjxMYXlvdXRVbml0PihyaWdodCwgc2hhZG93LT54KCkg
LSBleHRlbnRBbmRTcHJlYWQpOworICAgICAgICBib3R0b20gPSBzdGQ6Om1pbjxMYXlvdXRVbml0
Pihib3R0b20sIHNoYWRvdy0+eSgpIC0gZXh0ZW50QW5kU3ByZWFkKTsKKyAgICAgICAgbGVmdCA9
IHN0ZDo6bWF4PExheW91dFVuaXQ+KGxlZnQsIHNoYWRvdy0+eCgpICsgZXh0ZW50QW5kU3ByZWFk
KTsKICAgICB9CiAKICAgICByZXR1cm4gTGF5b3V0Qm94RXh0ZW50KHRvcCwgcmlnaHQsIGJvdHRv
bSwgbGVmdCk7CkBAIC0xNTExLDggKzE1MDksOCBAQCB2b2lkIFJlbmRlclN0eWxlOjpnZXRTaGFk
b3dIb3Jpem9udGFsRXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgTGF5b3V0VW5pdAog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaW50IGV4dGVudEFuZFNwcmVhZCA9IHNo
YWRvdy0+cGFpbnRpbmdFeHRlbnQoKSArIHNoYWRvdy0+c3ByZWFkKCk7Ci0gICAgICAgIGxlZnQg
PSBtaW48TGF5b3V0VW5pdD4obGVmdCwgc2hhZG93LT54KCkgLSBleHRlbnRBbmRTcHJlYWQpOwot
ICAgICAgICByaWdodCA9IG1heDxMYXlvdXRVbml0PihyaWdodCwgc2hhZG93LT54KCkgKyBleHRl
bnRBbmRTcHJlYWQpOworICAgICAgICBsZWZ0ID0gc3RkOjptaW48TGF5b3V0VW5pdD4obGVmdCwg
c2hhZG93LT54KCkgLSBleHRlbnRBbmRTcHJlYWQpOworICAgICAgICByaWdodCA9IHN0ZDo6bWF4
PExheW91dFVuaXQ+KHJpZ2h0LCBzaGFkb3ctPngoKSArIGV4dGVudEFuZFNwcmVhZCk7CiAgICAg
fQogfQogCkBAIC0xNTI2LDggKzE1MjQsOCBAQCB2b2lkIFJlbmRlclN0eWxlOjpnZXRTaGFkb3dW
ZXJ0aWNhbEV4dGVudChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIExheW91dFVuaXQgJgogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaW50IGV4dGVudEFuZFNwcmVhZCA9IHNoYWRv
dy0+cGFpbnRpbmdFeHRlbnQoKSArIHNoYWRvdy0+c3ByZWFkKCk7Ci0gICAgICAgIHRvcCA9IG1p
bjxMYXlvdXRVbml0Pih0b3AsIHNoYWRvdy0+eSgpIC0gZXh0ZW50QW5kU3ByZWFkKTsKLSAgICAg
ICAgYm90dG9tID0gbWF4PExheW91dFVuaXQ+KGJvdHRvbSwgc2hhZG93LT55KCkgKyBleHRlbnRB
bmRTcHJlYWQpOworICAgICAgICB0b3AgPSBzdGQ6Om1pbjxMYXlvdXRVbml0Pih0b3AsIHNoYWRv
dy0+eSgpIC0gZXh0ZW50QW5kU3ByZWFkKTsKKyAgICAgICAgYm90dG9tID0gc3RkOjptYXg8TGF5
b3V0VW5pdD4oYm90dG9tLCBzaGFkb3ctPnkoKSArIGV4dGVudEFuZFNwcmVhZCk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
LmNwcAppbmRleCBiNjhjZmVlNDY4NGUxZDc5ZjhhYTgwNDk1N2RmNWI3Y2MxZDRhZjkwLi4zMmI1
MTM3Zjc4NzY1Nzc2Zjk2OGRmYzkwNzQxZmZjNmQ2ZGQxZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAKQEAgLTM3LDggKzM3LDYg
QEAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBkZWZhdWx0U1ZHU3R5bGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCmluZGV4IGVkZDViMzc1NTc2MTgz
ZWY3M2E0MmY3NTNiODE5MWQwM2FhNjk0OWEuLmQ5MTA3M2JkNGEzYWJlNGEyMmVlOTZlYTM4YmM1
ZTIwYzBjODRhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
aGFkb3dEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93
RGF0YS5jcHAKQEAgLTI0LDggKzI0LDYgQEAKIAogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKIAot
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFkb3dEYXRh
OjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCkBAIC01OCwxMCArNTYsMTAgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGNhbGN1bGF0ZVNoYWRvd0V4dGVudChjb25zdCBTaGFkb3dEYXRhKiBz
aGFkb3csIGludCBhZGRpdGlvbmEKICAgICBkbyB7CiAgICAgICAgIGludCBleHRlbnRBbmRTcHJl
YWQgPSBzaGFkb3ctPnBhaW50aW5nRXh0ZW50KCkgKyBzaGFkb3ctPnNwcmVhZCgpICsgYWRkaXRp
b25hbE91dGxpbmVTaXplOwogICAgICAgICBpZiAoc2hhZG93LT5zdHlsZSgpID09IE5vcm1hbCkg
ewotICAgICAgICAgICAgc2hhZG93TGVmdCA9IG1pbihzaGFkb3ctPngoKSAtIGV4dGVudEFuZFNw
cmVhZCwgc2hhZG93TGVmdCk7Ci0gICAgICAgICAgICBzaGFkb3dSaWdodCA9IG1heChzaGFkb3ct
PngoKSArIGV4dGVudEFuZFNwcmVhZCwgc2hhZG93UmlnaHQpOwotICAgICAgICAgICAgc2hhZG93
VG9wID0gbWluKHNoYWRvdy0+eSgpIC0gZXh0ZW50QW5kU3ByZWFkLCBzaGFkb3dUb3ApOwotICAg
ICAgICAgICAgc2hhZG93Qm90dG9tID0gbWF4KHNoYWRvdy0+eSgpICsgZXh0ZW50QW5kU3ByZWFk
LCBzaGFkb3dCb3R0b20pOworICAgICAgICAgICAgc2hhZG93TGVmdCA9IHN0ZDo6bWluKHNoYWRv
dy0+eCgpIC0gZXh0ZW50QW5kU3ByZWFkLCBzaGFkb3dMZWZ0KTsKKyAgICAgICAgICAgIHNoYWRv
d1JpZ2h0ID0gc3RkOjptYXgoc2hhZG93LT54KCkgKyBleHRlbnRBbmRTcHJlYWQsIHNoYWRvd1Jp
Z2h0KTsKKyAgICAgICAgICAgIHNoYWRvd1RvcCA9IHN0ZDo6bWluKHNoYWRvdy0+eSgpIC0gZXh0
ZW50QW5kU3ByZWFkLCBzaGFkb3dUb3ApOworICAgICAgICAgICAgc2hhZG93Qm90dG9tID0gc3Rk
OjptYXgoc2hhZG93LT55KCkgKyBleHRlbnRBbmRTcHJlYWQsIHNoYWRvd0JvdHRvbSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBzaGFkb3cgPSBzaGFkb3ctPm5leHQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAK
aW5kZXggZDc4OGMxMWJlMGI3NjJiY2NjZmQ5YjIzOTYyZjc4ZDA2OWM5NjY5Yy4uOWY3NjkwOGUx
MWNlZjZkY2Q1NzY4ZjNlZjBiNjYzYTRkMjRmMThkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTUz
LDggKzUzLDYgQEAKICNpbmNsdWRlICJTb3VyY2VHcmFwaGljLmgiCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFJlbmRlclNWR1Jlc291cmNlVHlwZSBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6c19yZXNvdXJj
ZVR5cGUgPSBGaWx0ZXJSZXNvdXJjZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCBmMTI5Zjg2MTgwYzM5NDdiOGQ5MWExNzhjNTBl
NDRiMjk0OTExYmNjLi4zNGEzNWVlNzg3NzI4ZDcwNzk1OWQ4NTc4YzVjNjE3NzFjNzNlM2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAg
LTUzLDggKzUzLDYgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIgogI2Vu
ZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVu
ZGVyU1ZHUm9vdDo6UmVuZGVyU1ZHUm9vdChTVkdTVkdFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVm
PFJlbmRlclN0eWxlPiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR0lubGluZUZsb3dCb3guY3BwCmluZGV4IGExNGQ0ZGViNjdkZGNkNzQ0M2EwNDJlNmVmMmJi
NWMyZjYwYWEwMjEuLmE2ZTMyYzk1NjRmYzY0NWRmNmYyYjk5NDBjMGU0MDYzOWIxNDIzYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94LmNw
cApAQCAtMzEsOCArMzEsNiBAQAogI2luY2x1ZGUgIlNWR0lubGluZVRleHRCb3guaCIKICNpbmNs
dWRlICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBTVkdJbmxpbmVGbG93Qm94OjpwYWludFNlbGVjdGlv
bkJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8pCkBAIC0xMDQsOCArMTAyLDggQEAgdm9p
ZCBTVkdJbmxpbmVGbG93Qm94Ojpjb21wdXRlVGV4dE1hdGNoTWFya2VyUmVjdEZvclJlbmRlcmVy
KFJlbmRlclNWR0lubGluZVRleHQKIAogICAgICAgICAgICAgU1ZHSW5saW5lVGV4dEJveCogdGV4
dEJveCA9IHRvU1ZHSW5saW5lVGV4dEJveChib3gpOwogCi0gICAgICAgICAgICBpbnQgbWFya2Vy
U3RhcnRQb3NpdGlvbiA9IG1heDxpbnQ+KG1hcmtlci0+c3RhcnRPZmZzZXQoKSAtIHRleHRCb3gt
PnN0YXJ0KCksIDApOwotICAgICAgICAgICAgaW50IG1hcmtlckVuZFBvc2l0aW9uID0gbWluPGlu
dD4obWFya2VyLT5lbmRPZmZzZXQoKSAtIHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gtPmxlbigp
KTsKKyAgICAgICAgICAgIGludCBtYXJrZXJTdGFydFBvc2l0aW9uID0gc3RkOjptYXg8aW50Piht
YXJrZXItPnN0YXJ0T2Zmc2V0KCkgLSB0ZXh0Qm94LT5zdGFydCgpLCAwKTsKKyAgICAgICAgICAg
IGludCBtYXJrZXJFbmRQb3NpdGlvbiA9IHN0ZDo6bWluPGludD4obWFya2VyLT5lbmRPZmZzZXQo
KSAtIHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gtPmxlbigpKTsKIAogICAgICAgICAgICAgaWYg
KG1hcmtlclN0YXJ0UG9zaXRpb24gPj0gbWFya2VyRW5kUG9zaXRpb24pCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmNwcAppbmRleCAxMjg1NTE3OTBiZWU4MDc1ODE0YjNmZGI4MDBlYTc5YjMyYzlj
YTMyLi40ZDM4MTk2ZDA1ZjJkN2Y3YmU0NDIxYjU3NzI3ODJiN2E4ZDBlMzA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKQEAgLTQx
LDggKzQxLDYgQEAKICNpbmNsdWRlICJTVkdSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiU1ZH
VGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRXhwZWN0ZWRTVkdJbmxpbmVUZXh0Qm94U2l6ZSA6
IHB1YmxpYyBJbmxpbmVUZXh0Qm94IHsKQEAgLTEzMiw4ICsxMzAsOCBAQCBGbG9hdFJlY3QgU1ZH
SW5saW5lVGV4dEJveDo6c2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChjb25zdCBTVkdUZXh0
RnJhZ21lbnQmCiBMYXlvdXRSZWN0IFNWR0lubGluZVRleHRCb3g6OmxvY2FsU2VsZWN0aW9uUmVj
dChpbnQgc3RhcnRQb3NpdGlvbiwgaW50IGVuZFBvc2l0aW9uKSBjb25zdAogewogICAgIGludCBi
b3hTdGFydCA9IHN0YXJ0KCk7Ci0gICAgc3RhcnRQb3NpdGlvbiA9IG1heChzdGFydFBvc2l0aW9u
IC0gYm94U3RhcnQsIDApOwotICAgIGVuZFBvc2l0aW9uID0gbWluKGVuZFBvc2l0aW9uIC0gYm94
U3RhcnQsIHN0YXRpY19jYXN0PGludD4obGVuKCkpKTsKKyAgICBzdGFydFBvc2l0aW9uID0gc3Rk
OjptYXgoc3RhcnRQb3NpdGlvbiAtIGJveFN0YXJ0LCAwKTsKKyAgICBlbmRQb3NpdGlvbiA9IHN0
ZDo6bWluKGVuZFBvc2l0aW9uIC0gYm94U3RhcnQsIHN0YXRpY19jYXN0PGludD4obGVuKCkpKTsK
ICAgICBpZiAoc3RhcnRQb3NpdGlvbiA+PSBlbmRQb3NpdGlvbikKICAgICAgICAgcmV0dXJuIExh
eW91dFJlY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
TnVtYmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAKaW5k
ZXggYjcxM2JhMTdiYWU3ODcxZGE2NDVlNTcxNmQzNzlmNzI5ZTg3ZmQ2Yi4uM2UxNTg5YzAzMDQw
YzIzNGNhYjMyZTdlMzI5MmFkZTA2OWE4M2NmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXIuY3BwCkBAIC0yNSw4ICsyNSw2IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKIAotdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdBbmltYXRlZE51bWJlckFuaW1h
dG9yOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1h
dGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuY3BwCmluZGV4
IDc4MmJlMzQzMWE1MjYxMTE4YTU0ODgxMzVkMjQ2YzlmNTIyOWIxNjcuLmRjNzk5OGNmYjQ1ZDZl
OWJhM2NlMmY5ODVlMzY5MTRhMzgzODhiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5jcHAKQEAgLTI2LDggKzI2LDYg
QEAKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0
aWxpdGllcy5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFNWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXJBbmltYXRvcjo6U1ZHQW5pbWF0ZWRO
dW1iZXJPcHRpb25hbE51bWJlckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlv
bkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAppbmRleCBmYjQwODY3Njc0
YTc0OGRhM2RmZjdhMGYyNDI0N2Q0YzhmY2FkZjI2Li5iMTk4M2Y0MDkxNTM5NjQ4NWU0YTk5MTcw
MGI1MzNiMjI3Y2JkYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NNSUxUaW1lQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NNSUxUaW1lQ29udGFpbmVyLmNwcApAQCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgIlNWR1NW
R0VsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAotdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGFu
aW1hdGlvbkZyYW1lRGVsYXkgPSAwLjAyNTsKQEAgLTIxMyw3ICsyMTEsNyBAQCB2b2lkIFNNSUxU
aW1lQ29udGFpbmVyOjpzdGFydFRpbWVyKFNNSUxUaW1lIGZpcmVUaW1lLCBTTUlMVGltZSBtaW5p
bXVtRGVsYXkpCiAgICAgaWYgKCFmaXJlVGltZS5pc0Zpbml0ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTTUlMVGltZSBkZWxheSA9IG1heChmaXJlVGltZSAtIGVsYXBzZWQoKSwgbWluaW11
bURlbGF5KTsKKyAgICBTTUlMVGltZSBkZWxheSA9IHN0ZDo6bWF4KGZpcmVUaW1lIC0gZWxhcHNl
ZCgpLCBtaW5pbXVtRGVsYXkpOwogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KGRlbGF5LnZhbHVl
KCkpOwogfQogCkBAIC0zMDEsNyArMjk5LDcgQEAgdm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6dXBk
YXRlQW5pbWF0aW9ucyhTTUlMVGltZSBlbGFwc2VkLCBib29sIHNlZWtUb1RpbWUpCiAKICAgICAg
ICAgICAgIFNNSUxUaW1lIG5leHRGaXJlVGltZSA9IGFuaW1hdGlvbi0+bmV4dFByb2dyZXNzVGlt
ZSgpOwogICAgICAgICAgICAgaWYgKG5leHRGaXJlVGltZS5pc0Zpbml0ZSgpKQotICAgICAgICAg
ICAgICAgIGVhcmxpZXN0RmlyZVRpbWUgPSBtaW4obmV4dEZpcmVUaW1lLCBlYXJsaWVzdEZpcmVU
aW1lKTsKKyAgICAgICAgICAgICAgICBlYXJsaWVzdEZpcmVUaW1lID0gc3RkOjptaW4obmV4dEZp
cmVUaW1lLCBlYXJsaWVzdEZpcmVUaW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChyZXN1
bHRFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVt
ZW50LmNwcAppbmRleCAzNjZlYTlhMjI3OWI0NTZjNjNmZDdmZWVhMzQxMDQxOGIyZTc4YTMxLi43
ZDY0ZDcyY2Y3ZDViMmI5YjY0YjQyYjg0Y2I2YmFhMzQ0YmViOTkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtNDcsOCArNDcsNiBA
QAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIC8v
IFRoaXMgaXMgdXNlZCBmb3IgZHVyYXRpb24gdHlwZSB0aW1lIHZhbHVlcyB0aGF0IGNhbid0IGJl
IG5lZ2F0aXZlLgpAQCAtNjk4LDcgKzY5Niw3IEBAIFNNSUxUaW1lIFNWR1NNSUxFbGVtZW50Ojpt
aW5WYWx1ZSgpIGNvbnN0CiAgICAgICAgICAgICAgICAgIAogU01JTFRpbWUgU1ZHU01JTEVsZW1l
bnQ6OnNpbXBsZUR1cmF0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWluKGR1cigpLCBTTUlM
VGltZTo6aW5kZWZpbml0ZSgpKTsKKyAgICByZXR1cm4gc3RkOjptaW4oZHVyKCksIFNNSUxUaW1l
OjppbmRlZmluaXRlKCkpOwogfQogCiB2b2lkIFNWR1NNSUxFbGVtZW50OjphZGRCZWdpblRpbWUo
U01JTFRpbWUgZXZlbnRUaW1lLCBTTUlMVGltZSBiZWdpblRpbWUsIFNNSUxUaW1lV2l0aE9yaWdp
bjo6T3JpZ2luIG9yaWdpbikKQEAgLTc3NCw3ICs3NzIsNyBAQCBTTUlMVGltZSBTVkdTTUlMRWxl
bWVudDo6cmVwZWF0aW5nRHVyYXRpb24oKSBjb25zdAogICAgIGlmICghc2ltcGxlRHVyYXRpb24g
fHwgKHJlcGVhdER1ci5pc1VucmVzb2x2ZWQoKSAmJiByZXBlYXRDb3VudC5pc1VucmVzb2x2ZWQo
KSkpCiAgICAgICAgIHJldHVybiBzaW1wbGVEdXJhdGlvbjsKICAgICBTTUlMVGltZSByZXBlYXRD
b3VudER1cmF0aW9uID0gc2ltcGxlRHVyYXRpb24gKiByZXBlYXRDb3VudDsKLSAgICByZXR1cm4g
bWluKHJlcGVhdENvdW50RHVyYXRpb24sIG1pbihyZXBlYXREdXIsIFNNSUxUaW1lOjppbmRlZmlu
aXRlKCkpKTsKKyAgICByZXR1cm4gc3RkOjptaW4ocmVwZWF0Q291bnREdXJhdGlvbiwgc3RkOjpt
aW4ocmVwZWF0RHVyLCBTTUlMVGltZTo6aW5kZWZpbml0ZSgpKSk7CiB9CiAKIFNNSUxUaW1lIFNW
R1NNSUxFbGVtZW50OjpyZXNvbHZlQWN0aXZlRW5kKFNNSUxUaW1lIHJlc29sdmVkQmVnaW4sIFNN
SUxUaW1lIHJlc29sdmVkRW5kKSBjb25zdApAQCAtNzg3LDcgKzc4NSw3IEBAIFNNSUxUaW1lIFNW
R1NNSUxFbGVtZW50OjpyZXNvbHZlQWN0aXZlRW5kKFNNSUxUaW1lIHJlc29sdmVkQmVnaW4sIFNN
SUxUaW1lIHJlc29sCiAgICAgZWxzZSBpZiAoIXJlc29sdmVkRW5kLmlzRmluaXRlKCkpCiAgICAg
ICAgIHByZWxpbWluYXJ5QWN0aXZlRHVyYXRpb24gPSByZXBlYXRpbmdEdXJhdGlvbigpOwogICAg
IGVsc2UKLSAgICAgICAgcHJlbGltaW5hcnlBY3RpdmVEdXJhdGlvbiA9IG1pbihyZXBlYXRpbmdE
dXJhdGlvbigpLCByZXNvbHZlZEVuZCAtIHJlc29sdmVkQmVnaW4pOworICAgICAgICBwcmVsaW1p
bmFyeUFjdGl2ZUR1cmF0aW9uID0gc3RkOjptaW4ocmVwZWF0aW5nRHVyYXRpb24oKSwgcmVzb2x2
ZWRFbmQgLSByZXNvbHZlZEJlZ2luKTsKICAgICAKICAgICBTTUlMVGltZSBtaW5WYWx1ZSA9IHRo
aXMtPm1pblZhbHVlKCk7CiAgICAgU01JTFRpbWUgbWF4VmFsdWUgPSB0aGlzLT5tYXhWYWx1ZSgp
OwpAQCAtNzk3LDE0ICs3OTUsMTQgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnJlc29sdmVB
Y3RpdmVFbmQoU01JTFRpbWUgcmVzb2x2ZWRCZWdpbiwgU01JTFRpbWUgcmVzb2wKICAgICAgICAg
bWluVmFsdWUgPSAwOwogICAgICAgICBtYXhWYWx1ZSA9IFNNSUxUaW1lOjppbmRlZmluaXRlKCk7
CiAgICAgfQotICAgIHJldHVybiByZXNvbHZlZEJlZ2luICsgbWluKG1heFZhbHVlLCBtYXgobWlu
VmFsdWUsIHByZWxpbWluYXJ5QWN0aXZlRHVyYXRpb24pKTsKKyAgICByZXR1cm4gcmVzb2x2ZWRC
ZWdpbiArIHN0ZDo6bWluKG1heFZhbHVlLCBzdGQ6Om1heChtaW5WYWx1ZSwgcHJlbGltaW5hcnlB
Y3RpdmVEdXJhdGlvbikpOwogfQogCiB2b2lkIFNWR1NNSUxFbGVtZW50OjpyZXNvbHZlSW50ZXJ2
YWwoYm9vbCBmaXJzdCwgU01JTFRpbWUmIGJlZ2luUmVzdWx0LCBTTUlMVGltZSYgZW5kUmVzdWx0
KSBjb25zdAogewogICAgIC8vIFNlZSB0aGUgcHNldWRvY29kZSBpbiBodHRwOi8vd3d3LnczLm9y
Zy9UUi9TTUlMMy9zbWlsLXRpbWluZy5odG1sI3E5MC4KLSAgICBTTUlMVGltZSBiZWdpbkFmdGVy
ID0gZmlyc3QgPyAtbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSA6IG1faW50ZXJ2
YWxFbmQ7Ci0gICAgU01JTFRpbWUgbGFzdEludGVydmFsVGVtcEVuZCA9IG51bWVyaWNfbGltaXRz
PGRvdWJsZT46OmluZmluaXR5KCk7CisgICAgU01JTFRpbWUgYmVnaW5BZnRlciA9IGZpcnN0ID8g
LXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSA6IG1faW50ZXJ2YWxFbmQ7
CisgICAgU01JTFRpbWUgbGFzdEludGVydmFsVGVtcEVuZCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6aW5maW5pdHkoKTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBib29sIGVx
dWFsc01pbmltdW1PSyA9ICFmaXJzdCB8fCBtX2ludGVydmFsRW5kID4gbV9pbnRlcnZhbEJlZ2lu
OwogICAgICAgICBTTUlMVGltZSB0ZW1wQmVnaW4gPSBmaW5kSW5zdGFuY2VUaW1lKEJlZ2luLCBi
ZWdpbkFmdGVyLCBlcXVhbHNNaW5pbXVtT0spOwpAQCAtODQ4LDcgKzg0Niw3IEBAIHZvaWQgU1ZH
U01JTEVsZW1lbnQ6OnJlc29sdmVGaXJzdEludGVydmFsKCkKICAgICAgICAgbV9pbnRlcnZhbEJl
Z2luID0gYmVnaW47CiAgICAgICAgIG1faW50ZXJ2YWxFbmQgPSBlbmQ7CiAgICAgICAgIG5vdGlm
eURlcGVuZGVudHNJbnRlcnZhbENoYW5nZWQod2FzVW5yZXNvbHZlZCA/IE5ld0ludGVydmFsIDog
RXhpc3RpbmdJbnRlcnZhbCk7Ci0gICAgICAgIG1fbmV4dFByb2dyZXNzVGltZSA9IG1pbihtX25l
eHRQcm9ncmVzc1RpbWUsIG1faW50ZXJ2YWxCZWdpbik7CisgICAgICAgIG1fbmV4dFByb2dyZXNz
VGltZSA9IHN0ZDo6bWluKG1fbmV4dFByb2dyZXNzVGltZSwgbV9pbnRlcnZhbEJlZ2luKTsKIAog
ICAgICAgICBpZiAobV90aW1lQ29udGFpbmVyKQogICAgICAgICAgICAgbV90aW1lQ29udGFpbmVy
LT5ub3RpZnlJbnRlcnZhbHNDaGFuZ2VkKCk7CkBAIC04NjcsNyArODY1LDcgQEAgdm9pZCBTVkdT
TUlMRWxlbWVudDo6cmVzb2x2ZU5leHRJbnRlcnZhbChib29sIG5vdGlmeURlcGVuZGVudHMpCiAg
ICAgICAgIG1faW50ZXJ2YWxFbmQgPSBlbmQ7CiAgICAgICAgIGlmIChub3RpZnlEZXBlbmRlbnRz
KQogICAgICAgICAgICAgbm90aWZ5RGVwZW5kZW50c0ludGVydmFsQ2hhbmdlZChOZXdJbnRlcnZh
bCk7Ci0gICAgICAgIG1fbmV4dFByb2dyZXNzVGltZSA9IG1pbihtX25leHRQcm9ncmVzc1RpbWUs
IG1faW50ZXJ2YWxCZWdpbik7CisgICAgICAgIG1fbmV4dFByb2dyZXNzVGltZSA9IHN0ZDo6bWlu
KG1fbmV4dFByb2dyZXNzVGltZSwgbV9pbnRlcnZhbEJlZ2luKTsKICAgICB9CiB9CiAKQEAgLTEw
MDIsNyArMTAwMCw3IEBAIGZsb2F0IFNWR1NNSUxFbGVtZW50OjpjYWxjdWxhdGVBbmltYXRpb25Q
ZXJjZW50QW5kUmVwZWF0KFNNSUxUaW1lIGVsYXBzZWQsIHVuc2lnCiAKICAgICAgICAgZG91Ymxl
IHBlcmNlbnQgPSAobV9pbnRlcnZhbEVuZC52YWx1ZSgpIC0gbV9pbnRlcnZhbEJlZ2luLnZhbHVl
KCkpIC8gc2ltcGxlRHVyYXRpb24udmFsdWUoKTsKICAgICAgICAgcGVyY2VudCA9IHBlcmNlbnQg
LSBmbG9vcihwZXJjZW50KTsKLSAgICAgICAgaWYgKHBlcmNlbnQgPCBudW1lcmljX2xpbWl0czxm
bG9hdD46OmVwc2lsb24oKSB8fCAxIC0gcGVyY2VudCA8IG51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
ZXBzaWxvbigpKQorICAgICAgICBpZiAocGVyY2VudCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjplcHNpbG9uKCkgfHwgMSAtIHBlcmNlbnQgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6ZXBzaWxvbigpKQogICAgICAgICAgICAgcmV0dXJuIDEuMGY7CiAgICAgICAgIHJldHVybiBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHBlcmNlbnQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxU
cmVlVmlld2VyLmNwcAppbmRleCBmZDY0MDBkOTlkY2E1NTQwY2YwOTM1ZjVlZWNiMDQ1NWFiN2Uy
OGUzLi4xNjFkZDAxYWFhZWY3ZGM3MTUxYjJhZjRkYjE3ODMxMWQwN2ZmYTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MVHJlZVZpZXdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwCkBAIC00Myw4ICs0Myw2IEBACiAjaW5jbHVkZSAiWE1M
Vmlld2VyQ1NTLmgiCiAjaW5jbHVkZSAiWE1MVmlld2VySlMuaCIKIAotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBYTUxUcmVlVmlld2VyOjpYTUxUcmVlVmll
d2VyKERvY3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggY2Y0NDdhMjMxM2UwZmY5ZWEwZmU2MDc5ZjYwM2Yy
ZGUwODNhM2ZkNS4uM2E2MjkxYzQ0MWNiNjUwYTFjYWUyNThlMzIyMWFmOGI1MTU0MTAxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAg
LTYwLDggKzYwLDYgQEAKICNpbmNsdWRlICJTVkdTdHlsZUVsZW1lbnQuaCIKICNlbmRpZgogCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYjQwMmNmY2IxZmJlYzc4ZjEwY2RkODJj
YmIyMjM4N2RkMWI5ZGZiMy4uZDcwZjgzOGM1YTM5ZGZlY2MwOGIyYTdkMTNhNTYwNDU1ZTM2ZDZk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcApAQCAtNzMsOCArNzMsNiBAQAogI2luY2x1ZGUgPGxpYnhzbHQveHNs
dC5oPgogI2VuZGlmCiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIGlubGluZSBib29sIGhhc05vU3R5bGVJbmZvcm1hdGlvbihEb2N1bWVudCog
ZG9jdW1lbnQpCkBAIC0zNzYsNyArMzc0LDcgQEAgcHVibGljOgogICAgIGludCByZWFkT3V0Qnl0
ZXMoY2hhciogb3V0cHV0QnVmZmVyLCB1bnNpZ25lZCBhc2tlZFRvUmVhZCkKICAgICB7CiAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVzTGVmdCA9IG1fYnVmZmVyLnNpemUoKSAtIG1fY3VycmVudE9mZnNl
dDsKLSAgICAgICAgdW5zaWduZWQgbGVuVG9Db3B5ID0gbWluKGFza2VkVG9SZWFkLCBieXRlc0xl
ZnQpOworICAgICAgICB1bnNpZ25lZCBsZW5Ub0NvcHkgPSBzdGQ6Om1pbihhc2tlZFRvUmVhZCwg
Ynl0ZXNMZWZ0KTsKICAgICAgICAgaWYgKGxlblRvQ29weSkgewogICAgICAgICAgICAgbWVtY3B5
KG91dHB1dEJ1ZmZlciwgbV9idWZmZXIuZGF0YSgpICsgbV9jdXJyZW50T2Zmc2V0LCBsZW5Ub0Nv
cHkpOwogICAgICAgICAgICAgbV9jdXJyZW50T2Zmc2V0ICs9IGxlblRvQ29weTsK
</data>
<flag name="review"
          id="239511"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="239512"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>