<?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>122101</bug_id>
          
          <creation_ts>2013-09-30 05:06:07 -0700</creation_ts>
          <short_desc>Generate toCSSFooValue for CSSPrimitiveValue</short_desc>
          <delta_ts>2013-10-01 03:49:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934549</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-09-30 05:06:07 -0700</bug_when>
    <thetext>As a step of cleanup static_cast&lt;&gt; in CSSValues, this patch generates toCSSFooPrimitiveValue() in order to detect bad casts as well as improves code readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934552</commentid>
    <comment_count>1</comment_count>
      <attachid>212982</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-09-30 05:12:24 -0700</bug_when>
    <thetext>Created attachment 212982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934554</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-30 05:15:35 -0700</bug_when>
    <thetext>Attachment 212982 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/css/CSSFontSelector.cpp&apos;, u&apos;Source/WebCore/css/CSSImageGeneratorValue.cpp&apos;, u&apos;Source/WebCore/css/CSSImageSetValue.cpp&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/css/CSSPrimitiveValue.h&apos;, u&apos;Source/WebCore/css/CSSToStyleMap.cpp&apos;, u&apos;Source/WebCore/css/CSSValue.cpp&apos;, u&apos;Source/WebCore/css/DeprecatedStyleBuilder.cpp&apos;, u&apos;Source/WebCore/css/MediaList.cpp&apos;, u&apos;Source/WebCore/css/MediaQueryEvaluator.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSStyleSelector.cpp&apos;, u&apos;Source/WebCore/css/StylePropertySet.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/css/TransformFunctions.cpp&apos;, u&apos;Source/WebCore/css/ViewportStyleResolver.cpp&apos;, u&apos;Source/WebCore/css/WebKitCSSMatrix.cpp&apos;, u&apos;Source/WebCore/editing/ApplyStyleCommand.cpp&apos;, u&apos;Source/WebCore/editing/EditingStyle.cpp&apos;, u&apos;Source/WebCore/editing/markup.cpp&apos;]&quot; exit_code: 1
Source/WebCore/css/TransformFunctions.cpp:285:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 1 in 20 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>934876</commentid>
    <comment_count>3</comment_count>
      <attachid>213049</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-09-30 20:36:49 -0700</bug_when>
    <thetext>Created attachment 213049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934877</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-30 20:37:55 -0700</bug_when>
    <thetext>Attachment 213049 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/css/CSSFontSelector.cpp&apos;, u&apos;Source/WebCore/css/CSSGradientValue.cpp&apos;, u&apos;Source/WebCore/css/CSSImageGeneratorValue.cpp&apos;, u&apos;Source/WebCore/css/CSSImageSetValue.cpp&apos;, u&apos;Source/WebCore/css/CSSParser.cpp&apos;, u&apos;Source/WebCore/css/CSSPrimitiveValue.h&apos;, u&apos;Source/WebCore/css/CSSToStyleMap.cpp&apos;, u&apos;Source/WebCore/css/CSSValue.cpp&apos;, u&apos;Source/WebCore/css/DeprecatedStyleBuilder.cpp&apos;, u&apos;Source/WebCore/css/MediaList.cpp&apos;, u&apos;Source/WebCore/css/MediaQueryEvaluator.cpp&apos;, u&apos;Source/WebCore/css/SVGCSSStyleSelector.cpp&apos;, u&apos;Source/WebCore/css/StylePropertySet.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/css/TransformFunctions.cpp&apos;, u&apos;Source/WebCore/css/ViewportStyleResolver.cpp&apos;, u&apos;Source/WebCore/css/WebKitCSSMatrix.cpp&apos;, u&apos;Source/WebCore/editing/ApplyStyleCommand.cpp&apos;, u&apos;Source/WebCore/editing/EditingStyle.cpp&apos;, u&apos;Source/WebCore/editing/markup.cpp&apos;]&quot; exit_code: 1
Source/WebCore/css/TransformFunctions.cpp:285:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 1 in 21 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>934879</commentid>
    <comment_count>5</comment_count>
      <attachid>213051</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-09-30 21:05:00 -0700</bug_when>
    <thetext>Created attachment 213051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934954</commentid>
    <comment_count>6</comment_count>
      <attachid>213069</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-10-01 03:03:19 -0700</bug_when>
    <thetext>Created attachment 213069
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934962</commentid>
    <comment_count>7</comment_count>
      <attachid>213069</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-01 03:49:31 -0700</bug_when>
    <thetext>Comment on attachment 213069
Patch for landing

Clearing flags on attachment: 213069

Committed r156705: &lt;http://trac.webkit.org/changeset/156705&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934963</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-01 03:49:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212982</attachid>
            <date>2013-09-30 05:12:24 -0700</date>
            <delta_ts>2013-09-30 20:36:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122101-20130930211221.patch</filename>
            <type>text/plain</type>
            <size>87431</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA5OGEwMDEzOTUzNTky
ZWIzZmU3NGIyZmM2YTI2OTFlMTg5YzI2OS4uYTYyNjRlMGI2YTBiNDkzNTUyMjQ1NmVjZTViNDVl
OGI3ZDJiNTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0NiBAQAogMjAxMy0wOS0zMCAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCisgICAgICAgIEdlbmVyYXRl
IHRvQ1NTRm9vVmFsdWUgZm9yIENTU1ByaW1pdGl2ZVZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxMDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyBhIHN0ZXAgb2YgY2xlYW4tdXAgc3RhdGlj
X2Nhc3Q8PiBpbiBDU1NWYWx1ZXMsIHRoaXMgcGF0Y2ggZ2VuZXJhdGVzCisgICAgICAgIHRvQ1NT
Rm9vUHJpbWl0aXZlVmFsdWUoKSBpbiBvcmRlciB0byBkZXRlY3QgYmFkIGNhc3RzIGFzIHdlbGwg
YXMgaW1wcm92ZXMKKyAgICAgICAgY29kZSByZWFkYWJpbGl0eS4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VS
dWxlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzdWJpbWFnZUlzUGVuZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFnZUZvckNT
U1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpmaWxsSW1hZ2VTZXQpOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZTNWYWx1ZXNGaWxsUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlRmlsbFJlcGVhdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VSYWRpYWxHcmFkaWVudCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmg6CisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbEF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbENsaXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHls
ZU1hcDo6bWFwRmlsbENvbXBvc2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBGaWxsQmxlbmRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1h
cEZpbGxPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJl
cGVhdFgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFhQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxNYXNrU291cmNlVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EZWxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRmlsbE1vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUmVwZWF0KToKKyAg
ICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRl
c3Ryb3kpOgorICAgICAgICAqIGNzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEZWZhdWx0OjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlOdW1iZXI6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUF1dG86OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eUNsaXA6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQ
cm9wZXJ0eUNvbG9yOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlMZW5ndGg6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVN0
cmluZzo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Qm9yZGVy
UmFkaXVzOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb21w
dXRlTGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlG
b250OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250RmFt
aWx5OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6
ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFdlaWdo
dDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFZhcmlh
bnRMaWdhdHVyZXM6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0
eUNvdW50ZXI6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUN1
cnNvcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEFs
aWduOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0RGVj
b3JhdGlvbjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TWFy
cXVlZUluY3JlbWVudDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5TWFycXVlZVJlcGV0aXRpb246OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eU1hcnF1ZWVTcGVlZDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5VGV4dFVuZGVybGluZVBvc2l0aW9uOjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0OjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0Rm9ySU9TVGV4dEF1dG9zaXppbmc6OmFw
cGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0RW1waGFzaXNTdHls
ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5UmVzaXplOjph
cHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlWZXJ0aWNhbEFsaWdu
OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlab29tOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5OjphcHBseVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwUGF0aDo6YXBwbHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5U2hhcGU6OmFwcGx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUltYWdlUmVzb2x1dGlvbjo6YXBwbHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEluZGVudDo6YXBwbHlWYWx1
ZSk6CisgICAgICAgICogY3NzL01lZGlhTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBv
cnRNZWRpYVF1ZXJ5V2FybmluZ0lmTmVlZGVkKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2
YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpudW1iZXJWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcmllbnRhdGlvbk1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZXZhbFJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlX3BpeGVsX3JhdGlvTWVk
aWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHV0aW9uTWVkaWFGZWF0dXJl
RXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OnZpZXdfbW9kZU1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRl
ck1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAqIGNzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5U1ZHUHJvcGVydHkpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR3JpZFRyYWNrU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHcmlkVHJhY2tMaXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdyaWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpoYXNWYXJpYWJs
ZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3VzdG9tRmlsdGVy
QXJyYXlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cGFyc2VD
dXN0b21GaWx0ZXJDb2xvclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpwYXJzZUN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uV2l0aElubGluZVN5bnRheCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpj
cmVhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAgICAgKiBjc3MvVHJhbnNmb3JtRnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybXNGb3JWYWx1ZSk6CisgICAgICAgICog
Y3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9y
dFN0eWxlUmVzb2x2ZXI6OmdldFZpZXdwb3J0QXJndW1lbnRWYWx1ZSk6CisgICAgICAgICogY3Nz
L1dlYktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6
OnNldE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRTaXpl
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppZGVudGlmaWVyRm9yU3R5bGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxl
bWVudEVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjc3NWYWx1ZVRvUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmV4dHJh
Y3RGb250U2l6ZURlbHRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dGV4dERp
cmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5
QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVz
Rm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmxlZ2Fj
eUZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlv
bkZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNoYW5nZTo6ZXh0cmFjdFRl
eHRTdHlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udFdlaWdodElzQm9sZCk6CisgICAgICAg
IChXZWJDb3JlOjppc1RyYW5zcGFyZW50Q29sb3JWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9t
YXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9u
ZSk6CisKKzIwMTMtMDktMzAgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNv
bT4KKwogICAgICAgICBHZW5lcmF0ZSB0b0NTU0NhbGNWYWx1ZSBpbnN0ZWFkIG9mIHVzaW5nIG1h
bnVhbCBjYXN0IGZ1bmN0aW9uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjIwNTUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApp
bmRleCAxMmZmNThlNDE4MmIzNDcyNWQ4MTQ1ZDgyN2RmOWJlOTdkY2Y0YmE0Li5lODQzMTdkNjdh
MjU5NjBlOTg1NmZjMmExYmMwYmM4YjViNzdhMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjph
ZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAg
ICAgICAgaWYgKCFmb250U3R5bGUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
Zm9udFN0eWxlLmdldCgpKS0+Z2V0VmFsdWVJRCgpKSB7CisgICAgICAgIHN3aXRjaCAodG9DU1NQ
cmltaXRpdmVWYWx1ZShmb250U3R5bGUuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAg
Y2FzZSBDU1NWYWx1ZU5vcm1hbDoKICAgICAgICAgICAgIHRyYWl0c01hc2sgfD0gRm9udFN0eWxl
Tm9ybWFsTWFzazsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQg
Q1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2Uq
IGZvbnRGYWNlUnVsZSkKICAgICAgICAgaWYgKCFmb250V2VpZ2h0LT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KGZvbnRXZWlnaHQuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpIHsKKyAg
ICAgICAgc3dpdGNoICh0b0NTU1ByaW1pdGl2ZVZhbHVlKGZvbnRXZWlnaHQuZ2V0KCkpLT5nZXRW
YWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUJvbGQ6CiAgICAgICAgIGNhc2UgQ1NT
VmFsdWU3MDA6CiAgICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRXZWlnaHQ3MDBNYXNrOwpA
QCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUo
Y29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFudHM7ICsraSkg
ewotICAgICAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
cmlhbnRMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKS0+Z2V0VmFsdWVJRCgpKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFyaWFudExpc3QtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soaSkpLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlTm9ybWFsOgogICAgICAgICAgICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZv
bnRWYXJpYW50Tm9ybWFsTWFzazsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjQs
NyArMjY0LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBT
dHlsZVJ1bGVGb250RmFjZSogZm9udEZhY2VSdWxlKQogICAgIC8vIEhhc2ggdW5kZXIgZXZlcnkg
c2luZ2xlIGZhbWlseSBuYW1lLgogICAgIGludCBmYW1pbHlMZW5ndGggPSBmYW1pbHlMaXN0LT5s
ZW5ndGgoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZhbWlseUxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBpdGVtID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPihmYW1pbHlMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGl0ZW0gPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGZhbWlseUxpc3Qt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOwogICAgICAgICBTdHJpbmcgZmFtaWx5TmFtZTsK
ICAgICAgICAgaWYgKGl0ZW0tPmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgIGZhbWlseU5hbWUg
PSBpdGVtLT5nZXRTdHJpbmdWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
R2VuZXJhdG9yVmFsdWUuY3BwCmluZGV4IDc4NWY0Y2UwMDQ4YWI0Y2JjM2I2NTQ4OGU5NmI4ZWFm
ODkyZmI5NWYuLjE2OGQzYTc5ZjA1MGFmNDBlZWQ5OTQ5M2E2NTEwYTg1YmU5Mjg0NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKQEAgLTI0Miw3
ICsyNDIsNyBAQCBib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnN1YmltYWdlSXNQZW5kaW5n
KENTU1ZhbHVlKiB2YWx1ZSkKICAgICBpZiAodmFsdWUtPmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSo+KHZh
bHVlKS0+aXNQZW5kaW5nKCk7CiAKLSAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAm
JiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Z2V0VmFsdWVJRCgpID09
IENTU1ZhbHVlTm9uZSkKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNjks
NyArMjY5LDcgQEAgQ2FjaGVkSW1hZ2UqIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmNhY2hlZElt
YWdlRm9yQ1NTVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBDYWMKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUp
CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgdG9DU1NQcmltaXRpdmVWYWx1
ZSh2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5jcHAKaW5kZXggZDYzOTFjNjQwNGU4OTkzY2I3OGJkYjVmMjczYTM0Njg2NGVmNzk5
MC4uMjRhZTM4NTI0ODNmYzQ0MTM1ZDIxMmM0NTliMmE4ZmE2OWI0Yzk1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIENTU0lt
YWdlU2V0VmFsdWU6OmZpbGxJbWFnZVNldCgpCiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGkgPCBsZW5ndGgpOwogICAgICAgICBDU1NWYWx1ZSogc2NhbGVGYWN0b3JW
YWx1ZSA9IGl0ZW0oaSk7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KHNjYWxlRmFjdG9yVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAgICAgIGZsb2F0IHNj
YWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihzY2FsZUZhY3RvclZh
bHVlKS0+Z2V0RmxvYXRWYWx1ZSgpOworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHRvQ1NT
UHJpbWl0aXZlVmFsdWUoc2NhbGVGYWN0b3JWYWx1ZSktPmdldEZsb2F0VmFsdWUoKTsKIAogICAg
ICAgICBJbWFnZVdpdGhTY2FsZSBpbWFnZTsKICAgICAgICAgaW1hZ2UuaW1hZ2VVUkwgPSBpbWFn
ZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggYjA0NDYxMDMyZDE2MDM0ZGFiZGYz
NDFmMWE3ZmE0OTIyMWVjNDMwMS4uYjE1MDJiYWI5OTliMDQ0ZTEwNmFjNGRkNjdiYjU5OTg3YTg5
MjkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTEzODksNyArMTM4OSw3IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBib29sIHN0cmljdCkKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUp
OwogICAgIGlmICghcHJpbWl0aXZlVmFsdWUtPmlzUkdCQ29sb3IoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0xNTg3LDcgKzE1ODcsNyBAQCB2b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBibwog
ICAgIC8vIFRoaXMgcHJvcGVydHkgZG9lc24ndCBiZWxvbmcgdG8gYSBzaG9ydGhhbmQgb3IgaXMg
YSBDU1MgdmFyaWFibGUgKHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgbGF0ZXIpLgogICAgIGlmICgh
bV9jdXJyZW50U2hvcnRoYW5kCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCi0gICAgICAgIHx8
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUuZ2V0KCkpLT5pc1ZhcmlhYmxlTmFtZSgpKQorICAgICAgICB8fCAodmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSAmJiB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdldCgpKS0+
aXNWYXJpYWJsZU5hbWUoKSkKICNlbmRpZgogICAgICAgICApIHsKICAgICAgICAgbV9wYXJzZWRQ
cm9wZXJ0aWVzLmFwcGVuZChDU1NQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQsIGZh
bHNlLCBDU1NQcm9wZXJ0eUludmFsaWQsIG1faW1wbGljaXRTaG9ydGhhbmQgfHwgaW1wbGljaXQp
KTsKQEAgLTQxMjYsOCArNDEyNiw4IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTNWYWx1ZXNGaWxs
UG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiAgICAgICAg
IHZhbHVlMS5zd2FwKHZhbHVlMik7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGZpcnN0ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZTEuZ2V0
KCkpOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmQgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlMi5nZXQoKSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0
ID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZTEuZ2V0KCkpOworICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBzZWNvbmQgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlMi5nZXQoKSk7CiAgICAgaWRl
bnQxID0gZmlyc3QtPmdldFBhaXJWYWx1ZSgpLT5maXJzdCgpLT5nZXRWYWx1ZUlEKCk7CiAgICAg
aWRlbnQyID0gc2Vjb25kLT5nZXRQYWlyVmFsdWUoKS0+Zmlyc3QoKS0+Z2V0VmFsdWVJRCgpOwog
ICAgIEFTU0VSVChpZGVudDEgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkZW50MSA9PSBDU1NWYWx1ZVJp
Z2h0KTsKQEAgLTQxODcsOCArNDE4Nyw4IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZUZpbGxQb3Np
dGlvbihDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCwgUmVmUHRyPENTU1ZhbHVlCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNl
ZFZhbHVlMSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUxLmdldCgpKTsK
LSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlZFZhbHVlMiA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUyLmdldCgpKTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHBhcnNlZFZhbHVlMSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUxLmdldCgp
KTsKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlZFZhbHVlMiA9IHRvQ1NTUHJp
bWl0aXZlVmFsdWUodmFsdWUyLmdldCgpKTsKIAogICAgIHZhbHVlMS5jbGVhcigpOwogICAgIHZh
bHVlMi5jbGVhcigpOwpAQCAtNDI4NSw3ICs0Mjg1LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNl
RmlsbFJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTEsIFJlZlB0cjxDU1NWYWx1ZT4mIHZh
bHUKIAogICAgIC8vIElmIG9ubHkgb25lIHZhbHVlIHdhcyBzcGVjaWZpZWQsIHZhbHVlMiBpcyB0
aGUgc2FtZSBhcyB2YWx1ZTEuCiAgICAgbV9pbXBsaWNpdFNob3J0aGFuZCA9IHRydWU7Ci0gICAg
dmFsdWUyID0gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUxLmdldCgpKS0+Z2V0VmFsdWVJRCgpKTsKKyAgICB2
YWx1ZTIgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUodG9DU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZTEuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpOwogfQogCiBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJv
b2wmIGFsbG93Q29tbWEpCkBAIC03NzA5LDExICs3NzA5LDExIEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlz
dCwgUmVmCiAgICAgQVNTRVJUKCFjZW50ZXJYIHx8IGNlbnRlclgtPmlzUHJpbWl0aXZlVmFsdWUo
KSk7CiAgICAgQVNTRVJUKCFjZW50ZXJZIHx8IGNlbnRlclktPmlzUHJpbWl0aXZlVmFsdWUoKSk7
CiAKLSAgICByZXN1bHQtPnNldEZpcnN0WChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KGNlbnRlclguZ2V0KCkpKTsKLSAgICByZXN1bHQtPnNldFNlY29uZFgoc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihjZW50ZXJYLmdldCgpKSk7CisgICAgcmVzdWx0LT5zZXRGaXJzdFgo
dG9DU1NQcmltaXRpdmVWYWx1ZShjZW50ZXJYLmdldCgpKSk7CisgICAgcmVzdWx0LT5zZXRTZWNv
bmRYKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWC5nZXQoKSkpOwogICAgIC8vIENTUzMgcmFk
aWFsIGdyYWRpZW50cyBhbHdheXMgc2hhcmUgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBwb2ludC4K
LSAgICByZXN1bHQtPnNldEZpcnN0WShzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNl
bnRlclkuZ2V0KCkpKTsKLSAgICByZXN1bHQtPnNldFNlY29uZFkoc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihjZW50ZXJZLmdldCgpKSk7CisgICAgcmVzdWx0LT5zZXRGaXJzdFkodG9D
U1NQcmltaXRpdmVWYWx1ZShjZW50ZXJZLmdldCgpKSk7CisgICAgcmVzdWx0LT5zZXRTZWNvbmRZ
KHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWS5nZXQoKSkpOwogCiAgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBzaGFwZVZhbHVlOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
c2l6ZVZhbHVlOwpAQCAtNzk3MywxMSArNzk3MywxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VS
YWRpYWxHcmFkaWVudChDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCwgUmVmUHRyPENTU1Zh
bAogICAgICAgICBhID0gYXJncy0+Y3VycmVudCgpOwogICAgICAgICBpZiAoIWEpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RYKHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oY2VudGVyWC5nZXQoKSkpOwotICAgICAgICByZXN1bHQtPnNl
dEZpcnN0WShzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNlbnRlclkuZ2V0KCkpKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFgodG9DU1NQcmltaXRpdmVWYWx1ZShjZW50ZXJYLmdl
dCgpKSk7CisgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RZKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2Vu
dGVyWS5nZXQoKSkpOwogICAgICAgICAvLyBSaWdodCBub3csIENTUyByYWRpYWwgZ3JhZGllbnRz
IGhhdmUgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCBjZW50ZXJzLgotICAgICAgICByZXN1bHQtPnNl
dFNlY29uZFgoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjZW50ZXJYLmdldCgpKSk7
Ci0gICAgICAgIHJlc3VsdC0+c2V0U2Vjb25kWShzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KGNlbnRlclkuZ2V0KCkpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTZWNvbmRYKHRvQ1NTUHJp
bWl0aXZlVmFsdWUoY2VudGVyWC5nZXQoKSkpOworICAgICAgICByZXN1bHQtPnNldFNlY29uZFko
dG9DU1NQcmltaXRpdmVWYWx1ZShjZW50ZXJZLmdldCgpKSk7CiAgICAgfQogCiAgICAgaWYgKHNo
YXBlVmFsdWUgfHwgc2l6ZVZhbHVlIHx8IGhvcml6b250YWxTaXplIHx8IGNlbnRlclggfHwgY2Vu
dGVyWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggYmZhMzMxNTNi
NDZlMDdiYjVlYWM2MDc1YTAyYzBlMmZkNGUxNTdmYS4uYWM3ODAzODYxYjU0MzJjN2E1OGMzNGY5
YzA0YWIwMzBjMDYwZDI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgK
QEAgLTQwMSwxNyArNDAxLDggQEAgcHJpdmF0ZToKICAgICB9IG1fdmFsdWU7CiB9OwogCi1pbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWUqIHRvQ1NTUHJpbWl0aXZlVmFsdWUoQ1NTVmFsdWUqIHZhbHVl
KQotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCF2YWx1ZSB8fCB2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7Ci19CitDU1NfVkFMVUVfVFlQRV9DQVNUUyhQcmltaXRpdmVWYWx1
ZSkKIAotaW5saW5lIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKiB0b0NTU1ByaW1pdGl2ZVZhbHVl
KGNvbnN0IENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTighdmFsdWUgfHwgdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NU
b1N0eWxlTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAppbmRl
eCA3MmZiOTg0MTgzZDFhMTZhMDcwMGI1MWQ3ODQxMmJiYzljYjk4M2M4Li4wYmFjYTczMGVmYmI4
YzM5MDgyMjVjOTc1OTA5ZmIwMjNkNWFkOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVG9TdHlsZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVN
YXAuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbEF0dGFj
aG1lbnQoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqCiAgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5n
ZXRWYWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlRml4ZWQ6CiAgICAgICAgIGxheWVyLT5z
ZXRBdHRhY2htZW50KEZpeGVkQmFja2dyb3VuZEF0dGFjaG1lbnQpOwpAQCAtOTcsNyArOTcsNyBA
QCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxDbGlwKENTU1Byb3BlcnR5SUQsIEZpbGxMYXll
ciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSk7CiAgICAgbGF5ZXItPnNldENsaXAoKnByaW1pdGl2ZVZhbHVlKTsKIH0KIApAQCAtMTExLDcg
KzExMSw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbENvbXBvc2l0ZShDU1NQcm9wZXJ0
eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSoKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwor
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFs
dWUodmFsdWUpOwogICAgIGxheWVyLT5zZXRDb21wb3NpdGUoKnByaW1pdGl2ZVZhbHVlKTsKIH0K
IApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbEJsZW5kTW9k
ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSoKICAgICBpZiAoIXZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NT
UHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIGxheWVyLT5zZXRCbGVuZE1vZGUoKnByaW1pdGl2
ZVZhbHVlKTsKIH0KIApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFw
RmlsbE9yaWdpbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFs
CiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBsYXllci0+c2V0T3JpZ2lu
KCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIENTU1RvU3R5
bGVNYXA6Om1hcEZpbGxSZXBlYXRYKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENT
U1ZhbHVlKiB2YQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgbGF5ZXIt
PnNldFJlcGVhdFgoKnByaW1pdGl2ZVZhbHVlKTsKIH0KIApAQCAtMTc4LDcgKzE3OCw3IEBAIHZv
aWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVy
KiBsYXllciwgQ1NTVmFsdWUqIHZhCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsK
ICAgICBsYXllci0+c2V0UmVwZWF0WSgqcHJpbWl0aXZlVmFsdWUpOwogfQogCkBAIC0xODksNyAr
MTg5LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlELCBG
aWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ29udGFpbikKICAgICAgICAgbGF5ZXItPnNl
dFNpemVUeXBlKENvbnRhaW4pOwogICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVDb3ZlcikKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIENTU1RvU3R5
bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24oQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5
ZXIqIGxheWVyLAogCiAgICAgZmxvYXQgem9vbUZhY3RvciA9IHN0eWxlKCktPmVmZmVjdGl2ZVpv
b20oKTsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIFBhaXIqIHBh
aXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CiAgICAgaWYgKHBhaXIpIHsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChwcm9wZXJ0eUlELCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uWCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWCk7CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBG
aWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwK
IAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CiAKLSAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBQYWlyKiBwYWlyID0gcHJpbWl0
aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOwogICAgIGlmIChwYWlyKSB7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQocHJvcGVydHlJRCwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvblkgfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkp
OwpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbE1hc2tTb3Vy
Y2VUeXBlKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhCiAgICAgaWYgKCF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRW
YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlQWxwaGE6CiAgICAgICAgIHR5cGUgPSBFTWFz
a1NvdXJjZVR5cGU6Ok1hc2tBbHBoYTsKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIENTU1RvU3R5
bGVNYXA6Om1hcEFuaW1hdGlvbkRlbGF5KEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZSog
dmFsdWUpCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBhbmltYXRpb24t
PnNldERlbGF5KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlVGltZTxkb3VibGUsIENTU1ByaW1pdGl2
ZVZhbHVlOjpTZWNvbmRzPigpKTsKIH0KIApAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgQ1NTVG9T
dHlsZU1hcDo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uKEFuaW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVl
KiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIHN3aXRjaCAo
cHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6
CiAgICAgICAgIGxheWVyLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rp
b25Ob3JtYWwpOwpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5p
bWF0aW9uRHVyYXRpb24oQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRp
b24ocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVUaW1lPGRvdWJsZSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OlNlY29uZHM+KCkpOwogfQogCkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25GaWxsTW9kZShBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUp
CiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBzd2l0Y2ggKHByaW1pdGl2
ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKICAgICAgICAg
bGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlTm9uZSk7CkBAIC00MjMsNyArNDIz
LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25JdGVyYXRpb25Db3VudChBbmlt
YXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHYKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUo
dmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
SW5maW5pdGUpCiAgICAgICAgIGFuaW1hdGlvbi0+c2V0SXRlcmF0aW9uQ291bnQoQW5pbWF0aW9u
OjpJdGVyYXRpb25Db3VudEluZmluaXRlKTsKICAgICBlbHNlCkBAIC00NDAsNyArNDQwLDcgQEAg
dm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25OYW1lKEFuaW1hdGlvbiogbGF5ZXIsIENT
U1ZhbHVlKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAg
bGF5ZXItPnNldElzTm9uZUFuaW1hdGlvbih0cnVlKTsKICAgICBlbHNlCkBAIC00NTcsNyArNDU3
LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdGUoQW5pbWF0aW9u
KiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSk7CiAgICAgRUFuaW1QbGF5U3RhdGUgcGxheVN0YXRlID0gKHByaW1pdGl2ZVZhbHVlLT5nZXRW
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVQYXVzZWQpID8gQW5pbVBsYXlTdGF0ZVBhdXNlZCA6IEFuaW1Q
bGF5U3RhdGVQbGF5aW5nOwogICAgIGxheWVyLT5zZXRQbGF5U3RhdGUocGxheVN0YXRlKTsKIH0K
QEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblByb3Bl
cnR5KEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUFsbCkgewogICAgICAgICBhbmltYXRpb24tPnNldEFuaW1hdGlvbk1vZGUo
QW5pbWF0aW9uOjpBbmltYXRlQWxsKTsKICAgICAgICAgYW5pbWF0aW9uLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUludmFsaWQpOwpAQCAtNDk0LDcgKzQ5NCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1h
cDo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1Zh
bHVlKiB2CiAgICAgfQogCiAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBzd2l0Y2gg
KHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUxp
bmVhcjoKICAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oTGluZWFyVGlt
aW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsKQEAgLTYzNyw3ICs2MzcsNyBAQCBMZW5ndGhCb3ggQ1NT
VG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKENTU1ZhbHVlKiB2YWx1ZSkKICAgICBm
bG9hdCB6b29tID0gdXNlU1ZHWm9vbVJ1bGVzKCkgPyAxLjBmIDogc3R5bGUoKS0+ZWZmZWN0aXZl
Wm9vbSgpOwogCiAgICAgLy8gUmV0cmlldmUgdGhlIHByaW1pdGl2ZSB2YWx1ZS4KLSAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogYm9yZGVyV2lkdGhzID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvcmRlcldpZHRocyA9IHRvQ1NT
UHJpbWl0aXZlVmFsdWUodmFsdWUpOwogCiAgICAgLy8gU2V0IHVwIGEgbGVuZ3RoIGJveCB0byBy
ZXByZXNlbnQgb3VyIGltYWdlIHNsaWNlcy4KICAgICBMZW5ndGhCb3ggYm94OyAvLyBEZWZhdWx0
cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgdGhhdCBleHBsaWNpdGx5IGJl
bG93LgpAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNl
SW1hZ2VSZXBlYXQoQ1NTVmFsdWUqIHZhbHVlLCBOaW5lUGllY2VJbWFnZSYgaW1hCiAgICAgaWYg
KCF2YWx1ZSB8fCAhdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgUGFpciogcGFpciA9IHBy
aW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZp
cnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmNwcAppbmRleCAyMDQ5NTM4MmViMDg3MDY4Yzc2NGUyYTI4NDE0NDJhYzQzYTE0ZjI4Li5i
ZTkyMjYwNjIwODNmOGQ3MWMzMTUwMWYxNTg2YzVjOGY4ZDgzNGY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZS5jcHAKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIENTU1ZhbHVlOjpkZXN0cm95KCkKICAg
ICAgICAgZGVsZXRlIHRvQ1NTSW5pdGlhbFZhbHVlKHRoaXMpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBQcmltaXRpdmVDbGFzczoKLSAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odGhpcyk7CisgICAgICAgIGRlbGV0ZSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBSZWZsZWN0Q2xhc3M6CiAgICAgICAg
IGRlbGV0ZSB0b0NTU1JlZmxlY3RWYWx1ZSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
ZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAppbmRleCA1Yzg4N2Y3OWZlZWMxMjgyY2ViYjQwYmUw
OThiZGM3ZTc0NzA3ZTQ0Li5mNmZlNGZiZjUzMThhNjg0NGFmNmRhOWIyNzllNzNlMTM0YTIwOWRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCkBA
IC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NT
UHJvcGVydHlJRCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVl
KQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAg
ICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCAqc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSkpOworICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZl
ci0+c3R5bGUoKSwgKnRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpKTsKICAgICB9CiAgICAgc3Rh
dGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKICAgICB7CkBAIC0xNjcsNyArMTY3
LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUo
dmFsdWUpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBpZE1h
cHNUb01pbnVzT25lKQogICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUo
KSwgLTEpOwogICAgICAgICBlbHNlCkBAIC0yMTUsNyArMjE1LDcgQEAgcHVibGljOgogICAgICAg
ICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBhdXRvSWRlbnRpdHkpCiAgICAgICAgICAg
ICBzZXRBdXRvKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkpOwogICAgICAgICBlbHNlIGlmICh2YWx1
ZVR5cGUgPT0gTnVtYmVyKQpAQCAtMjU0LDcgKzI1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgICAgICBpZiAoUmVj
dCogcmVjdCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRSZWN0VmFsdWUoKSkgewogICAgICAgICAgICAg
TGVuZ3RoIHRvcCA9IGNvbnZlcnRUb0xlbmd0aChzdHlsZVJlc29sdmVyLCByZWN0LT50b3AoKSk7
CkBAIC0zMDAsNyArMzAwLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NT
UHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAoaW5oZXJpdENvbG9yRnJvbVBhcmVu
dCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ3VycmVudGNvbG9y
KQogICAgICAgICAgICAgYXBwbHlJbmhlcml0VmFsdWUocHJvcGVydHlJRCwgc3R5bGVSZXNvbHZl
cik7CiAgICAgICAgIGVsc2UgewpAQCAtMzYxLDcgKzM2MSw3IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgaWYgKG5v
bmVFbmFibGVkICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25l
KSB7CiAgICAgICAgICAgICBpZiAobm9uZVVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICBzZXRW
YWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBMZW5ndGgoVW5kZWZpbmVkKSk7CkBAIC00MTUs
NyArNDE1LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmlt
aXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGlmICgoaWRlbnRCZWhhdmlvciA9PSBNYXBOb25l
VG9OdWxsICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQog
ICAgICAgICAgICAgfHwgKGlkZW50QmVoYXZpb3IgPT0gTWFwQXV0b1RvTnVsbCAmJiBwcmltaXRp
dmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykpCiAgICAgICAgICAgICBzZXRW
YWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBudWxsQXRvbSk7CkBAIC00MzgsNyArNDM4LDcg
QEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFs
dWUpOwogICAgICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgp
OwogICAgICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjAxLDcgKzYwMSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgICAgICBD
U1NWYWx1ZUlEIGlkZW50ID0gcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKTsKICAgICAgICAg
VCBsZW5ndGg7CkBAIC02NjEsNyArNjYxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIEZvbnREZXNjcmlw
dGlvbiBmb250RGVzY3JpcHRpb24gPSBzdHlsZVJlc29sdmVyLT5mb250RGVzY3JpcHRpb24oKTsK
ICAgICAgICAgKGZvbnREZXNjcmlwdGlvbi4qc2V0dGVyRnVuY3Rpb24pKCpwcmltaXRpdmVWYWx1
ZSk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3Jp
cHRpb24pOwpAQCAtNzE1LDcgKzcxNSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIENTU1ZhbHVl
KiBpdGVtID0gaS52YWx1ZSgpOwogICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogY29udGVudFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihp
dGVtKTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKGl0ZW0pOwogICAgICAgICAgICAgQXRvbWljU3RyaW5nIGZhY2U7CiAg
ICAgICAgICAgICBpZiAoY29udGVudFZhbHVlLT5pc1N0cmluZygpKQogICAgICAgICAgICAgICAg
IGZhY2UgPSBjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7CkBAIC04MjUsNyArODI1LDcg
QEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFs
dWUpOwogCiAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKTsKICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldEtleXdvcmRTaXplKDApOwpAQCAtODk5LDcgKzg5OSw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAg
ICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci0+Zm9udERl
c2NyaXB0aW9uKCk7CiAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQo
KSkgewogICAgICAgICBjYXNlIENTU1ZhbHVlSW52YWxpZDoKQEAgLTk2MCw3ICs5NjAsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSB2YWx1ZUxpc3QtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soaSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGl0ZW0tPmlzUHJp
bWl0aXZlVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGl0ZW0tPmlzUHJpbWl0aXZlVmFs
dWUoKSkgewotICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAg
ICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1p
dGl2ZVZhbHVlKGl0ZW0pOwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZh
bHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5v
Q29tbW9uTGlnYXR1cmVzOgogICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uTGlnYXR1cmVz
U3RhdGUgPSBGb250RGVzY3JpcHRpb246OkRpc2FibGVkTGlnYXR1cmVzU3RhdGU7CkBAIC05OTAs
NyArOTkwLDcgQEAgcHVibGljOgogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTih2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKKyAg
ICAgICAgICAgIEFTU0VSVCh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9ybWFsKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTExMzgsNyArMTEz
OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NQcm9w
ZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAg
ICAgewotICAgICAgICBib29sIHNldENvdW50ZXJJbmNyZW1lbnRUb05vbmUgPSBjb3VudGVyQmVo
YXZpb3IgPT0gSW5jcmVtZW50ICYmIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vbmU7CisgICAgICAgIGJvb2wgc2V0Q291bnRlckluY3JlbWVudFRvTm9uZSA9IGNvdW50ZXJC
ZWhhdmlvciA9PSBJbmNyZW1lbnQgJiYgdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZTsKIAog
ICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpICYmICFzZXRDb3VudGVySW5jcmVtZW50
VG9Ob25lKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE2Myw3ICsxMTYzLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgUGFpciogcGFpciA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY3VyclZhbHVlKS0+Z2V0UGFpclZhbHVlKCk7CisgICAg
ICAgICAgICBQYWlyKiBwYWlyID0gdG9DU1NQcmltaXRpdmVWYWx1ZShjdXJyVmFsdWUpLT5nZXRQ
YWlyVmFsdWUoKTsKICAgICAgICAgICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAh
cGFpci0+c2Vjb25kKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEyMTAsMTMg
KzEyMTAsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZl
ci0+c3R5bGUoKS0+c2V0VW5pcXVlKCk7CiAgICAgICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2
ZXItPnN0eWxlKCktPmFkZEN1cnNvcihzdHlsZVJlc29sdmVyLT5zdHlsZUltYWdlKENTU1Byb3Bl
cnR5Q3Vyc29yLCBpbWFnZSksIGltYWdlLT5ob3RTcG90KCkpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlbSk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNWYWx1ZUlEKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZh
bHVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+aXNWYWx1ZUlEKCkgJiYgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+Y3Vyc29yKCkgIT0gRUN1
cnNvcigqcHJpbWl0aXZlVmFsdWUpKQogICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0
eWxlKCktPnNldEN1cnNvcigqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICB9CkBAIC0xMjMyLDcg
KzEyMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZSk7CiAgICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS0+aXNWYWx1ZUlEKCkp
OwogCiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVl
V2Via2l0TWF0Y2hQYXJlbnQpCkBAIC0xMjU5LDcgKzEyNTksNyBAQCBwdWJsaWM6CiAgICAgICAg
IGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSh2YWx1ZSk7IGkuaGFzTW9yZSgpOyBpLmFkdmFu
Y2UoKSkgewogICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBpLnZhbHVlKCk7CiAgICAgICAg
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpdGVtLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpOwotICAgICAgICAgICAgdCB8PSAqc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
PihpdGVtKTsKKyAgICAgICAgICAgIHQgfD0gKnRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlbSk7CiAg
ICAgICAgIH0KICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dERlY29yYXRp
b24odCk7CiAgICAgfQpAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgcHVibGljOgogICAgICAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkgewogICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVW
YWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGw6CkBA
IC0xMzEyLDcgKzEzMTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlSW5maW5pdGUpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5z
dHlsZSgpLT5zZXRNYXJxdWVlTG9vcENvdW50KC0xKTsgLy8gLTEgbWVhbnMgcmVwZWF0IGZvcmV2
ZXIuCiAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc051bWJlcigpKQpAQCAtMTMz
Miw3ICsxMzMyLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0
aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAoQ1NTVmFsdWVJRCBpZGVudCA9IHByaW1pdGl2
ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoaWRlbnQpIHsKICAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTbG93OgpAQCAtMTM2Niw3ICsxMzY2LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgLy8gVGhpcyBpcyB0cnVlIGlmIHZhbHVlIGlzICdhdXRvJyBvciAn
YWxwaGFiZXRpYycuCiAgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0g
ICAgICAgICAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb24gdCA9ICpzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvbiB0
ID0gKnRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICAgICAgc3R5bGVSZXNvbHZl
ci0+c3R5bGUoKS0+c2V0VGV4dFVuZGVybGluZVBvc2l0aW9uKHQpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC0xMzc1LDcgKzEzNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZv
ciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSh2YWx1ZSk7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2Uo
KSkgewogICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBpLnZhbHVlKCk7CiAgICAgICAgICAg
ICBBU1NFUlQoaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgIFRleHRVbmRl
cmxpbmVQb3NpdGlvbiB0MiA9ICpzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0p
OworICAgICAgICAgICAgVGV4dFVuZGVybGluZVBvc2l0aW9uIHQyID0gKnRvQ1NTUHJpbWl0aXZl
VmFsdWUoaXRlbSk7CiAgICAgICAgICAgICB0IHw9IHQyOwogICAgICAgICB9CiAgICAgICAgIHN0
eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFRleHRVbmRlcmxpbmVQb3NpdGlvbihzdGF0aWNfY2Fz
dDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+KHQpKTsKQEAgLTEzOTUsNyArMTM5NSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAg
ICAgICAgTGVuZ3RoIGxpbmVIZWlnaHQ7CiAKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCkBAIC0xNDMzLDcgKzE0MzMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAg
ICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0OwogCiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKQEAgLTE1NzUsOCArMTU3NSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIC8vIDxsZW5ndGg+ezJ9IHwgPHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9u
PgogICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3IuZmlyc3QoKS0+aXNQcmltaXRpdmVWYWx1ZSgp
IHx8ICFpbnNwZWN0b3Iuc2Vjb25kKCktPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3QgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGluc3BlY3Rvci5maXJzdCgpKTsKLSAgICAgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KGluc3BlY3Rvci5zZWNvbmQoKSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogZmlyc3QgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGluc3BlY3Rvci5maXJzdCgpKTsKKyAgICAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmQgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGlu
c3BlY3Rvci5zZWNvbmQoKSk7CiAgICAgICAgICAgICBpZiAoZmlyc3QtPmlzTGVuZ3RoKCkpIHsK
ICAgICAgICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfQogICAgICAgICAgICAgICAgIGlmICghc2Vj
b25kLT5pc0xlbmd0aCgpKQpAQCAtMTU5Niw3ICsxNTk2LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgLy8gPGxlbmd0aD4gfCBhdXRvIHwgPHBhZ2Utc2l6ZT4gfCBbIHBvcnRyYWl0IHwgbGFuZHNj
YXBlXQogICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3IuZmlyc3QoKS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaW5z
cGVjdG9yLmZpcnN0KCkpOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpbnNwZWN0b3IuZmlyc3QoKSk7CiAgICAgICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAv
LyA8bGVuZ3RoPgogICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNP
TFZFRDsKQEAgLTE2NjAsNyArMTY2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAo
IWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiB2YWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlbSk7CiAgICAgICAgICAgICAg
ICAgaWYgKHZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaWxsZWQgfHwgdmFsdWUtPmdl
dFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU9wZW4pCiAgICAgICAgICAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXItPnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwoKnZhbHVlKTsKICAgICAgICAgICAg
ICAgICBlbHNlCkBAIC0xNjcyLDcgKzE2NzIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgaWYgKCF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAKICAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5pc1N0cmluZygpKSB7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgp
LT5zZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQpOwpAQCAtMTgwMSw3
ICsxODAxLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZl
VmFsdWUodmFsdWUpOwogCiAgICAgICAgIEVSZXNpemUgciA9IFJFU0laRV9OT05FOwogICAgICAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpIHsKQEAgLTE4MzEsNyArMTgz
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHZhbHVlKTsKIAogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkKICAg
ICAgICAgICAgIHJldHVybiBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRWZXJ0aWNhbEFsaWdu
KCpwcmltaXRpdmVWYWx1ZSk7CkBAIC0xOTA2LDcgKzE5MDYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgYXBwbHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTih2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogCiAgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKSB7CiAgICAgICAgICAgICByZXNl
dEVmZmVjdGl2ZVpvb20oc3R5bGVSZXNvbHZlcik7CkBAIC0xOTY3LDcgKzE5NjcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBFRGlzcGxheSBkaXNwbGF5ID0gKnN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBFRGlzcGxheSBkaXNwbGF5ID0gKnRvQ1NT
UHJpbWl0aXZlVmFsdWUodmFsdWUpOwogCiAgICAgICAgIGlmICghaXNWYWxpZERpc3BsYXlWYWx1
ZShzdHlsZVJlc29sdmVyLCBkaXNwbGF5KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5ODgs
NyArMTk4OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1Byb3Bl
cnR5SUQsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAg
ICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIDApOwogICAgICAgICAgICAg
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzU2hhcGUoKSkgewpAQCAtMjAxOSw3ICsyMDE5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eSwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAg
IHsKICAgICAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgICAg
ICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgMCk7CiAgICAgICAgICAgICAv
LyBGSVhNRSBCdWcgMTAyNTcxOiBMYXlvdXQgZm9yIHRoZSB2YWx1ZSAnb3V0c2lkZS1zaGFwZScg
aXMgbm90IHlldCBpbXBsZW1lbnRlZApAQCAtMjA3Miw3ICsyMDcyLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSB2YWx1ZUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soaSk7CiAgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAg
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2
ZVZhbHVlKGl0ZW0pOwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlE
KCkgPT0gQ1NTVmFsdWVGcm9tSW1hZ2UpCiAgICAgICAgICAgICAgICAgc291cmNlID0gSW1hZ2VS
ZXNvbHV0aW9uRnJvbUltYWdlOwogICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUt
PmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVNuYXApCkBAIC0yMTI4LDcgKzIxMjgsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZl
VmFsdWUoaXRlbSk7CiAgICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlE
KCkpCiAgICAgICAgICAgICAgICAgbGVuZ3RoT3JQZXJjZW50YWdlVmFsdWUgPSBwcmltaXRpdmVW
YWx1ZS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29u
dmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdlQ29udmVy
c2lvbj4oc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRT
dHlsZSgpLCBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwogI2lmIEVO
QUJMRShDU1MzX1RFWFQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCmluZGV4IGU3NzUwOTk5ZjE3
NmVjZjZkOGY5OGQ4ZmZjYjk3OTI1MDA1OGY5Y2IuLjllNGUwMTIxODgxOTk5ZmMyYTUxOTIzYjI2
YmY1YzUxNjU4NzhlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCkBAIC0zMzQsNyArMzM0
LDcgQEAgdm9pZCByZXBvcnRNZWRpYVF1ZXJ5V2FybmluZ0lmTmVlZGVkKERvY3VtZW50KiBkb2N1
bWVudCwgY29uc3QgTWVkaWFRdWVyeVNldCogbWUKICAgICAgICAgICAgICAgICBpZiAoZXhwLT5t
ZWRpYUZlYXR1cmUoKSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6cmVzb2x1dGlvbk1lZGlhRmVhdHVy
ZSB8fCBleHAtPm1lZGlhRmVhdHVyZSgpID09IE1lZGlhRmVhdHVyZU5hbWVzOjptYXhfcmVzb2x1
dGlvbk1lZGlhRmVhdHVyZSB8fCBleHAtPm1lZGlhRmVhdHVyZSgpID09IE1lZGlhRmVhdHVyZU5h
bWVzOjptaW5fcmVzb2x1dGlvbk1lZGlhRmVhdHVyZSkgewogICAgICAgICAgICAgICAgICAgICBD
U1NWYWx1ZSogY3NzVmFsdWUgPSAgZXhwLT52YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoY3NzVmFsdWUgJiYgY3NzVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjc3NWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZh
bHVlKGNzc1ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+aXNEb3RzUGVySW5jaCgpIHx8IHByaW1pdGl2ZVZhbHVlLT5pc0RvdHNQZXJDZW50aW1ldGVy
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkUmVzb2x1dGlvbldhcm5pbmdNZXNz
YWdlVG9Db25zb2xlKGRvY3VtZW50LCBtZWRpYVF1ZXJ5U2V0LT5tZWRpYVRleHQoKSwgcHJpbWl0
aXZlVmFsdWUpOwogICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggYzk3MzIzNWY0NDJiN2MwNzQwZTkwZThkN2I4NjRm
N2NmMzAxNTU4Yy4uYmI4MTBjZWE1NTM4NTQwZTNjYTc4Yjc1Nzg4N2E0ZjdjMzc1MWYzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtMTkyLDggKzE5
Miw4IEBAIHN0YXRpYyBib29sIGNvbXBhcmVBc3BlY3RSYXRpb1ZhbHVlKENTU1ZhbHVlKiB2YWx1
ZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBNZWRpCiBzdGF0aWMgYm9vbCBudW1iZXJWYWx1ZShD
U1NWYWx1ZSogdmFsdWUsIGZsb2F0JiByZXN1bHQpCiB7CiAgICAgaWYgKHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkKLSAgICAgICAgJiYgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSktPmlzTnVtYmVyKCkpIHsKLSAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpOworICAgICAgICAmJiB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+aXNOdW1i
ZXIoKSkgeworICAgICAgICByZXN1bHQgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0
RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDIsNyArMjQyLDcgQEAgc3Rh
dGljIGJvb2wgb3JpZW50YXRpb25NZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVu
ZGVyU3R5bGUqLCBGcmFtZSogZnIKICAgICBpbnQgd2lkdGggPSB2aWV3LT5sYXlvdXRXaWR0aCgp
OwogICAgIGludCBoZWlnaHQgPSB2aWV3LT5sYXlvdXRIZWlnaHQoKTsKICAgICBpZiAodmFsdWUg
JiYgdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICBjb25zdCBDU1NWYWx1ZUlE
IGlkID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQo
KTsKKyAgICAgICAgY29uc3QgQ1NTVmFsdWVJRCBpZCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFs
dWUpLT5nZXRWYWx1ZUlEKCk7CiAgICAgICAgIGlmICh3aWR0aCA+IGhlaWdodCkgLy8gU3F1YXJl
IHZpZXdwb3J0IGlzIHBvcnRyYWl0LgogICAgICAgICAgICAgcmV0dXJuIENTU1ZhbHVlTGFuZHNj
YXBlID09IGlkOwogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb3J0cmFpdCA9PSBpZDsKQEAgLTMw
NiwxOSArMzA2LDE5IEBAIHN0YXRpYyBib29sIGV2YWxSZXNvbHV0aW9uKENTU1ZhbHVlKiB2YWx1
ZSwgRnJhbWUqIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCiAgICAgaWYgKCF2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcmVzb2x1dGlvbiA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiByZXNvbHV0aW9uID0gdG9DU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZSk7CiAgICAgcmV0dXJuIGNvbXBhcmVWYWx1ZShkZXZpY2VTY2FsZUZhY3Rv
ciwgcmVzb2x1dGlvbi0+aXNOdW1iZXIoKSA/IHJlc29sdXRpb24tPmdldEZsb2F0VmFsdWUoKSA6
IHJlc29sdXRpb24tPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYKSwg
b3ApOwogfQogCiBzdGF0aWMgYm9vbCBkZXZpY2VfcGl4ZWxfcmF0aW9NZWRpYUZlYXR1cmVFdmFs
KENTU1ZhbHVlICp2YWx1ZSwgUmVuZGVyU3R5bGUqLCBGcmFtZSogZnJhbWUsIE1lZGlhRmVhdHVy
ZVByZWZpeCBvcCkKIHsKLSAgICByZXR1cm4gKCF2YWx1ZSB8fCBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKS0+aXNOdW1iZXIoKSkgJiYgZXZhbFJlc29sdXRpb24odmFsdWUs
IGZyYW1lLCBvcCk7CisgICAgcmV0dXJuICghdmFsdWUgfHwgdG9DU1NQcmltaXRpdmVWYWx1ZSh2
YWx1ZSktPmlzTnVtYmVyKCkpICYmIGV2YWxSZXNvbHV0aW9uKHZhbHVlLCBmcmFtZSwgb3ApOwog
fQogCiBzdGF0aWMgYm9vbCByZXNvbHV0aW9uTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFs
dWUsIFJlbmRlclN0eWxlKiwgRnJhbWUqIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCiB7
CiAjaWYgRU5BQkxFKFJFU09MVVRJT05fTUVESUFfUVVFUlkpCi0gICAgcmV0dXJuICghdmFsdWUg
fHwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmlzUmVzb2x1dGlvbigp
KSAmJiBldmFsUmVzb2x1dGlvbih2YWx1ZSwgZnJhbWUsIG9wKTsKKyAgICByZXR1cm4gKCF2YWx1
ZSB8fCB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+aXNSZXNvbHV0aW9uKCkpICYmIGV2YWxS
ZXNvbHV0aW9uKHZhbHVlLCBmcmFtZSwgb3ApOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZSk7CkBAIC0zNDIsNyArMzQyLDcgQEAgc3RhdGlj
IGJvb2wgY29tcHV0ZUxlbmd0aChDU1NWYWx1ZSogdmFsdWUsIGJvb2wgc3RyaWN0LCBSZW5kZXJT
dHlsZSogc3R5bGUsIFJlbmQKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUp
OwogCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc051bWJlcigpKSB7CiAgICAgICAgIHJlc3Vs
dCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpOwpAQCAtNTk2LDcgKzU5Niw3IEBAIHN0
YXRpYyBib29sIHZpZXdfbW9kZU1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5k
ZXJTdHlsZSosIEZyYW1lKiBmcmFtCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBjb25zdCBpbnQgdmlld01vZGVDU1NLZXl3b3JkSUQgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Z2V0VmFsdWVJRCgpOworICAgIGNvbnN0IGludCB2
aWV3TW9kZUNTU0tleXdvcmRJRCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpLT5nZXRWYWx1
ZUlEKCk7CiAgICAgY29uc3QgUGFnZTo6Vmlld01vZGUgdmlld01vZGUgPSBmcmFtZS0+cGFnZSgp
LT52aWV3TW9kZSgpOwogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgc3dpdGNoICh2aWV3
TW9kZSkgewpAQCAtNjc4LDcgKzY3OCw3IEBAIHN0YXRpYyBib29sIHBvaW50ZXJNZWRpYUZlYXR1
cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqLCBGcmFtZSogZnJhbWUsCiAgICAg
aWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBjb25zdCBDU1NWYWx1ZUlEIGlkID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSktPmdldFZhbHVlSUQoKTsKKyAgICBjb25zdCBDU1NWYWx1ZUlEIGlkID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZSh2YWx1ZSktPmdldFZhbHVlSUQoKTsKICAgICByZXR1cm4gKHBvaW50ZXIg
PT0gTm9Qb2ludGVyICYmIGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgfHwgKHBvaW50ZXIg
PT0gVG91Y2hQb2ludGVyICYmIGlkID09IENTU1ZhbHVlQ29hcnNlKQogICAgICAgICB8fCAocG9p
bnRlciA9PSBNb3VzZVBvaW50ZXIgJiYgaWQgPT0gQ1NTVmFsdWVGaW5lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCBjMzk3MjNjYTc1YTljZDRkMjU3
ZDAxMTVlYjEyNDJiMWQwYzI4NWMyLi5hMTFlYjJhOTQxZWQ1ZjcxNDU5ZmNkODVhZWNjNmYzYTFm
NTZlZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBA
IC0xMDcsNyArMTA3LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVNWR1Byb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICBBU1NFUlQodmFsdWUpOwogICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IDA7CiAgICAgaWYgKHZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gdG9D
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAKICAgICBjb25zdCBTdGF0ZSYgc3RhdGUgPSBtX3N0
YXRlOwogICAgIFNWR1JlbmRlclN0eWxlKiBzdmdzdHlsZSA9IHN0YXRlLnN0eWxlKCktPmFjY2Vz
c1NWR1N0eWxlKCk7CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBs
eVNWR1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAg
ICAgICAgICBpZiAoIWN1cnJWYWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBk
YXNoID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihkYXNoZXMtPml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soaSkpOworICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBkYXNo
ID0gdG9DU1NQcmltaXRpdmVWYWx1ZShkYXNoZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkp
OwogICAgICAgICAgICAgICAgIGFycmF5LmFwcGVuZChTVkdMZW5ndGg6OmZyb21DU1NQcmltaXRp
dmVWYWx1ZShkYXNoKSk7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnR5U2V0LmNwcAppbmRleCBkNjFlM2UwMWIxNDViZGVmODcxZTAzNzc5YWJhNmEyMDE5ZGQ2
NmUwLi5jMjg3OTBlOGZiMjk5MmUyNTQ2NmE3NjcyZGQwYTY4NTQ0OWIxMzNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC00MTgsOCArNDE4LDggQEAgU3RyaW5n
IFN0eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZShjb25zdCBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kJgogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgICAgICB5VmFsdWUgPSBuZXh0VmFsdWU7CiAKLSAgICAgICAgICAgICAgICAgICAgQ1NT
VmFsdWVJRCB4SWQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgp
KS0+Z2V0VmFsdWVJRCgpOwotICAgICAgICAgICAgICAgICAgICBDU1NWYWx1ZUlEIHlJZCA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oeVZhbHVlLmdldCgpKS0+Z2V0VmFsdWVJRCgp
OworICAgICAgICAgICAgICAgICAgICBDU1NWYWx1ZUlEIHhJZCA9IHRvQ1NTUHJpbWl0aXZlVmFs
dWUodmFsdWUuZ2V0KCkpLT5nZXRWYWx1ZUlEKCk7CisgICAgICAgICAgICAgICAgICAgIENTU1Zh
bHVlSUQgeUlkID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh5VmFsdWUuZ2V0KCkpLT5nZXRWYWx1ZUlE
KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh4SWQgIT0geUlkKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoeElkID09IENTU1ZhbHVlUmVwZWF0ICYmIHlJZCA9PSBDU1NWYWx1ZU5v
UmVwZWF0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlUmVwZWF0WFNob3J0aGFu
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMzc1ZDhjMTEw
YTdhOWFmMWIxYzYwY2NlZDE1NDBlMDA2NTZlYTllYy4uNTFmYzk4ZjU5MDYxYmNlZWE2ZDBkODAw
M2MwYmE2MTZlY2IzZjE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAt
MTkyNSw3ICsxOTI1LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFRyYWNrU2l6ZShDU1NWYWx1
ZSogdmFsdWUsIEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSwgY29uc3QKICAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRv
Q1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIFBhaXIqIG1pbk1heFRyYWNrQnJlYWR0aCA9
IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKICAgICBpZiAoIW1pbk1heFRyYWNrQnJl
YWR0aCkgewogICAgICAgICBMZW5ndGggd29ya2luZ0xlbmd0aDsKQEAgLTE5NDksNyArMTk0OSw3
IEBAIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0
b3I8R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6CiB7CiAgICAgLy8gSGFuZGxlICdub25lJy4KICAg
ICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS0+Z2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZTsKICAgICB9CiAKQEAgLTE5NjAsNyArMTk2MCw3IEBA
IHN0YXRpYyBib29sIGNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8
R3JpZFRyYWNrU2l6ZT4mIHRyYWNrU2l6CiAgICAgZm9yIChDU1NWYWx1ZUxpc3RJdGVyYXRvciBp
ID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBpLmFkdmFuY2UoKSkgewogICAgICAgICBDU1NWYWx1ZSog
Y3VyclZhbHVlID0gaS52YWx1ZSgpOwogICAgICAgICBpZiAoY3VyclZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY3VyclZhbHVlKTsKKyAgICAgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFs
dWUoY3VyclZhbHVlKTsKICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNTdHJpbmco
KSkgewogICAgICAgICAgICAgICAgIE5hbWVkR3JpZExpbmVzTWFwOjpBZGRSZXN1bHQgcmVzdWx0
ID0gbmFtZWRHcmlkTGluZXMuYWRkKHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpLCBW
ZWN0b3I8c2l6ZV90PigpKTsKICAgICAgICAgICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
LmFwcGVuZChjdXJyZW50TmFtZWRHcmlkTGluZSk7CkBAIC0xOTg4LDcgKzE5ODgsNyBAQCBzdGF0
aWMgYm9vbCBjcmVhdGVHcmlkUG9zaXRpb24oQ1NTVmFsdWUqIHZhbHVlLCBHcmlkUG9zaXRpb24m
IHBvc2l0aW9uKQogICAgIC8vIEZvciBub3csIHdlIG9ubHkgYWNjZXB0OiAnYXV0bycgfCBbIDxp
bnRlZ2VyPiB8fCA8c3RyaW5nPiBdIHwgc3BhbiAmJiA8aW50ZWdlcj4/CiAgICAgaWYgKHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgQVNTRVJUKHByaW1pdGl2
ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKTsKICNlbmRpZgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTIwMDQsMTcgKzIwMDQsMTcgQEAgc3RhdGljIGJvb2wgY3JlYXRlR3Jp
ZFBvc2l0aW9uKENTU1ZhbHVlKiB2YWx1ZSwgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICBT
dHJpbmcgZ3JpZExpbmVOYW1lOwogCiAgICAgQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaXQgPSB2YWx1
ZXM7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oaXQudmFsdWUoKSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1
cnJlbnRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXQudmFsdWUoKSk7CiAgICAgaWYgKGN1
cnJlbnRWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlU3BhbikgewogICAgICAgICBpc1Nw
YW5Qb3NpdGlvbiA9IHRydWU7CiAgICAgICAgIGl0LmFkdmFuY2UoKTsKLSAgICAgICAgY3VycmVu
dFZhbHVlID0gaXQuaGFzTW9yZSgpID8gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihp
dC52YWx1ZSgpKSA6IDA7CisgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGl0Lmhhc01vcmUoKSA/IHRv
Q1NTUHJpbWl0aXZlVmFsdWUoaXQudmFsdWUoKSkgOiAwOwogICAgIH0KIAogICAgIGlmIChjdXJy
ZW50VmFsdWUgJiYgY3VycmVudFZhbHVlLT5pc051bWJlcigpKSB7CiAgICAgICAgIGdyaWRMaW5l
TnVtYmVyID0gY3VycmVudFZhbHVlLT5nZXRJbnRWYWx1ZSgpOwogICAgICAgICBpdC5hZHZhbmNl
KCk7Ci0gICAgICAgIGN1cnJlbnRWYWx1ZSA9IGl0Lmhhc01vcmUoKSA/IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oaXQudmFsdWUoKSkgOiAwOworICAgICAgICBjdXJyZW50VmFsdWUg
PSBpdC5oYXNNb3JlKCkgPyB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0LnZhbHVlKCkpIDogMDsKICAg
ICB9CiAKICAgICBpZiAoY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1ZS0+aXNTdHJpbmcoKSkg
ewpAQCAtMjAzNSw3ICsyMDM1LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFBvc2l0aW9uKENT
U1ZhbHVlKiB2YWx1ZSwgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKIHN0YXRpYyBib29sIGhhc1Zh
cmlhYmxlUmVmZXJlbmNlKENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkgewotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSk7CiAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS0+aGFzVmFyaWFibGVSZWZlcmVuY2Uo
KTsKICAgICB9CiAKQEAgLTIxMzMsNyArMjEzMyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBw
bHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpID8gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSkgOiAwOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgPyB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSA6IDA7
CiAKICAgICBmbG9hdCB6b29tRmFjdG9yID0gc3RhdGUuc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgp
OwogCkBAIC0yMTgwLDcgKzIxODAsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICAgICAgICAgIGlm
ICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZW0p
OwogCiAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS0+aXNTdHJpbmcoKSkgewogICAg
ICAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRDb250ZW50KGNvbnRlbnRWYWx1ZS0+
Z2V0U3RyaW5nVmFsdWUoKS5pbXBsKCksIGRpZFNldCk7CkBAIC0yMjU0LDggKzIyNTQsOCBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFs
dWUqIHZhbHVlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihmaXJzdC0+aXNQcmltaXRpdmVWYWx1
ZSgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihz
ZWNvbmQtPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHN0YXJ0
UXVvdGUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGZpcnN0KS0+Z2V0U3RyaW5n
VmFsdWUoKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgZW5kUXVvdGUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHNlY29uZCktPmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgU3RyaW5nIHN0YXJ0UXVvdGUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGZpcnN0KS0+Z2V0
U3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZW5kUXVvdGUgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHNlY29uZCktPmdldFN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICAgICAg
cXVvdGVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzdGFydFF1b3RlLCBlbmRRdW90ZSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0UXVvdGVzKFF1b3Rlc0Rh
dGE6OmNyZWF0ZShxdW90ZXMpKTsKQEAgLTM0ODcsNyArMzQ4Nyw3IEBAIFBhc3NSZWZQdHI8Q3Vz
dG9tRmlsdGVyUGFyYW1ldGVyPiBTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlckFycmF5
UGFyYW1ldGVyCiAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHZhbHVlcy0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjayhpKTsKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHZhbHVlKTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgIT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgYXJyYXlQYXJhbWV0ZXItPmFkZFZhbHVlKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVW
YWx1ZSgpKTsKQEAgLTM0OTgsNyArMzQ5OCw3IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyUGFy
YW1ldGVyPiBTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyCiBQ
YXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gU3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0
b21GaWx0ZXJDb2xvclBhcmFtZXRlcihjb25zdCBTdHJpbmcmIG5hbWUsIENTU1ZhbHVlTGlzdCog
dmFsdWVzKQogewogICAgIEFTU0VSVCh2YWx1ZXMtPmxlbmd0aCgpKTsKLSAgICBDU1NQcmltaXRp
dmVWYWx1ZSogZmlyc3RQcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWVzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKTsKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogZmlyc3RQcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWVz
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKTsKICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyQ29s
b3JQYXJhbWV0ZXI+IGNvbG9yUGFyYW1ldGVyID0gQ3VzdG9tRmlsdGVyQ29sb3JQYXJhbWV0ZXI6
OmNyZWF0ZShuYW1lKTsKICAgICBjb2xvclBhcmFtZXRlci0+c2V0Q29sb3IoQ29sb3IoZmlyc3RQ
cmltaXRpdmVWYWx1ZS0+Z2V0UkdCQTMyVmFsdWUoKSkpOwogICAgIHJldHVybiBjb2xvclBhcmFt
ZXRlci5yZWxlYXNlKCk7CkBAIC0zNTExLDcgKzM1MTEsNyBAQCBQYXNzUmVmUHRyPEN1c3RvbUZp
bHRlclBhcmFtZXRlcj4gU3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0b21GaWx0ZXJOdW1iZXJQYXJh
bWV0ZQogICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSB2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soaSk7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAg
ICAgICAgIHJldHVybiAwOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IG51bWJlclBhcmFtZXRlci0+YWRkVmFsdWUocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVl
KCkpOwpAQCAtMzU2MCw3ICszNTYwLDcgQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0
ZXI+IFN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKGNvbnMKICAgICBp
ZiAoIXZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKS0+aXNQcmltaXRpdmVWYWx1ZSgp
IHx8IHZhbHVlcy0+bGVuZ3RoKCkgPiA0KQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBD
U1NQcmltaXRpdmVWYWx1ZSogZmlyc3RQcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWVzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKTsKKyAgICBD
U1NQcmltaXRpdmVWYWx1ZSogZmlyc3RQcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFs
dWUodmFsdWVzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKTsKICAgICBpZiAoZmlyc3RQcmlt
aXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKQogICAgICAgICByZXR1cm4gcGFyc2VDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIobmFt
ZSwgdmFsdWVzKTsKIApAQCAtMzU4MCw3ICszNTgwLDcgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpw
YXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QoQ1NTVmFsdWUqIHBhcmFtZXRlcnNWYWx1ZSwg
Q3UKICAgICAgICAgQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaXRlcmF0b3IocGFyYW1ldGVySXRlcmF0
b3IudmFsdWUoKSk7CiAgICAgICAgIGlmICghaXRlcmF0b3IuaXNQcmltaXRpdmVWYWx1ZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZXJhdG9yLnZh
bHVlKCkpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKGl0ZXJhdG9yLnZhbHVlKCkpOwogICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkBAIC0zNjQ3LDcgKzM2NDcsNyBA
QCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRl
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0aAogCiAgICAgICAgICAgICBBU1NFUlQobWl4RnVuY3Rp
b24tPmxlbmd0aCgpIDw9IDMpOwogICAgICAgICAgICAgd2hpbGUgKGl0ZXJhdG9yLmhhc01vcmUo
KSkgewotICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlcmF0b3IudmFsdWUoKSk7CisgICAg
ICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmlt
aXRpdmVWYWx1ZShpdGVyYXRvci52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoQ1NTUGFy
c2VyOjppc0JsZW5kTW9kZShwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSkKICAgICAgICAg
ICAgICAgICAgICAgbWl4U2V0dGluZ3MuYmxlbmRNb2RlID0gKnByaW1pdGl2ZVZhbHVlOwogICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKENTU1BhcnNlcjo6aXNDb21wb3NpdGVPcGVyYXRvcihwcmlt
aXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSkKQEAgLTM2ODAsNyArMzY4MCw3IEBAIFBhc3NSZWZQ
dHI8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uPiBTdHlsZVJlc29sdmVyOjpjcmVhdGVDdXN0b21GaWx0
ZXJPcGVyYXRpb25XaXRoCiAgICAgICAgIC8vIHRoZSBtZXNoLWJveCBsaXN0LCBpZiBub3QgaXQg
bWVhbnMgaXQgaXMgdGhlIHBhcmFtZXRlcnMgbGlzdC4KIAogICAgICAgICBpZiAoaXRlcmF0b3Iu
aGFzTW9yZSgpICYmIGl0ZXJhdG9yLmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPihpdGVyYXRvci52YWx1ZSgpKTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlcmF0b3IudmFsdWUo
KSk7CiAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTnVtYmVyKCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBJZiBvbmx5IG9uZSBpbnRlZ2VyIHZhbHVlIGlzIHNwZWNpZmllZCwgaXQg
d2lsbCBzZXQgYm90aAogICAgICAgICAgICAgICAgIC8vIHRoZSByb3dzIGFuZCB0aGUgY29sdW1u
cy4KQEAgLTM2ODksNyArMzY4OSw3IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyT3BlcmF0aW9u
PiBTdHlsZVJlc29sdmVyOjpjcmVhdGVDdXN0b21GaWx0ZXJPcGVyYXRpb25XaXRoCiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgLy8gVHJ5IHRvIG1hdGNoIGFub3RoZXIgbnVtYmVy
IGZvciB0aGUgcm93cy4KICAgICAgICAgICAgICAgICBpZiAoaXRlcmF0b3IuaGFzTW9yZSgpICYm
IGl0ZXJhdG9yLmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KGl0ZXJhdG9yLnZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZXJhdG9yLnZh
bHVlKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTnVtYmVy
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1lc2hSb3dzID0gcHJpbWl0aXZlVmFsdWUt
PmdldEludFZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvci5hZHZhbmNl
KCk7CkBAIC0zNjk5LDcgKzM2OTksNyBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlv
bj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0aAogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBpZiAoaXRlcmF0b3IuaGFzTW9yZSgpICYmIGl0ZXJhdG9y
LmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVyYXRvci52
YWx1ZSgpKTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlcmF0b3IudmFsdWUoKSk7CiAgICAgICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZURldGFjaGVkKSB7CiAgICAg
ICAgICAgICAgICAgbWVzaFR5cGUgPSBNZXNoVHlwZURldGFjaGVkOwogICAgICAgICAgICAgICAg
IGl0ZXJhdG9yLmFkdmFuY2UoKTsKQEAgLTM3NDUsNyArMzc0NSw3IEBAIGJvb2wgU3R5bGVSZXNv
bHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgRmlsdGVyT3Bl
cmF0aW9ucyYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChpblZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpblZhbHVlKTsKKyAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1
ZShpblZhbHVlKTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVOb25lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzgxNiw3
ICszODE2LDcgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKENT
U1ZhbHVlKiBpblZhbHVlLCBGaWx0ZXJPcGVyYXRpb25zJgogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0VmFsdWUg
PSBmaWx0ZXJWYWx1ZS0+bGVuZ3RoKCkgPyBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KGZpbHRlclZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKSA6IDA7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBmaXJzdFZhbHVlID0gZmlsdGVyVmFsdWUtPmxlbmd0aCgpID8gdG9D
U1NQcmltaXRpdmVWYWx1ZShmaWx0ZXJWYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSkg
OiAwOwogICAgICAgICBzd2l0Y2ggKGZpbHRlclZhbHVlLT5vcGVyYXRpb25UeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6R3JheXNjYWxlRmlsdGVyT3BlcmF0aW9u
OgogICAgICAgICBjYXNlIFdlYktpdENTU0ZpbHRlclZhbHVlOjpTZXBpYUZpbHRlck9wZXJhdGlv
bjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAKaW5kZXggMjNhZmY0
OTJkMTE4OGJhMjQyNjcxNjMwOGQ0ODBmMTMzMGMwYWY3Yy4uNjk3ZmNmYjg1Yjg0Yjk1MDgyNGI5
Y2I0OTU1ZjllYTRiMTEzNGIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1RyYW5z
Zm9ybUZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1RyYW5zZm9ybUZ1bmN0
aW9ucy5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiByb290U3R5bGUsCiAgICAg
ICAgIGlmIChoYXZlTm9uUHJpbWl0aXZlVmFsdWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3RWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkp
OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3RWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZl
VmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpOwogCiAgICAg
ICAgIHN3aXRjaCAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSkgewogICAgICAgICBj
YXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjoKQEAg
LTEyNCw3ICsxMjQsNyBAQCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiByb290U3R5bGUsCiAgICAgICAgICAgICAgICAg
c3ggPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAgICAgIGlmICh0
cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpICE9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpTY2FsZVhUcmFuc2Zvcm1PcGVyYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRy
YW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHNlY29uZFZhbHVlLT5nZXREb3VibGVWYWx1
ZSgpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
IHN5ID0gc3g7CkBAIC0xNDYsMTEgKzE0NiwxMSBAQCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiByb290U3R5bGUsCiAg
ICAgICAgICAgICAgICAgc3ggPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwogICAgICAg
ICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpICE9IFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpTY2FsZVhUcmFuc2Zvcm1PcGVyYXRpb24pIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDIpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVj
aygyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRW
YWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soMikpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3ogPSB0aGlyZFZhbHVlLT5n
ZXREb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1
ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBzZWNvbmRWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgICAgICBzeSA9IHN4OwpAQCAtMTcwLDcgKzE3MCw3IEBAIGJvb2wgdHJhbnNmb3Jtc0Zv
clZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwKICAgICAgICAgICAgICAgICB0eCA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZpcnN0VmFs
dWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IpOwogICAgICAgICAgICAgICAgIGlmICh0
cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpICE9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpUcmFuc2xhdGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHRv
Q1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
MSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChz
ZWNvbmRWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0xOTUsMTEgKzE5NSwxMSBAQCBib29sIHRy
YW5zZm9ybXNGb3JWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiByb290U3R5bGUsCiAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9GbG9hdExlbmd0
aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yKTsKICAgICAgICAgICAg
ICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlvbikgewogICAgICAgICAgICAg
ICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KDIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZh
bHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjaygyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0Zsb2F0
TGVuZ3RoKHRoaXJkVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+
bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9y
bVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUo
dHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUs
IHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CkBAIC0yMzYsOSArMjM2LDkgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLAogICAg
ICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGUzRFRyYW5zZm9ybU9wZXJh
dGlvbjogewogICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA8IDQpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vj
b25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVl
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiB0aGlyZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zv
cm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7Ci0gICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogZm91cnRoVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMpKTsKKyAgICAgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJh
bnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOworICAgICAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9y
bVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKKyAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBmb3VydGhWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFs
dWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMykpOwogICAgICAgICAgICAgZG91YmxlIHggPSBm
aXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAgZG91YmxlIHkgPSBzZWNv
bmRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgIGRvdWJsZSB6ID0gdGhpcmRW
YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKQEAgLTI1OCw3ICsyNTgsNyBAQCBib29sIHRyYW5zZm9y
bXNGb3JWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBy
b290U3R5bGUsCiAgICAgICAgICAgICAgICAgYW5nbGVYID0gYW5nbGU7CiAgICAgICAgICAgICAg
ICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU6OlNrZXdUcmFuc2Zvcm1PcGVyYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0g
dG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVj
aygxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZVkgPSBzZWNvbmRWYWx1ZS0+Y29t
cHV0ZURlZ3JlZXMoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0K
QEAgLTI3MCwzMyArMjcwLDMzIEBAIGJvb2wgdHJhbnNmb3Jtc0ZvclZhbHVlKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwKICAgICAgICAgICAg
IGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPCA2KQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgZG91YmxlIGEgPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwot
ICAgICAgICAgICAgZG91YmxlIGIgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRy
YW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKS0+Z2V0RG91YmxlVmFsdWUo
KTsKLSAgICAgICAgICAgIGRvdWJsZSBjID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSktPmdldERvdWJsZVZh
bHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgZCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMykpLT5nZXREb3Vi
bGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIGUgPSB6b29tRmFjdG9yICogc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjayg0KSktPmdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgZiA9IHpvb21G
YWN0b3IgKiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAg
IGRvdWJsZSBiID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhv
dXRCb3VuZHNDaGVjaygxKSktPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUg
YyA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soMikpLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgZG91YmxlIGQgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMp
KS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBlID0gem9vbUZhY3RvciAq
IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soNCkpLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgZG91YmxlIGYgPSB6b29tRmFj
dG9yICogdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjayg1KSktPmdldERvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICBvcGVyYXRpb25zLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoYSwgYiwg
YywgZCwgZSwgZikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246IHsK
ICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPCAxNikKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeChz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDApKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1
ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSktPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpLT5nZXREb3VibGVWYWx1
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMpKS0+
Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjayg0KSktPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soNSkpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5z
Zm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDYpKS0+Z2V0RG91YmxlVmFsdWUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg3KSktPmdldERv
dWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soOCkpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDkpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1W
YWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMCkpLT5nZXREb3VibGVWYWx1ZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDExKSktPmdldERvdWJs
ZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb21GYWN0b3IgKiBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDEyKSktPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHpvb21GYWN0b3IgKiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEzKSktPmdldERvdWJsZVZh
bHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTQp
KS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygxNSkpLT5nZXREb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IG1hdHJpeCh0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVl
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMpKS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1
ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg0KSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFs
dWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNSkpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZh
bHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDYpKS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1W
YWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg3KSktPmdldERvdWJsZVZhbHVlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3Jt
VmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soOCkpLT5nZXREb3VibGVWYWx1ZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9y
bVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDkpKS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zv
cm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMCkpLT5nZXREb3VibGVWYWx1ZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5z
Zm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDExKSktPmdldERvdWJsZVZhbHVlKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb21GYWN0b3IgKiB0b0NTU1ByaW1p
dGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEyKSktPmdl
dERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb21GYWN0
b3IgKiB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDEzKSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soMTQpKS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygxNSkpLT5nZXREb3VibGVWYWx1ZSgpKTsKICAgICAgICAgICAgIG9wZXJhdGlv
bnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRl
KG1hdHJpeCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZWE2NDcwYTg0Y2FjOGE5MDlk
YjFjZjRkODA0ZjdlMzg4NjZkNDEwYS4uNGUxZTUzYTc1MjNmYjI5YmRhOWZmN2VhYjhhYTQ2NzA3
Y2Y3YTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1ZpZXdwb3J0U3R5bGVSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5j
cHAKQEAgLTExMCw3ICsxMTAsNyBAQCBmbG9hdCBWaWV3cG9ydFN0eWxlUmVzb2x2ZXI6OmdldFZp
ZXdwb3J0QXJndW1lbnRWYWx1ZShDU1NQcm9wZXJ0eUlEIGlkKSBjb25zdAogICAgIGlmICghdmFs
dWUgfHwgIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBkZWZhdWx0
VmFsdWU7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgpKTsKKyAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdldCgpKTsK
IAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSB8fCBwcmltaXRpdmVWYWx1ZS0+
aXNQeCgpKQogICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKaW5kZXggYTMzYjg5NWQ4NzY5NmVj
MzNlMGVjYmE2OWU1NzZmODRiMDVjOGM3OC4uYjRkZDUwZDYxNGJlMmI2OTNlY2IwZTY3MzliODA1
NTc0MDUwNjYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJp
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgdm9pZCBXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgUmVmUHRyPENTU1ZhbHVl
PiB2YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb24tPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm0pOwogCiAgICAgICAgIC8vIENoZWNrIGZvciBhICJub25lIiBvciBl
bXB0eSB0cmFuc2Zvcm0uIEluIHRoZXNlIGNhc2VzIHdlIGNhbiB1c2UgdGhlIGRlZmF1bHQgaWRl
bnRpdHkgbWF0cml4LgotICAgICAgICBpZiAoIXZhbHVlIHx8ICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpICYmIChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgpKSkt
PmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpKQorICAgICAgICBpZiAoIXZhbHVlIHx8ICh2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmICh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdl
dCgpKSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggNGNjZDM2MDQzODAzMjhl
NThiMDMzZDNkNzljYWRmMzg5ZjZhOWVhYy4uNDZkZjZlNjAyZDdjMDc0NTdmMzY0NGQyNDY0YWNi
MmYzMGU4NGVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxl
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAKQEAgLTE1MTQsNyArMTUxNCw3IEBAIGZsb2F0IEFwcGx5U3R5bGVDb21tYW5kOjpjb21w
dXRlZEZvbnRTaXplKE5vZGUqIG5vZGUpCiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcihub2RlKS5wcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5Rm9u
dFNpemUpOwogICAgIEFTU0VSVCh2YWx1ZSAmJiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5nZXQoKSkt
PmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgcmV0dXJuIHRv
Q1NTUHJpbWl0aXZlVmFsdWUodmFsdWUuZ2V0KCkpLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUFgpOwogfQogCiB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpqb2luQ2hpbGRU
ZXh0Tm9kZXMoTm9kZSogbm9kZSwgY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlv
biYgZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDJlMDQ4
N2EzY2FmMzU5MmRiMzg2ZmQ4NWQwMGE3YWY2MDZkMGFlMDguLjJmYjJmMmRiZTIxNDc0YTlhN2Nm
MjgwZjE0NGNiY2Q2ZWQzNzY0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHls
ZS5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBpbnQgaWRlbnRpZmllckZvclN0eWxlUHJvcGVydHko
VCogc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKICAgICBSZWZQdHI8Q1NTVmFsdWU+
IHZhbHVlID0gZXh0cmFjdFByb3BlcnR5VmFsdWUoc3R5bGUsIHByb3BlcnR5SUQpOwogICAgIGlm
ICghdmFsdWUgfHwgIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiAw
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgp
KS0+Z2V0VmFsdWVJRCgpOworICAgIHJldHVybiB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdl
dCgpKS0+Z2V0VmFsdWVJRCgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQYXNzUmVmUHRy
PE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBnZXRQcm9wZXJ0aWVzTm90SW4oU3R5bGVQcm9wZXJ0
eVNldCogc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcywgVCogYmFzZVN0eWxlKTsKQEAgLTIw
MSw3ICsyMDEsNyBAQCBIVE1MRWxlbWVudEVxdWl2YWxlbnQ6OkhUTUxFbGVtZW50RXF1aXZhbGVu
dChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZUlEIHByaW1pdAogYm9vbCBIVE1MRWxlbWVudEVx
dWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZShFbGVtZW50KiBlbGVtZW50LCBTdHlsZVBy
b3BlcnR5U2V0KiBzdHlsZSkgY29uc3QKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0g
c3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUobV9wcm9wZXJ0eUlEKTsKLSAgICByZXR1cm4gbWF0
Y2hlcyhlbGVtZW50KSAmJiB2YWx1ZSAmJiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkg
PT0gbV9wcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpOworICAgIHJldHVybiBtYXRjaGVzKGVs
ZW1lbnQpICYmIHZhbHVlICYmIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgdG9DU1NQcmlt
aXRpdmVWYWx1ZSh2YWx1ZS5nZXQoKSktPmdldFZhbHVlSUQoKSA9PSBtX3ByaW1pdGl2ZVZhbHVl
LT5nZXRWYWx1ZUlEKCk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnRFcXVpdmFsZW50OjphZGRUb1N0
eWxlKEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIHN0eWxlKSBjb25zdApAQCAtMzc4LDcgKzM3OCw3
IEBAIHN0YXRpYyBSR0JBMzIgY3NzVmFsdWVUb1JHQkEoQ1NTVmFsdWUqIGNvbG9yVmFsdWUpCiAg
ICAgaWYgKCFjb2xvclZhbHVlIHx8ICFjb2xvclZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAg
ICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAgICAgCi0gICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZUNvbG9yID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihj
b2xvclZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlQ29sb3IgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKGNvbG9yVmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVDb2xvci0+aXNS
R0JDb2xvcigpKQogICAgICAgICByZXR1cm4gcHJpbWl0aXZlQ29sb3ItPmdldFJHQkEzMlZhbHVl
KCk7CiAgICAgCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OmV4dHJhY3RG
b250U2l6ZURlbHRhKCkKICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgpKTsKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHZhbHVlLmdldCgpKTsKIAogICAgIC8vIE9ubHkgUFggaGFuZGxlZCBub3cuIElmIHdlIGhhbmRs
ZSBtb3JlIHR5cGVzIGluIHRoZSBmdXR1cmUsIHBlcmhhcHMKICAgICAvLyBhIHN3aXRjaCBzdGF0
ZW1lbnQgaGVyZSB3b3VsZCBiZSBtb3JlIGFwcHJvcHJpYXRlLgpAQCAtNTIzLDEzICs1MjMsMTMg
QEAgYm9vbCBFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiYgd3Jp
dGluZ0RpcmVjdGlvbikgY29uc3QKICAgICBpZiAoIXVuaWNvZGVCaWRpIHx8ICF1bmljb2RlQmlk
aS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NW
YWx1ZUlEIHVuaWNvZGVCaWRpVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHVuaWNvZGVCaWRpLmdldCgpKS0+Z2V0VmFsdWVJRCgpOworICAgIENTU1ZhbHVlSUQgdW5pY29k
ZUJpZGlWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRW
YWx1ZUlEKCk7CiAgICAgaWYgKHVuaWNvZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVFbWJlZCkgewog
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IGRpcmVjdGlvbiA9IG1fbXV0YWJsZVN0eWxlLT5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGlyZWN0aW9uKTsKICAgICAgICAgaWYgKCFkaXJl
Y3Rpb24gfHwgIWRpcmVjdGlvbi0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIHdyaXRpbmdEaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KGRpcmVjdGlvbi5nZXQoKSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUx0ciA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJpZ2h0VG9MZWZ0V3JpdGluZ0Rp
cmVjdGlvbjsKKyAgICAgICAgd3JpdGluZ0RpcmVjdGlvbiA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUo
ZGlyZWN0aW9uLmdldCgpKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTHRyID8gTGVmdFRvUmln
aHRXcml0aW5nRGlyZWN0aW9uIDogUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uOwogCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTk0OSw5ICs5NDksOSBAQCB2b2lkIEVkaXRpbmdT
dHlsZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIFNob3VsZFBy
ZXNlcnZlV3JpdAogICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKHVuaWNvZGVCaWRpICYmIHVuaWNvZGVC
aWRpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRWYWx1
ZUlEKCkpKTsKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
VW5pY29kZUJpZGksIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHRvQ1NTUHJpbWl0aXZlVmFsdWUo
dW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpKTsKICAgICAgICAgaWYgKGRpcmVjdGlv
biAmJiBkaXJlY3Rpb24tPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgIG1fbXV0YWJs
ZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgc3RhdGljX2Nhc3Q8Q1NT
VmFsdWVJRD4oc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihkaXJlY3Rpb24uZ2V0KCkp
LT5nZXRWYWx1ZUlEKCkpKTsKKyAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0
eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4odG9DU1NQcmlt
aXRpdmVWYWx1ZShkaXJlY3Rpb24uZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpKTsKICAgICB9CiB9CiAK
QEAgLTExNDksNyArMTE0OSw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1
bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50KiBlbGVtZW50KQogICAgICAgICAgICAg
Q1NTVmFsdWUqIHZhbHVlID0gcHJvcGVydHkudmFsdWUoKTsKICAgICAgICAgICAgIGlmICghdmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+aXNQZXJj
ZW50YWdlKCkpIHsKKyAgICAgICAgICAgIGlmICh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+
aXNQZXJjZW50YWdlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiBj
b21wdXRlZFByb3BlcnR5VmFsdWUgPSBjb21wdXRlZFN0eWxlLnByb3BlcnR5VmFsdWUocHJvcGVy
dHkuaWQoKSkpCiAgICAgICAgICAgICAgICAgICAgIGZyb21Db21wdXRlZFN0eWxlLT5hZGRQYXJz
ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eShwcm9wZXJ0eS5pZCgpLCBjb21wdXRlZFByb3BlcnR5VmFs
dWUucmVsZWFzZSgpKSk7CiAgICAgICAgICAgICB9CkBAIC0xMjIyLDcgKzEyMjIsNyBAQCBpbnQg
RWRpdGluZ1N0eWxlOjpsZWdhY3lGb250U2l6ZShEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0CiAg
ICAgUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSA9IG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFNpemUpOwogICAgIGlmICghY3NzVmFsdWUgfHwgIWNz
c1ZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biBsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1ZShkb2N1bWVudCwgc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihjc3NWYWx1ZS5nZXQoKSksCisgICAgcmV0dXJuIGxlZ2FjeUZvbnRTaXpl
RnJvbUNTU1ZhbHVlKGRvY3VtZW50LCB0b0NTU1ByaW1pdGl2ZVZhbHVlKGNzc1ZhbHVlLmdldCgp
KSwKICAgICAgICAgbV9zaG91bGRVc2VGaXhlZERlZmF1bHRGb250U2l6ZSwgQWx3YXlzVXNlTGVn
YWN5Rm9udFNpemUpOwogfQogCkBAIC0xMjg2LDcgKzEyODYsNyBAQCBXcml0aW5nRGlyZWN0aW9u
IEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJgogICAgICAgICAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCAhdW5pY29kZUJpZGktPmlz
UHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAg
ICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih1bmljb2RlQmlkaS5nZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICAgICAgICAgIENT
U1ZhbHVlSUQgdW5pY29kZUJpZGlWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodW5pY29kZUJp
ZGkuZ2V0KCkpLT5nZXRWYWx1ZUlEKCk7CiAgICAgICAgICAgICBpZiAodW5pY29kZUJpZGlWYWx1
ZSA9PSBDU1NWYWx1ZUVtYmVkIHx8IHVuaWNvZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVCaWRpT3Zl
cnJpZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uOwog
ICAgICAgICB9CkBAIC0xMzE1LDcgKzEzMTUsNyBAQCBXcml0aW5nRGlyZWN0aW9uIEVkaXRpbmdT
dHlsZTo6dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJgog
ICAgICAgICBpZiAoIXVuaWNvZGVCaWRpIHx8ICF1bmljb2RlQmlkaS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgQ1NTVmFsdWVJRCB1bmljb2Rl
QmlkaVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih1bmljb2RlQmlkaS5n
ZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICAgICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaVZhbHVl
ID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh1bmljb2RlQmlkaS5nZXQoKSktPmdldFZhbHVlSUQoKTsK
ICAgICAgICAgaWYgKHVuaWNvZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIApAQCAtMTMyNyw3ICsxMzI3LDcgQEAgV3JpdGluZ0RpcmVjdGlvbiBF
ZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYKICAgICAgICAgaWYgKCFkaXJlY3Rpb24gfHwgIWRpcmVjdGlvbi0+aXNQcmltaXRpdmVW
YWx1ZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgQ1NTVmFsdWVJRCBkaXJl
Y3Rpb25WYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGlyZWN0aW9uLmdl
dCgpKS0+Z2V0VmFsdWVJRCgpOworICAgICAgICBDU1NWYWx1ZUlEIGRpcmVjdGlvblZhbHVlID0g
dG9DU1NQcmltaXRpdmVWYWx1ZShkaXJlY3Rpb24uZ2V0KCkpLT5nZXRWYWx1ZUlEKCk7CiAgICAg
ICAgIGlmIChkaXJlY3Rpb25WYWx1ZSAhPSBDU1NWYWx1ZUx0ciAmJiBkaXJlY3Rpb25WYWx1ZSAh
PSBDU1NWYWx1ZVJ0bCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xNDY3LDcgKzE0Njcs
NyBAQCB2b2lkIFN0eWxlQ2hhbmdlOjpleHRyYWN0VGV4dFN0eWxlcyhEb2N1bWVudCogZG9jdW1l
bnQsIE11dGFibGVTdHlsZVByb3BlcnR5U2V0KgogICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+IGZv
bnRTaXplID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U2l6ZSkp
IHsKICAgICAgICAgaWYgKCFmb250U2l6ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAg
ICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUpOyAvLyBDYW4ndCBt
YWtlIHNlbnNlIG9mIHRoZSBudW1iZXIuIFB1dCBubyBmb250IHNpemUuCi0gICAgICAgIGVsc2Ug
aWYgKGludCBsZWdhY3lGb250U2l6ZSA9IGxlZ2FjeUZvbnRTaXplRnJvbUNTU1ZhbHVlKGRvY3Vt
ZW50LCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGZvbnRTaXplLmdldCgpKSwKKyAg
ICAgICAgZWxzZSBpZiAoaW50IGxlZ2FjeUZvbnRTaXplID0gbGVnYWN5Rm9udFNpemVGcm9tQ1NT
VmFsdWUoZG9jdW1lbnQsIHRvQ1NTUHJpbWl0aXZlVmFsdWUoZm9udFNpemUuZ2V0KCkpLAogICAg
ICAgICAgICAgICAgIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplLCBVc2VMZWdhY3lGb250
U2l6ZU9ubHlJZlBpeGVsVmFsdWVzTWF0Y2gpKSB7CiAgICAgICAgICAgICBtX2FwcGx5Rm9udFNp
emUgPSBTdHJpbmc6Om51bWJlcihsZWdhY3lGb250U2l6ZSk7CiAgICAgICAgICAgICBzdHlsZS0+
cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSk7CkBAIC0xNDk5LDcgKzE0OTksNyBA
QCBzdGF0aWMgYm9vbCBmb250V2VpZ2h0SXNCb2xkKENTU1ZhbHVlKiBmb250V2VpZ2h0KQogCiAg
ICAgLy8gQmVjYXVzZSBiIHRhZyBjYW4gb25seSBib2xkIHRleHQsIHRoZXJlIGFyZSBvbmx5IHR3
byBzdGF0ZXMgaW4gcGxhaW4gaHRtbDogYm9sZCBhbmQgbm90IGJvbGQuCiAgICAgLy8gQ29sbGFw
c2UgYWxsIG90aGVyIHZhbHVlcyB0byBlaXRoZXIgb25lIG9mIHRoZXNlIHR3byBzdGF0ZXMgZm9y
IGVkaXRpbmcgcHVycG9zZXMuCi0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KGZvbnRXZWlnaHQpLT5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHRvQ1NTUHJp
bWl0aXZlVmFsdWUoZm9udFdlaWdodCktPmdldFZhbHVlSUQoKSkgewogICAgICAgICBjYXNlIENT
U1ZhbHVlMTAwOgogICAgICAgICBjYXNlIENTU1ZhbHVlMjAwOgogICAgICAgICBjYXNlIENTU1Zh
bHVlMzAwOgpAQCAtMTU5Myw3ICsxNTkzLDcgQEAgYm9vbCBpc1RyYW5zcGFyZW50Q29sb3JWYWx1
ZShDU1NWYWx1ZSogY3NzVmFsdWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICghY3Nz
VmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
Y3NzVmFsdWUpOyAgICAKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSB0b0NTU1ByaW1p
dGl2ZVZhbHVlKGNzc1ZhbHVlKTsgICAgCiAgICAgaWYgKHZhbHVlLT5pc1JHQkNvbG9yKCkpCiAg
ICAgICAgIHJldHVybiAhYWxwaGFDaGFubmVsKHZhbHVlLT5nZXRSR0JBMzJWYWx1ZSgpKTsgICAg
CiAgICAgcmV0dXJuIHZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVUcmFuc3BhcmVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBhNzQzYmI2NDY2MTUwOWY3ODk1M2I1YjA5
ODg4NWZjZTNkYzU5Y2I5Li43NjdmN2UwNmFiN2ZiOTkxZjVhMzJjMDIwNTdiZWYwZDgzYWRjYWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgc3RhdGlj
IGJvb2wgcHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShTdHlsZVByb3BlcnR5U2V0KiBzdHls
ZSwgQ1NTUHJvcGVydHlJRAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5nZXQoKSktPmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZU5vbmU7CisgICAgcmV0dXJuIHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUuZ2V0
KCkpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOwogfQogCiBzdGF0aWMgYm9vbCBuZWVk
SW50ZXJjaGFuZ2VOZXdsaW5lQWZ0ZXIoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213049</attachid>
            <date>2013-09-30 20:36:49 -0700</date>
            <delta_ts>2013-09-30 21:04:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122101-20131001123646.patch</filename>
            <type>text/plain</type>
            <size>88188</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA5OGEwMDEzOTUzNTky
ZWIzZmU3NGIyZmM2YTI2OTFlMTg5YzI2OS4uYTYyNjRlMGI2YTBiNDkzNTUyMjQ1NmVjZTViNDVl
OGI3ZDJiNTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0NiBAQAogMjAxMy0wOS0zMCAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCisgICAgICAgIEdlbmVyYXRl
IHRvQ1NTRm9vVmFsdWUgZm9yIENTU1ByaW1pdGl2ZVZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxMDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyBhIHN0ZXAgb2YgY2xlYW4tdXAgc3RhdGlj
X2Nhc3Q8PiBpbiBDU1NWYWx1ZXMsIHRoaXMgcGF0Y2ggZ2VuZXJhdGVzCisgICAgICAgIHRvQ1NT
Rm9vUHJpbWl0aXZlVmFsdWUoKSBpbiBvcmRlciB0byBkZXRlY3QgYmFkIGNhc3RzIGFzIHdlbGwg
YXMgaW1wcm92ZXMKKyAgICAgICAgY29kZSByZWFkYWJpbGl0eS4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VS
dWxlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzdWJpbWFnZUlzUGVuZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFnZUZvckNT
U1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpmaWxsSW1hZ2VTZXQpOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZTNWYWx1ZXNGaWxsUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlRmlsbFJlcGVhdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VSYWRpYWxHcmFkaWVudCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmg6CisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbEF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbENsaXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHls
ZU1hcDo6bWFwRmlsbENvbXBvc2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBGaWxsQmxlbmRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1h
cEZpbGxPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJl
cGVhdFgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFhQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxNYXNrU291cmNlVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EZWxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRmlsbE1vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUmVwZWF0KToKKyAg
ICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRl
c3Ryb3kpOgorICAgICAgICAqIGNzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEZWZhdWx0OjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlOdW1iZXI6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUF1dG86OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eUNsaXA6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQ
cm9wZXJ0eUNvbG9yOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlMZW5ndGg6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVN0
cmluZzo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Qm9yZGVy
UmFkaXVzOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb21w
dXRlTGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlG
b250OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250RmFt
aWx5OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6
ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFdlaWdo
dDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFZhcmlh
bnRMaWdhdHVyZXM6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0
eUNvdW50ZXI6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUN1
cnNvcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEFs
aWduOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0RGVj
b3JhdGlvbjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TWFy
cXVlZUluY3JlbWVudDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5TWFycXVlZVJlcGV0aXRpb246OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eU1hcnF1ZWVTcGVlZDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5VGV4dFVuZGVybGluZVBvc2l0aW9uOjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0OjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0Rm9ySU9TVGV4dEF1dG9zaXppbmc6OmFw
cGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0RW1waGFzaXNTdHls
ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5UmVzaXplOjph
cHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlWZXJ0aWNhbEFsaWdu
OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlab29tOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5OjphcHBseVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwUGF0aDo6YXBwbHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5U2hhcGU6OmFwcGx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUltYWdlUmVzb2x1dGlvbjo6YXBwbHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEluZGVudDo6YXBwbHlWYWx1
ZSk6CisgICAgICAgICogY3NzL01lZGlhTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBv
cnRNZWRpYVF1ZXJ5V2FybmluZ0lmTmVlZGVkKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2
YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpudW1iZXJWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcmllbnRhdGlvbk1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZXZhbFJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlX3BpeGVsX3JhdGlvTWVk
aWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHV0aW9uTWVkaWFGZWF0dXJl
RXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OnZpZXdfbW9kZU1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRl
ck1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAqIGNzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5U1ZHUHJvcGVydHkpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR3JpZFRyYWNrU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHcmlkVHJhY2tMaXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdyaWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpoYXNWYXJpYWJs
ZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3VzdG9tRmlsdGVy
QXJyYXlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cGFyc2VD
dXN0b21GaWx0ZXJDb2xvclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpwYXJzZUN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uV2l0aElubGluZVN5bnRheCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpj
cmVhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAgICAgKiBjc3MvVHJhbnNmb3JtRnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybXNGb3JWYWx1ZSk6CisgICAgICAgICog
Y3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9y
dFN0eWxlUmVzb2x2ZXI6OmdldFZpZXdwb3J0QXJndW1lbnRWYWx1ZSk6CisgICAgICAgICogY3Nz
L1dlYktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6
OnNldE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRTaXpl
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppZGVudGlmaWVyRm9yU3R5bGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxl
bWVudEVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjc3NWYWx1ZVRvUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmV4dHJh
Y3RGb250U2l6ZURlbHRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dGV4dERp
cmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5
QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVz
Rm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmxlZ2Fj
eUZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlv
bkZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNoYW5nZTo6ZXh0cmFjdFRl
eHRTdHlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udFdlaWdodElzQm9sZCk6CisgICAgICAg
IChXZWJDb3JlOjppc1RyYW5zcGFyZW50Q29sb3JWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9t
YXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9u
ZSk6CisKKzIwMTMtMDktMzAgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNv
bT4KKwogICAgICAgICBHZW5lcmF0ZSB0b0NTU0NhbGNWYWx1ZSBpbnN0ZWFkIG9mIHVzaW5nIG1h
bnVhbCBjYXN0IGZ1bmN0aW9uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjIwNTUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApp
bmRleCAxMmZmNThlNDE4MmIzNDcyNWQ4MTQ1ZDgyN2RmOWJlOTdkY2Y0YmE0Li5lODQzMTdkNjdh
MjU5NjBlOTg1NmZjMmExYmMwYmM4YjViNzdhMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjph
ZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAg
ICAgICAgaWYgKCFmb250U3R5bGUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
Zm9udFN0eWxlLmdldCgpKS0+Z2V0VmFsdWVJRCgpKSB7CisgICAgICAgIHN3aXRjaCAodG9DU1NQ
cmltaXRpdmVWYWx1ZShmb250U3R5bGUuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAg
Y2FzZSBDU1NWYWx1ZU5vcm1hbDoKICAgICAgICAgICAgIHRyYWl0c01hc2sgfD0gRm9udFN0eWxl
Tm9ybWFsTWFzazsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQg
Q1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2Uq
IGZvbnRGYWNlUnVsZSkKICAgICAgICAgaWYgKCFmb250V2VpZ2h0LT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KGZvbnRXZWlnaHQuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpIHsKKyAg
ICAgICAgc3dpdGNoICh0b0NTU1ByaW1pdGl2ZVZhbHVlKGZvbnRXZWlnaHQuZ2V0KCkpLT5nZXRW
YWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUJvbGQ6CiAgICAgICAgIGNhc2UgQ1NT
VmFsdWU3MDA6CiAgICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRXZWlnaHQ3MDBNYXNrOwpA
QCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUo
Y29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFudHM7ICsraSkg
ewotICAgICAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
cmlhbnRMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKS0+Z2V0VmFsdWVJRCgpKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFyaWFudExpc3QtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soaSkpLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlTm9ybWFsOgogICAgICAgICAgICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZv
bnRWYXJpYW50Tm9ybWFsTWFzazsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjQs
NyArMjY0LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBT
dHlsZVJ1bGVGb250RmFjZSogZm9udEZhY2VSdWxlKQogICAgIC8vIEhhc2ggdW5kZXIgZXZlcnkg
c2luZ2xlIGZhbWlseSBuYW1lLgogICAgIGludCBmYW1pbHlMZW5ndGggPSBmYW1pbHlMaXN0LT5s
ZW5ndGgoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZhbWlseUxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBpdGVtID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPihmYW1pbHlMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGl0ZW0gPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGZhbWlseUxpc3Qt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOwogICAgICAgICBTdHJpbmcgZmFtaWx5TmFtZTsK
ICAgICAgICAgaWYgKGl0ZW0tPmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgIGZhbWlseU5hbWUg
PSBpdGVtLT5nZXRTdHJpbmdWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwCmluZGV4IDI5MGY1NjJmNmRkY2IyZTBhZDBiNzE4ZjI3ODZlMGUwYjg3MzQ4ZjEuLjI1
MDFlYWNiMmM2M2MxZWMxZDc0ZjFiMDA2MDc0MTRmMjkyNzdiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAgLTYyLDEwICs2Miw4IEBAIFBhc3NSZWZQdHI8SW1h
Z2U+IENTU0dyYWRpZW50VmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25z
dCBJbnRTaXplCiAKICAgICBpZiAoaXNMaW5lYXJHcmFkaWVudFZhbHVlKCkpCiAgICAgICAgIGdy
YWRpZW50ID0gdG9DU1NMaW5lYXJHcmFkaWVudFZhbHVlKHRoaXMpLT5jcmVhdGVHcmFkaWVudChy
ZW5kZXJlciwgc2l6ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChpc1JhZGlhbEdyYWRp
ZW50VmFsdWUoKSk7CisgICAgZWxzZQogICAgICAgICBncmFkaWVudCA9IHRvQ1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZSh0aGlzKS0+Y3JlYXRlR3JhZGllbnQocmVuZGVyZXIsIHNpemUpOwotICAgIH0K
IAogICAgIFJlZlB0cjxHcmFkaWVudEltYWdlPiBuZXdJbWFnZSA9IEdyYWRpZW50SW1hZ2U6OmNy
ZWF0ZShncmFkaWVudCwgc2l6ZSk7CiAgICAgaWYgKGNhY2hlYWJsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCA3ODVmNGNlMDA0OGFiNGNi
YzNiNjU0ODhlOTZiOGVhZjg5MmZiOTVmLi4xNjhkM2E3OWYwNTBhZjQwZWVkOTk0OTNhNjUxMGE4
NWJlOTI4NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFs
dWUuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpz
dWJpbWFnZUlzUGVuZGluZyhDU1NWYWx1ZSogdmFsdWUpCiAgICAgaWYgKHZhbHVlLT5pc0ltYWdl
R2VuZXJhdG9yVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUqPih2YWx1ZSktPmlzUGVuZGluZygpOwogCi0gICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkgJiYgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSkt
PmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkgJiYgdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIENhY2hlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjpjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwgQ2FjCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
ICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRWYWx1ZUlEKCkg
PT0gQ1NTVmFsdWVOb25lKQorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHRv
Q1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IGQ2MzkxYzY0MDRlODk5M2NiNzhiZGI1
ZjI3M2EzNDY4NjRlZjc5OTAuLjI0YWUzODUyNDgzZmM0NDEzNWQyMTJjNDU5YjJhOGZhNjliNGM5
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgdm9pZCBDU1NJbWFnZVNldFZhbHVlOjpmaWxsSW1hZ2VTZXQoKQogICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbGVuZ3RoKTsKICAgICAgICAgQ1NTVmFs
dWUqIHNjYWxlRmFjdG9yVmFsdWUgPSBpdGVtKGkpOwogICAgICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihzY2FsZUZhY3RvclZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwot
ICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4oc2NhbGVGYWN0b3JWYWx1ZSktPmdldEZsb2F0VmFsdWUoKTsKKyAgICAgICAgZmxvYXQgc2Nh
bGVGYWN0b3IgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHNjYWxlRmFjdG9yVmFsdWUpLT5nZXRGbG9h
dFZhbHVlKCk7CiAKICAgICAgICAgSW1hZ2VXaXRoU2NhbGUgaW1hZ2U7CiAgICAgICAgIGltYWdl
LmltYWdlVVJMID0gaW1hZ2VVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGIwNDQ2
MTAzMmQxNjAzNGRhYmRmMzQxZjFhN2ZhNDkyMjFlYzQzMDEuLmIxNTAyYmFiOTk5YjA0NGUxMDZh
YzRkZDY3YmI1OTk4N2E4OTI5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xMzg5
LDcgKzEzODksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBj
b25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdHJpY3QpCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1p
dGl2ZVZhbHVlKHZhbHVlKTsKICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlLT5pc1JHQkNvbG9yKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTU4Nyw3ICsxNTg3LDcgQEAgdm9pZCBDU1NQ
YXJzZXI6OmFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSwgYm8KICAgICAvLyBUaGlzIHByb3BlcnR5IGRvZXNuJ3QgYmVsb25nIHRvIGEg
c2hvcnRoYW5kIG9yIGlzIGEgQ1NTIHZhcmlhYmxlICh3aGljaCB3aWxsIGJlIHJlc29sdmVkIGxh
dGVyKS4KICAgICBpZiAoIW1fY3VycmVudFNob3J0aGFuZAogI2lmIEVOQUJMRShDU1NfVkFSSUFC
TEVTKQotICAgICAgICB8fCAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgpKS0+aXNWYXJpYWJsZU5hbWUoKSkKKyAg
ICAgICAgfHwgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgdG9DU1NQcmltaXRpdmVWYWx1
ZSh2YWx1ZS5nZXQoKSktPmlzVmFyaWFibGVOYW1lKCkpCiAjZW5kaWYKICAgICAgICAgKSB7CiAg
ICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5hcHBlbmQoQ1NTUHJvcGVydHkocHJvcElkLCB2YWx1
ZSwgaW1wb3J0YW50LCBmYWxzZSwgQ1NTUHJvcGVydHlJbnZhbGlkLCBtX2ltcGxpY2l0U2hvcnRo
YW5kIHx8IGltcGxpY2l0KSk7CkBAIC00MTI2LDggKzQxMjYsOCBAQCB2b2lkIENTU1BhcnNlcjo6
cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBS
ZWZQdHI8QwogICAgICAgICB2YWx1ZTEuc3dhcCh2YWx1ZTIpOwogCiAjaWZuZGVmIE5ERUJVRwot
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaXJzdCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUxLmdldCgpKTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZTIuZ2V0KCkpOworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBmaXJzdCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUxLmdldCgpKTsKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZTIu
Z2V0KCkpOwogICAgIGlkZW50MSA9IGZpcnN0LT5nZXRQYWlyVmFsdWUoKS0+Zmlyc3QoKS0+Z2V0
VmFsdWVJRCgpOwogICAgIGlkZW50MiA9IHNlY29uZC0+Z2V0UGFpclZhbHVlKCktPmZpcnN0KCkt
PmdldFZhbHVlSUQoKTsKICAgICBBU1NFUlQoaWRlbnQxID09IENTU1ZhbHVlTGVmdCB8fCBpZGVu
dDEgPT0gQ1NTVmFsdWVSaWdodCk7CkBAIC00MTg3LDggKzQxODcsOCBAQCB2b2lkIENTU1BhcnNl
cjo6cGFyc2VGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZlB0
cjxDU1NWYWx1ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZTEgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlMS5nZXQoKSk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1
ZTIgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlMi5nZXQoKSk7CisgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZTEgPSB0b0NTU1ByaW1pdGl2ZVZh
bHVlKHZhbHVlMS5nZXQoKSk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRW
YWx1ZTIgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlMi5nZXQoKSk7CiAKICAgICB2YWx1ZTEu
Y2xlYXIoKTsKICAgICB2YWx1ZTIuY2xlYXIoKTsKQEAgLTQyODUsNyArNDI4NSw3IEBAIHZvaWQg
Q1NTUGFyc2VyOjpwYXJzZUZpbGxSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUxLCBSZWZQ
dHI8Q1NTVmFsdWU+JiB2YWx1CiAKICAgICAvLyBJZiBvbmx5IG9uZSB2YWx1ZSB3YXMgc3BlY2lm
aWVkLCB2YWx1ZTIgaXMgdGhlIHNhbWUgYXMgdmFsdWUxLgogICAgIG1faW1wbGljaXRTaG9ydGhh
bmQgPSB0cnVlOwotICAgIHZhbHVlMiA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlMS5nZXQoKSktPmdldFZh
bHVlSUQoKSk7CisgICAgdmFsdWUyID0gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUxLmdldCgpKS0+Z2V0VmFsdWVJRCgpKTsKIH0K
IAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaXplKENTU1Byb3Bl
cnR5SUQgcHJvcElkLCBib29sJiBhbGxvd0NvbW1hKQpAQCAtNzcwOSwxMSArNzcwOSwxMSBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVmFs
dWVMaXN0KiB2YWx1ZUxpc3QsIFJlZgogICAgIEFTU0VSVCghY2VudGVyWCB8fCBjZW50ZXJYLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpOwogICAgIEFTU0VSVCghY2VudGVyWSB8fCBjZW50ZXJZLT5pc1By
aW1pdGl2ZVZhbHVlKCkpOwogCi0gICAgcmVzdWx0LT5zZXRGaXJzdFgoc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihjZW50ZXJYLmdldCgpKSk7Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRY
KHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY2VudGVyWC5nZXQoKSkpOworICAgIHJl
c3VsdC0+c2V0Rmlyc3RYKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWC5nZXQoKSkpOworICAg
IHJlc3VsdC0+c2V0U2Vjb25kWCh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclguZ2V0KCkpKTsK
ICAgICAvLyBDU1MzIHJhZGlhbCBncmFkaWVudHMgYWx3YXlzIHNoYXJlIHRoZSBzYW1lIHN0YXJ0
IGFuZCBlbmQgcG9pbnQuCi0gICAgcmVzdWx0LT5zZXRGaXJzdFkoc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihjZW50ZXJZLmdldCgpKSk7Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRZKHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY2VudGVyWS5nZXQoKSkpOworICAgIHJlc3Vs
dC0+c2V0Rmlyc3RZKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWS5nZXQoKSkpOworICAgIHJl
c3VsdC0+c2V0U2Vjb25kWSh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclkuZ2V0KCkpKTsKIAog
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2hhcGVWYWx1ZTsKICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHNpemVWYWx1ZTsKQEAgLTc5NzMsMTEgKzc5NzMsMTEgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxp
c3QsIFJlZlB0cjxDU1NWYWwKICAgICAgICAgYSA9IGFyZ3MtPmN1cnJlbnQoKTsKICAgICAgICAg
aWYgKCFhKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQtPnNldEZp
cnN0WChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNlbnRlclguZ2V0KCkpKTsKLSAg
ICAgICAgcmVzdWx0LT5zZXRGaXJzdFkoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihj
ZW50ZXJZLmdldCgpKSk7CisgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RYKHRvQ1NTUHJpbWl0aXZl
VmFsdWUoY2VudGVyWC5nZXQoKSkpOworICAgICAgICByZXN1bHQtPnNldEZpcnN0WSh0b0NTU1By
aW1pdGl2ZVZhbHVlKGNlbnRlclkuZ2V0KCkpKTsKICAgICAgICAgLy8gUmlnaHQgbm93LCBDU1Mg
cmFkaWFsIGdyYWRpZW50cyBoYXZlIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgY2VudGVycy4KLSAg
ICAgICAgcmVzdWx0LT5zZXRTZWNvbmRYKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
Y2VudGVyWC5nZXQoKSkpOwotICAgICAgICByZXN1bHQtPnNldFNlY29uZFkoc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPihjZW50ZXJZLmdldCgpKSk7CisgICAgICAgIHJlc3VsdC0+c2V0
U2Vjb25kWCh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclguZ2V0KCkpKTsKKyAgICAgICAgcmVz
dWx0LT5zZXRTZWNvbmRZKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWS5nZXQoKSkpOwogICAg
IH0KIAogICAgIGlmIChzaGFwZVZhbHVlIHx8IHNpemVWYWx1ZSB8fCBob3Jpem9udGFsU2l6ZSB8
fCBjZW50ZXJYIHx8IGNlbnRlclkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5o
CmluZGV4IGJmYTMzMTUzYjQ2ZTA3YmI1ZWFjNjA3NWEwMmMwZTJmZDRlMTU3ZmEuLmFjNzgwMzg2
MWI1NDMyYzdhNThjMzRmOWMwNGFiMDMwYzA2MGQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5oCkBAIC00MDEsMTcgKzQwMSw4IEBAIHByaXZhdGU6CiAgICAgfSBtX3Zh
bHVlOwogfTsKIAotaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlKiB0b0NTU1ByaW1pdGl2ZVZhbHVl
KENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TighdmFsdWUgfHwgdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotfQorQ1NTX1ZBTFVFX1RZUEVfQ0FT
VFMoUHJpbWl0aXZlVmFsdWUpCiAKLWlubGluZSBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogdG9D
U1NQcmltaXRpdmVWYWx1ZShjb25zdCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXZhbHVlIHx8IHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKLX0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9T
dHlsZU1hcC5jcHAKaW5kZXggNzJmYjk4NDE4M2QxYTE2YTA3MDBiNTFkNzg0MTJiYmM5Y2I5ODNj
OC4uMGJhY2E3MzBlZmJiOGMzOTA4MjI1Yzk3NTkwOWZiMDIzZDVhZDk5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NUb1N0eWxlTWFwLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIENTU1RvU3R5bGVN
YXA6Om1hcEZpbGxBdHRhY2htZW50KENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENT
U1ZhbHVlKgogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUZpeGVkOgog
ICAgICAgICBsYXllci0+c2V0QXR0YWNobWVudChGaXhlZEJhY2tncm91bmRBdHRhY2htZW50KTsK
QEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsQ2xpcChDU1NQcm9w
ZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUKICAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJp
bWl0aXZlVmFsdWUodmFsdWUpOwogICAgIGxheWVyLT5zZXRDbGlwKCpwcmltaXRpdmVWYWx1ZSk7
CiB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxDb21w
b3NpdGUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqCiAgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBsYXllci0+c2V0Q29tcG9zaXRlKCpwcmlt
aXRpdmVWYWx1ZSk7CiB9CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6
Om1hcEZpbGxCbGVuZE1vZGUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFs
dWUqCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBsYXllci0+c2V0Qmxl
bmRNb2RlKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENT
U1RvU3R5bGVNYXA6Om1hcEZpbGxPcmlnaW4oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXll
ciwgQ1NTVmFsdWUqIHZhbAogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAg
bGF5ZXItPnNldE9yaWdpbigqcHJpbWl0aXZlVmFsdWUpOwogfQogCkBAIC0xNjQsNyArMTY0LDcg
QEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsUmVwZWF0WChDU1NQcm9wZXJ0eUlELCBGaWxs
TGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmEKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFs
dWUpOwogICAgIGxheWVyLT5zZXRSZXBlYXRYKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKQEAgLTE3
OCw3ICsxNzgsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZKENTU1Byb3Bl
cnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YQogICAgIGlmICghdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZSk7CiAgICAgbGF5ZXItPnNldFJlcGVhdFkoKnByaW1pdGl2ZVZhbHVlKTsK
IH0KIApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUo
Q1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUNvbnRhaW4pCiAg
ICAgICAgIGxheWVyLT5zZXRTaXplVHlwZShDb250YWluKTsKICAgICBlbHNlIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ292ZXIpCkBAIC0yMzksNyArMjM5LDcg
QEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwgRmlsbExheWVyKiBsYXllciwKIAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHls
ZSgpLT5lZmZlY3RpdmVab29tKCk7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KTsKICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOwogICAg
IGlmIChwYWlyKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHlJRCwgcHJvcGVydHlJ
RCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblggfHwgcHJvcGVydHlJRCA9PSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgpOwpAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgQ1NT
VG9TdHlsZU1hcDo6bWFwRmlsbFlQb3NpdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZp
bGxMYXllciogbGF5ZXIsCiAKICAgICBmbG9hdCB6b29tRmFjdG9yID0gc3R5bGUoKS0+ZWZmZWN0
aXZlWm9vbSgpOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgUGFp
ciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKICAgICBpZiAocGFpcikg
ewogICAgICAgICBBU1NFUlRfVU5VU0VEKHByb3BlcnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb25ZKTsKQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6
Om1hcEZpbGxNYXNrU291cmNlVHlwZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBD
U1NWYQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgc3dpdGNoIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUFscGhhOgogICAg
ICAgICB0eXBlID0gRU1hc2tTb3VyY2VUeXBlOjpNYXNrQWxwaGE7CkBAIC0zMzcsNyArMzM3LDcg
QEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EZWxheShBbmltYXRpb24qIGFuaW1h
dGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7
CiAgICAgYW5pbWF0aW9uLT5zZXREZWxheShwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZVRpbWU8ZG91
YmxlLCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7CiB9CiAKQEAgLTM1MSw3ICszNTEs
NyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRpcmVjdGlvbihBbmltYXRpb24q
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KTsKICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAgICBjYXNl
IENTU1ZhbHVlTm9ybWFsOgogICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6
QW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsKTsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIENTU1Rv
U3R5bGVNYXA6Om1hcEFuaW1hdGlvbkR1cmF0aW9uKEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NW
YWx1ZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBhbmlt
YXRpb24tPnNldER1cmF0aW9uKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlVGltZTxkb3VibGUsIENT
U1ByaW1pdGl2ZVZhbHVlOjpTZWNvbmRzPigpKTsKIH0KIApAQCAtMzk0LDcgKzM5NCw3IEBAIHZv
aWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRmlsbE1vZGUoQW5pbWF0aW9uKiBsYXllciwg
Q1NTVmFsdWUqIHZhbHVlKQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAg
c3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1
ZU5vbmU6CiAgICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZU5vbmUp
OwpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uSXRl
cmF0aW9uQ291bnQoQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2CiAgICAgaWYgKCF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICBhbmltYXRpb24tPnNldEl0ZXJhdGlv
bkNvdW50KEFuaW1hdGlvbjo6SXRlcmF0aW9uQ291bnRJbmZpbml0ZSk7CiAgICAgZWxzZQpAQCAt
NDQwLDcgKzQ0MCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uTmFtZShBbmlt
YXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vbmUpCiAgICAgICAgIGxheWVyLT5zZXRJc05vbmVBbmltYXRpb24odHJ1ZSk7CiAgICAgZWxz
ZQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUGxh
eVN0YXRlKEFuaW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJp
bWl0aXZlVmFsdWUodmFsdWUpOwogICAgIEVBbmltUGxheVN0YXRlIHBsYXlTdGF0ZSA9IChwcmlt
aXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlUGF1c2VkKSA/IEFuaW1QbGF5U3Rh
dGVQYXVzZWQgOiBBbmltUGxheVN0YXRlUGxheWluZzsKICAgICBsYXllci0+c2V0UGxheVN0YXRl
KHBsYXlTdGF0ZSk7CiB9CkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25Qcm9wZXJ0eShBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVl
KQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbGwpIHsKICAgICAgICAgYW5pbWF0aW9uLT5z
ZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCk7CiAgICAgICAgIGFuaW1hdGlv
bi0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJbnZhbGlkKTsKQEAgLTQ5NCw3ICs0OTQsNyBAQCB2
b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1hdGlvbiog
YW5pbWF0aW9uLCBDU1NWYWx1ZSogdgogICAgIH0KIAogICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsK
ICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgICAg
IGNhc2UgQ1NTVmFsdWVMaW5lYXI6CiAgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1
bmN0aW9uKExpbmVhclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKSk7CkBAIC02MzcsNyArNjM3LDcg
QEAgTGVuZ3RoQm94IENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUXVhZChDU1NWYWx1
ZSogdmFsdWUpCiAgICAgZmxvYXQgem9vbSA9IHVzZVNWR1pvb21SdWxlcygpID8gMS4wZiA6IHN0
eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKIAogICAgIC8vIFJldHJpZXZlIHRoZSBwcmltaXRpdmUg
dmFsdWUuCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvcmRlcldpZHRocyA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBib3Jk
ZXJXaWR0aHMgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgIC8vIFNldCB1cCBh
IGxlbmd0aCBib3ggdG8gcmVwcmVzZW50IG91ciBpbWFnZSBzbGljZXMuCiAgICAgTGVuZ3RoQm94
IGJveDsgLy8gRGVmYXVsdHMgdG8gJ2F1dG8nIHNvIHdlIGRvbid0IGhhdmUgdG8gaGFuZGxlIHRo
YXQgZXhwbGljaXRseSBiZWxvdy4KQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIENTU1RvU3R5bGVN
YXA6Om1hcE5pbmVQaWVjZUltYWdlUmVwZWF0KENTU1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1h
Z2UmIGltYQogICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAg
IFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CiAgICAgaWYgKCFw
YWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKaW5kZXggMjA0OTUzODJlYjA4NzA2OGM3NjRlMmEyODQx
NDQyYWM0M2ExNGYyOC4uYmU5MjI2MDYyMDgzZjhkNzFjMzE1MDFmMTU4NmM1YzhmOGQ4MzRmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBDU1NWYWx1
ZTo6ZGVzdHJveSgpCiAgICAgICAgIGRlbGV0ZSB0b0NTU0luaXRpYWxWYWx1ZSh0aGlzKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgUHJpbWl0aXZlQ2xhc3M6Ci0gICAgICAgIGRlbGV0ZSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRoaXMpOworICAgICAgICBkZWxldGUgdG9D
U1NQcmltaXRpdmVWYWx1ZSh0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgUmVmbGVj
dENsYXNzOgogICAgICAgICBkZWxldGUgdG9DU1NSZWZsZWN0VmFsdWUodGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKaW5kZXggNWM4ODdmNzlm
ZWVjMTI4MmNlYmI0MGJlMDk4YmRjN2U3NDcwN2U0NC4uZjZmZTRmYmY1MzE4YTY4NDRhZjZkYTli
Mjc5ZTczZTEzNGEyMDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0
ZWRTdHlsZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5
bGVCdWlsZGVyLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlKENTU1Byb3BlcnR5SUQsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIs
IENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKQotICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgKnN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpKTsKKyAgICAgICAgICAgIHNldFZh
bHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksICp0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSk7
CiAgICAgfQogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCiAgICAg
ewpAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRW
YWx1ZUlEKCkgPT0gaWRNYXBzVG9NaW51c09uZSkKICAgICAgICAgICAgIHNldFZhbHVlKHN0eWxl
UmVzb2x2ZXItPnN0eWxlKCksIC0xKTsKICAgICAgICAgZWxzZQpAQCAtMjE1LDcgKzIxNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gYXV0b0lkZW50
aXR5KQogICAgICAgICAgICAgc2V0QXV0byhzdHlsZVJlc29sdmVyLT5zdHlsZSgpKTsKICAgICAg
ICAgZWxzZSBpZiAodmFsdWVUeXBlID09IE51bWJlcikKQEAgLTI1NCw3ICsyNTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAK
ICAgICAgICAgaWYgKFJlY3QqIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UmVjdFZhbHVlKCkp
IHsKICAgICAgICAgICAgIExlbmd0aCB0b3AgPSBjb252ZXJ0VG9MZW5ndGgoc3R5bGVSZXNvbHZl
ciwgcmVjdC0+dG9wKCkpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgaWYgKGluaGVy
aXRDb2xvckZyb21QYXJlbnQgJiYgcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUN1cnJlbnRjb2xvcikKICAgICAgICAgICAgIGFwcGx5SW5oZXJpdFZhbHVlKHByb3BlcnR5
SUQsIHN0eWxlUmVzb2x2ZXIpOwogICAgICAgICBlbHNlIHsKQEAgLTM2MSw3ICszNjEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7
CiAgICAgICAgIGlmIChub25lRW5hYmxlZCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9uZSkgewogICAgICAgICAgICAgaWYgKG5vbmVVbmRlZmluZWQpCiAgICAg
ICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgTGVuZ3RoKFVuZGVm
aW5lZCkpOwpAQCAtNDE1LDcgKzQxNSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICgh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAoKGlkZW50QmVo
YXZpb3IgPT0gTWFwTm9uZVRvTnVsbCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09
IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHx8IChpZGVudEJlaGF2aW9yID09IE1hcEF1dG9U
b051bGwgJiYgcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pKQog
ICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgbnVsbEF0b20pOwpA
QCAtNDM4LDcgKzQzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVl
LT5nZXRQYWlyVmFsdWUoKTsKICAgICAgICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8
ICFwYWlyLT5zZWNvbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYwMSw3ICs2MDEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSk7CiAKICAgICAgICAgQ1NTVmFsdWVJRCBpZGVudCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1
ZUlEKCk7CiAgICAgICAgIFQgbGVuZ3RoOwpAQCAtNjYxLDcgKzY2MSw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAg
ICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci0+Zm9u
dERlc2NyaXB0aW9uKCk7CiAgICAgICAgIChmb250RGVzY3JpcHRpb24uKnNldHRlckZ1bmN0aW9u
KSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250RGVzY3Jp
cHRpb24oZm9udERlc2NyaXB0aW9uKTsKQEAgLTcxNSw3ICs3MTUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGkudmFsdWUoKTsKICAgICAgICAgICAgIGlmICghaXRl
bS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29u
dGVudFZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVtKTsKICAgICAgICAgICAgIEF0b21p
Y1N0cmluZyBmYWNlOwogICAgICAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS0+aXNTdHJpbmcoKSkK
ICAgICAgICAgICAgICAgICBmYWNlID0gY29udGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOwpA
QCAtODI1LDcgKzgyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2Ny
aXB0aW9uID0gc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7CiAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZSgwKTsKQEAgLTg5OSw3ICs4OTksNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHZhbHVlKTsKICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxl
UmVzb2x2ZXItPmZvbnREZXNjcmlwdGlvbigpOwogICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZh
bHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUludmFsaWQ6CkBAIC05
NjAsNyArOTYwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0g
dmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGlmIChpdGVt
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihp
dGVtKTsKKyAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVtKTsKICAgICAgICAgICAgICAgICAgICAgc3dp
dGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVOb0NvbW1vbkxpZ2F0dXJlczoKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1vbkxpZ2F0dXJlc1N0YXRlID0gRm9udERlc2NyaXB0aW9uOjpEaXNhYmxlZExpZ2F0dXJl
c1N0YXRlOwpAQCAtOTkwLDcgKzk5MCw3IEBAIHB1YmxpYzoKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04odmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU5vcm1hbCk7CisgICAgICAgICAgICBBU1NFUlQodG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CiAgICAgICAgIH0KICNlbmRpZgog
CkBAIC0xMTM4LDcgKzExMzgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWUoQ1NTUHJvcGVydHlJRCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NT
VmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgYm9vbCBzZXRDb3VudGVySW5jcmVtZW50VG9O
b25lID0gY291bnRlckJlaGF2aW9yID09IEluY3JlbWVudCAmJiB2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOworICAgICAgICBib29sIHNldENvdW50ZXJJbmNyZW1lbnRU
b05vbmUgPSBjb3VudGVyQmVoYXZpb3IgPT0gSW5jcmVtZW50ICYmIHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkgJiYgdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmU7CiAKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSAmJiAhc2V0
Q291bnRlckluY3JlbWVudFRvTm9uZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNjMsNyAr
MTE2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghY3VyclZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIFBhaXIq
IHBhaXIgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGN1cnJWYWx1ZSktPmdldFBh
aXJWYWx1ZSgpOworICAgICAgICAgICAgUGFpciogcGFpciA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUo
Y3VyclZhbHVlKS0+Z2V0UGFpclZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIXBhaXIgfHwgIXBh
aXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCkBAIC0xMjEwLDEzICsxMjEwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFVuaXF1ZSgpOwogICAgICAgICAgICAgICAg
ICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5hZGRDdXJzb3Ioc3R5bGVSZXNvbHZlci0+c3R5
bGVJbWFnZShDU1NQcm9wZXJ0eUN1cnNvciwgaW1hZ2UpLCBpbWFnZS0+aG90U3BvdCgpKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAg
ICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0
ZW0pOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzVmFsdWVJRCgp
KQogICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0Q3Vy
c29yKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUtPmlzVmFsdWVJRCgpICYmIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkt
PmN1cnNvcigpICE9IEVDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKSkKICAgICAgICAgICAgICAgICBz
dHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAg
ICAgfQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFs
dWUtPmlzVmFsdWVJRCgpKTsKIAogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVl
SUQoKSAhPSBDU1NWYWx1ZVdlYmtpdE1hdGNoUGFyZW50KQpAQCAtMTI1OSw3ICsxMjU5LDcgQEAg
cHVibGljOgogICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkodmFsdWUpOyBpLmhh
c01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gaS52
YWx1ZSgpOwogICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXRl
bS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgIHQgfD0gKnN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICB0IHw9ICp0b0NTU1ByaW1pdGl2
ZVZhbHVlKGl0ZW0pOwogICAgICAgICB9CiAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkt
PnNldFRleHREZWNvcmF0aW9uKHQpOwogICAgIH0KQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgICAgIHN3
aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkgewogICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZVNtYWxsOgpAQCAtMTMxMiw3ICsxMzEyLDcgQEAgcHVibGljOgogICAgICAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICAgICAg
c3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0TWFycXVlZUxvb3BDb3VudCgtMSk7IC8vIC0xIG1l
YW5zIHJlcGVhdCBmb3JldmVyLgogICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNO
dW1iZXIoKSkKQEAgLTEzMzIsNyArMTMzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgaWYgKENTU1ZhbHVlSUQg
aWRlbnQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgICAgICAgICBzd2l0
Y2ggKGlkZW50KSB7CiAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2xvdzoKQEAgLTEzNjYsNyAr
MTM2Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIFRoaXMgaXMgdHJ1ZSBpZiB2YWx1
ZSBpcyAnYXV0bycgb3IgJ2FscGhhYmV0aWMnLgogICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkgewotICAgICAgICAgICAgVGV4dFVuZGVybGluZVBvc2l0aW9uIHQgPSAqc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgICAgICBUZXh0VW5k
ZXJsaW5lUG9zaXRpb24gdCA9ICp0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFRleHRVbmRlcmxpbmVQb3NpdGlvbih0KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgcHVi
bGljOgogICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkodmFsdWUpOyBpLmhhc01v
cmUoKTsgaS5hZHZhbmNlKCkpIHsKICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gaS52YWx1
ZSgpOwogICAgICAgICAgICAgQVNTRVJUKGl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAg
ICAgICAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb24gdDIgPSAqc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvbiB0MiA9
ICp0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZW0pOwogICAgICAgICAgICAgdCB8PSB0MjsKICAgICAg
ICAgfQogICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0VW5kZXJsaW5lUG9z
aXRpb24oc3RhdGljX2Nhc3Q8VGV4dFVuZGVybGluZVBvc2l0aW9uPih0KSk7CkBAIC0xMzk1LDcg
KzEzOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZSk7CiAgICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0OwogCiAgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQpAQCAtMTQzMyw3
ICsxNDMzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZl
VmFsdWUodmFsdWUpOwogICAgICAgICBMZW5ndGggbGluZUhlaWdodDsKIAogICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCkBAIC0xNTc1LDgg
KzE1NzUsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfSB8IDxwYWdlLXNp
emU+IDxvcmllbnRhdGlvbj4KICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yLmZpcnN0KCktPmlz
UHJpbWl0aXZlVmFsdWUoKSB8fCAhaW5zcGVjdG9yLnNlY29uZCgpLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGZpcnN0ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0b3IuZmly
c3QoKSk7Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0b3Iuc2Vjb25kKCkpOworICAgICAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0ID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpbnNwZWN0b3Iu
Zmlyc3QoKSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZShpbnNwZWN0b3Iuc2Vjb25kKCkpOwogICAgICAgICAgICAgaWYgKGZpcnN0
LT5pc0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gPGxlbmd0aD57Mn0KICAgICAgICAg
ICAgICAgICBpZiAoIXNlY29uZC0+aXNMZW5ndGgoKSkKQEAgLTE1OTYsNyArMTU5Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIC8vIDxsZW5ndGg+IHwgYXV0byB8IDxwYWdlLXNpemU+IHwgWyBw
b3J0cmFpdCB8IGxhbmRzY2FwZV0KICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yLmZpcnN0KCkt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KGluc3BlY3Rvci5maXJzdCgpKTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaW5zcGVjdG9yLmZp
cnN0KCkpOwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gPGxlbmd0aD4KICAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUg
PSBQQUdFX1NJWkVfUkVTT0xWRUQ7CkBAIC0xNjYwLDcgKzE2NjAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZW0p
OwogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRmls
bGVkIHx8IHZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVPcGVuKQogICAgICAgICAgICAg
ICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKCp2YWx1
ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMTY3Miw3ICsxNjcyLDcgQEAgcHVibGljOgog
CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogCiAgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNTdHJpbmcoKSkgewogICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsRmls
bGVkKTsKQEAgLTE4MDEsNyArMTgwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgICAgICBFUmVzaXplIHIgPSBSRVNJ
WkVfTk9ORTsKICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7
CkBAIC0xODMxLDcgKzE4MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9D
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRWYWx1ZUlEKCkpCiAgICAgICAgICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+
c2V0VmVydGljYWxBbGlnbigqcHJpbWl0aXZlVmFsdWUpOwpAQCAtMTkwNiw3ICsxOTA2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTUHJvcGVydHlJRCwgU3R5bGVS
ZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04odmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSk7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkgewog
ICAgICAgICAgICAgcmVzZXRFZmZlY3RpdmVab29tKHN0eWxlUmVzb2x2ZXIpOwpAQCAtMTk2Nyw3
ICsxOTY3LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgRURpc3BsYXkgZGlzcGxheSA9ICpz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgRURpc3BsYXkg
ZGlzcGxheSA9ICp0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgICAgICBpZiAoIWlz
VmFsaWREaXNwbGF5VmFsdWUoc3R5bGVSZXNvbHZlciwgZGlzcGxheSkpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xOTg4LDcgKzE5ODgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgYXBw
bHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NW
YWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgewotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsK
ICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
Tm9uZSkKICAgICAgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCAw
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1NoYXBlKCkpIHsKQEAg
LTIwMTksNyArMjAxOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENT
U1Byb3BlcnR5SUQgcHJvcGVydHksIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1Zh
bHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwog
ICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVB
dXRvKQogICAgICAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIDAp
OwogICAgICAgICAgICAgLy8gRklYTUUgQnVnIDEwMjU3MTogTGF5b3V0IGZvciB0aGUgdmFsdWUg
J291dHNpZGUtc2hhcGUnIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKQEAgLTIwNzIsNyArMjA3Miw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gdmFsdWVMaXN0LT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKGkpOwogICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KGl0ZW0pOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVtKTsKICAgICAgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRnJvbUltYWdlKQogICAgICAgICAgICAgICAg
IHNvdXJjZSA9IEltYWdlUmVzb2x1dGlvbkZyb21JbWFnZTsKICAgICAgICAgICAgIGVsc2UgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVTbmFwKQpAQCAtMjEyOCw3
ICsyMTI4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4oaXRlbSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZW0pOwogICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZS0+Z2V0VmFsdWVJRCgpKQogICAgICAgICAgICAgICAgIGxlbmd0aE9yUGVyY2VudGFnZVZh
bHVlID0gcHJpbWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJz
aW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbiB8IFZpZXdwb3J0
UGVyY2VudGFnZUNvbnZlcnNpb24+KHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2
ZXItPnJvb3RFbGVtZW50U3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+ZWZmZWN0aXZl
Wm9vbSgpKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcApp
bmRleCBlNzc1MDk5OWYxNzZlY2Y2ZDhmOThkOGZmY2I5NzkyNTAwNThmOWNiLi45ZTRlMDEyMTg4
MTk5OWZjMmE1MTkyM2IyNmJmNWM1MTY1ODc4ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNw
cApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgcmVwb3J0TWVkaWFRdWVyeVdhcm5pbmdJZk5lZWRl
ZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IE1lZGlhUXVlcnlTZXQqIG1lCiAgICAgICAgICAg
ICAgICAgaWYgKGV4cC0+bWVkaWFGZWF0dXJlKCkgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnJlc29s
dXRpb25NZWRpYUZlYXR1cmUgfHwgZXhwLT5tZWRpYUZlYXR1cmUoKSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6bWF4X3Jlc29sdXRpb25NZWRpYUZlYXR1cmUgfHwgZXhwLT5tZWRpYUZlYXR1cmUoKSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluX3Jlc29sdXRpb25NZWRpYUZlYXR1cmUpIHsKICAgICAg
ICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGNzc1ZhbHVlID0gIGV4cC0+dmFsdWUoKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNzc1ZhbHVlICYmIGNzc1ZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY3NzVmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
dG9DU1NQcmltaXRpdmVWYWx1ZShjc3NWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUtPmlzRG90c1BlckluY2goKSB8fCBwcmltaXRpdmVWYWx1ZS0+aXNE
b3RzUGVyQ2VudGltZXRlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFJlc29s
dXRpb25XYXJuaW5nTWVzc2FnZVRvQ29uc29sZShkb2N1bWVudCwgbWVkaWFRdWVyeVNldC0+bWVk
aWFUZXh0KCksIHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGM5NzMyMzVmNDQyYjdj
MDc0MGU5MGU4ZDdiODY0ZjdjZjMwMTU1OGMuLmJiODEwY2VhNTUzODU0MGUzY2E3OGI3NTc4ODdh
NGY3YzM3NTFmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZh
bHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5j
cHAKQEAgLTE5Miw4ICsxOTIsOCBAQCBzdGF0aWMgYm9vbCBjb21wYXJlQXNwZWN0UmF0aW9WYWx1
ZShDU1NWYWx1ZSogdmFsdWUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgTWVkaQogc3RhdGljIGJv
b2wgbnVtYmVyVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBmbG9hdCYgcmVzdWx0KQogewogICAgIGlm
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpCi0gICAgICAgICYmIHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5pc051bWJlcigpKSB7Ci0gICAgICAgIHJlc3VsdCA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRGbG9hdFZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgJiYgdG9DU1NQcmltaXRpdmVWYWx1
ZSh2YWx1ZSktPmlzTnVtYmVyKCkpIHsKKyAgICAgICAgcmVzdWx0ID0gdG9DU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZSktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQy
LDcgKzI0Miw3IEBAIHN0YXRpYyBib29sIG9yaWVudGF0aW9uTWVkaWFGZWF0dXJlRXZhbChDU1NW
YWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiwgRnJhbWUqIGZyCiAgICAgaW50IHdpZHRoID0gdmll
dy0+bGF5b3V0V2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gdmlldy0+bGF5b3V0SGVpZ2h0KCk7
CiAgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAg
Y29uc3QgQ1NTVmFsdWVJRCBpZCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpLT5nZXRWYWx1ZUlEKCk7CisgICAgICAgIGNvbnN0IENTU1ZhbHVlSUQgaWQgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpOwogICAgICAgICBpZiAod2lkdGggPiBo
ZWlnaHQpIC8vIFNxdWFyZSB2aWV3cG9ydCBpcyBwb3J0cmFpdC4KICAgICAgICAgICAgIHJldHVy
biBDU1NWYWx1ZUxhbmRzY2FwZSA9PSBpZDsKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9ydHJh
aXQgPT0gaWQ7CkBAIC0zMDYsMTkgKzMwNiwxOSBAQCBzdGF0aWMgYm9vbCBldmFsUmVzb2x1dGlv
bihDU1NWYWx1ZSogdmFsdWUsIEZyYW1lKiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQog
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJlc29sdXRpb24gPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmVzb2x1dGlv
biA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIHJldHVybiBjb21wYXJlVmFsdWUo
ZGV2aWNlU2NhbGVGYWN0b3IsIHJlc29sdXRpb24tPmlzTnVtYmVyKCkgPyByZXNvbHV0aW9uLT5n
ZXRGbG9hdFZhbHVlKCkgOiByZXNvbHV0aW9uLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfRFBQWCksIG9wKTsKIH0KIAogc3RhdGljIGJvb2wgZGV2aWNlX3BpeGVsX3JhdGlv
TWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSAqdmFsdWUsIFJlbmRlclN0eWxlKiwgRnJhbWUqIGZy
YW1lLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCiB7Ci0gICAgcmV0dXJuICghdmFsdWUgfHwgc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmlzTnVtYmVyKCkpICYmIGV2YWxS
ZXNvbHV0aW9uKHZhbHVlLCBmcmFtZSwgb3ApOworICAgIHJldHVybiAoIXZhbHVlIHx8IHRvQ1NT
UHJpbWl0aXZlVmFsdWUodmFsdWUpLT5pc051bWJlcigpKSAmJiBldmFsUmVzb2x1dGlvbih2YWx1
ZSwgZnJhbWUsIG9wKTsKIH0KIAogc3RhdGljIGJvb2wgcmVzb2x1dGlvbk1lZGlhRmVhdHVyZUV2
YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSosIEZyYW1lKiBmcmFtZSwgTWVkaWFGZWF0
dXJlUHJlZml4IG9wKQogewogI2lmIEVOQUJMRShSRVNPTFVUSU9OX01FRElBX1FVRVJZKQotICAg
IHJldHVybiAoIXZhbHVlIHx8IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
LT5pc1Jlc29sdXRpb24oKSkgJiYgZXZhbFJlc29sdXRpb24odmFsdWUsIGZyYW1lLCBvcCk7Cisg
ICAgcmV0dXJuICghdmFsdWUgfHwgdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmlzUmVzb2x1
dGlvbigpKSAmJiBldmFsUmVzb2x1dGlvbih2YWx1ZSwgZnJhbWUsIG9wKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwpAQCAtMzQyLDcg
KzM0Miw3IEBAIHN0YXRpYyBib29sIGNvbXB1dGVMZW5ndGgoQ1NTVmFsdWUqIHZhbHVlLCBib29s
IHN0cmljdCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1p
dGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSkg
ewogICAgICAgICByZXN1bHQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKTsKQEAgLTU5
Niw3ICs1OTYsNyBAQCBzdGF0aWMgYm9vbCB2aWV3X21vZGVNZWRpYUZlYXR1cmVFdmFsKENTU1Zh
bHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqLCBGcmFtZSogZnJhbQogICAgIGlmICghdmFsdWUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY29uc3QgaW50IHZpZXdNb2RlQ1NTS2V5d29yZElE
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQoKTsK
KyAgICBjb25zdCBpbnQgdmlld01vZGVDU1NLZXl3b3JkSUQgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHZhbHVlKS0+Z2V0VmFsdWVJRCgpOwogICAgIGNvbnN0IFBhZ2U6OlZpZXdNb2RlIHZpZXdNb2Rl
ID0gZnJhbWUtPnBhZ2UoKS0+dmlld01vZGUoKTsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwog
ICAgIHN3aXRjaCAodmlld01vZGUpIHsKQEAgLTY3OCw3ICs2NzgsNyBAQCBzdGF0aWMgYm9vbCBw
b2ludGVyTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiwgRnJh
bWUqIGZyYW1lLAogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgQ1NTVmFsdWVJRCBpZCA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRWYWx1ZUlEKCk7CisgICAgY29uc3QgQ1NTVmFs
dWVJRCBpZCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpLT5nZXRWYWx1ZUlEKCk7CiAgICAg
cmV0dXJuIChwb2ludGVyID09IE5vUG9pbnRlciAmJiBpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAg
ICAgIHx8IChwb2ludGVyID09IFRvdWNoUG9pbnRlciAmJiBpZCA9PSBDU1NWYWx1ZUNvYXJzZSkK
ICAgICAgICAgfHwgKHBvaW50ZXIgPT0gTW91c2VQb2ludGVyICYmIGlkID09IENTU1ZhbHVlRmlu
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggYzM5
NzIzY2E3NWE5Y2Q0ZDI1N2QwMTE1ZWIxMjQyYjFkMGMyODVjMi4uYTExZWIyYTk0MWVkNWY3MTQ1
OWZjZDg1YWVjYzZmM2ExZjU2ZWY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NTdHls
ZVNlbGVjdG9yLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBw
bHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgQVNT
RVJUKHZhbHVlKTsKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSAwOwog
ICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBwcmlt
aXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogCiAgICAgY29uc3QgU3Rh
dGUmIHN0YXRlID0gbV9zdGF0ZTsKICAgICBTVkdSZW5kZXJTdHlsZSogc3Znc3R5bGUgPSBzdGF0
ZS5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSog
dmFsdWUpCiAgICAgICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogZGFzaCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGFz
aGVzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICAgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogZGFzaCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoZGFzaGVzLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKGkpKTsKICAgICAgICAgICAgICAgICBhcnJheS5hcHBlbmQoU1ZHTGVuZ3Ro
Ojpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoZGFzaCkpOwogICAgICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggZDYxZTNlMDFiMTQ1YmRlZjg3MWUw
Mzc3OWFiYTZhMjAxOWRkNjZlMC4uYzI4NzkwZThmYjI5OTJlMjU0NjZhNzY3MmRkMGE2ODU0NDli
MTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtNDE4LDgg
KzQxOCw4IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFs
dWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYKICAgICAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgeVZhbHVlID0gbmV4dFZhbHVlOwogCi0gICAgICAg
ICAgICAgICAgICAgIENTU1ZhbHVlSUQgeElkID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZS5nZXQoKSktPmdldFZhbHVlSUQoKTsKLSAgICAgICAgICAgICAgICAgICAgQ1NT
VmFsdWVJRCB5SWQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHlWYWx1ZS5nZXQo
KSktPmdldFZhbHVlSUQoKTsKKyAgICAgICAgICAgICAgICAgICAgQ1NTVmFsdWVJRCB4SWQgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdldCgpKS0+Z2V0VmFsdWVJRCgpOworICAgICAgICAg
ICAgICAgICAgICBDU1NWYWx1ZUlEIHlJZCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoeVZhbHVlLmdl
dCgpKS0+Z2V0VmFsdWVJRCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoeElkICE9IHlJZCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhJZCA9PSBDU1NWYWx1ZVJlcGVhdCAmJiB5
SWQgPT0gQ1NTVmFsdWVOb1JlcGVhdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVz
ZVJlcGVhdFhTaG9ydGhhbmQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IDM3NWQ4YzExMGE3YTlhZjFiMWM2MGNjZWQxNTQwZTAwNjU2ZWE5ZWMuLjUxZmM5OGY1
OTA2MWJjZWVhNmQwZDgwMDNjMGJhNjE2ZWNiM2YxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTE5MjUsNyArMTkyNSw3IEBAIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRU
cmFja1NpemUoQ1NTVmFsdWUqIHZhbHVlLCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUsIGNvbnN0
CiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBQYWlyKiBtaW5N
YXhUcmFja0JyZWFkdGggPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CiAgICAgaWYg
KCFtaW5NYXhUcmFja0JyZWFkdGgpIHsKICAgICAgICAgTGVuZ3RoIHdvcmtpbmdMZW5ndGg7CkBA
IC0xOTQ5LDcgKzE5NDksNyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1Zh
bHVlKiB2YWx1ZSwgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpegogewogICAgIC8vIEhh
bmRsZSAnbm9uZScuCiAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm4gcHJp
bWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7CiAgICAgfQogCkBAIC0x
OTYwLDcgKzE5NjAsNyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVl
KiB2YWx1ZSwgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpegogICAgIGZvciAoQ1NTVmFs
dWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKICAg
ICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGkudmFsdWUoKTsKICAgICAgICAgaWYgKGN1cnJW
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGN1cnJW
YWx1ZSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKGN1cnJWYWx1ZSk7CiAgICAgICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgICAgICBOYW1lZEdyaWRMaW5lc01hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IG5hbWVkR3JpZExpbmVzLmFkZChwcmltaXRpdmVWYWx1ZS0+Z2V0
U3RyaW5nVmFsdWUoKSwgVmVjdG9yPHNpemVfdD4oKSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoY3VycmVudE5hbWVkR3JpZExpbmUpOwpAQCAtMTk4OCw3
ICsxOTg4LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFBvc2l0aW9uKENTU1ZhbHVlKiB2YWx1
ZSwgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICAvLyBGb3Igbm93LCB3ZSBvbmx5IGFjY2Vw
dDogJ2F1dG8nIHwgWyA8aW50ZWdlcj4gfHwgPHN0cmluZz4gXSB8IHNwYW4gJiYgPGludGVnZXI+
PwogICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAg
IEFTU0VSVChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0byk7CiAj
ZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDA0LDE3ICsyMDA0LDE3IEBAIHN0YXRp
YyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSogdmFsdWUsIEdyaWRQb3NpdGlvbiYg
cG9zaXRpb24pCiAgICAgU3RyaW5nIGdyaWRMaW5lTmFtZTsKIAogICAgIENTU1ZhbHVlTGlzdEl0
ZXJhdG9yIGl0ID0gdmFsdWVzOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjdXJyZW50VmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0LnZhbHVlKCkpOworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBjdXJyZW50VmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0LnZhbHVl
KCkpOwogICAgIGlmIChjdXJyZW50VmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVNwYW4p
IHsKICAgICAgICAgaXNTcGFuUG9zaXRpb24gPSB0cnVlOwogICAgICAgICBpdC5hZHZhbmNlKCk7
Ci0gICAgICAgIGN1cnJlbnRWYWx1ZSA9IGl0Lmhhc01vcmUoKSA/IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4oaXQudmFsdWUoKSkgOiAwOworICAgICAgICBjdXJyZW50VmFsdWUgPSBp
dC5oYXNNb3JlKCkgPyB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0LnZhbHVlKCkpIDogMDsKICAgICB9
CiAKICAgICBpZiAoY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1ZS0+aXNOdW1iZXIoKSkgewog
ICAgICAgICBncmlkTGluZU51bWJlciA9IGN1cnJlbnRWYWx1ZS0+Z2V0SW50VmFsdWUoKTsKICAg
ICAgICAgaXQuYWR2YW5jZSgpOwotICAgICAgICBjdXJyZW50VmFsdWUgPSBpdC5oYXNNb3JlKCkg
PyBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0LnZhbHVlKCkpIDogMDsKKyAgICAg
ICAgY3VycmVudFZhbHVlID0gaXQuaGFzTW9yZSgpID8gdG9DU1NQcmltaXRpdmVWYWx1ZShpdC52
YWx1ZSgpKSA6IDA7CiAgICAgfQogCiAgICAgaWYgKGN1cnJlbnRWYWx1ZSAmJiBjdXJyZW50VmFs
dWUtPmlzU3RyaW5nKCkpIHsKQEAgLTIwMzUsNyArMjAzNSw3IEBAIHN0YXRpYyBib29sIGNyZWF0
ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSogdmFsdWUsIEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pCiBz
dGF0aWMgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZShDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAg
aWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJp
bWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUtPmhhc1Zh
cmlhYmxlUmVmZXJlbmNlKCk7CiAgICAgfQogCkBAIC0yMTMzLDcgKzIxMzMsNyBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZh
bHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSA/IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpIDogMDsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpID8gdG9DU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZSkgOiAwOwogCiAgICAgZmxvYXQgem9vbUZhY3RvciA9IHN0YXRlLnN0eWxlKCkt
PmVmZmVjdGl2ZVpvb20oKTsKIApAQCAtMjE4MCw3ICsyMTgwLDcgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICAgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
Y29udGVudFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKyAg
ICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVudFZhbHVlID0gdG9DU1NQcmlt
aXRpdmVWYWx1ZShpdGVtKTsKIAogICAgICAgICAgICAgICAgIGlmIChjb250ZW50VmFsdWUtPmlz
U3RyaW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVu
dChjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBkaWRTZXQpOwpAQCAtMjI1
NCw4ICsyMjU0LDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZmlyc3Qt
PmlzUHJpbWl0aXZlVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oc2Vjb25kLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwotICAgICAgICAgICAg
ICAgIFN0cmluZyBzdGFydFF1b3RlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihm
aXJzdCktPmdldFN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGVuZFF1b3Rl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihzZWNvbmQpLT5nZXRTdHJpbmdWYWx1
ZSgpOworICAgICAgICAgICAgICAgIFN0cmluZyBzdGFydFF1b3RlID0gdG9DU1NQcmltaXRpdmVW
YWx1ZShmaXJzdCktPmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGVu
ZFF1b3RlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShzZWNvbmQpLT5nZXRTdHJpbmdWYWx1ZSgpOwog
ICAgICAgICAgICAgICAgIHF1b3Rlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3RhcnRRdW90ZSwg
ZW5kUXVvdGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNl
dFF1b3RlcyhRdW90ZXNEYXRhOjpjcmVhdGUocXVvdGVzKSk7CkBAIC0zNDg3LDcgKzM0ODcsNyBA
QCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gU3R5bGVSZXNvbHZlcjo6cGFyc2VD
dXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlcgogICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSB2YWx1
ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9D
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJp
bWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIGFycmF5UGFyYW1ldGVyLT5hZGRWYWx1ZShwcmltaXRpdmVW
YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSk7CkBAIC0zNDk4LDcgKzM0OTgsNyBAQCBQYXNzUmVmUHRy
PEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gU3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0b21GaWx0ZXJB
cnJheVBhcmFtZXRlcgogUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IFN0eWxlUmVz
b2x2ZXI6OnBhcnNlQ3VzdG9tRmlsdGVyQ29sb3JQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiBuYW1l
LCBDU1NWYWx1ZUxpc3QqIHZhbHVlcykKIHsKICAgICBBU1NFUlQodmFsdWVzLT5sZW5ndGgoKSk7
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1p
dGl2ZVZhbHVlKHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7CiAgICAgUmVmUHRy
PEN1c3RvbUZpbHRlckNvbG9yUGFyYW1ldGVyPiBjb2xvclBhcmFtZXRlciA9IEN1c3RvbUZpbHRl
ckNvbG9yUGFyYW1ldGVyOjpjcmVhdGUobmFtZSk7CiAgICAgY29sb3JQYXJhbWV0ZXItPnNldENv
bG9yKENvbG9yKGZpcnN0UHJpbWl0aXZlVmFsdWUtPmdldFJHQkEzMlZhbHVlKCkpKTsKICAgICBy
ZXR1cm4gY29sb3JQYXJhbWV0ZXIucmVsZWFzZSgpOwpAQCAtMzUxMSw3ICszNTExLDcgQEAgUGFz
c1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IFN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3VzdG9t
RmlsdGVyTnVtYmVyUGFyYW1ldGUKICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gdmFsdWVzLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJp
bWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2
ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICBudW1iZXJQYXJhbWV0ZXItPmFkZFZhbHVlKHByaW1pdGl2ZVZhbHVl
LT5nZXREb3VibGVWYWx1ZSgpKTsKQEAgLTM1NjAsNyArMzU2MCw3IEBAIFBhc3NSZWZQdHI8Q3Vz
dG9tRmlsdGVyUGFyYW1ldGVyPiBTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFt
ZXRlcihjb25zCiAgICAgaWYgKCF2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCktPmlz
UHJpbWl0aXZlVmFsdWUoKSB8fCB2YWx1ZXMtPmxlbmd0aCgpID4gNCkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjaygwKSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7CiAg
ICAgaWYgKGZpcnN0UHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUikKICAgICAgICAgcmV0dXJuIHBhcnNlQ3VzdG9tRmlsdGVyTnVt
YmVyUGFyYW1ldGVyKG5hbWUsIHZhbHVlcyk7CiAKQEAgLTM1ODAsNyArMzU4MCw3IEBAIGJvb2wg
U3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0KENTU1ZhbHVlKiBw
YXJhbWV0ZXJzVmFsdWUsIEN1CiAgICAgICAgIENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGl0ZXJhdG9y
KHBhcmFtZXRlckl0ZXJhdG9yLnZhbHVlKCkpOwogICAgICAgICBpZiAoIWl0ZXJhdG9yLmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPihpdGVyYXRvci52YWx1ZSgpKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVyYXRvci52YWx1ZSgpKTsKICAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TVFJJTkcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAt
MzY0Nyw3ICszNjQ3LDcgQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJPcGVyYXRpb24+IFN0eWxl
UmVzb2x2ZXI6OmNyZWF0ZUN1c3RvbUZpbHRlck9wZXJhdGlvbldpdGgKIAogICAgICAgICAgICAg
QVNTRVJUKG1peEZ1bmN0aW9uLT5sZW5ndGgoKSA8PSAzKTsKICAgICAgICAgICAgIHdoaWxlIChp
dGVyYXRvci5oYXNNb3JlKCkpIHsKLSAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZXJhdG9y
LnZhbHVlKCkpOworICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlcmF0b3IudmFsdWUoKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKENTU1BhcnNlcjo6aXNCbGVuZE1vZGUocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVl
SUQoKSkpCiAgICAgICAgICAgICAgICAgICAgIG1peFNldHRpbmdzLmJsZW5kTW9kZSA9ICpwcmlt
aXRpdmVWYWx1ZTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDU1NQYXJzZXI6OmlzQ29tcG9z
aXRlT3BlcmF0b3IocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkpCkBAIC0zNjgwLDcgKzM2
ODAsNyBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6
Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0aAogICAgICAgICAvLyB0aGUgbWVzaC1ib3gg
bGlzdCwgaWYgbm90IGl0IG1lYW5zIGl0IGlzIHRoZSBwYXJhbWV0ZXJzIGxpc3QuCiAKICAgICAg
ICAgaWYgKGl0ZXJhdG9yLmhhc01vcmUoKSAmJiBpdGVyYXRvci5pc1ByaW1pdGl2ZVZhbHVlKCkp
IHsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlcmF0b3IudmFsdWUoKSk7CisgICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KGl0ZXJhdG9yLnZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc051
bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgb25seSBvbmUgaW50ZWdlciB2YWx1ZSBp
cyBzcGVjaWZpZWQsIGl0IHdpbGwgc2V0IGJvdGgKICAgICAgICAgICAgICAgICAvLyB0aGUgcm93
cyBhbmQgdGhlIGNvbHVtbnMuCkBAIC0zNjg5LDcgKzM2ODksNyBAQCBQYXNzUmVmUHRyPEN1c3Rv
bUZpbHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uV2l0aAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFRyeSB0byBtYXRj
aCBhbm90aGVyIG51bWJlciBmb3IgdGhlIHJvd3MuCiAgICAgICAgICAgICAgICAgaWYgKGl0ZXJh
dG9yLmhhc01vcmUoKSAmJiBpdGVyYXRvci5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVyYXRvci52YWx1ZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVW
YWx1ZShpdGVyYXRvci52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtZXNoUm93cyA9
IHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aXRlcmF0b3IuYWR2YW5jZSgpOwpAQCAtMzY5OSw3ICszNjk5LDcgQEAgUGFzc1JlZlB0cjxDdXN0
b21GaWx0ZXJPcGVyYXRpb24+IFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUN1c3RvbUZpbHRlck9wZXJh
dGlvbldpdGgKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGl0ZXJhdG9yLmhhc01v
cmUoKSAmJiBpdGVyYXRvci5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4oaXRlcmF0b3IudmFsdWUoKSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZXJhdG9yLnZhbHVlKCkpOwog
ICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVE
ZXRhY2hlZCkgewogICAgICAgICAgICAgICAgIG1lc2hUeXBlID0gTWVzaFR5cGVEZXRhY2hlZDsK
ICAgICAgICAgICAgICAgICBpdGVyYXRvci5hZHZhbmNlKCk7CkBAIC0zNzQ1LDcgKzM3NDUsNyBA
QCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGlu
VmFsdWUsIEZpbHRlck9wZXJhdGlvbnMmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAg
ICBpZiAoaW5WYWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
aW5WYWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRv
Q1NTUHJpbWl0aXZlVmFsdWUoaW5WYWx1ZSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTM4MTYsNyArMzgxNiw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmls
dGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aW9ucyYKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBmaXJzdFZhbHVlID0gZmlsdGVyVmFsdWUtPmxlbmd0aCgpID8gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihmaWx0ZXJWYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSkg
OiAwOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3RWYWx1ZSA9IGZpbHRlclZhbHVl
LT5sZW5ndGgoKSA/IHRvQ1NTUHJpbWl0aXZlVmFsdWUoZmlsdGVyVmFsdWUtPml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soMCkpIDogMDsKICAgICAgICAgc3dpdGNoIChmaWx0ZXJWYWx1ZS0+b3BlcmF0
aW9uVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkdyYXlzY2Fs
ZUZpbHRlck9wZXJhdGlvbjoKICAgICAgICAgY2FzZSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6U2Vw
aWFGaWx0ZXJPcGVyYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJhbnNm
b3JtRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMu
Y3BwCmluZGV4IDIzYWZmNDkyZDExODhiYTI0MjY3MTYzMDhkNDgwZjEzMzBjMGFmN2MuLjY5N2Zj
ZmI4NWI4NGI5NTA4MjRiOWNiNDk1NWY5ZWE0YjExMzRiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCB0cmFuc2Zv
cm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
cm9vdFN0eWxlLAogICAgICAgICBpZiAoaGF2ZU5vblByaW1pdGl2ZVZhbHVlKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0VmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDApKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0VmFsdWUg
PSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDApKTsKIAogICAgICAgICBzd2l0Y2ggKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBl
KCkpIHsKICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb246CkBAIC0xMjQsNyArMTI0LDcgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLAog
ICAgICAgICAgICAgICAgIHN4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAg
ICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNv
bmRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBzZWNvbmRWYWx1
ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzeSA9IHN4OwpAQCAtMTQ2LDExICsxNDYsMTEgQEAgYm9vbCB0cmFu
c2Zvcm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlLAogICAgICAgICAgICAgICAgIHN4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91Ymxl
VmFsdWUoKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5
cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9u
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAy
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMikpOworICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVl
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN6
ID0gdGhpcmRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhv
dXRCb3VuZHNDaGVjaygxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogc2Vjb25kVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN5ID0g
c2Vjb25kVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBzeDsKQEAgLTE3MCw3ICsxNzAsNyBAQCBi
b29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiByb290U3R5bGUsCiAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9GbG9h
dExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yKTsKICAgICAg
ICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlvbikgewogICAgICAg
ICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjaygxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
c2Vjb25kVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVy
dFRvRmxvYXRMZW5ndGgoc2Vjb25kVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3Ip
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTk1LDExICsx
OTUsMTEgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLAogICAgICAgICAgICAgICAgIHR4ID0gY29u
dmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rv
cik7CiAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkg
IT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb24p
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDIp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjaygyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwogICAgICAgICAgICAgICAgICAgICAgICAgdHog
PSBjb252ZXJ0VG9GbG9hdExlbmd0aCh0aGlyZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29t
RmFjdG9yKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAo
dHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5ndGgoc2Vj
b25kVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMjM2LDkgKzIzNiw5IEBAIGJvb2wgdHJhbnNm
b3Jtc0ZvclZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUq
IHJvb3RTdHlsZSwKICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRl
M0RUcmFuc2Zvcm1PcGVyYXRpb246IHsKICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+
bGVuZ3RoKCkgPCA0KQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7Ci0gICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwotICAg
ICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvdXJ0aFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygz
KSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsK
KyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gdG9DU1NQcmltaXRp
dmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7CisgICAg
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZm91cnRoVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZh
bHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMpKTsKICAgICAgICAg
ICAgIGRvdWJsZSB4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAgICAgICAg
IGRvdWJsZSB5ID0gc2Vjb25kVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICBk
b3VibGUgeiA9IHRoaXJkVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CkBAIC0yNTgsNyArMjU4LDcg
QEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLAogICAgICAgICAgICAgICAgIGFuZ2xlWCA9IGFuZ2xl
OwogICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpID09
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBzZWNvbmRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVZID0g
c2Vjb25kVmFsdWUtPmNvbXB1dGVEZWdyZWVzKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CkBAIC0yNzAsMzMgKzI3MCwzMyBAQCBib29sIHRyYW5zZm9ybXNGb3JW
YWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiByb290U3R5
bGUsCiAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpIDwgNikKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRvdWJsZSBhID0gZmlyc3RWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSBiID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSkt
PmdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgYyA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
MikpLT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIGQgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDMpKS0+Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSBlID0gem9vbUZh
Y3RvciAqIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soNCkpLT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAg
ZG91YmxlIGYgPSB6b29tRmFjdG9yICogc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0
cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg1KSktPmdldERvdWJsZVZhbHVl
KCk7CisgICAgICAgICAgICBkb3VibGUgYiA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3Jt
VmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpLT5nZXREb3VibGVWYWx1ZSgpOworICAg
ICAgICAgICAgZG91YmxlIGMgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAg
IGRvdWJsZSBkID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhv
dXRCb3VuZHNDaGVjaygzKSktPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUg
ZSA9IHpvb21GYWN0b3IgKiB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKDQpKS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRv
dWJsZSBmID0gem9vbUZhY3RvciAqIHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNSkpLT5nZXREb3VibGVWYWx1ZSgpOwogICAgICAgICAg
ICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlv
bjo6Y3JlYXRlKGEsIGIsIGMsIGQsIGUsIGYpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeDNEVHJhbnNm
b3JtT3BlcmF0aW9uOiB7CiAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgp
IDwgMTYpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtYXRyaXgoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1W
YWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSktPmdldERvdWJsZVZhbHVlKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpLT5nZXREb3VibGVW
YWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIp
KS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygzKSktPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNCkpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRy
YW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKS0+Z2V0RG91YmxlVmFsdWUo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg2KSktPmdl
dERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soNykpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKDgpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zv
cm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg5KSktPmdldERvdWJsZVZhbHVlKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTApKS0+Z2V0RG91
YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVj
aygxMSkpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB6b29tRmFjdG9yICogc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1W
YWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMikpLT5nZXREb3VibGVWYWx1ZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tRmFjdG9yICogc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygx
MykpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDE0KSktPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFs
dWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTUpKS0+Z2V0RG91YmxlVmFsdWUoKSk7CisgICAg
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgodG9DU1NQcmltaXRpdmVWYWx1ZSh0
cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSktPmdldERvdWJsZVZhbHVl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvQ1NTUHJpbWl0aXZlVmFsdWUo
dHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpLT5nZXREb3VibGVWYWx1
ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKS0+Z2V0RG91YmxlVmFs
dWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1
ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygzKSktPmdldERvdWJsZVZh
bHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvQ1NTUHJpbWl0aXZlVmFs
dWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNCkpLT5nZXREb3VibGVW
YWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZh
bHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKS0+Z2V0RG91Ymxl
VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVW
YWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg2KSktPmdldERvdWJs
ZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvQ1NTUHJpbWl0aXZl
VmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNykpLT5nZXREb3Vi
bGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2
ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDgpKS0+Z2V0RG91
YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRp
dmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg5KSktPmdldERv
dWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvQ1NTUHJpbWl0
aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTApKS0+Z2V0
RG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9DU1NQcmlt
aXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMSkpLT5n
ZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tRmFj
dG9yICogdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjaygxMikpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB6b29tRmFjdG9yICogdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMykpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVl
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDE0KSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFs
dWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTUpKS0+Z2V0RG91YmxlVmFsdWUoKSk7CiAgICAg
ICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4M0RUcmFuc2Zvcm1P
cGVyYXRpb246OmNyZWF0ZShtYXRyaXgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGVh
NjQ3MGE4NGNhYzhhOTA5ZGIxY2Y0ZDgwNGY3ZTM4ODY2ZDQxMGEuLjRlMWU1M2E3NTIzZmIyOWJk
YTlmZjdlYWI4YWE0NjcwN2NmN2E4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9W
aWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9y
dFN0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgZmxvYXQgVmlld3BvcnRTdHls
ZVJlc29sdmVyOjpnZXRWaWV3cG9ydEFyZ3VtZW50VmFsdWUoQ1NTUHJvcGVydHlJRCBpZCkgY29u
c3QKICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAg
ICByZXR1cm4gZGVmYXVsdFZhbHVlOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5nZXQoKSk7Cisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1
ZSh2YWx1ZS5nZXQoKSk7CiAKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTnVtYmVyKCkgfHwg
cHJpbWl0aXZlVmFsdWUtPmlzUHgoKSkKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLT5n
ZXRGbG9hdFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
TWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCmluZGV4
IGEzM2I4OTVkODc2OTZlYzMzZTBlY2JhNjllNTc2Zjg0YjA1YzhjNzguLmI0ZGQ1MGQ2MTRiZTJi
NjkzZWNiMGU2NzM5YjgwNTU3NDA1MDY2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NN
YXRyaXguY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgV2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRy
aXhWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBzdHlsZURlY2xhcmF0aW9uLT5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKIAogICAgICAgICAvLyBDaGVjayBm
b3IgYSAibm9uZSIgb3IgZW1wdHkgdHJhbnNmb3JtLiBJbiB0aGVzZSBjYXNlcyB3ZSBjYW4gdXNl
IHRoZSBkZWZhdWx0IGlkZW50aXR5IG1hdHJpeC4KLSAgICAgICAgaWYgKCF2YWx1ZSB8fCAodmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiAoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZS5nZXQoKSkpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKSkKKyAgICAgICAg
aWYgKCF2YWx1ZSB8fCAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiAodG9DU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZS5nZXQoKSkpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlv
bnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4
IDRjY2QzNjA0MzgwMzI4ZTU4YjAzM2QzZDc5Y2FkZjM4OWY2YTllYWMuLjQ2ZGY2ZTYwMmQ3YzA3
NDU3ZjM2NDRkMjQ2NGFjYjJmMzBlODRlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC0xNTE0LDcgKzE1MTQsNyBAQCBmbG9hdCBBcHBseVN0
eWxlQ29tbWFuZDo6Y29tcHV0ZWRGb250U2l6ZShOb2RlKiBub2RlKQogCiAgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0b3Iobm9kZSkucHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eUZvbnRTaXplKTsKICAgICBBU1NFUlQodmFsdWUgJiYgdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUuZ2V0KCkpLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgp
OworICAgIHJldHVybiB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdldCgpKS0+Z2V0RmxvYXRW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKIH0KIAogdm9pZCBBcHBseVN0eWxlQ29t
bWFuZDo6am9pbkNoaWxkVGV4dE5vZGVzKE5vZGUqIG5vZGUsIGNvbnN0IFBvc2l0aW9uJiBzdGFy
dCwgY29uc3QgUG9zaXRpb24mIGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxl
LmNwcAppbmRleCAyZTA0ODdhM2NhZjM1OTJkYjM4NmZkODVkMDBhN2FmNjA2ZDBhZTA4Li4yZmIy
ZjJkYmUyMTQ3NGE5YTdjZjI4MGYxNDRjYmNkNmVkMzc2NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgaW50IGlkZW50aWZpZXJG
b3JTdHlsZVByb3BlcnR5KFQqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiAgICAg
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGV4dHJhY3RQcm9wZXJ0eVZhbHVlKHN0eWxlLCBwcm9w
ZXJ0eUlEKTsKICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZS5nZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICByZXR1cm4gdG9DU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZS5nZXQoKSktPmdldFZhbHVlSUQoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gUGFzc1JlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gZ2V0UHJvcGVydGllc05v
dEluKFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIFQqIGJh
c2VTdHlsZSk7CkBAIC0yMDEsNyArMjAxLDcgQEAgSFRNTEVsZW1lbnRFcXVpdmFsZW50OjpIVE1M
RWxlbWVudEVxdWl2YWxlbnQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWVJRCBwcmltaXQKIGJv
b2wgSFRNTEVsZW1lbnRFcXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCog
ZWxlbWVudCwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKG1fcHJvcGVydHlJRCk7
Ci0gICAgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCkgJiYgdmFsdWUgJiYgdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgp
KS0+Z2V0VmFsdWVJRCgpID09IG1fcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKTsKKyAgICBy
ZXR1cm4gbWF0Y2hlcyhlbGVtZW50KSAmJiB2YWx1ZSAmJiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpICYmIHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkgPT0g
bV9wcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50RXF1
aXZhbGVudDo6YWRkVG9TdHlsZShFbGVtZW50KiwgRWRpdGluZ1N0eWxlKiBzdHlsZSkgY29uc3QK
QEAgLTM3OCw3ICszNzgsNyBAQCBzdGF0aWMgUkdCQTMyIGNzc1ZhbHVlVG9SR0JBKENTU1ZhbHVl
KiBjb2xvclZhbHVlKQogICAgIGlmICghY29sb3JWYWx1ZSB8fCAhY29sb3JWYWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OwogICAgIAot
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVDb2xvciA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4oY29sb3JWYWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZUNvbG9yID0gdG9DU1NQcmltaXRpdmVWYWx1ZShjb2xvclZhbHVlKTsKICAgICBpZiAocHJp
bWl0aXZlQ29sb3ItPmlzUkdCQ29sb3IoKSkKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUNvbG9y
LT5nZXRSR0JBMzJWYWx1ZSgpOwogICAgIApAQCAtNDk4LDcgKzQ5OCw3IEBAIHZvaWQgRWRpdGlu
Z1N0eWxlOjpleHRyYWN0Rm9udFNpemVEZWx0YSgpCiAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZS5nZXQoKSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9D
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZS5nZXQoKSk7CiAKICAgICAvLyBPbmx5IFBYIGhhbmRsZWQg
bm93LiBJZiB3ZSBoYW5kbGUgbW9yZSB0eXBlcyBpbiB0aGUgZnV0dXJlLCBwZXJoYXBzCiAgICAg
Ly8gYSBzd2l0Y2ggc3RhdGVtZW50IGhlcmUgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZS4KQEAg
LTUyMywxMyArNTIzLDEzIEBAIGJvb2wgRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24mIHdyaXRpbmdEaXJlY3Rpb24pIGNvbnN0CiAgICAgaWYgKCF1bmljb2RlQmlk
aSB8fCAhdW5pY29kZUJpZGktPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih1bmljb2RlQmlkaS5nZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICBD
U1NWYWx1ZUlEIHVuaWNvZGVCaWRpVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHVuaWNvZGVC
aWRpLmdldCgpKS0+Z2V0VmFsdWVJRCgpOwogICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENT
U1ZhbHVlRW1iZWQpIHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBkaXJlY3Rpb24gPSBtX211
dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CiAg
ICAgICAgIGlmICghZGlyZWN0aW9uIHx8ICFkaXJlY3Rpb24tPmlzUHJpbWl0aXZlVmFsdWUoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICB3cml0aW5nRGlyZWN0aW9uID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihkaXJlY3Rpb24uZ2V0KCkpLT5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVMdHIgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdo
dFRvTGVmdFdyaXRpbmdEaXJlY3Rpb247CisgICAgICAgIHdyaXRpbmdEaXJlY3Rpb24gPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKGRpcmVjdGlvbi5nZXQoKSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUx0ciA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJpZ2h0VG9MZWZ0V3JpdGluZ0Rp
cmVjdGlvbjsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC05NDksOSArOTQ5LDkg
QEAgdm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQoY29uc3QgUG9zaXRpb24mIHBv
c2l0aW9uLCBTaG91bGRQcmVzZXJ2ZVdyaXQKICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92
ZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAogICAgIGlmICh1bmljb2Rl
QmlkaSAmJiB1bmljb2RlQmlkaS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgIG1fbXV0
YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUlEPihzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHVuaWNvZGVCaWRp
LmdldCgpKS0+Z2V0VmFsdWVJRCgpKSk7CisgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPih0b0NT
U1ByaW1pdGl2ZVZhbHVlKHVuaWNvZGVCaWRpLmdldCgpKS0+Z2V0VmFsdWVJRCgpKSk7CiAgICAg
ICAgIGlmIChkaXJlY3Rpb24gJiYgZGlyZWN0aW9uLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAg
ICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24s
IHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
ZGlyZWN0aW9uLmdldCgpKS0+Z2V0VmFsdWVJRCgpKSk7CisgICAgICAgICAgICBtX211dGFibGVT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0YXRpY19jYXN0PENTU1Zh
bHVlSUQ+KHRvQ1NTUHJpbWl0aXZlVmFsdWUoZGlyZWN0aW9uLmdldCgpKS0+Z2V0VmFsdWVJRCgp
KSk7CiAgICAgfQogfQogCkBAIC0xMTQ5LDcgKzExNDksNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6
bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24oU3R5bGVkRWxlbWVudCogZWxlbWVu
dCkKICAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHByb3BlcnR5LnZhbHVlKCk7CiAgICAg
ICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSktPmlzUGVyY2VudGFnZSgpKSB7CisgICAgICAgICAgICBpZiAodG9DU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZSktPmlzUGVyY2VudGFnZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFJl
ZlB0cjxDU1NWYWx1ZT4gY29tcHV0ZWRQcm9wZXJ0eVZhbHVlID0gY29tcHV0ZWRTdHlsZS5wcm9w
ZXJ0eVZhbHVlKHByb3BlcnR5LmlkKCkpKQogICAgICAgICAgICAgICAgICAgICBmcm9tQ29tcHV0
ZWRTdHlsZS0+YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHkuaWQoKSwgY29t
cHV0ZWRQcm9wZXJ0eVZhbHVlLnJlbGVhc2UoKSkpOwogICAgICAgICAgICAgfQpAQCAtMTIyMiw3
ICsxMjIyLDcgQEAgaW50IEVkaXRpbmdTdHlsZTo6bGVnYWN5Rm9udFNpemUoRG9jdW1lbnQqIGRv
Y3VtZW50KSBjb25zdAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUgPSBtX211dGFibGVT
dHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTaXplKTsKICAgICBpZiAo
IWNzc1ZhbHVlIHx8ICFjc3NWYWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1
cm4gMDsKLSAgICByZXR1cm4gbGVnYWN5Rm9udFNpemVGcm9tQ1NTVmFsdWUoZG9jdW1lbnQsIHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY3NzVmFsdWUuZ2V0KCkpLAorICAgIHJldHVy
biBsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1ZShkb2N1bWVudCwgdG9DU1NQcmltaXRpdmVWYWx1
ZShjc3NWYWx1ZS5nZXQoKSksCiAgICAgICAgIG1fc2hvdWxkVXNlRml4ZWREZWZhdWx0Rm9udFNp
emUsIEFsd2F5c1VzZUxlZ2FjeUZvbnRTaXplKTsKIH0KIApAQCAtMTI4Niw3ICsxMjg2LDcgQEAg
V3JpdGluZ0RpcmVjdGlvbiBFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24o
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYKICAgICAgICAgICAgIGlmICghdW5pY29kZUJpZGkgfHwg
IXVuaWNvZGVCaWRpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgICAgIENTU1ZhbHVlSUQgdW5pY29kZUJpZGlWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRWYWx1ZUlEKCk7
CisgICAgICAgICAgICBDU1NWYWx1ZUlEIHVuaWNvZGVCaWRpVmFsdWUgPSB0b0NTU1ByaW1pdGl2
ZVZhbHVlKHVuaWNvZGVCaWRpLmdldCgpKS0+Z2V0VmFsdWVJRCgpOwogICAgICAgICAgICAgaWYg
KHVuaWNvZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVFbWJlZCB8fCB1bmljb2RlQmlkaVZhbHVlID09
IENTU1ZhbHVlQmlkaU92ZXJyaWRlKQogICAgICAgICAgICAgICAgIHJldHVybiBOYXR1cmFsV3Jp
dGluZ0RpcmVjdGlvbjsKICAgICAgICAgfQpAQCAtMTMxNSw3ICsxMzE1LDcgQEAgV3JpdGluZ0Rp
cmVjdGlvbiBFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYKICAgICAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCAhdW5pY29kZUJpZGkt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIENT
U1ZhbHVlSUQgdW5pY29kZUJpZGlWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRWYWx1ZUlEKCk7CisgICAgICAgIENTU1ZhbHVlSUQg
dW5pY29kZUJpZGlWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodW5pY29kZUJpZGkuZ2V0KCkp
LT5nZXRWYWx1ZUlEKCk7CiAgICAgICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVl
Tm9ybWFsKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEzMjcsNyArMTMyNyw3IEBAIFdy
aXRpbmdEaXJlY3Rpb24gRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uRm9yU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mCiAgICAgICAgIGlmICghZGlyZWN0aW9uIHx8ICFkaXJlY3Rp
b24tPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IENTU1ZhbHVlSUQgZGlyZWN0aW9uVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KGRpcmVjdGlvbi5nZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICAgICAgQ1NTVmFsdWVJRCBk
aXJlY3Rpb25WYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoZGlyZWN0aW9uLmdldCgpKS0+Z2V0
VmFsdWVJRCgpOwogICAgICAgICBpZiAoZGlyZWN0aW9uVmFsdWUgIT0gQ1NTVmFsdWVMdHIgJiYg
ZGlyZWN0aW9uVmFsdWUgIT0gQ1NTVmFsdWVSdGwpCiAgICAgICAgICAgICBjb250aW51ZTsKIApA
QCAtMTQ2Nyw3ICsxNDY3LDcgQEAgdm9pZCBTdHlsZUNoYW5nZTo6ZXh0cmFjdFRleHRTdHlsZXMo
RG9jdW1lbnQqIGRvY3VtZW50LCBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCoKICAgICBpZiAoUmVm
UHRyPENTU1ZhbHVlPiBmb250U2l6ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1By
b3BlcnR5Rm9udFNpemUpKSB7CiAgICAgICAgIGlmICghZm9udFNpemUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkKICAgICAgICAgICAgIHN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRT
aXplKTsgLy8gQ2FuJ3QgbWFrZSBzZW5zZSBvZiB0aGUgbnVtYmVyLiBQdXQgbm8gZm9udCBzaXpl
LgotICAgICAgICBlbHNlIGlmIChpbnQgbGVnYWN5Rm9udFNpemUgPSBsZWdhY3lGb250U2l6ZUZy
b21DU1NWYWx1ZShkb2N1bWVudCwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihmb250
U2l6ZS5nZXQoKSksCisgICAgICAgIGVsc2UgaWYgKGludCBsZWdhY3lGb250U2l6ZSA9IGxlZ2Fj
eUZvbnRTaXplRnJvbUNTU1ZhbHVlKGRvY3VtZW50LCB0b0NTU1ByaW1pdGl2ZVZhbHVlKGZvbnRT
aXplLmdldCgpKSwKICAgICAgICAgICAgICAgICBzaG91bGRVc2VGaXhlZEZvbnREZWZhdWx0U2l6
ZSwgVXNlTGVnYWN5Rm9udFNpemVPbmx5SWZQaXhlbFZhbHVlc01hdGNoKSkgewogICAgICAgICAg
ICAgbV9hcHBseUZvbnRTaXplID0gU3RyaW5nOjpudW1iZXIobGVnYWN5Rm9udFNpemUpOwogICAg
ICAgICAgICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUpOwpAQCAt
MTQ5OSw3ICsxNDk5LDcgQEAgc3RhdGljIGJvb2wgZm9udFdlaWdodElzQm9sZChDU1NWYWx1ZSog
Zm9udFdlaWdodCkKIAogICAgIC8vIEJlY2F1c2UgYiB0YWcgY2FuIG9ubHkgYm9sZCB0ZXh0LCB0
aGVyZSBhcmUgb25seSB0d28gc3RhdGVzIGluIHBsYWluIGh0bWw6IGJvbGQgYW5kIG5vdCBib2xk
LgogICAgIC8vIENvbGxhcHNlIGFsbCBvdGhlciB2YWx1ZXMgdG8gZWl0aGVyIG9uZSBvZiB0aGVz
ZSB0d28gc3RhdGVzIGZvciBlZGl0aW5nIHB1cnBvc2VzLgotICAgIHN3aXRjaCAoc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihmb250V2VpZ2h0KS0+Z2V0VmFsdWVJRCgpKSB7CisgICAg
c3dpdGNoICh0b0NTU1ByaW1pdGl2ZVZhbHVlKGZvbnRXZWlnaHQpLT5nZXRWYWx1ZUlEKCkpIHsK
ICAgICAgICAgY2FzZSBDU1NWYWx1ZTEwMDoKICAgICAgICAgY2FzZSBDU1NWYWx1ZTIwMDoKICAg
ICAgICAgY2FzZSBDU1NWYWx1ZTMwMDoKQEAgLTE1OTMsNyArMTU5Myw3IEBAIGJvb2wgaXNUcmFu
c3BhcmVudENvbG9yVmFsdWUoQ1NTVmFsdWUqIGNzc1ZhbHVlKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBpZiAoIWNzc1ZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KGNzc1ZhbHVlKTsgICAgCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZh
bHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShjc3NWYWx1ZSk7ICAgIAogICAgIGlmICh2YWx1ZS0+
aXNSR0JDb2xvcigpKQogICAgICAgICByZXR1cm4gIWFscGhhQ2hhbm5lbCh2YWx1ZS0+Z2V0UkdC
QTMyVmFsdWUoKSk7ICAgIAogICAgIHJldHVybiB2YWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlVHJhbnNwYXJlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYTc0M2JiNjQ2
NjE1MDlmNzg5NTNiNWIwOTg4ODVmY2UzZGM1OWNiOS4uNzY3ZjdlMDZhYjdmYjk5MWY1YTMyYzAy
MDU3YmVmMGQ4M2FkY2FjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNDY2LDcg
KzQ2Niw3IEBAIHN0YXRpYyBib29sIHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUoU3R5bGVQ
cm9wZXJ0eVNldCogc3R5bGUsIENTU1Byb3BlcnR5SUQKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUuZ2V0KCkp
LT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOworICAgIHJldHVybiB0b0NTU1ByaW1pdGl2
ZVZhbHVlKHZhbHVlLmdldCgpKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZTsKIH0KIAog
c3RhdGljIGJvb2wgbmVlZEludGVyY2hhbmdlTmV3bGluZUFmdGVyKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgdikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213051</attachid>
            <date>2013-09-30 21:05:00 -0700</date>
            <delta_ts>2013-10-01 03:03:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122101-20131001130458.patch</filename>
            <type>text/plain</type>
            <size>87948</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA5OGEwMDEzOTUzNTky
ZWIzZmU3NGIyZmM2YTI2OTFlMTg5YzI2OS4uYTYyNjRlMGI2YTBiNDkzNTUyMjQ1NmVjZTViNDVl
OGI3ZDJiNTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0NiBAQAogMjAxMy0wOS0zMCAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCisgICAgICAgIEdlbmVyYXRl
IHRvQ1NTRm9vVmFsdWUgZm9yIENTU1ByaW1pdGl2ZVZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxMDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyBhIHN0ZXAgb2YgY2xlYW4tdXAgc3RhdGlj
X2Nhc3Q8PiBpbiBDU1NWYWx1ZXMsIHRoaXMgcGF0Y2ggZ2VuZXJhdGVzCisgICAgICAgIHRvQ1NT
Rm9vUHJpbWl0aXZlVmFsdWUoKSBpbiBvcmRlciB0byBkZXRlY3QgYmFkIGNhc3RzIGFzIHdlbGwg
YXMgaW1wcm92ZXMKKyAgICAgICAgY29kZSByZWFkYWJpbGl0eS4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VS
dWxlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzdWJpbWFnZUlzUGVuZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFnZUZvckNT
U1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpmaWxsSW1hZ2VTZXQpOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZTNWYWx1ZXNGaWxsUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlRmlsbFJlcGVhdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VSYWRpYWxHcmFkaWVudCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmg6CisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbEF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbENsaXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHls
ZU1hcDo6bWFwRmlsbENvbXBvc2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBGaWxsQmxlbmRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1h
cEZpbGxPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJl
cGVhdFgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFhQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxNYXNrU291cmNlVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EZWxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRmlsbE1vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUmVwZWF0KToKKyAg
ICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRl
c3Ryb3kpOgorICAgICAgICAqIGNzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEZWZhdWx0OjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlOdW1iZXI6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUF1dG86OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eUNsaXA6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQ
cm9wZXJ0eUNvbG9yOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlMZW5ndGg6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVN0
cmluZzo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Qm9yZGVy
UmFkaXVzOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb21w
dXRlTGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlG
b250OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250RmFt
aWx5OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6
ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFdlaWdo
dDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFZhcmlh
bnRMaWdhdHVyZXM6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0
eUNvdW50ZXI6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUN1
cnNvcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEFs
aWduOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0RGVj
b3JhdGlvbjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TWFy
cXVlZUluY3JlbWVudDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5TWFycXVlZVJlcGV0aXRpb246OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eU1hcnF1ZWVTcGVlZDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5VGV4dFVuZGVybGluZVBvc2l0aW9uOjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0OjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0Rm9ySU9TVGV4dEF1dG9zaXppbmc6OmFw
cGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0RW1waGFzaXNTdHls
ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5UmVzaXplOjph
cHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlWZXJ0aWNhbEFsaWdu
OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlab29tOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5OjphcHBseVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwUGF0aDo6YXBwbHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5U2hhcGU6OmFwcGx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUltYWdlUmVzb2x1dGlvbjo6YXBwbHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEluZGVudDo6YXBwbHlWYWx1
ZSk6CisgICAgICAgICogY3NzL01lZGlhTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBv
cnRNZWRpYVF1ZXJ5V2FybmluZ0lmTmVlZGVkKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2
YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpudW1iZXJWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcmllbnRhdGlvbk1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZXZhbFJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlX3BpeGVsX3JhdGlvTWVk
aWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHV0aW9uTWVkaWFGZWF0dXJl
RXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OnZpZXdfbW9kZU1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRl
ck1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAqIGNzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5U1ZHUHJvcGVydHkpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR3JpZFRyYWNrU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHcmlkVHJhY2tMaXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdyaWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpoYXNWYXJpYWJs
ZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3VzdG9tRmlsdGVy
QXJyYXlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cGFyc2VD
dXN0b21GaWx0ZXJDb2xvclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpwYXJzZUN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uV2l0aElubGluZVN5bnRheCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpj
cmVhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAgICAgKiBjc3MvVHJhbnNmb3JtRnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybXNGb3JWYWx1ZSk6CisgICAgICAgICog
Y3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9y
dFN0eWxlUmVzb2x2ZXI6OmdldFZpZXdwb3J0QXJndW1lbnRWYWx1ZSk6CisgICAgICAgICogY3Nz
L1dlYktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6
OnNldE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRTaXpl
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppZGVudGlmaWVyRm9yU3R5bGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxl
bWVudEVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjc3NWYWx1ZVRvUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmV4dHJh
Y3RGb250U2l6ZURlbHRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dGV4dERp
cmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5
QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVz
Rm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmxlZ2Fj
eUZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlv
bkZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNoYW5nZTo6ZXh0cmFjdFRl
eHRTdHlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udFdlaWdodElzQm9sZCk6CisgICAgICAg
IChXZWJDb3JlOjppc1RyYW5zcGFyZW50Q29sb3JWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9t
YXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9u
ZSk6CisKKzIwMTMtMDktMzAgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNv
bT4KKwogICAgICAgICBHZW5lcmF0ZSB0b0NTU0NhbGNWYWx1ZSBpbnN0ZWFkIG9mIHVzaW5nIG1h
bnVhbCBjYXN0IGZ1bmN0aW9uCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjIwNTUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApp
bmRleCAxMmZmNThlNDE4MmIzNDcyNWQ4MTQ1ZDgyN2RmOWJlOTdkY2Y0YmE0Li5lODQzMTdkNjdh
MjU5NjBlOTg1NmZjMmExYmMwYmM4YjViNzdhMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjph
ZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAg
ICAgICAgaWYgKCFmb250U3R5bGUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
Zm9udFN0eWxlLmdldCgpKS0+Z2V0VmFsdWVJRCgpKSB7CisgICAgICAgIHN3aXRjaCAodG9DU1NQ
cmltaXRpdmVWYWx1ZShmb250U3R5bGUuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAg
Y2FzZSBDU1NWYWx1ZU5vcm1hbDoKICAgICAgICAgICAgIHRyYWl0c01hc2sgfD0gRm9udFN0eWxl
Tm9ybWFsTWFzazsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQg
Q1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2Uq
IGZvbnRGYWNlUnVsZSkKICAgICAgICAgaWYgKCFmb250V2VpZ2h0LT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KGZvbnRXZWlnaHQuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpIHsKKyAg
ICAgICAgc3dpdGNoICh0b0NTU1ByaW1pdGl2ZVZhbHVlKGZvbnRXZWlnaHQuZ2V0KCkpLT5nZXRW
YWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUJvbGQ6CiAgICAgICAgIGNhc2UgQ1NT
VmFsdWU3MDA6CiAgICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRXZWlnaHQ3MDBNYXNrOwpA
QCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUo
Y29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFudHM7ICsraSkg
ewotICAgICAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
cmlhbnRMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKS0+Z2V0VmFsdWVJRCgpKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFyaWFudExpc3QtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soaSkpLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlTm9ybWFsOgogICAgICAgICAgICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZv
bnRWYXJpYW50Tm9ybWFsTWFzazsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjQs
NyArMjY0LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBT
dHlsZVJ1bGVGb250RmFjZSogZm9udEZhY2VSdWxlKQogICAgIC8vIEhhc2ggdW5kZXIgZXZlcnkg
c2luZ2xlIGZhbWlseSBuYW1lLgogICAgIGludCBmYW1pbHlMZW5ndGggPSBmYW1pbHlMaXN0LT5s
ZW5ndGgoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZhbWlseUxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBpdGVtID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPihmYW1pbHlMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGl0ZW0gPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGZhbWlseUxpc3Qt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOwogICAgICAgICBTdHJpbmcgZmFtaWx5TmFtZTsK
ICAgICAgICAgaWYgKGl0ZW0tPmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgIGZhbWlseU5hbWUg
PSBpdGVtLT5nZXRTdHJpbmdWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwCmluZGV4IDI5MGY1NjJmNmRkY2IyZTBhZDBiNzE4ZjI3ODZlMGUwYjg3MzQ4ZjEuLjI1
MDFlYWNiMmM2M2MxZWMxZDc0ZjFiMDA2MDc0MTRmMjkyNzdiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAgLTYyLDEwICs2Miw4IEBAIFBhc3NSZWZQdHI8SW1h
Z2U+IENTU0dyYWRpZW50VmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25z
dCBJbnRTaXplCiAKICAgICBpZiAoaXNMaW5lYXJHcmFkaWVudFZhbHVlKCkpCiAgICAgICAgIGdy
YWRpZW50ID0gdG9DU1NMaW5lYXJHcmFkaWVudFZhbHVlKHRoaXMpLT5jcmVhdGVHcmFkaWVudChy
ZW5kZXJlciwgc2l6ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChpc1JhZGlhbEdyYWRp
ZW50VmFsdWUoKSk7CisgICAgZWxzZQogICAgICAgICBncmFkaWVudCA9IHRvQ1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZSh0aGlzKS0+Y3JlYXRlR3JhZGllbnQocmVuZGVyZXIsIHNpemUpOwotICAgIH0K
IAogICAgIFJlZlB0cjxHcmFkaWVudEltYWdlPiBuZXdJbWFnZSA9IEdyYWRpZW50SW1hZ2U6OmNy
ZWF0ZShncmFkaWVudCwgc2l6ZSk7CiAgICAgaWYgKGNhY2hlYWJsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCA3ODVmNGNlMDA0OGFiNGNi
YzNiNjU0ODhlOTZiOGVhZjg5MmZiOTVmLi4xNjhkM2E3OWYwNTBhZjQwZWVkOTk0OTNhNjUxMGE4
NWJlOTI4NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFs
dWUuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpz
dWJpbWFnZUlzUGVuZGluZyhDU1NWYWx1ZSogdmFsdWUpCiAgICAgaWYgKHZhbHVlLT5pc0ltYWdl
R2VuZXJhdG9yVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUqPih2YWx1ZSktPmlzUGVuZGluZygpOwogCi0gICAgaWYgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkgJiYgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSkt
PmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkgJiYgdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIENhY2hlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjpjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwgQ2FjCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
ICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRWYWx1ZUlEKCkg
PT0gQ1NTVmFsdWVOb25lKQorICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHRv
Q1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IGQ2MzkxYzY0MDRlODk5M2NiNzhiZGI1
ZjI3M2EzNDY4NjRlZjc5OTAuLjI0YWUzODUyNDgzZmM0NDEzNWQyMTJjNDU5YjJhOGZhNjliNGM5
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgdm9pZCBDU1NJbWFnZVNldFZhbHVlOjpmaWxsSW1hZ2VTZXQoKQogICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbGVuZ3RoKTsKICAgICAgICAgQ1NTVmFs
dWUqIHNjYWxlRmFjdG9yVmFsdWUgPSBpdGVtKGkpOwogICAgICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihzY2FsZUZhY3RvclZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwot
ICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4oc2NhbGVGYWN0b3JWYWx1ZSktPmdldEZsb2F0VmFsdWUoKTsKKyAgICAgICAgZmxvYXQgc2Nh
bGVGYWN0b3IgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHNjYWxlRmFjdG9yVmFsdWUpLT5nZXRGbG9h
dFZhbHVlKCk7CiAKICAgICAgICAgSW1hZ2VXaXRoU2NhbGUgaW1hZ2U7CiAgICAgICAgIGltYWdl
LmltYWdlVVJMID0gaW1hZ2VVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGIwNDQ2
MTAzMmQxNjAzNGRhYmRmMzQxZjFhN2ZhNDkyMjFlYzQzMDEuLmIxNTAyYmFiOTk5YjA0NGUxMDZh
YzRkZDY3YmI1OTk4N2E4OTI5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xMzg5
LDcgKzEzODksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBj
b25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdHJpY3QpCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1p
dGl2ZVZhbHVlKHZhbHVlKTsKICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlLT5pc1JHQkNvbG9yKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTU4Nyw3ICsxNTg3LDcgQEAgdm9pZCBDU1NQ
YXJzZXI6OmFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSwgYm8KICAgICAvLyBUaGlzIHByb3BlcnR5IGRvZXNuJ3QgYmVsb25nIHRvIGEg
c2hvcnRoYW5kIG9yIGlzIGEgQ1NTIHZhcmlhYmxlICh3aGljaCB3aWxsIGJlIHJlc29sdmVkIGxh
dGVyKS4KICAgICBpZiAoIW1fY3VycmVudFNob3J0aGFuZAogI2lmIEVOQUJMRShDU1NfVkFSSUFC
TEVTKQotICAgICAgICB8fCAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgpKS0+aXNWYXJpYWJsZU5hbWUoKSkKKyAg
ICAgICAgfHwgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgdG9DU1NQcmltaXRpdmVWYWx1
ZSh2YWx1ZS5nZXQoKSktPmlzVmFyaWFibGVOYW1lKCkpCiAjZW5kaWYKICAgICAgICAgKSB7CiAg
ICAgICAgIG1fcGFyc2VkUHJvcGVydGllcy5hcHBlbmQoQ1NTUHJvcGVydHkocHJvcElkLCB2YWx1
ZSwgaW1wb3J0YW50LCBmYWxzZSwgQ1NTUHJvcGVydHlJbnZhbGlkLCBtX2ltcGxpY2l0U2hvcnRo
YW5kIHx8IGltcGxpY2l0KSk7CkBAIC00MTI2LDggKzQxMjYsOCBAQCB2b2lkIENTU1BhcnNlcjo6
cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBS
ZWZQdHI8QwogICAgICAgICB2YWx1ZTEuc3dhcCh2YWx1ZTIpOwogCiAjaWZuZGVmIE5ERUJVRwot
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaXJzdCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUxLmdldCgpKTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZTIuZ2V0KCkpOworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBmaXJzdCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUxLmdldCgpKTsKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZTIu
Z2V0KCkpOwogICAgIGlkZW50MSA9IGZpcnN0LT5nZXRQYWlyVmFsdWUoKS0+Zmlyc3QoKS0+Z2V0
VmFsdWVJRCgpOwogICAgIGlkZW50MiA9IHNlY29uZC0+Z2V0UGFpclZhbHVlKCktPmZpcnN0KCkt
PmdldFZhbHVlSUQoKTsKICAgICBBU1NFUlQoaWRlbnQxID09IENTU1ZhbHVlTGVmdCB8fCBpZGVu
dDEgPT0gQ1NTVmFsdWVSaWdodCk7CkBAIC00MTg3LDggKzQxODcsOCBAQCB2b2lkIENTU1BhcnNl
cjo6cGFyc2VGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZlB0
cjxDU1NWYWx1ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZTEgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlMS5nZXQoKSk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1
ZTIgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlMi5nZXQoKSk7CisgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZTEgPSB0b0NTU1ByaW1pdGl2ZVZh
bHVlKHZhbHVlMS5nZXQoKSk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRW
YWx1ZTIgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlMi5nZXQoKSk7CiAKICAgICB2YWx1ZTEu
Y2xlYXIoKTsKICAgICB2YWx1ZTIuY2xlYXIoKTsKQEAgLTQyODUsNyArNDI4NSw3IEBAIHZvaWQg
Q1NTUGFyc2VyOjpwYXJzZUZpbGxSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUxLCBSZWZQ
dHI8Q1NTVmFsdWU+JiB2YWx1CiAKICAgICAvLyBJZiBvbmx5IG9uZSB2YWx1ZSB3YXMgc3BlY2lm
aWVkLCB2YWx1ZTIgaXMgdGhlIHNhbWUgYXMgdmFsdWUxLgogICAgIG1faW1wbGljaXRTaG9ydGhh
bmQgPSB0cnVlOwotICAgIHZhbHVlMiA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlMS5nZXQoKSktPmdldFZh
bHVlSUQoKSk7CisgICAgdmFsdWUyID0gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUxLmdldCgpKS0+Z2V0VmFsdWVJRCgpKTsKIH0K
IAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaXplKENTU1Byb3Bl
cnR5SUQgcHJvcElkLCBib29sJiBhbGxvd0NvbW1hKQpAQCAtNzcwOSwxMSArNzcwOSwxMSBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVmFs
dWVMaXN0KiB2YWx1ZUxpc3QsIFJlZgogICAgIEFTU0VSVCghY2VudGVyWCB8fCBjZW50ZXJYLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpOwogICAgIEFTU0VSVCghY2VudGVyWSB8fCBjZW50ZXJZLT5pc1By
aW1pdGl2ZVZhbHVlKCkpOwogCi0gICAgcmVzdWx0LT5zZXRGaXJzdFgoc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihjZW50ZXJYLmdldCgpKSk7Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRY
KHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY2VudGVyWC5nZXQoKSkpOworICAgIHJl
c3VsdC0+c2V0Rmlyc3RYKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWC5nZXQoKSkpOworICAg
IHJlc3VsdC0+c2V0U2Vjb25kWCh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclguZ2V0KCkpKTsK
ICAgICAvLyBDU1MzIHJhZGlhbCBncmFkaWVudHMgYWx3YXlzIHNoYXJlIHRoZSBzYW1lIHN0YXJ0
IGFuZCBlbmQgcG9pbnQuCi0gICAgcmVzdWx0LT5zZXRGaXJzdFkoc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihjZW50ZXJZLmdldCgpKSk7Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRZKHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY2VudGVyWS5nZXQoKSkpOworICAgIHJlc3Vs
dC0+c2V0Rmlyc3RZKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWS5nZXQoKSkpOworICAgIHJl
c3VsdC0+c2V0U2Vjb25kWSh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclkuZ2V0KCkpKTsKIAog
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2hhcGVWYWx1ZTsKICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHNpemVWYWx1ZTsKQEAgLTc5NzMsMTEgKzc5NzMsMTEgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxp
c3QsIFJlZlB0cjxDU1NWYWwKICAgICAgICAgYSA9IGFyZ3MtPmN1cnJlbnQoKTsKICAgICAgICAg
aWYgKCFhKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQtPnNldEZp
cnN0WChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNlbnRlclguZ2V0KCkpKTsKLSAg
ICAgICAgcmVzdWx0LT5zZXRGaXJzdFkoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihj
ZW50ZXJZLmdldCgpKSk7CisgICAgICAgIHJlc3VsdC0+c2V0Rmlyc3RYKHRvQ1NTUHJpbWl0aXZl
VmFsdWUoY2VudGVyWC5nZXQoKSkpOworICAgICAgICByZXN1bHQtPnNldEZpcnN0WSh0b0NTU1By
aW1pdGl2ZVZhbHVlKGNlbnRlclkuZ2V0KCkpKTsKICAgICAgICAgLy8gUmlnaHQgbm93LCBDU1Mg
cmFkaWFsIGdyYWRpZW50cyBoYXZlIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgY2VudGVycy4KLSAg
ICAgICAgcmVzdWx0LT5zZXRTZWNvbmRYKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
Y2VudGVyWC5nZXQoKSkpOwotICAgICAgICByZXN1bHQtPnNldFNlY29uZFkoc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPihjZW50ZXJZLmdldCgpKSk7CisgICAgICAgIHJlc3VsdC0+c2V0
U2Vjb25kWCh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclguZ2V0KCkpKTsKKyAgICAgICAgcmVz
dWx0LT5zZXRTZWNvbmRZKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWS5nZXQoKSkpOwogICAg
IH0KIAogICAgIGlmIChzaGFwZVZhbHVlIHx8IHNpemVWYWx1ZSB8fCBob3Jpem9udGFsU2l6ZSB8
fCBjZW50ZXJYIHx8IGNlbnRlclkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5o
CmluZGV4IGJmYTMzMTUzYjQ2ZTA3YmI1ZWFjNjA3NWEwMmMwZTJmZDRlMTU3ZmEuLmFjNzgwMzg2
MWI1NDMyYzdhNThjMzRmOWMwNGFiMDMwYzA2MGQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5oCkBAIC00MDEsMTcgKzQwMSw4IEBAIHByaXZhdGU6CiAgICAgfSBtX3Zh
bHVlOwogfTsKIAotaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlKiB0b0NTU1ByaW1pdGl2ZVZhbHVl
KENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TighdmFsdWUgfHwgdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotfQorQ1NTX1ZBTFVFX1RZUEVfQ0FT
VFMoUHJpbWl0aXZlVmFsdWUpCiAKLWlubGluZSBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogdG9D
U1NQcmltaXRpdmVWYWx1ZShjb25zdCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXZhbHVlIHx8IHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKLX0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9T
dHlsZU1hcC5jcHAKaW5kZXggNzJmYjk4NDE4M2QxYTE2YTA3MDBiNTFkNzg0MTJiYmM5Y2I5ODNj
OC4uMGJhY2E3MzBlZmJiOGMzOTA4MjI1Yzk3NTkwOWZiMDIzZDVhZDk5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NUb1N0eWxlTWFwLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIENTU1RvU3R5bGVN
YXA6Om1hcEZpbGxBdHRhY2htZW50KENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENT
U1ZhbHVlKgogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUZpeGVkOgog
ICAgICAgICBsYXllci0+c2V0QXR0YWNobWVudChGaXhlZEJhY2tncm91bmRBdHRhY2htZW50KTsK
QEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsQ2xpcChDU1NQcm9w
ZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUKICAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJp
bWl0aXZlVmFsdWUodmFsdWUpOwogICAgIGxheWVyLT5zZXRDbGlwKCpwcmltaXRpdmVWYWx1ZSk7
CiB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxDb21w
b3NpdGUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqCiAgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBsYXllci0+c2V0Q29tcG9zaXRlKCpwcmlt
aXRpdmVWYWx1ZSk7CiB9CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6
Om1hcEZpbGxCbGVuZE1vZGUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFs
dWUqCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBsYXllci0+c2V0Qmxl
bmRNb2RlKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENT
U1RvU3R5bGVNYXA6Om1hcEZpbGxPcmlnaW4oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXll
ciwgQ1NTVmFsdWUqIHZhbAogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAg
bGF5ZXItPnNldE9yaWdpbigqcHJpbWl0aXZlVmFsdWUpOwogfQogCkBAIC0xNjQsNyArMTY0LDcg
QEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsUmVwZWF0WChDU1NQcm9wZXJ0eUlELCBGaWxs
TGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmEKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFs
dWUpOwogICAgIGxheWVyLT5zZXRSZXBlYXRYKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKQEAgLTE3
OCw3ICsxNzgsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZKENTU1Byb3Bl
cnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YQogICAgIGlmICghdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZSk7CiAgICAgbGF5ZXItPnNldFJlcGVhdFkoKnByaW1pdGl2ZVZhbHVlKTsK
IH0KIApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUo
Q1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUNvbnRhaW4pCiAg
ICAgICAgIGxheWVyLT5zZXRTaXplVHlwZShDb250YWluKTsKICAgICBlbHNlIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ292ZXIpCkBAIC0yMzksNyArMjM5LDcg
QEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwgRmlsbExheWVyKiBsYXllciwKIAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHls
ZSgpLT5lZmZlY3RpdmVab29tKCk7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KTsKICAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOwogICAg
IGlmIChwYWlyKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHlJRCwgcHJvcGVydHlJ
RCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblggfHwgcHJvcGVydHlJRCA9PSBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgpOwpAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgQ1NT
VG9TdHlsZU1hcDo6bWFwRmlsbFlQb3NpdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZp
bGxMYXllciogbGF5ZXIsCiAKICAgICBmbG9hdCB6b29tRmFjdG9yID0gc3R5bGUoKS0+ZWZmZWN0
aXZlWm9vbSgpOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgUGFp
ciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKICAgICBpZiAocGFpcikg
ewogICAgICAgICBBU1NFUlRfVU5VU0VEKHByb3BlcnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb25ZKTsKQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6
Om1hcEZpbGxNYXNrU291cmNlVHlwZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBD
U1NWYQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgc3dpdGNoIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUFscGhhOgogICAg
ICAgICB0eXBlID0gRU1hc2tTb3VyY2VUeXBlOjpNYXNrQWxwaGE7CkBAIC0zMzcsNyArMzM3LDcg
QEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EZWxheShBbmltYXRpb24qIGFuaW1h
dGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7
CiAgICAgYW5pbWF0aW9uLT5zZXREZWxheShwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZVRpbWU8ZG91
YmxlLCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7CiB9CiAKQEAgLTM1MSw3ICszNTEs
NyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRpcmVjdGlvbihBbmltYXRpb24q
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KTsKICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAgICBjYXNl
IENTU1ZhbHVlTm9ybWFsOgogICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6
QW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsKTsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIENTU1Rv
U3R5bGVNYXA6Om1hcEFuaW1hdGlvbkR1cmF0aW9uKEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NW
YWx1ZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBhbmlt
YXRpb24tPnNldER1cmF0aW9uKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlVGltZTxkb3VibGUsIENT
U1ByaW1pdGl2ZVZhbHVlOjpTZWNvbmRzPigpKTsKIH0KIApAQCAtMzk0LDcgKzM5NCw3IEBAIHZv
aWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRmlsbE1vZGUoQW5pbWF0aW9uKiBsYXllciwg
Q1NTVmFsdWUqIHZhbHVlKQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAg
c3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1
ZU5vbmU6CiAgICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZU5vbmUp
OwpAQCAtNDIzLDcgKzQyMyw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uSXRl
cmF0aW9uQ291bnQoQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2CiAgICAgaWYgKCF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICBhbmltYXRpb24tPnNldEl0ZXJhdGlv
bkNvdW50KEFuaW1hdGlvbjo6SXRlcmF0aW9uQ291bnRJbmZpbml0ZSk7CiAgICAgZWxzZQpAQCAt
NDQwLDcgKzQ0MCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uTmFtZShBbmlt
YXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vbmUpCiAgICAgICAgIGxheWVyLT5zZXRJc05vbmVBbmltYXRpb24odHJ1ZSk7CiAgICAgZWxz
ZQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUGxh
eVN0YXRlKEFuaW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJp
bWl0aXZlVmFsdWUodmFsdWUpOwogICAgIEVBbmltUGxheVN0YXRlIHBsYXlTdGF0ZSA9IChwcmlt
aXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlUGF1c2VkKSA/IEFuaW1QbGF5U3Rh
dGVQYXVzZWQgOiBBbmltUGxheVN0YXRlUGxheWluZzsKICAgICBsYXllci0+c2V0UGxheVN0YXRl
KHBsYXlTdGF0ZSk7CiB9CkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25Qcm9wZXJ0eShBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVl
KQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbGwpIHsKICAgICAgICAgYW5pbWF0aW9uLT5z
ZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCk7CiAgICAgICAgIGFuaW1hdGlv
bi0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJbnZhbGlkKTsKQEAgLTQ5NCw3ICs0OTQsNyBAQCB2
b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1hdGlvbiog
YW5pbWF0aW9uLCBDU1NWYWx1ZSogdgogICAgIH0KIAogICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsK
ICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgICAg
IGNhc2UgQ1NTVmFsdWVMaW5lYXI6CiAgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1
bmN0aW9uKExpbmVhclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKSk7CkBAIC02MzcsNyArNjM3LDcg
QEAgTGVuZ3RoQm94IENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUXVhZChDU1NWYWx1
ZSogdmFsdWUpCiAgICAgZmxvYXQgem9vbSA9IHVzZVNWR1pvb21SdWxlcygpID8gMS4wZiA6IHN0
eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKIAogICAgIC8vIFJldHJpZXZlIHRoZSBwcmltaXRpdmUg
dmFsdWUuCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvcmRlcldpZHRocyA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBib3Jk
ZXJXaWR0aHMgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgIC8vIFNldCB1cCBh
IGxlbmd0aCBib3ggdG8gcmVwcmVzZW50IG91ciBpbWFnZSBzbGljZXMuCiAgICAgTGVuZ3RoQm94
IGJveDsgLy8gRGVmYXVsdHMgdG8gJ2F1dG8nIHNvIHdlIGRvbid0IGhhdmUgdG8gaGFuZGxlIHRo
YXQgZXhwbGljaXRseSBiZWxvdy4KQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIENTU1RvU3R5bGVN
YXA6Om1hcE5pbmVQaWVjZUltYWdlUmVwZWF0KENTU1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1h
Z2UmIGltYQogICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAg
IFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CiAgICAgaWYgKCFw
YWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKaW5kZXggMjA0OTUzODJlYjA4NzA2OGM3NjRlMmEyODQx
NDQyYWM0M2ExNGYyOC4uYmU5MjI2MDYyMDgzZjhkNzFjMzE1MDFmMTU4NmM1YzhmOGQ4MzRmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBDU1NWYWx1
ZTo6ZGVzdHJveSgpCiAgICAgICAgIGRlbGV0ZSB0b0NTU0luaXRpYWxWYWx1ZSh0aGlzKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgUHJpbWl0aXZlQ2xhc3M6Ci0gICAgICAgIGRlbGV0ZSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRoaXMpOworICAgICAgICBkZWxldGUgdG9D
U1NQcmltaXRpdmVWYWx1ZSh0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgUmVmbGVj
dENsYXNzOgogICAgICAgICBkZWxldGUgdG9DU1NSZWZsZWN0VmFsdWUodGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKaW5kZXggNWM4ODdmNzlm
ZWVjMTI4MmNlYmI0MGJlMDk4YmRjN2U3NDcwN2U0NC4uZjZmZTRmYmY1MzE4YTY4NDRhZjZkYTli
Mjc5ZTczZTEzNGEyMDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0
ZWRTdHlsZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5
bGVCdWlsZGVyLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlKENTU1Byb3BlcnR5SUQsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIs
IENTU1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKQotICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgKnN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpKTsKKyAgICAgICAgICAgIHNldFZh
bHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksICp0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKSk7
CiAgICAgfQogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCiAgICAg
ewpAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRW
YWx1ZUlEKCkgPT0gaWRNYXBzVG9NaW51c09uZSkKICAgICAgICAgICAgIHNldFZhbHVlKHN0eWxl
UmVzb2x2ZXItPnN0eWxlKCksIC0xKTsKICAgICAgICAgZWxzZQpAQCAtMjE1LDcgKzIxNSw3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gYXV0b0lkZW50
aXR5KQogICAgICAgICAgICAgc2V0QXV0byhzdHlsZVJlc29sdmVyLT5zdHlsZSgpKTsKICAgICAg
ICAgZWxzZSBpZiAodmFsdWVUeXBlID09IE51bWJlcikKQEAgLTI1NCw3ICsyNTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAK
ICAgICAgICAgaWYgKFJlY3QqIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UmVjdFZhbHVlKCkp
IHsKICAgICAgICAgICAgIExlbmd0aCB0b3AgPSBjb252ZXJ0VG9MZW5ndGgoc3R5bGVSZXNvbHZl
ciwgcmVjdC0+dG9wKCkpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgaWYgKGluaGVy
aXRDb2xvckZyb21QYXJlbnQgJiYgcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUN1cnJlbnRjb2xvcikKICAgICAgICAgICAgIGFwcGx5SW5oZXJpdFZhbHVlKHByb3BlcnR5
SUQsIHN0eWxlUmVzb2x2ZXIpOwogICAgICAgICBlbHNlIHsKQEAgLTM2MSw3ICszNjEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7
CiAgICAgICAgIGlmIChub25lRW5hYmxlZCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9uZSkgewogICAgICAgICAgICAgaWYgKG5vbmVVbmRlZmluZWQpCiAgICAg
ICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgTGVuZ3RoKFVuZGVm
aW5lZCkpOwpAQCAtNDE1LDcgKzQxNSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICgh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAoKGlkZW50QmVo
YXZpb3IgPT0gTWFwTm9uZVRvTnVsbCAmJiBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09
IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHx8IChpZGVudEJlaGF2aW9yID09IE1hcEF1dG9U
b051bGwgJiYgcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pKQog
ICAgICAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgbnVsbEF0b20pOwpA
QCAtNDM4LDcgKzQzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVl
LT5nZXRQYWlyVmFsdWUoKTsKICAgICAgICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8
ICFwYWlyLT5zZWNvbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYwMSw3ICs2MDEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSk7CiAKICAgICAgICAgQ1NTVmFsdWVJRCBpZGVudCA9IHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1
ZUlEKCk7CiAgICAgICAgIFQgbGVuZ3RoOwpAQCAtNjYxLDcgKzY2MSw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAg
ICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci0+Zm9u
dERlc2NyaXB0aW9uKCk7CiAgICAgICAgIChmb250RGVzY3JpcHRpb24uKnNldHRlckZ1bmN0aW9u
KSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250RGVzY3Jp
cHRpb24oZm9udERlc2NyaXB0aW9uKTsKQEAgLTcxNSw3ICs3MTUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGkudmFsdWUoKTsKICAgICAgICAgICAgIGlmICghaXRl
bS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29u
dGVudFZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVtKTsKICAgICAgICAgICAgIEF0b21p
Y1N0cmluZyBmYWNlOwogICAgICAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS0+aXNTdHJpbmcoKSkK
ICAgICAgICAgICAgICAgICBmYWNlID0gY29udGVudFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOwpA
QCAtODI1LDcgKzgyNSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2Ny
aXB0aW9uID0gc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7CiAgICAg
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRLZXl3b3JkU2l6ZSgwKTsKQEAgLTg5OSw3ICs4OTksNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHZhbHVlKTsKICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxl
UmVzb2x2ZXItPmZvbnREZXNjcmlwdGlvbigpOwogICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZh
bHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUludmFsaWQ6CkBAIC05
NjAsNyArOTYwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0g
dmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwogICAgICAgICAgICAgICAgIEFT
U0VSVChpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwogICAgICAgICAgICAgICAgIGlmIChpdGVt
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihp
dGVtKTsKKyAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVtKTsKICAgICAgICAgICAgICAgICAgICAgc3dp
dGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVOb0NvbW1vbkxpZ2F0dXJlczoKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1vbkxpZ2F0dXJlc1N0YXRlID0gRm9udERlc2NyaXB0aW9uOjpEaXNhYmxlZExpZ2F0dXJl
c1N0YXRlOwpAQCAtOTkwLDcgKzk5MCw3IEBAIHB1YmxpYzoKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04odmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAgICAgICAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU5vcm1hbCk7CisgICAgICAgICAgICBBU1NFUlQodG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CiAgICAgICAgIH0KICNlbmRpZgog
CkBAIC0xMTM4LDcgKzExMzgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHN0YXRpYyB2b2lkIGFw
cGx5VmFsdWUoQ1NTUHJvcGVydHlJRCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NT
VmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgYm9vbCBzZXRDb3VudGVySW5jcmVtZW50VG9O
b25lID0gY291bnRlckJlaGF2aW9yID09IEluY3JlbWVudCAmJiB2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOworICAgICAgICBib29sIHNldENvdW50ZXJJbmNyZW1lbnRU
b05vbmUgPSBjb3VudGVyQmVoYXZpb3IgPT0gSW5jcmVtZW50ICYmIHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkgJiYgdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmU7CiAKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSAmJiAhc2V0
Q291bnRlckluY3JlbWVudFRvTm9uZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNjMsNyAr
MTE2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghY3VyclZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIFBhaXIq
IHBhaXIgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGN1cnJWYWx1ZSktPmdldFBh
aXJWYWx1ZSgpOworICAgICAgICAgICAgUGFpciogcGFpciA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUo
Y3VyclZhbHVlKS0+Z2V0UGFpclZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIXBhaXIgfHwgIXBh
aXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCkBAIC0xMjEwLDEzICsxMjEwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFVuaXF1ZSgpOwogICAgICAgICAgICAgICAg
ICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5hZGRDdXJzb3Ioc3R5bGVSZXNvbHZlci0+c3R5
bGVJbWFnZShDU1NQcm9wZXJ0eUN1cnNvciwgaW1hZ2UpLCBpbWFnZS0+aG90U3BvdCgpKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAg
ICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0
ZW0pOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzVmFsdWVJRCgp
KQogICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0Q3Vy
c29yKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUtPmlzVmFsdWVJRCgpICYmIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkt
PmN1cnNvcigpICE9IEVDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKSkKICAgICAgICAgICAgICAgICBz
dHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKICAgICAg
ICAgfQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFs
dWUtPmlzVmFsdWVJRCgpKTsKIAogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVl
SUQoKSAhPSBDU1NWYWx1ZVdlYmtpdE1hdGNoUGFyZW50KQpAQCAtMTI1OSw3ICsxMjU5LDcgQEAg
cHVibGljOgogICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkodmFsdWUpOyBpLmhh
c01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gaS52
YWx1ZSgpOwogICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXRl
bS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgIHQgfD0gKnN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICB0IHw9ICp0b0NTU1ByaW1pdGl2
ZVZhbHVlKGl0ZW0pOwogICAgICAgICB9CiAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkt
PnNldFRleHREZWNvcmF0aW9uKHQpOwogICAgIH0KQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgICAgIHN3
aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkgewogICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZVNtYWxsOgpAQCAtMTMxMiw3ICsxMzEyLDcgQEAgcHVibGljOgogICAgICAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICAgICAg
c3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0TWFycXVlZUxvb3BDb3VudCgtMSk7IC8vIC0xIG1l
YW5zIHJlcGVhdCBmb3JldmVyLgogICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNO
dW1iZXIoKSkKQEAgLTEzMzIsNyArMTMzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgaWYgKENTU1ZhbHVlSUQg
aWRlbnQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgICAgICAgICBzd2l0
Y2ggKGlkZW50KSB7CiAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2xvdzoKQEAgLTEzNjYsNyAr
MTM2Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIFRoaXMgaXMgdHJ1ZSBpZiB2YWx1
ZSBpcyAnYXV0bycgb3IgJ2FscGhhYmV0aWMnLgogICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkgewotICAgICAgICAgICAgVGV4dFVuZGVybGluZVBvc2l0aW9uIHQgPSAqc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgICAgICBUZXh0VW5k
ZXJsaW5lUG9zaXRpb24gdCA9ICp0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFRleHRVbmRlcmxpbmVQb3NpdGlvbih0KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgcHVi
bGljOgogICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkodmFsdWUpOyBpLmhhc01v
cmUoKTsgaS5hZHZhbmNlKCkpIHsKICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gaS52YWx1
ZSgpOwogICAgICAgICAgICAgQVNTRVJUKGl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAg
ICAgICAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb24gdDIgPSAqc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvbiB0MiA9
ICp0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZW0pOwogICAgICAgICAgICAgdCB8PSB0MjsKICAgICAg
ICAgfQogICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0VW5kZXJsaW5lUG9z
aXRpb24oc3RhdGljX2Nhc3Q8VGV4dFVuZGVybGluZVBvc2l0aW9uPih0KSk7CkBAIC0xMzk1LDcg
KzEzOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZSk7CiAgICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0OwogCiAgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQpAQCAtMTQzMyw3
ICsxNDMzLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZl
VmFsdWUodmFsdWUpOwogICAgICAgICBMZW5ndGggbGluZUhlaWdodDsKIAogICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCkBAIC0xNTc1LDgg
KzE1NzUsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfSB8IDxwYWdlLXNp
emU+IDxvcmllbnRhdGlvbj4KICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yLmZpcnN0KCktPmlz
UHJpbWl0aXZlVmFsdWUoKSB8fCAhaW5zcGVjdG9yLnNlY29uZCgpLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIGZpcnN0ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0b3IuZmly
c3QoKSk7Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0b3Iuc2Vjb25kKCkpOworICAgICAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0ID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpbnNwZWN0b3Iu
Zmlyc3QoKSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZShpbnNwZWN0b3Iuc2Vjb25kKCkpOwogICAgICAgICAgICAgaWYgKGZpcnN0
LT5pc0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gPGxlbmd0aD57Mn0KICAgICAgICAg
ICAgICAgICBpZiAoIXNlY29uZC0+aXNMZW5ndGgoKSkKQEAgLTE1OTYsNyArMTU5Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIC8vIDxsZW5ndGg+IHwgYXV0byB8IDxwYWdlLXNpemU+IHwgWyBw
b3J0cmFpdCB8IGxhbmRzY2FwZV0KICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yLmZpcnN0KCkt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KGluc3BlY3Rvci5maXJzdCgpKTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaW5zcGVjdG9yLmZp
cnN0KCkpOwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gPGxlbmd0aD4KICAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUg
PSBQQUdFX1NJWkVfUkVTT0xWRUQ7CkBAIC0xNjYwLDcgKzE2NjAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZW0p
OwogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRmls
bGVkIHx8IHZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVPcGVuKQogICAgICAgICAgICAg
ICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKCp2YWx1
ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMTY3Miw3ICsxNjcyLDcgQEAgcHVibGljOgog
CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogCiAgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNTdHJpbmcoKSkgewogICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsRmls
bGVkKTsKQEAgLTE4MDEsNyArMTgwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgICAgICBFUmVzaXplIHIgPSBSRVNJ
WkVfTk9ORTsKICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7
CkBAIC0xODMxLDcgKzE4MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9D
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRWYWx1ZUlEKCkpCiAgICAgICAgICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+
c2V0VmVydGljYWxBbGlnbigqcHJpbWl0aXZlVmFsdWUpOwpAQCAtMTkwNiw3ICsxOTA2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTUHJvcGVydHlJRCwgU3R5bGVS
ZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04odmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSk7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkgewog
ICAgICAgICAgICAgcmVzZXRFZmZlY3RpdmVab29tKHN0eWxlUmVzb2x2ZXIpOwpAQCAtMTk2Nyw3
ICsxOTY3LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgRURpc3BsYXkgZGlzcGxheSA9ICpz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgRURpc3BsYXkg
ZGlzcGxheSA9ICp0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgICAgICBpZiAoIWlz
VmFsaWREaXNwbGF5VmFsdWUoc3R5bGVSZXNvbHZlciwgZGlzcGxheSkpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xOTg4LDcgKzE5ODgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgYXBw
bHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NW
YWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgewotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsK
ICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
Tm9uZSkKICAgICAgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCAw
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1NoYXBlKCkpIHsKQEAg
LTIwMTksNyArMjAxOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENT
U1Byb3BlcnR5SUQgcHJvcGVydHksIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENTU1Zh
bHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KSB7Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwog
ICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVB
dXRvKQogICAgICAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIDAp
OwogICAgICAgICAgICAgLy8gRklYTUUgQnVnIDEwMjU3MTogTGF5b3V0IGZvciB0aGUgdmFsdWUg
J291dHNpZGUtc2hhcGUnIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKQEAgLTIwNzIsNyArMjA3Miw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gdmFsdWVMaXN0LT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKGkpOwogICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KGl0ZW0pOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVtKTsKICAgICAgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRnJvbUltYWdlKQogICAgICAgICAgICAgICAg
IHNvdXJjZSA9IEltYWdlUmVzb2x1dGlvbkZyb21JbWFnZTsKICAgICAgICAgICAgIGVsc2UgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVTbmFwKQpAQCAtMjEyOCw3
ICsyMTI4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4oaXRlbSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZW0pOwogICAgICAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZS0+Z2V0VmFsdWVJRCgpKQogICAgICAgICAgICAgICAgIGxlbmd0aE9yUGVyY2VudGFnZVZh
bHVlID0gcHJpbWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJz
aW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbiB8IFZpZXdwb3J0
UGVyY2VudGFnZUNvbnZlcnNpb24+KHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2
ZXItPnJvb3RFbGVtZW50U3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+ZWZmZWN0aXZl
Wm9vbSgpKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcApp
bmRleCBlNzc1MDk5OWYxNzZlY2Y2ZDhmOThkOGZmY2I5NzkyNTAwNThmOWNiLi45ZTRlMDEyMTg4
MTk5OWZjMmE1MTkyM2IyNmJmNWM1MTY1ODc4ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNw
cApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgcmVwb3J0TWVkaWFRdWVyeVdhcm5pbmdJZk5lZWRl
ZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IE1lZGlhUXVlcnlTZXQqIG1lCiAgICAgICAgICAg
ICAgICAgaWYgKGV4cC0+bWVkaWFGZWF0dXJlKCkgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnJlc29s
dXRpb25NZWRpYUZlYXR1cmUgfHwgZXhwLT5tZWRpYUZlYXR1cmUoKSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6bWF4X3Jlc29sdXRpb25NZWRpYUZlYXR1cmUgfHwgZXhwLT5tZWRpYUZlYXR1cmUoKSA9
PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluX3Jlc29sdXRpb25NZWRpYUZlYXR1cmUpIHsKICAgICAg
ICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGNzc1ZhbHVlID0gIGV4cC0+dmFsdWUoKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNzc1ZhbHVlICYmIGNzc1ZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY3NzVmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
dG9DU1NQcmltaXRpdmVWYWx1ZShjc3NWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUtPmlzRG90c1BlckluY2goKSB8fCBwcmltaXRpdmVWYWx1ZS0+aXNE
b3RzUGVyQ2VudGltZXRlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFJlc29s
dXRpb25XYXJuaW5nTWVzc2FnZVRvQ29uc29sZShkb2N1bWVudCwgbWVkaWFRdWVyeVNldC0+bWVk
aWFUZXh0KCksIHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGM5NzMyMzVmNDQyYjdj
MDc0MGU5MGU4ZDdiODY0ZjdjZjMwMTU1OGMuLmJiODEwY2VhNTUzODU0MGUzY2E3OGI3NTc4ODdh
NGY3YzM3NTFmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZh
bHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5j
cHAKQEAgLTE5Miw4ICsxOTIsOCBAQCBzdGF0aWMgYm9vbCBjb21wYXJlQXNwZWN0UmF0aW9WYWx1
ZShDU1NWYWx1ZSogdmFsdWUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgTWVkaQogc3RhdGljIGJv
b2wgbnVtYmVyVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBmbG9hdCYgcmVzdWx0KQogewogICAgIGlm
ICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpCi0gICAgICAgICYmIHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5pc051bWJlcigpKSB7Ci0gICAgICAgIHJlc3VsdCA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRGbG9hdFZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgJiYgdG9DU1NQcmltaXRpdmVWYWx1
ZSh2YWx1ZSktPmlzTnVtYmVyKCkpIHsKKyAgICAgICAgcmVzdWx0ID0gdG9DU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZSktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQy
LDcgKzI0Miw3IEBAIHN0YXRpYyBib29sIG9yaWVudGF0aW9uTWVkaWFGZWF0dXJlRXZhbChDU1NW
YWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiwgRnJhbWUqIGZyCiAgICAgaW50IHdpZHRoID0gdmll
dy0+bGF5b3V0V2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gdmlldy0+bGF5b3V0SGVpZ2h0KCk7
CiAgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAg
Y29uc3QgQ1NTVmFsdWVJRCBpZCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpLT5nZXRWYWx1ZUlEKCk7CisgICAgICAgIGNvbnN0IENTU1ZhbHVlSUQgaWQgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpOwogICAgICAgICBpZiAod2lkdGggPiBo
ZWlnaHQpIC8vIFNxdWFyZSB2aWV3cG9ydCBpcyBwb3J0cmFpdC4KICAgICAgICAgICAgIHJldHVy
biBDU1NWYWx1ZUxhbmRzY2FwZSA9PSBpZDsKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9ydHJh
aXQgPT0gaWQ7CkBAIC0zMDYsMTkgKzMwNiwxOSBAQCBzdGF0aWMgYm9vbCBldmFsUmVzb2x1dGlv
bihDU1NWYWx1ZSogdmFsdWUsIEZyYW1lKiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQog
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJlc29sdXRpb24gPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmVzb2x1dGlv
biA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIHJldHVybiBjb21wYXJlVmFsdWUo
ZGV2aWNlU2NhbGVGYWN0b3IsIHJlc29sdXRpb24tPmlzTnVtYmVyKCkgPyByZXNvbHV0aW9uLT5n
ZXRGbG9hdFZhbHVlKCkgOiByZXNvbHV0aW9uLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfRFBQWCksIG9wKTsKIH0KIAogc3RhdGljIGJvb2wgZGV2aWNlX3BpeGVsX3JhdGlv
TWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSAqdmFsdWUsIFJlbmRlclN0eWxlKiwgRnJhbWUqIGZy
YW1lLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCiB7Ci0gICAgcmV0dXJuICghdmFsdWUgfHwgc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmlzTnVtYmVyKCkpICYmIGV2YWxS
ZXNvbHV0aW9uKHZhbHVlLCBmcmFtZSwgb3ApOworICAgIHJldHVybiAoIXZhbHVlIHx8IHRvQ1NT
UHJpbWl0aXZlVmFsdWUodmFsdWUpLT5pc051bWJlcigpKSAmJiBldmFsUmVzb2x1dGlvbih2YWx1
ZSwgZnJhbWUsIG9wKTsKIH0KIAogc3RhdGljIGJvb2wgcmVzb2x1dGlvbk1lZGlhRmVhdHVyZUV2
YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSosIEZyYW1lKiBmcmFtZSwgTWVkaWFGZWF0
dXJlUHJlZml4IG9wKQogewogI2lmIEVOQUJMRShSRVNPTFVUSU9OX01FRElBX1FVRVJZKQotICAg
IHJldHVybiAoIXZhbHVlIHx8IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
LT5pc1Jlc29sdXRpb24oKSkgJiYgZXZhbFJlc29sdXRpb24odmFsdWUsIGZyYW1lLCBvcCk7Cisg
ICAgcmV0dXJuICghdmFsdWUgfHwgdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmlzUmVzb2x1
dGlvbigpKSAmJiBldmFsUmVzb2x1dGlvbih2YWx1ZSwgZnJhbWUsIG9wKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwpAQCAtMzQyLDcg
KzM0Miw3IEBAIHN0YXRpYyBib29sIGNvbXB1dGVMZW5ndGgoQ1NTVmFsdWUqIHZhbHVlLCBib29s
IHN0cmljdCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1p
dGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIoKSkg
ewogICAgICAgICByZXN1bHQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKTsKQEAgLTU5
Niw3ICs1OTYsNyBAQCBzdGF0aWMgYm9vbCB2aWV3X21vZGVNZWRpYUZlYXR1cmVFdmFsKENTU1Zh
bHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqLCBGcmFtZSogZnJhbQogICAgIGlmICghdmFsdWUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY29uc3QgaW50IHZpZXdNb2RlQ1NTS2V5d29yZElE
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQoKTsK
KyAgICBjb25zdCBpbnQgdmlld01vZGVDU1NLZXl3b3JkSUQgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KHZhbHVlKS0+Z2V0VmFsdWVJRCgpOwogICAgIGNvbnN0IFBhZ2U6OlZpZXdNb2RlIHZpZXdNb2Rl
ID0gZnJhbWUtPnBhZ2UoKS0+dmlld01vZGUoKTsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwog
ICAgIHN3aXRjaCAodmlld01vZGUpIHsKQEAgLTY3OCw3ICs2NzgsNyBAQCBzdGF0aWMgYm9vbCBw
b2ludGVyTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiwgRnJh
bWUqIGZyYW1lLAogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgQ1NTVmFsdWVJRCBpZCA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRWYWx1ZUlEKCk7CisgICAgY29uc3QgQ1NTVmFs
dWVJRCBpZCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpLT5nZXRWYWx1ZUlEKCk7CiAgICAg
cmV0dXJuIChwb2ludGVyID09IE5vUG9pbnRlciAmJiBpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAg
ICAgIHx8IChwb2ludGVyID09IFRvdWNoUG9pbnRlciAmJiBpZCA9PSBDU1NWYWx1ZUNvYXJzZSkK
ICAgICAgICAgfHwgKHBvaW50ZXIgPT0gTW91c2VQb2ludGVyICYmIGlkID09IENTU1ZhbHVlRmlu
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggYzM5
NzIzY2E3NWE5Y2Q0ZDI1N2QwMTE1ZWIxMjQyYjFkMGMyODVjMi4uYTExZWIyYTk0MWVkNWY3MTQ1
OWZjZDg1YWVjYzZmM2ExZjU2ZWY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NTdHls
ZVNlbGVjdG9yLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBw
bHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgQVNT
RVJUKHZhbHVlKTsKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSAwOwog
ICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBwcmlt
aXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogCiAgICAgY29uc3QgU3Rh
dGUmIHN0YXRlID0gbV9zdGF0ZTsKICAgICBTVkdSZW5kZXJTdHlsZSogc3Znc3R5bGUgPSBzdGF0
ZS5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSog
dmFsdWUpCiAgICAgICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogZGFzaCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGFz
aGVzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICAgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogZGFzaCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoZGFzaGVzLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKGkpKTsKICAgICAgICAgICAgICAgICBhcnJheS5hcHBlbmQoU1ZHTGVuZ3Ro
Ojpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoZGFzaCkpOwogICAgICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggZDYxZTNlMDFiMTQ1YmRlZjg3MWUw
Mzc3OWFiYTZhMjAxOWRkNjZlMC4uYzI4NzkwZThmYjI5OTJlMjU0NjZhNzY3MmRkMGE2ODU0NDli
MTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtNDE4LDgg
KzQxOCw4IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFs
dWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYKICAgICAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgeVZhbHVlID0gbmV4dFZhbHVlOwogCi0gICAgICAg
ICAgICAgICAgICAgIENTU1ZhbHVlSUQgeElkID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZS5nZXQoKSktPmdldFZhbHVlSUQoKTsKLSAgICAgICAgICAgICAgICAgICAgQ1NT
VmFsdWVJRCB5SWQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHlWYWx1ZS5nZXQo
KSktPmdldFZhbHVlSUQoKTsKKyAgICAgICAgICAgICAgICAgICAgQ1NTVmFsdWVJRCB4SWQgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdldCgpKS0+Z2V0VmFsdWVJRCgpOworICAgICAgICAg
ICAgICAgICAgICBDU1NWYWx1ZUlEIHlJZCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoeVZhbHVlLmdl
dCgpKS0+Z2V0VmFsdWVJRCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoeElkICE9IHlJZCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhJZCA9PSBDU1NWYWx1ZVJlcGVhdCAmJiB5
SWQgPT0gQ1NTVmFsdWVOb1JlcGVhdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVz
ZVJlcGVhdFhTaG9ydGhhbmQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IDM3NWQ4YzExMGE3YTlhZjFiMWM2MGNjZWQxNTQwZTAwNjU2ZWE5ZWMuLjUxZmM5OGY1
OTA2MWJjZWVhNmQwZDgwMDNjMGJhNjE2ZWNiM2YxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTE5MjUsNyArMTkyNSw3IEBAIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRU
cmFja1NpemUoQ1NTVmFsdWUqIHZhbHVlLCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUsIGNvbnN0
CiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBQYWlyKiBtaW5N
YXhUcmFja0JyZWFkdGggPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CiAgICAgaWYg
KCFtaW5NYXhUcmFja0JyZWFkdGgpIHsKICAgICAgICAgTGVuZ3RoIHdvcmtpbmdMZW5ndGg7CkBA
IC0xOTQ5LDcgKzE5NDksNyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1Zh
bHVlKiB2YWx1ZSwgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpegogewogICAgIC8vIEhh
bmRsZSAnbm9uZScuCiAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm4gcHJp
bWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7CiAgICAgfQogCkBAIC0x
OTYwLDcgKzE5NjAsNyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVl
KiB2YWx1ZSwgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpegogICAgIGZvciAoQ1NTVmFs
dWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKICAg
ICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGkudmFsdWUoKTsKICAgICAgICAgaWYgKGN1cnJW
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGN1cnJW
YWx1ZSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKGN1cnJWYWx1ZSk7CiAgICAgICAgICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgICAgICBOYW1lZEdyaWRMaW5lc01hcDo6
QWRkUmVzdWx0IHJlc3VsdCA9IG5hbWVkR3JpZExpbmVzLmFkZChwcmltaXRpdmVWYWx1ZS0+Z2V0
U3RyaW5nVmFsdWUoKSwgVmVjdG9yPHNpemVfdD4oKSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoY3VycmVudE5hbWVkR3JpZExpbmUpOwpAQCAtMTk4OCw3
ICsxOTg4LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFBvc2l0aW9uKENTU1ZhbHVlKiB2YWx1
ZSwgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICAvLyBGb3Igbm93LCB3ZSBvbmx5IGFjY2Vw
dDogJ2F1dG8nIHwgWyA8aW50ZWdlcj4gfHwgPHN0cmluZz4gXSB8IHNwYW4gJiYgPGludGVnZXI+
PwogICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAg
IEFTU0VSVChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0byk7CiAj
ZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMDA0LDE3ICsyMDA0LDE3IEBAIHN0YXRp
YyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSogdmFsdWUsIEdyaWRQb3NpdGlvbiYg
cG9zaXRpb24pCiAgICAgU3RyaW5nIGdyaWRMaW5lTmFtZTsKIAogICAgIENTU1ZhbHVlTGlzdEl0
ZXJhdG9yIGl0ID0gdmFsdWVzOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjdXJyZW50VmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0LnZhbHVlKCkpOworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBjdXJyZW50VmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0LnZhbHVl
KCkpOwogICAgIGlmIChjdXJyZW50VmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVNwYW4p
IHsKICAgICAgICAgaXNTcGFuUG9zaXRpb24gPSB0cnVlOwogICAgICAgICBpdC5hZHZhbmNlKCk7
Ci0gICAgICAgIGN1cnJlbnRWYWx1ZSA9IGl0Lmhhc01vcmUoKSA/IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4oaXQudmFsdWUoKSkgOiAwOworICAgICAgICBjdXJyZW50VmFsdWUgPSBp
dC5oYXNNb3JlKCkgPyB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0LnZhbHVlKCkpIDogMDsKICAgICB9
CiAKICAgICBpZiAoY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1ZS0+aXNOdW1iZXIoKSkgewog
ICAgICAgICBncmlkTGluZU51bWJlciA9IGN1cnJlbnRWYWx1ZS0+Z2V0SW50VmFsdWUoKTsKICAg
ICAgICAgaXQuYWR2YW5jZSgpOwotICAgICAgICBjdXJyZW50VmFsdWUgPSBpdC5oYXNNb3JlKCkg
PyBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0LnZhbHVlKCkpIDogMDsKKyAgICAg
ICAgY3VycmVudFZhbHVlID0gaXQuaGFzTW9yZSgpID8gdG9DU1NQcmltaXRpdmVWYWx1ZShpdC52
YWx1ZSgpKSA6IDA7CiAgICAgfQogCiAgICAgaWYgKGN1cnJlbnRWYWx1ZSAmJiBjdXJyZW50VmFs
dWUtPmlzU3RyaW5nKCkpIHsKQEAgLTIwMzUsNyArMjAzNSw3IEBAIHN0YXRpYyBib29sIGNyZWF0
ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSogdmFsdWUsIEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pCiBz
dGF0aWMgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZShDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAg
aWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJp
bWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUtPmhhc1Zh
cmlhYmxlUmVmZXJlbmNlKCk7CiAgICAgfQogCkBAIC0yMTMzLDcgKzIxMzMsNyBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZh
bHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSA/IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpIDogMDsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpID8gdG9DU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZSkgOiAwOwogCiAgICAgZmxvYXQgem9vbUZhY3RvciA9IHN0YXRlLnN0eWxlKCkt
PmVmZmVjdGl2ZVpvb20oKTsKIApAQCAtMjE4MCw3ICsyMTgwLDcgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICAgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
Y29udGVudFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKyAg
ICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVudFZhbHVlID0gdG9DU1NQcmlt
aXRpdmVWYWx1ZShpdGVtKTsKIAogICAgICAgICAgICAgICAgIGlmIChjb250ZW50VmFsdWUtPmlz
U3RyaW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29udGVu
dChjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBkaWRTZXQpOwpAQCAtMjI1
NCw4ICsyMjU0LDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZmlyc3Qt
PmlzUHJpbWl0aXZlVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oc2Vjb25kLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwotICAgICAgICAgICAg
ICAgIFN0cmluZyBzdGFydFF1b3RlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihm
aXJzdCktPmdldFN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGVuZFF1b3Rl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihzZWNvbmQpLT5nZXRTdHJpbmdWYWx1
ZSgpOworICAgICAgICAgICAgICAgIFN0cmluZyBzdGFydFF1b3RlID0gdG9DU1NQcmltaXRpdmVW
YWx1ZShmaXJzdCktPmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGVu
ZFF1b3RlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShzZWNvbmQpLT5nZXRTdHJpbmdWYWx1ZSgpOwog
ICAgICAgICAgICAgICAgIHF1b3Rlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3RhcnRRdW90ZSwg
ZW5kUXVvdGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNl
dFF1b3RlcyhRdW90ZXNEYXRhOjpjcmVhdGUocXVvdGVzKSk7CkBAIC0zNDg3LDcgKzM0ODcsNyBA
QCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gU3R5bGVSZXNvbHZlcjo6cGFyc2VD
dXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlcgogICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSB2YWx1
ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9D
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJp
bWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIGFycmF5UGFyYW1ldGVyLT5hZGRWYWx1ZShwcmltaXRpdmVW
YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSk7CkBAIC0zNDk4LDcgKzM0OTgsNyBAQCBQYXNzUmVmUHRy
PEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gU3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0b21GaWx0ZXJB
cnJheVBhcmFtZXRlcgogUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IFN0eWxlUmVz
b2x2ZXI6OnBhcnNlQ3VzdG9tRmlsdGVyQ29sb3JQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiBuYW1l
LCBDU1NWYWx1ZUxpc3QqIHZhbHVlcykKIHsKICAgICBBU1NFUlQodmFsdWVzLT5sZW5ndGgoKSk7
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1p
dGl2ZVZhbHVlKHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7CiAgICAgUmVmUHRy
PEN1c3RvbUZpbHRlckNvbG9yUGFyYW1ldGVyPiBjb2xvclBhcmFtZXRlciA9IEN1c3RvbUZpbHRl
ckNvbG9yUGFyYW1ldGVyOjpjcmVhdGUobmFtZSk7CiAgICAgY29sb3JQYXJhbWV0ZXItPnNldENv
bG9yKENvbG9yKGZpcnN0UHJpbWl0aXZlVmFsdWUtPmdldFJHQkEzMlZhbHVlKCkpKTsKICAgICBy
ZXR1cm4gY29sb3JQYXJhbWV0ZXIucmVsZWFzZSgpOwpAQCAtMzUxMSw3ICszNTExLDcgQEAgUGFz
c1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IFN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3VzdG9t
RmlsdGVyTnVtYmVyUGFyYW1ldGUKICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gdmFsdWVzLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJp
bWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2
ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICBudW1iZXJQYXJhbWV0ZXItPmFkZFZhbHVlKHByaW1pdGl2ZVZhbHVl
LT5nZXREb3VibGVWYWx1ZSgpKTsKQEAgLTM1NjAsNyArMzU2MCw3IEBAIFBhc3NSZWZQdHI8Q3Vz
dG9tRmlsdGVyUGFyYW1ldGVyPiBTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFt
ZXRlcihjb25zCiAgICAgaWYgKCF2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCktPmlz
UHJpbWl0aXZlVmFsdWUoKSB8fCB2YWx1ZXMtPmxlbmd0aCgpID4gNCkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjaygwKSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7CiAg
ICAgaWYgKGZpcnN0UHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUikKICAgICAgICAgcmV0dXJuIHBhcnNlQ3VzdG9tRmlsdGVyTnVt
YmVyUGFyYW1ldGVyKG5hbWUsIHZhbHVlcyk7CiAKQEAgLTM1ODAsNyArMzU4MCw3IEBAIGJvb2wg
U3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0KENTU1ZhbHVlKiBw
YXJhbWV0ZXJzVmFsdWUsIEN1CiAgICAgICAgIENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGl0ZXJhdG9y
KHBhcmFtZXRlckl0ZXJhdG9yLnZhbHVlKCkpOwogICAgICAgICBpZiAoIWl0ZXJhdG9yLmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPihpdGVyYXRvci52YWx1ZSgpKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVyYXRvci52YWx1ZSgpKTsKICAgICAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TVFJJTkcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApAQCAt
MzY0Nyw3ICszNjQ3LDcgQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJPcGVyYXRpb24+IFN0eWxl
UmVzb2x2ZXI6OmNyZWF0ZUN1c3RvbUZpbHRlck9wZXJhdGlvbldpdGgKIAogICAgICAgICAgICAg
QVNTRVJUKG1peEZ1bmN0aW9uLT5sZW5ndGgoKSA8PSAzKTsKICAgICAgICAgICAgIHdoaWxlIChp
dGVyYXRvci5oYXNNb3JlKCkpIHsKLSAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZXJhdG9y
LnZhbHVlKCkpOworICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlcmF0b3IudmFsdWUoKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKENTU1BhcnNlcjo6aXNCbGVuZE1vZGUocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVl
SUQoKSkpCiAgICAgICAgICAgICAgICAgICAgIG1peFNldHRpbmdzLmJsZW5kTW9kZSA9ICpwcmlt
aXRpdmVWYWx1ZTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDU1NQYXJzZXI6OmlzQ29tcG9z
aXRlT3BlcmF0b3IocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkpCkBAIC0zNjgwLDcgKzM2
ODAsNyBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6
Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0aAogICAgICAgICAvLyB0aGUgbWVzaC1ib3gg
bGlzdCwgaWYgbm90IGl0IG1lYW5zIGl0IGlzIHRoZSBwYXJhbWV0ZXJzIGxpc3QuCiAKICAgICAg
ICAgaWYgKGl0ZXJhdG9yLmhhc01vcmUoKSAmJiBpdGVyYXRvci5pc1ByaW1pdGl2ZVZhbHVlKCkp
IHsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlcmF0b3IudmFsdWUoKSk7CisgICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KGl0ZXJhdG9yLnZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc051
bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgb25seSBvbmUgaW50ZWdlciB2YWx1ZSBp
cyBzcGVjaWZpZWQsIGl0IHdpbGwgc2V0IGJvdGgKICAgICAgICAgICAgICAgICAvLyB0aGUgcm93
cyBhbmQgdGhlIGNvbHVtbnMuCkBAIC0zNjg5LDcgKzM2ODksNyBAQCBQYXNzUmVmUHRyPEN1c3Rv
bUZpbHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uV2l0aAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFRyeSB0byBtYXRj
aCBhbm90aGVyIG51bWJlciBmb3IgdGhlIHJvd3MuCiAgICAgICAgICAgICAgICAgaWYgKGl0ZXJh
dG9yLmhhc01vcmUoKSAmJiBpdGVyYXRvci5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVyYXRvci52YWx1ZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVW
YWx1ZShpdGVyYXRvci52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtZXNoUm93cyA9
IHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
aXRlcmF0b3IuYWR2YW5jZSgpOwpAQCAtMzY5OSw3ICszNjk5LDcgQEAgUGFzc1JlZlB0cjxDdXN0
b21GaWx0ZXJPcGVyYXRpb24+IFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUN1c3RvbUZpbHRlck9wZXJh
dGlvbldpdGgKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGl0ZXJhdG9yLmhhc01v
cmUoKSAmJiBpdGVyYXRvci5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4oaXRlcmF0b3IudmFsdWUoKSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZXJhdG9yLnZhbHVlKCkpOwog
ICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVE
ZXRhY2hlZCkgewogICAgICAgICAgICAgICAgIG1lc2hUeXBlID0gTWVzaFR5cGVEZXRhY2hlZDsK
ICAgICAgICAgICAgICAgICBpdGVyYXRvci5hZHZhbmNlKCk7CkBAIC0zNzQ1LDcgKzM3NDUsNyBA
QCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGlu
VmFsdWUsIEZpbHRlck9wZXJhdGlvbnMmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAg
ICBpZiAoaW5WYWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
aW5WYWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRv
Q1NTUHJpbWl0aXZlVmFsdWUoaW5WYWx1ZSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTM4MTYsNyArMzgxNiw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmls
dGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aW9ucyYKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBmaXJzdFZhbHVlID0gZmlsdGVyVmFsdWUtPmxlbmd0aCgpID8gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihmaWx0ZXJWYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSkg
OiAwOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3RWYWx1ZSA9IGZpbHRlclZhbHVl
LT5sZW5ndGgoKSA/IHRvQ1NTUHJpbWl0aXZlVmFsdWUoZmlsdGVyVmFsdWUtPml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soMCkpIDogMDsKICAgICAgICAgc3dpdGNoIChmaWx0ZXJWYWx1ZS0+b3BlcmF0
aW9uVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkdyYXlzY2Fs
ZUZpbHRlck9wZXJhdGlvbjoKICAgICAgICAgY2FzZSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6U2Vw
aWFGaWx0ZXJPcGVyYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJhbnNm
b3JtRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMu
Y3BwCmluZGV4IDIzYWZmNDkyZDExODhiYTI0MjY3MTYzMDhkNDgwZjEzMzBjMGFmN2MuLmIyNGU1
Zjk1YzUwM2YzYzQxNWJiNzM5MGI4ODAyNDAwOWFlNzA4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCB0cmFuc2Zv
cm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
cm9vdFN0eWxlLAogICAgICAgICBpZiAoaGF2ZU5vblByaW1pdGl2ZVZhbHVlKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0VmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDApKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0VmFsdWUg
PSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDApKTsKIAogICAgICAgICBzd2l0Y2ggKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBl
KCkpIHsKICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb246CkBAIC0xMjQsNyArMTI0LDcgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLAog
ICAgICAgICAgICAgICAgIHN4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAg
ICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNv
bmRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBzZWNvbmRWYWx1
ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzeSA9IHN4OwpAQCAtMTQ2LDExICsxNDYsMTEgQEAgYm9vbCB0cmFu
c2Zvcm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlLAogICAgICAgICAgICAgICAgIHN4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91Ymxl
VmFsdWUoKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5
cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9u
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAy
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMikpOworICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVl
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN6
ID0gdGhpcmRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhv
dXRCb3VuZHNDaGVjaygxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogc2Vjb25kVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN5ID0g
c2Vjb25kVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBzeDsKQEAgLTE3MCw3ICsxNzAsNyBAQCBi
b29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlKiByb290U3R5bGUsCiAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9GbG9h
dExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yKTsKICAgICAg
ICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlvbikgewogICAgICAg
ICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjaygxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
c2Vjb25kVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVy
dFRvRmxvYXRMZW5ndGgoc2Vjb25kVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3Ip
OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTk1LDExICsx
OTUsMTEgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLAogICAgICAgICAgICAgICAgIHR4ID0gY29u
dmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rv
cik7CiAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkg
IT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb24p
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDIp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjaygyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwogICAgICAgICAgICAgICAgICAgICAgICAgdHog
PSBjb252ZXJ0VG9GbG9hdExlbmd0aCh0aGlyZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29t
RmFjdG9yKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAo
dHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5ndGgoc2Vj
b25kVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMjM2LDkgKzIzNiw5IEBAIGJvb2wgdHJhbnNm
b3Jtc0ZvclZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUq
IHJvb3RTdHlsZSwKICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRl
M0RUcmFuc2Zvcm1PcGVyYXRpb246IHsKICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+
bGVuZ3RoKCkgPCA0KQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7Ci0gICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwotICAg
ICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvdXJ0aFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygz
KSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsK
KyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gdG9DU1NQcmltaXRp
dmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7CisgICAg
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZm91cnRoVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZh
bHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMpKTsKICAgICAgICAg
ICAgIGRvdWJsZSB4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAgICAgICAg
IGRvdWJsZSB5ID0gc2Vjb25kVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICBk
b3VibGUgeiA9IHRoaXJkVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CkBAIC0yNTgsNyArMjU4LDcg
QEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLAogICAgICAgICAgICAgICAgIGFuZ2xlWCA9IGFuZ2xl
OwogICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpID09
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBzZWNvbmRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVZID0g
c2Vjb25kVmFsdWUtPmNvbXB1dGVEZWdyZWVzKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CkBAIC0yNzAsMzMgKzI3MCwzMyBAQCBib29sIHRyYW5zZm9ybXNGb3JW
YWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiByb290U3R5
bGUsCiAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpIDwgNikKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRvdWJsZSBhID0gZmlyc3RWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSBiID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSkt
PmdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgYyA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
MikpLT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIGQgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDMpKS0+Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSBlID0gem9vbUZh
Y3RvciAqIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soNCkpLT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAg
ZG91YmxlIGYgPSB6b29tRmFjdG9yICogc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0
cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg1KSktPmdldERvdWJsZVZhbHVl
KCk7CisgICAgICAgICAgICBkb3VibGUgYiA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3Jt
VmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpLT5nZXREb3VibGVWYWx1ZSgpOworICAg
ICAgICAgICAgZG91YmxlIGMgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAg
IGRvdWJsZSBkID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhv
dXRCb3VuZHNDaGVjaygzKSktPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUg
ZSA9IHpvb21GYWN0b3IgKiB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKDQpKS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRv
dWJsZSBmID0gem9vbUZhY3RvciAqIHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNSkpLT5nZXREb3VibGVWYWx1ZSgpOwogICAgICAgICAg
ICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlv
bjo6Y3JlYXRlKGEsIGIsIGMsIGQsIGUsIGYpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeDNEVHJhbnNm
b3JtT3BlcmF0aW9uOiB7CiAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgp
IDwgMTYpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtYXRyaXgoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1W
YWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSktPmdldERvdWJsZVZhbHVlKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpLT5nZXREb3VibGVW
YWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIp
KS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygzKSktPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNCkpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRy
YW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKS0+Z2V0RG91YmxlVmFsdWUo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg2KSktPmdl
dERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soNykpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKDgpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zv
cm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg5KSktPmdldERvdWJsZVZhbHVlKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTApKS0+Z2V0RG91
YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVj
aygxMSkpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB6b29tRmFjdG9yICogc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1W
YWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMikpLT5nZXREb3VibGVWYWx1ZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tRmFjdG9yICogc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygx
MykpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDE0KSktPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFs
dWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTUpKS0+Z2V0RG91YmxlVmFsdWUoKSk7CisgICAg
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgodG9DU1NQcmltaXRpdmVWYWx1ZSh0
cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSktPmdldERvdWJsZVZhbHVl
KCksCisgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAg
ICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjaygyKSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgdG9DU1NQcmlt
aXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygzKSktPmdl
dERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFu
c2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg0KSktPmdldERvdWJsZVZhbHVlKCks
CisgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRl
bVdpdGhvdXRCb3VuZHNDaGVjayg1KSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAg
ICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjayg2KSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRp
dmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg3KSktPmdldERv
dWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zv
cm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg4KSktPmdldERvdWJsZVZhbHVlKCksCisg
ICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjayg5KSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAg
dG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVj
aygxMCkpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIHRvQ1NTUHJpbWl0aXZl
VmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTEpKS0+Z2V0RG91
YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICB6b29tRmFjdG9yICogdG9DU1NQcmltaXRpdmVW
YWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMikpLT5nZXREb3Vi
bGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIHpvb21GYWN0b3IgKiB0b0NTU1ByaW1pdGl2ZVZh
bHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEzKSktPmdldERvdWJs
ZVZhbHVlKCksCisgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1W
YWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxNCkpLT5nZXREb3VibGVWYWx1ZSgpLAorICAg
ICAgICAgICAgICAgIHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soMTUpKS0+Z2V0RG91YmxlVmFsdWUoKSk7CiAgICAgICAgICAgICBvcGVy
YXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmNy
ZWF0ZShtYXRyaXgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGVhNjQ3MGE4NGNhYzhh
OTA5ZGIxY2Y0ZDgwNGY3ZTM4ODY2ZDQxMGEuLjRlMWU1M2E3NTIzZmIyOWJkYTlmZjdlYWI4YWE0
NjcwN2NmN2E4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2
ZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgZmxvYXQgVmlld3BvcnRTdHlsZVJlc29sdmVyOjpn
ZXRWaWV3cG9ydEFyZ3VtZW50VmFsdWUoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QKICAgICBpZiAo
IXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZGVm
YXVsdFZhbHVlOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5nZXQoKSk7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZS5nZXQo
KSk7CiAKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTnVtYmVyKCkgfHwgcHJpbWl0aXZlVmFs
dWUtPmlzUHgoKSkKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZhbHVl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCmluZGV4IGEzM2I4OTVkODc2
OTZlYzMzZTBlY2JhNjllNTc2Zjg0YjA1YzhjNzguLmI0ZGQ1MGQ2MTRiZTJiNjkzZWNiMGU2NzM5
YjgwNTU3NDA1MDY2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NN
YXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCkBA
IC02Miw3ICs2Miw3IEBAIHZvaWQgV2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZShjb25z
dCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUgPSBzdHlsZURlY2xhcmF0aW9uLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKIAogICAgICAgICAvLyBDaGVjayBmb3IgYSAibm9uZSIg
b3IgZW1wdHkgdHJhbnNmb3JtLiBJbiB0aGVzZSBjYXNlcyB3ZSBjYW4gdXNlIHRoZSBkZWZhdWx0
IGlkZW50aXR5IG1hdHJpeC4KLSAgICAgICAgaWYgKCF2YWx1ZSB8fCAodmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSAmJiAoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5nZXQo
KSkpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKSkKKyAgICAgICAgaWYgKCF2YWx1ZSB8
fCAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiAodG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZS5nZXQoKSkpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDRjY2QzNjA0Mzgw
MzI4ZTU4YjAzM2QzZDc5Y2FkZjM4OWY2YTllYWMuLjQ2ZGY2ZTYwMmQ3YzA3NDU3ZjM2NDRkMjQ2
NGFjYjJmMzBlODRlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlT
dHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCkBAIC0xNTE0LDcgKzE1MTQsNyBAQCBmbG9hdCBBcHBseVN0eWxlQ29tbWFuZDo6
Y29tcHV0ZWRGb250U2l6ZShOb2RlKiBub2RlKQogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0b3Iobm9kZSkucHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0
eUZvbnRTaXplKTsKICAgICBBU1NFUlQodmFsdWUgJiYgdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUuZ2V0
KCkpLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIHJldHVy
biB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdldCgpKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYKTsKIH0KIAogdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6am9pbkNo
aWxkVGV4dE5vZGVzKE5vZGUqIG5vZGUsIGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9z
aXRpb24mIGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCAy
ZTA0ODdhM2NhZjM1OTJkYjM4NmZkODVkMDBhN2FmNjA2ZDBhZTA4Li4yZmIyZjJkYmUyMTQ3NGE5
YTdjZjI4MGYxNDRjYmNkNmVkMzc2NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgaW50IGlkZW50aWZpZXJGb3JTdHlsZVByb3Bl
cnR5KFQqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiAgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSA9IGV4dHJhY3RQcm9wZXJ0eVZhbHVlKHN0eWxlLCBwcm9wZXJ0eUlEKTsKICAg
ICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1
cm4gMDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5n
ZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICByZXR1cm4gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZS5nZXQoKSktPmdldFZhbHVlSUQoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gUGFzc1Jl
ZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gZ2V0UHJvcGVydGllc05vdEluKFN0eWxlUHJv
cGVydHlTZXQqIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIFQqIGJhc2VTdHlsZSk7CkBA
IC0yMDEsNyArMjAxLDcgQEAgSFRNTEVsZW1lbnRFcXVpdmFsZW50OjpIVE1MRWxlbWVudEVxdWl2
YWxlbnQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWVJRCBwcmltaXQKIGJvb2wgSFRNTEVsZW1l
bnRFcXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCogZWxlbWVudCwgU3R5
bGVQcm9wZXJ0eVNldCogc3R5bGUpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKG1fcHJvcGVydHlJRCk7Ci0gICAgcmV0dXJu
IG1hdGNoZXMoZWxlbWVudCkgJiYgdmFsdWUgJiYgdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAm
JiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgpKS0+Z2V0VmFsdWVJ
RCgpID09IG1fcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKTsKKyAgICByZXR1cm4gbWF0Y2hl
cyhlbGVtZW50KSAmJiB2YWx1ZSAmJiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHRvQ1NT
UHJpbWl0aXZlVmFsdWUodmFsdWUuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkgPT0gbV9wcmltaXRpdmVW
YWx1ZS0+Z2V0VmFsdWVJRCgpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50RXF1aXZhbGVudDo6YWRk
VG9TdHlsZShFbGVtZW50KiwgRWRpdGluZ1N0eWxlKiBzdHlsZSkgY29uc3QKQEAgLTM3OCw3ICsz
NzgsNyBAQCBzdGF0aWMgUkdCQTMyIGNzc1ZhbHVlVG9SR0JBKENTU1ZhbHVlKiBjb2xvclZhbHVl
KQogICAgIGlmICghY29sb3JWYWx1ZSB8fCAhY29sb3JWYWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQogICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OwogICAgIAotICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVDb2xvciA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4oY29sb3JWYWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZUNvbG9yID0g
dG9DU1NQcmltaXRpdmVWYWx1ZShjb2xvclZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlQ29sb3It
PmlzUkdCQ29sb3IoKSkKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUNvbG9yLT5nZXRSR0JBMzJW
YWx1ZSgpOwogICAgIApAQCAtNDk4LDcgKzQ5OCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpleHRy
YWN0Rm9udFNpemVEZWx0YSgpCiAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5nZXQoKSk7
CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZS5nZXQoKSk7CiAKICAgICAvLyBPbmx5IFBYIGhhbmRsZWQgbm93LiBJZiB3ZSBo
YW5kbGUgbW9yZSB0eXBlcyBpbiB0aGUgZnV0dXJlLCBwZXJoYXBzCiAgICAgLy8gYSBzd2l0Y2gg
c3RhdGVtZW50IGhlcmUgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZS4KQEAgLTUyMywxMyArNTIz
LDEzIEBAIGJvb2wgRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24m
IHdyaXRpbmdEaXJlY3Rpb24pIGNvbnN0CiAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCAhdW5pY29k
ZUJpZGktPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Q1NTVmFsdWVJRCB1bmljb2RlQmlkaVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih1bmljb2RlQmlkaS5nZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICBDU1NWYWx1ZUlEIHVu
aWNvZGVCaWRpVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHVuaWNvZGVCaWRpLmdldCgpKS0+
Z2V0VmFsdWVJRCgpOwogICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlRW1iZWQp
IHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBkaXJlY3Rpb24gPSBtX211dGFibGVTdHlsZS0+
Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CiAgICAgICAgIGlmICgh
ZGlyZWN0aW9uIHx8ICFkaXJlY3Rpb24tPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICB3cml0aW5nRGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPihkaXJlY3Rpb24uZ2V0KCkpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVMdHIgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRvTGVmdFdyaXRp
bmdEaXJlY3Rpb247CisgICAgICAgIHdyaXRpbmdEaXJlY3Rpb24gPSB0b0NTU1ByaW1pdGl2ZVZh
bHVlKGRpcmVjdGlvbi5nZXQoKSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUx0ciA/IExlZnRU
b1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC05NDksOSArOTQ5LDkgQEAgdm9pZCBFZGl0
aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBTaG91
bGRQcmVzZXJ2ZVdyaXQKICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAogICAgIGlmICh1bmljb2RlQmlkaSAmJiB1bmlj
b2RlQmlkaS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgIG1fbXV0YWJsZVN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlE
PihzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHVuaWNvZGVCaWRpLmdldCgpKS0+Z2V0
VmFsdWVJRCgpKSk7CisgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPih0b0NTU1ByaW1pdGl2ZVZh
bHVlKHVuaWNvZGVCaWRpLmdldCgpKS0+Z2V0VmFsdWVJRCgpKSk7CiAgICAgICAgIGlmIChkaXJl
Y3Rpb24gJiYgZGlyZWN0aW9uLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICBtX211
dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0YXRpY19jYXN0
PENTU1ZhbHVlSUQ+KHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGlyZWN0aW9uLmdl
dCgpKS0+Z2V0VmFsdWVJRCgpKSk7CisgICAgICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHRvQ1NT
UHJpbWl0aXZlVmFsdWUoZGlyZWN0aW9uLmdldCgpKS0+Z2V0VmFsdWVJRCgpKSk7CiAgICAgfQog
fQogCkBAIC0xMTQ5LDcgKzExNDksNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZy
b21SdWxlc0ZvclNlcmlhbGl6YXRpb24oU3R5bGVkRWxlbWVudCogZWxlbWVudCkKICAgICAgICAg
ICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHByb3BlcnR5LnZhbHVlKCk7CiAgICAgICAgICAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmlz
UGVyY2VudGFnZSgpKSB7CisgICAgICAgICAgICBpZiAodG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSktPmlzUGVyY2VudGFnZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1
ZT4gY29tcHV0ZWRQcm9wZXJ0eVZhbHVlID0gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eVZhbHVlKHBy
b3BlcnR5LmlkKCkpKQogICAgICAgICAgICAgICAgICAgICBmcm9tQ29tcHV0ZWRTdHlsZS0+YWRk
UGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHkuaWQoKSwgY29tcHV0ZWRQcm9wZXJ0
eVZhbHVlLnJlbGVhc2UoKSkpOwogICAgICAgICAgICAgfQpAQCAtMTIyMiw3ICsxMjIyLDcgQEAg
aW50IEVkaXRpbmdTdHlsZTo6bGVnYWN5Rm9udFNpemUoRG9jdW1lbnQqIGRvY3VtZW50KSBjb25z
dAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUgPSBtX211dGFibGVTdHlsZS0+Z2V0UHJv
cGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTaXplKTsKICAgICBpZiAoIWNzc1ZhbHVlIHx8
ICFjc3NWYWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBy
ZXR1cm4gbGVnYWN5Rm9udFNpemVGcm9tQ1NTVmFsdWUoZG9jdW1lbnQsIHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oY3NzVmFsdWUuZ2V0KCkpLAorICAgIHJldHVybiBsZWdhY3lGb250
U2l6ZUZyb21DU1NWYWx1ZShkb2N1bWVudCwgdG9DU1NQcmltaXRpdmVWYWx1ZShjc3NWYWx1ZS5n
ZXQoKSksCiAgICAgICAgIG1fc2hvdWxkVXNlRml4ZWREZWZhdWx0Rm9udFNpemUsIEFsd2F5c1Vz
ZUxlZ2FjeUZvbnRTaXplKTsKIH0KIApAQCAtMTI4Niw3ICsxMjg2LDcgQEAgV3JpdGluZ0RpcmVj
dGlvbiBFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYKICAgICAgICAgICAgIGlmICghdW5pY29kZUJpZGkgfHwgIXVuaWNvZGVCaWRp
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgICAgIENTU1ZhbHVlSUQgdW5pY29kZUJpZGlWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRWYWx1ZUlEKCk7CisgICAgICAgICAg
ICBDU1NWYWx1ZUlEIHVuaWNvZGVCaWRpVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHVuaWNv
ZGVCaWRpLmdldCgpKS0+Z2V0VmFsdWVJRCgpOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVCaWRp
VmFsdWUgPT0gQ1NTVmFsdWVFbWJlZCB8fCB1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlQmlk
aU92ZXJyaWRlKQogICAgICAgICAgICAgICAgIHJldHVybiBOYXR1cmFsV3JpdGluZ0RpcmVjdGlv
bjsKICAgICAgICAgfQpAQCAtMTMxNSw3ICsxMzE1LDcgQEAgV3JpdGluZ0RpcmVjdGlvbiBFZGl0
aW5nU3R5bGU6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYKICAgICAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCAhdW5pY29kZUJpZGktPmlzUHJpbWl0aXZl
VmFsdWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIENTU1ZhbHVlSUQgdW5p
Y29kZUJpZGlWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odW5pY29kZUJp
ZGkuZ2V0KCkpLT5nZXRWYWx1ZUlEKCk7CisgICAgICAgIENTU1ZhbHVlSUQgdW5pY29kZUJpZGlW
YWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRWYWx1ZUlE
KCk7CiAgICAgICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlTm9ybWFsKQogICAg
ICAgICAgICAgY29udGludWU7CiAKQEAgLTEzMjcsNyArMTMyNyw3IEBAIFdyaXRpbmdEaXJlY3Rp
b24gRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mCiAgICAgICAgIGlmICghZGlyZWN0aW9uIHx8ICFkaXJlY3Rpb24tPmlzUHJpbWl0
aXZlVmFsdWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIENTU1ZhbHVlSUQg
ZGlyZWN0aW9uVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGRpcmVjdGlv
bi5nZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICAgICAgQ1NTVmFsdWVJRCBkaXJlY3Rpb25WYWx1
ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoZGlyZWN0aW9uLmdldCgpKS0+Z2V0VmFsdWVJRCgpOwog
ICAgICAgICBpZiAoZGlyZWN0aW9uVmFsdWUgIT0gQ1NTVmFsdWVMdHIgJiYgZGlyZWN0aW9uVmFs
dWUgIT0gQ1NTVmFsdWVSdGwpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTQ2Nyw3ICsx
NDY3LDcgQEAgdm9pZCBTdHlsZUNoYW5nZTo6ZXh0cmFjdFRleHRTdHlsZXMoRG9jdW1lbnQqIGRv
Y3VtZW50LCBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCoKICAgICBpZiAoUmVmUHRyPENTU1ZhbHVl
PiBmb250U2l6ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFNp
emUpKSB7CiAgICAgICAgIGlmICghZm9udFNpemUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAg
ICAgICAgIHN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplKTsgLy8gQ2Fu
J3QgbWFrZSBzZW5zZSBvZiB0aGUgbnVtYmVyLiBQdXQgbm8gZm9udCBzaXplLgotICAgICAgICBl
bHNlIGlmIChpbnQgbGVnYWN5Rm9udFNpemUgPSBsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1ZShk
b2N1bWVudCwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihmb250U2l6ZS5nZXQoKSks
CisgICAgICAgIGVsc2UgaWYgKGludCBsZWdhY3lGb250U2l6ZSA9IGxlZ2FjeUZvbnRTaXplRnJv
bUNTU1ZhbHVlKGRvY3VtZW50LCB0b0NTU1ByaW1pdGl2ZVZhbHVlKGZvbnRTaXplLmdldCgpKSwK
ICAgICAgICAgICAgICAgICBzaG91bGRVc2VGaXhlZEZvbnREZWZhdWx0U2l6ZSwgVXNlTGVnYWN5
Rm9udFNpemVPbmx5SWZQaXhlbFZhbHVlc01hdGNoKSkgewogICAgICAgICAgICAgbV9hcHBseUZv
bnRTaXplID0gU3RyaW5nOjpudW1iZXIobGVnYWN5Rm9udFNpemUpOwogICAgICAgICAgICAgc3R5
bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUpOwpAQCAtMTQ5OSw3ICsxNDk5
LDcgQEAgc3RhdGljIGJvb2wgZm9udFdlaWdodElzQm9sZChDU1NWYWx1ZSogZm9udFdlaWdodCkK
IAogICAgIC8vIEJlY2F1c2UgYiB0YWcgY2FuIG9ubHkgYm9sZCB0ZXh0LCB0aGVyZSBhcmUgb25s
eSB0d28gc3RhdGVzIGluIHBsYWluIGh0bWw6IGJvbGQgYW5kIG5vdCBib2xkLgogICAgIC8vIENv
bGxhcHNlIGFsbCBvdGhlciB2YWx1ZXMgdG8gZWl0aGVyIG9uZSBvZiB0aGVzZSB0d28gc3RhdGVz
IGZvciBlZGl0aW5nIHB1cnBvc2VzLgotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPihmb250V2VpZ2h0KS0+Z2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoICh0b0NT
U1ByaW1pdGl2ZVZhbHVlKGZvbnRXZWlnaHQpLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZTEwMDoKICAgICAgICAgY2FzZSBDU1NWYWx1ZTIwMDoKICAgICAgICAgY2FzZSBD
U1NWYWx1ZTMwMDoKQEAgLTE1OTMsNyArMTU5Myw3IEBAIGJvb2wgaXNUcmFuc3BhcmVudENvbG9y
VmFsdWUoQ1NTVmFsdWUqIGNzc1ZhbHVlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAo
IWNzc1ZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KGNzc1ZhbHVlKTsgICAgCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZShjc3NWYWx1ZSk7ICAgIAogICAgIGlmICh2YWx1ZS0+aXNSR0JDb2xvcigp
KQogICAgICAgICByZXR1cm4gIWFscGhhQ2hhbm5lbCh2YWx1ZS0+Z2V0UkdCQTMyVmFsdWUoKSk7
ICAgIAogICAgIHJldHVybiB2YWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlVHJhbnNwYXJl
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYTc0M2JiNjQ2NjE1MDlmNzg5NTNi
NWIwOTg4ODVmY2UzZGM1OWNiOS4uNzY3ZjdlMDZhYjdmYjk5MWY1YTMyYzAyMDU3YmVmMGQ4M2Fk
Y2FjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIHN0
YXRpYyBib29sIHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUoU3R5bGVQcm9wZXJ0eVNldCog
c3R5bGUsIENTU1Byb3BlcnR5SUQKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUuZ2V0KCkpLT5nZXRWYWx1ZUlE
KCkgPT0gQ1NTVmFsdWVOb25lOworICAgIHJldHVybiB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
LmdldCgpKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZTsKIH0KIAogc3RhdGljIGJvb2wg
bmVlZEludGVyY2hhbmdlTmV3bGluZUFmdGVyKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213069</attachid>
            <date>2013-10-01 03:03:19 -0700</date>
            <delta_ts>2013-10-01 03:49:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-122101-20131001190317.patch</filename>
            <type>text/plain</type>
            <size>87894</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTE1YjIyNThkZmQ4Y2Y3
ZWExNzg0NGM2YTljM2RlODZkMjQ3YjU5Ny4uMDFmYWVjY2FhZjhiYjg2MzJlYmRhNzU3M2U1ZWJk
YTU4ZDAxODAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAxMy0xMC0wMSAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIEdlbmVyYXRl
IHRvQ1NTRm9vVmFsdWUgZm9yIENTU1ByaW1pdGl2ZVZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxMDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBcyBhIHN0ZXAgb2YgY2xlYW4tdXAgc3RhdGlj
X2Nhc3Q8PiBpbiBDU1NWYWx1ZXMsIHRoaXMgcGF0Y2ggZ2VuZXJhdGVzCisgICAgICAgIHRvQ1NT
Rm9vUHJpbWl0aXZlVmFsdWUoKSBpbiBvcmRlciB0byBkZXRlY3QgYmFkIGNhc3RzIGFzIHdlbGwg
YXMgaW1wcm92ZXMKKyAgICAgICAgY29kZSByZWFkYWJpbGl0eS4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VS
dWxlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzdWJpbWFnZUlzUGVuZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFnZUZvckNT
U1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpmaWxsSW1hZ2VTZXQpOgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZTNWYWx1ZXNGaWxsUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlRmlsbFJlcGVhdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VSYWRpYWxHcmFkaWVudCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmg6CisgICAgICAgICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbEF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbENsaXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHls
ZU1hcDo6bWFwRmlsbENvbXBvc2l0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBGaWxsQmxlbmRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1h
cEZpbGxPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJl
cGVhdFgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFhQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxNYXNrU291cmNlVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EZWxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRHVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRmlsbE1vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUHJvcGVydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUmVwZWF0KToKKyAg
ICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmRl
c3Ryb3kpOgorICAgICAgICAqIGNzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEZWZhdWx0OjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlOdW1iZXI6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUF1dG86OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlQcm9wZXJ0eUNsaXA6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQ
cm9wZXJ0eUNvbG9yOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlMZW5ndGg6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVN0
cmluZzo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Qm9yZGVy
UmFkaXVzOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb21w
dXRlTGVuZ3RoOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlG
b250OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250RmFt
aWx5OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6
ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFdlaWdo
dDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udFZhcmlh
bnRMaWdhdHVyZXM6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0
eUNvdW50ZXI6OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUN1
cnNvcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEFs
aWduOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0RGVj
b3JhdGlvbjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TWFy
cXVlZUluY3JlbWVudDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5TWFycXVlZVJlcGV0aXRpb246OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eU1hcnF1ZWVTcGVlZDo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBseVByb3BlcnR5VGV4dFVuZGVybGluZVBvc2l0aW9uOjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0OjphcHBseVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlMaW5lSGVpZ2h0Rm9ySU9TVGV4dEF1dG9zaXppbmc6OmFw
cGx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlUZXh0RW1waGFzaXNTdHls
ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5UmVzaXplOjph
cHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlWZXJ0aWNhbEFsaWdu
OjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlab29tOjphcHBs
eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlEaXNwbGF5OjphcHBseVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDbGlwUGF0aDo6YXBwbHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5U2hhcGU6OmFwcGx5VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUltYWdlUmVzb2x1dGlvbjo6YXBwbHlWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5VGV4dEluZGVudDo6YXBwbHlWYWx1
ZSk6CisgICAgICAgICogY3NzL01lZGlhTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBv
cnRNZWRpYVF1ZXJ5V2FybmluZ0lmTmVlZGVkKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2
YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpudW1iZXJWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcmllbnRhdGlvbk1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
ZXZhbFJlc29sdXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlX3BpeGVsX3JhdGlvTWVk
aWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHV0aW9uTWVkaWFGZWF0dXJl
RXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OnZpZXdfbW9kZU1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRl
ck1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAqIGNzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5U1ZHUHJvcGVydHkpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUHJvcGVydHlTZXQ6OmdldExheWVyZWRTaG9ydGhhbmRWYWx1ZSk6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR3JpZFRyYWNrU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHcmlkVHJhY2tMaXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdyaWRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpoYXNWYXJpYWJs
ZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3Bl
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3VzdG9tRmlsdGVy
QXJyYXlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cGFyc2VD
dXN0b21GaWx0ZXJDb2xvclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjpwYXJzZUN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0
aW9uV2l0aElubGluZVN5bnRheCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpj
cmVhdGVGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAgICAgKiBjc3MvVHJhbnNmb3JtRnVuY3Rpb25z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybXNGb3JWYWx1ZSk6CisgICAgICAgICog
Y3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9y
dFN0eWxlUmVzb2x2ZXI6OmdldFZpZXdwb3J0QXJndW1lbnRWYWx1ZSk6CisgICAgICAgICogY3Nz
L1dlYktpdENTU01hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6
OnNldE1hdHJpeFZhbHVlKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRTaXpl
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppZGVudGlmaWVyRm9yU3R5bGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxl
bWVudEVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjc3NWYWx1ZVRvUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmV4dHJh
Y3RGb250U2l6ZURlbHRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dGV4dERp
cmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5
QXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVz
Rm9yU2VyaWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmxlZ2Fj
eUZvbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlv
bkZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNoYW5nZTo6ZXh0cmFjdFRl
eHRTdHlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udFdlaWdodElzQm9sZCk6CisgICAgICAg
IChXZWJDb3JlOjppc1RyYW5zcGFyZW50Q29sb3JWYWx1ZSk6CisgICAgICAgICogZWRpdGluZy9t
YXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9u
ZSk6CisKIDIwMTMtMDktMzAgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIEJ1aWxkIGZpeCBmb3IgRUZMLCBRdCwgR3RrIHBvcnQgYWZ0ZXIgcjE1NjY4OApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCAxMmZmNThlNDE4MmIzNDcy
NWQ4MTQ1ZDgyN2RmOWJlOTdkY2Y0YmE0Li5lODQzMTdkNjdhMjU5NjBlOTg1NmZjMmExYmMwYmM4
YjViNzdhMDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtMTE1
LDcgKzExNSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3Qg
U3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAgICAgICAgaWYgKCFmb250U3R5bGUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBzd2l0
Y2ggKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZm9udFN0eWxlLmdldCgpKS0+Z2V0
VmFsdWVJRCgpKSB7CisgICAgICAgIHN3aXRjaCAodG9DU1NQcmltaXRpdmVWYWx1ZShmb250U3R5
bGUuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoK
ICAgICAgICAgICAgIHRyYWl0c01hc2sgfD0gRm9udFN0eWxlTm9ybWFsTWFzazsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRG
b250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAgICAg
ICAgaWYgKCFmb250V2VpZ2h0LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGZv
bnRXZWlnaHQuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgc3dpdGNoICh0b0NTU1By
aW1pdGl2ZVZhbHVlKGZvbnRXZWlnaHQuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAg
Y2FzZSBDU1NWYWx1ZUJvbGQ6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWU3MDA6CiAgICAgICAgICAg
ICB0cmFpdHNNYXNrIHw9IEZvbnRXZWlnaHQ3MDBNYXNrOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZv
aWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZh
Y2UqIGZvbnRGYWNlUnVsZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtVmFyaWFudHM7ICsraSkgewotICAgICAgICAgICAgc3dpdGNo
IChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhcmlhbnRMaXN0LT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKGkpKS0+Z2V0VmFsdWVJRCgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHRv
Q1NTUHJpbWl0aXZlVmFsdWUodmFyaWFudExpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkp
LT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgog
ICAgICAgICAgICAgICAgICAgICB0cmFpdHNNYXNrIHw9IEZvbnRWYXJpYW50Tm9ybWFsTWFzazsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBDU1NG
b250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjb25zdCBTdHlsZVJ1bGVGb250RmFjZSogZm9u
dEZhY2VSdWxlKQogICAgIC8vIEhhc2ggdW5kZXIgZXZlcnkgc2luZ2xlIGZhbWlseSBuYW1lLgog
ICAgIGludCBmYW1pbHlMZW5ndGggPSBmYW1pbHlMaXN0LT5sZW5ndGgoKTsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGZhbWlseUxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBpdGVtID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihmYW1pbHlMaXN0LT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGl0
ZW0gPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGZhbWlseUxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soaSkpOwogICAgICAgICBTdHJpbmcgZmFtaWx5TmFtZTsKICAgICAgICAgaWYgKGl0ZW0tPmlz
U3RyaW5nKCkpIHsKICAgICAgICAgICAgIGZhbWlseU5hbWUgPSBpdGVtLT5nZXRTdHJpbmdWYWx1
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCmluZGV4IDI5MGY1NjJm
NmRkY2IyZTBhZDBiNzE4ZjI3ODZlMGUwYjg3MzQ4ZjEuLjI1MDFlYWNiMmM2M2MxZWMxZDc0ZjFi
MDA2MDc0MTRmMjkyNzdiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFk
aWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5j
cHAKQEAgLTYyLDEwICs2Miw4IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IENTU0dyYWRpZW50VmFsdWU6
OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplCiAKICAgICBpZiAo
aXNMaW5lYXJHcmFkaWVudFZhbHVlKCkpCiAgICAgICAgIGdyYWRpZW50ID0gdG9DU1NMaW5lYXJH
cmFkaWVudFZhbHVlKHRoaXMpLT5jcmVhdGVHcmFkaWVudChyZW5kZXJlciwgc2l6ZSk7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIEFTU0VSVChpc1JhZGlhbEdyYWRpZW50VmFsdWUoKSk7CisgICAgZWxz
ZQogICAgICAgICBncmFkaWVudCA9IHRvQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSh0aGlzKS0+Y3Jl
YXRlR3JhZGllbnQocmVuZGVyZXIsIHNpemUpOwotICAgIH0KIAogICAgIFJlZlB0cjxHcmFkaWVu
dEltYWdlPiBuZXdJbWFnZSA9IEdyYWRpZW50SW1hZ2U6OmNyZWF0ZShncmFkaWVudCwgc2l6ZSk7
CiAgICAgaWYgKGNhY2hlYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJ
bWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVy
YXRvclZhbHVlLmNwcAppbmRleCA3ODVmNGNlMDA0OGFiNGNiYzNiNjU0ODhlOTZiOGVhZjg5MmZi
OTVmLi4xNjhkM2E3OWYwNTBhZjQwZWVkOTk0OTNhNjUxMGE4NWJlOTI4NDY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0yNDIsNyArMjQy
LDcgQEAgYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzdWJpbWFnZUlzUGVuZGluZyhDU1NW
YWx1ZSogdmFsdWUpCiAgICAgaWYgKHZhbHVlLT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSkKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqPih2YWx1ZSkt
PmlzUGVuZGluZygpOwogCi0gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU5vbmUpCisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgdG9DU1NQcmlt
aXRpdmVWYWx1ZSh2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjY5LDcgKzI2
OSw3IEBAIENhY2hlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFnZUZv
ckNTU1ZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwgQ2FjCiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQorICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFs
dWUpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFs
dWUuY3BwCmluZGV4IGQ2MzkxYzY0MDRlODk5M2NiNzhiZGI1ZjI3M2EzNDY4NjRlZjc5OTAuLjI0
YWUzODUyNDgzZmM0NDEzNWQyMTJjNDU5YjJhOGZhNjliNGM5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBDU1NJbWFnZVNl
dFZhbHVlOjpmaWxsSW1hZ2VTZXQoKQogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihpIDwgbGVuZ3RoKTsKICAgICAgICAgQ1NTVmFsdWUqIHNjYWxlRmFjdG9yVmFsdWUg
PSBpdGVtKGkpOwogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzY2Fs
ZUZhY3RvclZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwotICAgICAgICBmbG9hdCBzY2FsZUZh
Y3RvciA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oc2NhbGVGYWN0b3JWYWx1ZSkt
PmdldEZsb2F0VmFsdWUoKTsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSB0b0NTU1ByaW1p
dGl2ZVZhbHVlKHNjYWxlRmFjdG9yVmFsdWUpLT5nZXRGbG9hdFZhbHVlKCk7CiAKICAgICAgICAg
SW1hZ2VXaXRoU2NhbGUgaW1hZ2U7CiAgICAgICAgIGltYWdlLmltYWdlVVJMID0gaW1hZ2VVUkw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IGIwNDQ2MTAzMmQxNjAzNGRhYmRmMzQxZjFh
N2ZhNDkyMjFlYzQzMDEuLmIxNTAyYmFiOTk5YjA0NGUxMDZhYzRkZDY3YmI1OTk4N2E4OTI5MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xMzg5LDcgKzEzODksNyBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmIHN0cmluZywg
Ym9vbCBzdHJpY3QpCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlLT5pc1JHQkNvbG9yKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMTU4Nyw3ICsxNTg3LDcgQEAgdm9pZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5KENT
U1Byb3BlcnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm8KICAgICAv
LyBUaGlzIHByb3BlcnR5IGRvZXNuJ3QgYmVsb25nIHRvIGEgc2hvcnRoYW5kIG9yIGlzIGEgQ1NT
IHZhcmlhYmxlICh3aGljaCB3aWxsIGJlIHJlc29sdmVkIGxhdGVyKS4KICAgICBpZiAoIW1fY3Vy
cmVudFNob3J0aGFuZAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQotICAgICAgICB8fCAodmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlLmdldCgpKS0+aXNWYXJpYWJsZU5hbWUoKSkKKyAgICAgICAgfHwgKHZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkgJiYgdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZS5nZXQoKSktPmlzVmFy
aWFibGVOYW1lKCkpCiAjZW5kaWYKICAgICAgICAgKSB7CiAgICAgICAgIG1fcGFyc2VkUHJvcGVy
dGllcy5hcHBlbmQoQ1NTUHJvcGVydHkocHJvcElkLCB2YWx1ZSwgaW1wb3J0YW50LCBmYWxzZSwg
Q1NTUHJvcGVydHlJbnZhbGlkLCBtX2ltcGxpY2l0U2hvcnRoYW5kIHx8IGltcGxpY2l0KSk7CkBA
IC00MTI2LDggKzQxMjYsOCBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2UzVmFsdWVzRmlsbFBvc2l0
aW9uKENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBSZWZQdHI8QwogICAgICAgICB2YWx1
ZTEuc3dhcCh2YWx1ZTIpOwogCiAjaWZuZGVmIE5ERUJVRwotICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBmaXJzdCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUxLmdldCgpKTsK
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZTIuZ2V0KCkpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaXJzdCA9IHRv
Q1NTUHJpbWl0aXZlVmFsdWUodmFsdWUxLmdldCgpKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
c2Vjb25kID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZTIuZ2V0KCkpOwogICAgIGlkZW50MSA9
IGZpcnN0LT5nZXRQYWlyVmFsdWUoKS0+Zmlyc3QoKS0+Z2V0VmFsdWVJRCgpOwogICAgIGlkZW50
MiA9IHNlY29uZC0+Z2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdldFZhbHVlSUQoKTsKICAgICBB
U1NFUlQoaWRlbnQxID09IENTU1ZhbHVlTGVmdCB8fCBpZGVudDEgPT0gQ1NTVmFsdWVSaWdodCk7
CkBAIC00MTg3LDggKzQxODcsOCBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VGaWxsUG9zaXRpb24o
Q1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZlB0cjxDU1NWYWx1ZQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1
ZTEgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlMS5nZXQoKSk7Ci0gICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZTIgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlMi5nZXQoKSk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBwYXJzZWRWYWx1ZTEgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlMS5nZXQoKSk7Cisg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZTIgPSB0b0NTU1ByaW1pdGl2
ZVZhbHVlKHZhbHVlMi5nZXQoKSk7CiAKICAgICB2YWx1ZTEuY2xlYXIoKTsKICAgICB2YWx1ZTIu
Y2xlYXIoKTsKQEAgLTQyODUsNyArNDI4NSw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZUZpbGxS
ZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUxLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1CiAK
ICAgICAvLyBJZiBvbmx5IG9uZSB2YWx1ZSB3YXMgc3BlY2lmaWVkLCB2YWx1ZTIgaXMgdGhlIHNh
bWUgYXMgdmFsdWUxLgogICAgIG1faW1wbGljaXRTaG9ydGhhbmQgPSB0cnVlOwotICAgIHZhbHVl
MiA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlMS5nZXQoKSktPmdldFZhbHVlSUQoKSk7CisgICAgdmFsdWUy
ID0gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKHRvQ1NTUHJpbWl0aXZlVmFs
dWUodmFsdWUxLmdldCgpKS0+Z2V0VmFsdWVJRCgpKTsKIH0KIAogUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaXplKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sJiBh
bGxvd0NvbW1hKQpAQCAtNzcwOSwxMSArNzcwOSwxMSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VE
ZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJl
ZgogICAgIEFTU0VSVCghY2VudGVyWCB8fCBjZW50ZXJYLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwog
ICAgIEFTU0VSVCghY2VudGVyWSB8fCBjZW50ZXJZLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwogCi0g
ICAgcmVzdWx0LT5zZXRGaXJzdFgoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjZW50
ZXJYLmdldCgpKSk7Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRYKHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4oY2VudGVyWC5nZXQoKSkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RYKHRvQ1NT
UHJpbWl0aXZlVmFsdWUoY2VudGVyWC5nZXQoKSkpOworICAgIHJlc3VsdC0+c2V0U2Vjb25kWCh0
b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclguZ2V0KCkpKTsKICAgICAvLyBDU1MzIHJhZGlhbCBn
cmFkaWVudHMgYWx3YXlzIHNoYXJlIHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgcG9pbnQuCi0gICAg
cmVzdWx0LT5zZXRGaXJzdFkoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjZW50ZXJZ
LmdldCgpKSk7Ci0gICAgcmVzdWx0LT5zZXRTZWNvbmRZKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4oY2VudGVyWS5nZXQoKSkpOworICAgIHJlc3VsdC0+c2V0Rmlyc3RZKHRvQ1NTUHJp
bWl0aXZlVmFsdWUoY2VudGVyWS5nZXQoKSkpOworICAgIHJlc3VsdC0+c2V0U2Vjb25kWSh0b0NT
U1ByaW1pdGl2ZVZhbHVlKGNlbnRlclkuZ2V0KCkpKTsKIAogICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gc2hhcGVWYWx1ZTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNpemVW
YWx1ZTsKQEAgLTc5NzMsMTEgKzc5NzMsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlUmFkaWFs
R3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIFJlZlB0cjxDU1NWYWwKICAg
ICAgICAgYSA9IGFyZ3MtPmN1cnJlbnQoKTsKICAgICAgICAgaWYgKCFhKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQtPnNldEZpcnN0WChzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KGNlbnRlclguZ2V0KCkpKTsKLSAgICAgICAgcmVzdWx0LT5zZXRGaXJz
dFkoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjZW50ZXJZLmdldCgpKSk7CisgICAg
ICAgIHJlc3VsdC0+c2V0Rmlyc3RYKHRvQ1NTUHJpbWl0aXZlVmFsdWUoY2VudGVyWC5nZXQoKSkp
OworICAgICAgICByZXN1bHQtPnNldEZpcnN0WSh0b0NTU1ByaW1pdGl2ZVZhbHVlKGNlbnRlclku
Z2V0KCkpKTsKICAgICAgICAgLy8gUmlnaHQgbm93LCBDU1MgcmFkaWFsIGdyYWRpZW50cyBoYXZl
IHRoZSBzYW1lIHN0YXJ0IGFuZCBlbmQgY2VudGVycy4KLSAgICAgICAgcmVzdWx0LT5zZXRTZWNv
bmRYKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY2VudGVyWC5nZXQoKSkpOwotICAg
ICAgICByZXN1bHQtPnNldFNlY29uZFkoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihj
ZW50ZXJZLmdldCgpKSk7CisgICAgICAgIHJlc3VsdC0+c2V0U2Vjb25kWCh0b0NTU1ByaW1pdGl2
ZVZhbHVlKGNlbnRlclguZ2V0KCkpKTsKKyAgICAgICAgcmVzdWx0LT5zZXRTZWNvbmRZKHRvQ1NT
UHJpbWl0aXZlVmFsdWUoY2VudGVyWS5nZXQoKSkpOwogICAgIH0KIAogICAgIGlmIChzaGFwZVZh
bHVlIHx8IHNpemVWYWx1ZSB8fCBob3Jpem9udGFsU2l6ZSB8fCBjZW50ZXJYIHx8IGNlbnRlclkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IGJmYTMzMTUzYjQ2ZTA3
YmI1ZWFjNjA3NWEwMmMwZTJmZDRlMTU3ZmEuLmFjNzgwMzg2MWI1NDMyYzdhNThjMzRmOWMwNGFi
MDMwYzA2MGQyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC00
MDEsMTcgKzQwMSw4IEBAIHByaXZhdGU6CiAgICAgfSBtX3ZhbHVlOwogfTsKIAotaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlKiB0b0NTU1ByaW1pdGl2ZVZhbHVlKENTU1ZhbHVlKiB2YWx1ZSkKLXsK
LSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighdmFsdWUgfHwgdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOwotfQorQ1NTX1ZBTFVFX1RZUEVfQ0FTVFMoUHJpbWl0aXZlVmFsdWUpCiAK
LWlubGluZSBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogdG9DU1NQcmltaXRpdmVWYWx1ZShjb25z
dCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oIXZhbHVlIHx8IHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLX0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHls
ZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKaW5kZXggNzJm
Yjk4NDE4M2QxYTE2YTA3MDBiNTFkNzg0MTJiYmM5Y2I5ODNjOC4uMzgyNzgyMzljY2M4YjljOTk3
MzYxN2JmZGU1NTA1YjMzODE1MjMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1RvU3R5bGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNw
cApAQCAtNzEsOCArNzEsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxBdHRhY2htZW50
KENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKgogICAgIGlmICghdmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7Ci0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7Cisg
ICAgc3dpdGNoICh0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpKSB7CiAg
ICAgY2FzZSBDU1NWYWx1ZUZpeGVkOgogICAgICAgICBsYXllci0+c2V0QXR0YWNobWVudChGaXhl
ZEJhY2tncm91bmRBdHRhY2htZW50KTsKICAgICAgICAgYnJlYWs7CkBAIC05Nyw3ICs5Niw3IEBA
IHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbENsaXAoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVy
KiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KTsKICAgICBsYXllci0+c2V0Q2xpcCgqcHJpbWl0aXZlVmFsdWUpOwogfQogCkBAIC0xMTEsNyAr
MTEwLDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsQ29tcG9zaXRlKENTU1Byb3BlcnR5
SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKgogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1
ZSh2YWx1ZSk7CiAgICAgbGF5ZXItPnNldENvbXBvc2l0ZSgqcHJpbWl0aXZlVmFsdWUpOwogfQog
CkBAIC0xMjUsNyArMTI0LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsQmxlbmRNb2Rl
KENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKgogICAgIGlmICghdmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgbGF5ZXItPnNldEJsZW5kTW9kZSgqcHJpbWl0aXZl
VmFsdWUpOwogfQogCkBAIC0xMzksNyArMTM4LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBG
aWxsT3JpZ2luKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWwK
ICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIGxheWVyLT5zZXRPcmlnaW4o
KnByaW1pdGl2ZVZhbHVlKTsKIH0KIApAQCAtMTY0LDcgKzE2Myw3IEBAIHZvaWQgQ1NTVG9TdHls
ZU1hcDo6bWFwRmlsbFJlcGVhdFgoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NT
VmFsdWUqIHZhCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBsYXllci0+
c2V0UmVwZWF0WCgqcHJpbWl0aXZlVmFsdWUpOwogfQogCkBAIC0xNzgsNyArMTc3LDcgQEAgdm9p
ZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsUmVwZWF0WShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIq
IGxheWVyLCBDU1NWYWx1ZSogdmEKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwog
ICAgIGxheWVyLT5zZXRSZXBlYXRZKCpwcmltaXRpdmVWYWx1ZSk7CiB9CiAKQEAgLTE4OSw3ICsx
ODgsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxTaXplKENTU1Byb3BlcnR5SUQsIEZp
bGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVDb250YWluKQogICAgICAgICBsYXllci0+c2V0
U2l6ZVR5cGUoQ29udGFpbik7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUNvdmVyKQpAQCAtMjM5LDcgKzIzOCw3IEBAIHZvaWQgQ1NTVG9TdHls
ZU1hcDo6bWFwRmlsbFhQb3NpdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXll
ciogbGF5ZXIsCiAKICAgICBmbG9hdCB6b29tRmFjdG9yID0gc3R5bGUoKS0+ZWZmZWN0aXZlWm9v
bSgpOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgUGFpciogcGFp
ciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKICAgICBpZiAocGFpcikgewogICAg
ICAgICBBU1NFUlRfVU5VU0VEKHByb3BlcnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb25YIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNr
UG9zaXRpb25YKTsKQEAgLTI3NSw3ICsyNzQsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZp
bGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLAog
CiAgICAgZmxvYXQgem9vbUZhY3RvciA9IHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKIAotICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIFBhaXIqIHBhaXIgPSBwcmltaXRp
dmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CiAgICAgaWYgKHBhaXIpIHsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChwcm9wZXJ0eUlELCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uWSB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSk7
CkBAIC0zMTAsNyArMzA5LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsTWFza1NvdXJj
ZVR5cGUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmEKICAgICBpZiAoIXZh
bHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NT
UHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldFZh
bHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVBbHBoYToKICAgICAgICAgdHlwZSA9IEVNYXNr
U291cmNlVHlwZTo6TWFza0FscGhhOwpAQCAtMzM3LDcgKzMzNiw3IEBAIHZvaWQgQ1NTVG9TdHls
ZU1hcDo6bWFwQW5pbWF0aW9uRGVsYXkoQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2
YWx1ZSkKICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIGFuaW1hdGlvbi0+
c2V0RGVsYXkocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVUaW1lPGRvdWJsZSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OlNlY29uZHM+KCkpOwogfQogCkBAIC0zNTEsNyArMzUwLDcgQEAgdm9pZCBDU1NUb1N0
eWxlTWFwOjptYXBBbmltYXRpb25EaXJlY3Rpb24oQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUq
IHZhbHVlKQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoK
ICAgICAgICAgbGF5ZXItPnNldERpcmVjdGlvbihBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlv
bk5vcm1hbCk7CkBAIC0zODAsNyArMzc5LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmlt
YXRpb25EdXJhdGlvbihBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQogICAg
IGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlv
bihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZVRpbWU8ZG91YmxlLCBDU1NQcmltaXRpdmVWYWx1ZTo6
U2Vjb25kcz4oKSk7CiB9CiAKQEAgLTM5NCw3ICszOTMsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6
Om1hcEFuaW1hdGlvbkZpbGxNb2RlKEFuaW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkK
ICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIHN3aXRjaCAocHJpbWl0aXZl
VmFsdWUtPmdldFZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVOb25lOgogICAgICAgICBs
YXllci0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVOb25lKTsKQEAgLTQyMyw3ICs0MjIs
NyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KEFuaW1h
dGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdgogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2
YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVJ
bmZpbml0ZSkKICAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRpb25Db3VudChBbmltYXRpb246
Okl0ZXJhdGlvbkNvdW50SW5maW5pdGUpOwogICAgIGVsc2UKQEAgLTQ0MCw3ICs0MzksNyBAQCB2
b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbk5hbWUoQW5pbWF0aW9uKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICBs
YXllci0+c2V0SXNOb25lQW5pbWF0aW9uKHRydWUpOwogICAgIGVsc2UKQEAgLTQ1Nyw3ICs0NTYs
NyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblBsYXlTdGF0ZShBbmltYXRpb24q
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KTsKICAgICBFQW5pbVBsYXlTdGF0ZSBwbGF5U3RhdGUgPSAocHJpbWl0aXZlVmFsdWUtPmdldFZh
bHVlSUQoKSA9PSBDU1NWYWx1ZVBhdXNlZCkgPyBBbmltUGxheVN0YXRlUGF1c2VkIDogQW5pbVBs
YXlTdGF0ZVBsYXlpbmc7CiAgICAgbGF5ZXItPnNldFBsYXlTdGF0ZShwbGF5U3RhdGUpOwogfQpA
QCAtNDczLDcgKzQ3Miw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUHJvcGVy
dHkoQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKICAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJp
bWl0aXZlVmFsdWUodmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlQWxsKSB7CiAgICAgICAgIGFuaW1hdGlvbi0+c2V0QW5pbWF0aW9uTW9kZShB
bmltYXRpb246OkFuaW1hdGVBbGwpOwogICAgICAgICBhbmltYXRpb24tPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5SW52YWxpZCk7CkBAIC00OTQsNyArNDkzLDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbihBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFs
dWUqIHYKICAgICB9CiAKICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIHN3aXRjaCAo
cHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkgewogICAgICAgICBjYXNlIENTU1ZhbHVlTGlu
ZWFyOgogICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihMaW5lYXJUaW1p
bmdGdW5jdGlvbjo6Y3JlYXRlKCkpOwpAQCAtNjM3LDcgKzYzNiw3IEBAIExlbmd0aEJveCBDU1NU
b1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQoQ1NTVmFsdWUqIHZhbHVlKQogICAgIGZs
b2F0IHpvb20gPSB1c2VTVkdab29tUnVsZXMoKSA/IDEuMGYgOiBzdHlsZSgpLT5lZmZlY3RpdmVa
b29tKCk7CiAKICAgICAvLyBSZXRyaWV2ZSB0aGUgcHJpbWl0aXZlIHZhbHVlLgotICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBib3JkZXJXaWR0aHMgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogYm9yZGVyV2lkdGhzID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAKICAgICAvLyBTZXQgdXAgYSBsZW5ndGggYm94IHRvIHJl
cHJlc2VudCBvdXIgaW1hZ2Ugc2xpY2VzLgogICAgIExlbmd0aEJveCBib3g7IC8vIERlZmF1bHRz
IHRvICdhdXRvJyBzbyB3ZSBkb24ndCBoYXZlIHRvIGhhbmRsZSB0aGF0IGV4cGxpY2l0bHkgYmVs
b3cuCkBAIC02NzgsNyArNjc3LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJ
bWFnZVJlcGVhdChDU1NWYWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWEKICAgICBpZiAo
IXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBQYWlyKiBwYWlyID0gcHJp
bWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOwogICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmly
c3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuY3BwCmluZGV4IDIwNDk1MzgyZWIwODcwNjhjNzY0ZTJhMjg0MTQ0MmFjNDNhMTRmMjguLmJl
OTIyNjA2MjA4M2Y4ZDcxYzMxNTAxZjE1ODZjNWM4ZjhkODM0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmNwcApAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgQ1NTVmFsdWU6OmRlc3Ryb3koKQogICAg
ICAgICBkZWxldGUgdG9DU1NJbml0aWFsVmFsdWUodGhpcyk7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIFByaW1pdGl2ZUNsYXNzOgotICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih0aGlzKTsKKyAgICAgICAgZGVsZXRlIHRvQ1NTUHJpbWl0aXZlVmFsdWUo
dGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFJlZmxlY3RDbGFzczoKICAgICAgICAg
ZGVsZXRlIHRvQ1NTUmVmbGVjdFZhbHVlKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Rl
cHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCmluZGV4IDVjODg3Zjc5ZmVlYzEyODJjZWJiNDBiZTA5
OGJkYzdlNzQ3MDdlNDQuLjk3YjNhMzlmYTdhZWRiZWYzZWQ5YmVmZmQ3MWNhNzE5ZmU3ZjMyYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKQEAg
LTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NQ
cm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFsdWUp
CiAgICAgewogICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAg
ICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksICpzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKSk7CisgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVy
LT5zdHlsZSgpLCAqdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSkpOwogICAgIH0KICAgICBzdGF0
aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQogICAgIHsKQEAgLTE2Nyw3ICsxNjcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2
YWx1ZSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IGlkTWFw
c1RvTWludXNPbmUpCiAgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgp
LCAtMSk7CiAgICAgICAgIGVsc2UKQEAgLTIxNSw3ICsyMTUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IGF1dG9JZGVudGl0eSkKICAgICAgICAgICAg
IHNldEF1dG8oc3R5bGVSZXNvbHZlci0+c3R5bGUoKSk7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVl
VHlwZSA9PSBOdW1iZXIpCkBAIC0yNTQsNyArMjU0LDcgQEAgcHVibGljOgogICAgICAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogCiAgICAgICAgIGlmIChSZWN0
KiByZWN0ID0gcHJpbWl0aXZlVmFsdWUtPmdldFJlY3RWYWx1ZSgpKSB7CiAgICAgICAgICAgICBM
ZW5ndGggdG9wID0gY29udmVydFRvTGVuZ3RoKHN0eWxlUmVzb2x2ZXIsIHJlY3QtPnRvcCgpKTsK
QEAgLTMwMCw3ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGlmIChpbmhlcml0Q29sb3JGcm9tUGFyZW50
ICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3Ip
CiAgICAgICAgICAgICBhcHBseUluaGVyaXRWYWx1ZShwcm9wZXJ0eUlELCBzdHlsZVJlc29sdmVy
KTsKICAgICAgICAgZWxzZSB7CkBAIC0zNjEsNyArMzYxLDcgQEAgcHVibGljOgogICAgICAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAobm9u
ZUVuYWJsZWQgJiYgcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUp
IHsKICAgICAgICAgICAgIGlmIChub25lVW5kZWZpbmVkKQogICAgICAgICAgICAgICAgIHNldFZh
bHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIExlbmd0aChVbmRlZmluZWQpKTsKQEAgLTQxNSw3
ICs0MTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1p
dGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgaWYgKChpZGVudEJlaGF2aW9yID09IE1hcE5vbmVU
b051bGwgJiYgcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAg
ICAgICAgICAgICB8fCAoaWRlbnRCZWhhdmlvciA9PSBNYXBBdXRvVG9OdWxsICYmIHByaW1pdGl2
ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKSkKICAgICAgICAgICAgIHNldFZh
bHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIG51bGxBdG9tKTsKQEAgLTQzOCw3ICs0MzgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSk7CiAgICAgICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7
CiAgICAgICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC02MDEsNyArNjAxLDcgQEAgcHVibGljOgogICAgICAg
ICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogCiAgICAgICAgIENT
U1ZhbHVlSUQgaWRlbnQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpOwogICAgICAgICBU
IGxlbmd0aDsKQEAgLTY2MSw3ICs2NjEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgRm9udERlc2NyaXB0
aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXItPmZvbnREZXNjcmlwdGlvbigpOwog
ICAgICAgICAoZm9udERlc2NyaXB0aW9uLipzZXR0ZXJGdW5jdGlvbikoKnByaW1pdGl2ZVZhbHVl
KTsKICAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlw
dGlvbik7CkBAIC03MTUsNyArNzE1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgQ1NTVmFsdWUq
IGl0ZW0gPSBpLnZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFs
dWUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBjb250ZW50VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0
ZW0pOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHRvQ1NT
UHJpbWl0aXZlVmFsdWUoaXRlbSk7CiAgICAgICAgICAgICBBdG9taWNTdHJpbmcgZmFjZTsKICAg
ICAgICAgICAgIGlmIChjb250ZW50VmFsdWUtPmlzU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAg
ZmFjZSA9IGNvbnRlbnRWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKTsKQEAgLTgyNSw3ICs4MjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1
ZSk7CiAKICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxlUmVz
b2x2ZXItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOwogICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0S2V5d29yZFNpemUoMCk7CkBAIC04OTksNyArODk5LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAg
IEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdHlsZVJlc29sdmVyLT5mb250RGVz
Y3JpcHRpb24oKTsKICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgp
KSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVJbnZhbGlkOgpAQCAtOTYwLDggKzk2MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IHZhbHVlTGlzdC0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjayhpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXRlbS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoaXRlbS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkgeworICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlbSktPmdldFZhbHVl
SUQoKSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9Db21tb25MaWdhdHVy
ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb25MaWdhdHVyZXNTdGF0ZSA9IEZvbnRE
ZXNjcmlwdGlvbjo6RGlzYWJsZWRMaWdhdHVyZXNTdGF0ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtOTkwLDcgKzk4OSw3IEBAIHB1YmxpYzoKICNpZiAhQVNTRVJUX0RJU0FC
TEVECiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04odmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0gICAgICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vcm1hbCk7CisgICAgICAgICAgICBBU1NFUlQodG9DU1NQcmltaXRpdmVWYWx1ZSh2
YWx1ZSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CiAgICAgICAgIH0KICNlbmRp
ZgogCkBAIC0xMTM4LDcgKzExMzcsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHN0YXRpYyB2b2lk
IGFwcGx5VmFsdWUoQ1NTUHJvcGVydHlJRCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwg
Q1NTVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgYm9vbCBzZXRDb3VudGVySW5jcmVtZW50
VG9Ob25lID0gY291bnRlckJlaGF2aW9yID09IEluY3JlbWVudCAmJiB2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRW
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOworICAgICAgICBib29sIHNldENvdW50ZXJJbmNyZW1l
bnRUb05vbmUgPSBjb3VudGVyQmVoYXZpb3IgPT0gSW5jcmVtZW50ICYmIHZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkgJiYgdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZU5vbmU7CiAKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSAmJiAh
c2V0Q291bnRlckluY3JlbWVudFRvTm9uZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNjMs
NyArMTE2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghY3VyclZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIFBh
aXIqIHBhaXIgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGN1cnJWYWx1ZSktPmdl
dFBhaXJWYWx1ZSgpOworICAgICAgICAgICAgUGFpciogcGFpciA9IHRvQ1NTUHJpbWl0aXZlVmFs
dWUoY3VyclZhbHVlKS0+Z2V0UGFpclZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIXBhaXIgfHwg
IXBhaXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCkBAIC0xMjEwLDEzICsxMjA5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFVuaXF1ZSgpOwogICAgICAgICAgICAg
ICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5hZGRDdXJzb3Ioc3R5bGVSZXNvbHZlci0+
c3R5bGVJbWFnZShDU1NQcm9wZXJ0eUN1cnNvciwgaW1hZ2UpLCBpbWFnZS0+aG90U3BvdCgpKTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkgewot
ICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVl
KGl0ZW0pOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzVmFsdWVJ
RCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0
Q3Vyc29yKCpwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzVmFsdWVJRCgpICYmIHN0eWxlUmVzb2x2ZXItPnN0eWxl
KCktPmN1cnNvcigpICE9IEVDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKSkKICAgICAgICAgICAgICAg
ICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRDdXJzb3IoKnByaW1pdGl2ZVZhbHVlKTsKICAg
ICAgICAgfQpAQCAtMTIzMiw3ICsxMjMxLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBBU1NFUlQocHJpbWl0aXZl
VmFsdWUtPmlzVmFsdWVJRCgpKTsKIAogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZh
bHVlSUQoKSAhPSBDU1NWYWx1ZVdlYmtpdE1hdGNoUGFyZW50KQpAQCAtMTI1OSw3ICsxMjU4LDcg
QEAgcHVibGljOgogICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkodmFsdWUpOyBp
Lmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0g
aS52YWx1ZSgpOwogICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
aXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKTsKLSAgICAgICAgICAgIHQgfD0gKnN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICB0IHw9ICp0b0NTU1ByaW1p
dGl2ZVZhbHVlKGl0ZW0pOwogICAgICAgICB9CiAgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxl
KCktPnNldFRleHREZWNvcmF0aW9uKHQpOwogICAgIH0KQEAgLTEyNzcsNyArMTI3Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsK
ICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAgICAg
IHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkgewogICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVNtYWxsOgpAQCAtMTMxMiw3ICsxMzExLDcgQEAgcHVibGljOgogICAgICAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICAg
ICAgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0TWFycXVlZUxvb3BDb3VudCgtMSk7IC8vIC0x
IG1lYW5zIHJlcGVhdCBmb3JldmVyLgogICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+
aXNOdW1iZXIoKSkKQEAgLTEzMzIsNyArMTMzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgaWYgKENTU1ZhbHVl
SUQgaWRlbnQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKSB7CiAgICAgICAgICAgICBz
d2l0Y2ggKGlkZW50KSB7CiAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2xvdzoKQEAgLTEzNjYs
NyArMTM2NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIFRoaXMgaXMgdHJ1ZSBpZiB2
YWx1ZSBpcyAnYXV0bycgb3IgJ2FscGhhYmV0aWMnLgogICAgICAgICBpZiAodmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSkgewotICAgICAgICAgICAgVGV4dFVuZGVybGluZVBvc2l0aW9uIHQgPSAq
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgICAgICBUZXh0
VW5kZXJsaW5lUG9zaXRpb24gdCA9ICp0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICAg
ICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPnNldFRleHRVbmRlcmxpbmVQb3NpdGlvbih0
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTM3NSw3ICsxMzc0LDcgQEAg
cHVibGljOgogICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkodmFsdWUpOyBpLmhh
c01vcmUoKTsgaS5hZHZhbmNlKCkpIHsKICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gaS52
YWx1ZSgpOwogICAgICAgICAgICAgQVNTRVJUKGl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSk7Ci0g
ICAgICAgICAgICBUZXh0VW5kZXJsaW5lUG9zaXRpb24gdDIgPSAqc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAgIFRleHRVbmRlcmxpbmVQb3NpdGlvbiB0
MiA9ICp0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZW0pOwogICAgICAgICAgICAgdCB8PSB0MjsKICAg
ICAgICAgfQogICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0VW5kZXJsaW5l
UG9zaXRpb24oc3RhdGljX2Nhc3Q8VGV4dFVuZGVybGluZVBvc2l0aW9uPih0KSk7CkBAIC0xMzk1
LDcgKzEzOTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsK
KyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIExlbmd0aCBsaW5lSGVpZ2h0OwogCiAgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQpAQCAtMTQz
Myw3ICsxNDMyLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0
aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBMZW5ndGggbGluZUhlaWdodDsKIAogICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpCkBAIC0xNTc1
LDggKzE1NzQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfSB8IDxwYWdl
LXNpemU+IDxvcmllbnRhdGlvbj4KICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yLmZpcnN0KCkt
PmlzUHJpbWl0aXZlVmFsdWUoKSB8fCAhaW5zcGVjdG9yLnNlY29uZCgpLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGZpcnN0ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0b3Iu
Zmlyc3QoKSk7Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0b3Iuc2Vjb25kKCkpOworICAgICAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0ID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpbnNwZWN0
b3IuZmlyc3QoKSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gdG9D
U1NQcmltaXRpdmVWYWx1ZShpbnNwZWN0b3Iuc2Vjb25kKCkpOwogICAgICAgICAgICAgaWYgKGZp
cnN0LT5pc0xlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgLy8gPGxlbmd0aD57Mn0KICAgICAg
ICAgICAgICAgICBpZiAoIXNlY29uZC0+aXNMZW5ndGgoKSkKQEAgLTE1OTYsNyArMTU5NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIC8vIDxsZW5ndGg+IHwgYXV0byB8IDxwYWdlLXNpemU+IHwg
WyBwb3J0cmFpdCB8IGxhbmRzY2FwZV0KICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yLmZpcnN0
KCktPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KGluc3BlY3Rvci5maXJzdCgpKTsKKyAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaW5zcGVjdG9y
LmZpcnN0KCkpOwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKSB7
CiAgICAgICAgICAgICAgICAgLy8gPGxlbmd0aD4KICAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5
cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7CkBAIC0xNjYwLDcgKzE2NTksNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAg
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0
ZW0pOwogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
RmlsbGVkIHx8IHZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVPcGVuKQogICAgICAgICAg
ICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKCp2
YWx1ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMTY3Miw3ICsxNjcxLDcgQEAgcHVibGlj
OgogCiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogCiAg
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNTdHJpbmcoKSkgewogICAgICAgICAgICAgc3R5
bGVSZXNvbHZlci0+c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxs
RmlsbGVkKTsKQEAgLTE4MDEsNyArMTgwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgICAgICBFUmVzaXplIHIgPSBS
RVNJWkVfTk9ORTsKICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgp
KSB7CkBAIC0xODMxLDcgKzE4MzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
dG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRWYWx1ZUlEKCkpCiAgICAgICAgICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci0+c3R5bGUo
KS0+c2V0VmVydGljYWxBbGlnbigqcHJpbWl0aXZlVmFsdWUpOwpAQCAtMTkwNiw3ICsxOTA1LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWUoQ1NTUHJvcGVydHlJRCwgU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04odmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSk7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkg
ewogICAgICAgICAgICAgcmVzZXRFZmZlY3RpdmVab29tKHN0eWxlUmVzb2x2ZXIpOwpAQCAtMTk2
Nyw3ICsxOTY2LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgRURpc3BsYXkgZGlzcGxheSA9
ICpzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgRURpc3Bs
YXkgZGlzcGxheSA9ICp0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgICAgICBpZiAo
IWlzVmFsaWREaXNwbGF5VmFsdWUoc3R5bGVSZXNvbHZlciwgZGlzcGxheSkpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xOTg4LDcgKzE5ODcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
YXBwbHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBD
U1NWYWx1ZSogdmFsdWUpCiAgICAgewogICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkgewotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVl
KTsKICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlTm9uZSkKICAgICAgICAgICAgICAgICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgp
LCAwKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1NoYXBlKCkpIHsK
QEAgLTIwMTksNyArMjAxOCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIENT
U1ZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUp
OwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFs
dWVBdXRvKQogICAgICAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCks
IDApOwogICAgICAgICAgICAgLy8gRklYTUUgQnVnIDEwMjU3MTogTGF5b3V0IGZvciB0aGUgdmFs
dWUgJ291dHNpZGUtc2hhcGUnIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKQEAgLTIwNzIsNyArMjA3
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gdmFsdWVMaXN0LT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwogICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVtKTsKICAgICAgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRnJvbUltYWdlKQogICAgICAgICAgICAg
ICAgIHNvdXJjZSA9IEltYWdlUmVzb2x1dGlvbkZyb21JbWFnZTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVTbmFwKQpAQCAtMjEy
OCw3ICsyMTI3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFpdGVtLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4oaXRlbSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFs
dWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZW0pOwogICAgICAgICAgICAgaWYgKCFwcmltaXRp
dmVWYWx1ZS0+Z2V0VmFsdWVJRCgpKQogICAgICAgICAgICAgICAgIGxlbmd0aE9yUGVyY2VudGFn
ZVZhbHVlID0gcHJpbWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252
ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbiB8IFZpZXdw
b3J0UGVyY2VudGFnZUNvbnZlcnNpb24+KHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVz
b2x2ZXItPnJvb3RFbGVtZW50U3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+ZWZmZWN0
aXZlWm9vbSgpKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNw
cAppbmRleCBlNzc1MDk5OWYxNzZlY2Y2ZDhmOThkOGZmY2I5NzkyNTAwNThmOWNiLi45ZTRlMDEy
MTg4MTk5OWZjMmE1MTkyM2IyNmJmNWM1MTY1ODc4ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0
LmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgcmVwb3J0TWVkaWFRdWVyeVdhcm5pbmdJZk5l
ZWRlZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IE1lZGlhUXVlcnlTZXQqIG1lCiAgICAgICAg
ICAgICAgICAgaWYgKGV4cC0+bWVkaWFGZWF0dXJlKCkgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnJl
c29sdXRpb25NZWRpYUZlYXR1cmUgfHwgZXhwLT5tZWRpYUZlYXR1cmUoKSA9PSBNZWRpYUZlYXR1
cmVOYW1lczo6bWF4X3Jlc29sdXRpb25NZWRpYUZlYXR1cmUgfHwgZXhwLT5tZWRpYUZlYXR1cmUo
KSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluX3Jlc29sdXRpb25NZWRpYUZlYXR1cmUpIHsKICAg
ICAgICAgICAgICAgICAgICAgQ1NTVmFsdWUqIGNzc1ZhbHVlID0gIGV4cC0+dmFsdWUoKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGNzc1ZhbHVlICYmIGNzc1ZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY3NzVmFsdWUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gdG9DU1NQcmltaXRpdmVWYWx1ZShjc3NWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzRG90c1BlckluY2goKSB8fCBwcmltaXRpdmVWYWx1ZS0+
aXNEb3RzUGVyQ2VudGltZXRlcigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFJl
c29sdXRpb25XYXJuaW5nTWVzc2FnZVRvQ29uc29sZShkb2N1bWVudCwgbWVkaWFRdWVyeVNldC0+
bWVkaWFUZXh0KCksIHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IGM5NzMyMzVmNDQy
YjdjMDc0MGU5MGU4ZDdiODY0ZjdjZjMwMTU1OGMuLmJiODEwY2VhNTUzODU0MGUzY2E3OGI3NTc4
ODdhNGY3YzM3NTFmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAKQEAgLTE5Miw4ICsxOTIsOCBAQCBzdGF0aWMgYm9vbCBjb21wYXJlQXNwZWN0UmF0aW9W
YWx1ZShDU1NWYWx1ZSogdmFsdWUsIGludCB3aWR0aCwgaW50IGhlaWdodCwgTWVkaQogc3RhdGlj
IGJvb2wgbnVtYmVyVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBmbG9hdCYgcmVzdWx0KQogewogICAg
IGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpCi0gICAgICAgICYmIHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5pc051bWJlcigpKSB7Ci0gICAgICAgIHJlc3VsdCA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRGbG9hdFZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgJiYgdG9DU1NQcmltaXRpdmVW
YWx1ZSh2YWx1ZSktPmlzTnVtYmVyKCkpIHsKKyAgICAgICAgcmVzdWx0ID0gdG9DU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZSktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MjQyLDcgKzI0Miw3IEBAIHN0YXRpYyBib29sIG9yaWVudGF0aW9uTWVkaWFGZWF0dXJlRXZhbChD
U1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiwgRnJhbWUqIGZyCiAgICAgaW50IHdpZHRoID0g
dmlldy0+bGF5b3V0V2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gdmlldy0+bGF5b3V0SGVpZ2h0
KCk7CiAgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAg
ICAgY29uc3QgQ1NTVmFsdWVJRCBpZCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpLT5nZXRWYWx1ZUlEKCk7CisgICAgICAgIGNvbnN0IENTU1ZhbHVlSUQgaWQgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpOwogICAgICAgICBpZiAod2lkdGgg
PiBoZWlnaHQpIC8vIFNxdWFyZSB2aWV3cG9ydCBpcyBwb3J0cmFpdC4KICAgICAgICAgICAgIHJl
dHVybiBDU1NWYWx1ZUxhbmRzY2FwZSA9PSBpZDsKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9y
dHJhaXQgPT0gaWQ7CkBAIC0zMDYsMTkgKzMwNiwxOSBAQCBzdGF0aWMgYm9vbCBldmFsUmVzb2x1
dGlvbihDU1NWYWx1ZSogdmFsdWUsIEZyYW1lKiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9w
KQogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJlc29sdXRpb24gPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmVzb2x1
dGlvbiA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgIHJldHVybiBjb21wYXJlVmFs
dWUoZGV2aWNlU2NhbGVGYWN0b3IsIHJlc29sdXRpb24tPmlzTnVtYmVyKCkgPyByZXNvbHV0aW9u
LT5nZXRGbG9hdFZhbHVlKCkgOiByZXNvbHV0aW9uLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfRFBQWCksIG9wKTsKIH0KIAogc3RhdGljIGJvb2wgZGV2aWNlX3BpeGVsX3Jh
dGlvTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSAqdmFsdWUsIFJlbmRlclN0eWxlKiwgRnJhbWUq
IGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCiB7Ci0gICAgcmV0dXJuICghdmFsdWUgfHwg
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmlzTnVtYmVyKCkpICYmIGV2
YWxSZXNvbHV0aW9uKHZhbHVlLCBmcmFtZSwgb3ApOworICAgIHJldHVybiAoIXZhbHVlIHx8IHRv
Q1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpLT5pc051bWJlcigpKSAmJiBldmFsUmVzb2x1dGlvbih2
YWx1ZSwgZnJhbWUsIG9wKTsKIH0KIAogc3RhdGljIGJvb2wgcmVzb2x1dGlvbk1lZGlhRmVhdHVy
ZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSosIEZyYW1lKiBmcmFtZSwgTWVkaWFG
ZWF0dXJlUHJlZml4IG9wKQogewogI2lmIEVOQUJMRShSRVNPTFVUSU9OX01FRElBX1FVRVJZKQot
ICAgIHJldHVybiAoIXZhbHVlIHx8IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpLT5pc1Jlc29sdXRpb24oKSkgJiYgZXZhbFJlc29sdXRpb24odmFsdWUsIGZyYW1lLCBvcCk7
CisgICAgcmV0dXJuICghdmFsdWUgfHwgdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSktPmlzUmVz
b2x1dGlvbigpKSAmJiBldmFsUmVzb2x1dGlvbih2YWx1ZSwgZnJhbWUsIG9wKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwpAQCAtMzQy
LDcgKzM0Miw3IEBAIHN0YXRpYyBib29sIGNvbXB1dGVMZW5ndGgoQ1NTVmFsdWUqIHZhbHVlLCBi
b29sIHN0cmljdCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kCiAgICAgaWYgKCF2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHZhbHVlKTsKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNOdW1iZXIo
KSkgewogICAgICAgICByZXN1bHQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SW50VmFsdWUoKTsKQEAg
LTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgYm9vbCB2aWV3X21vZGVNZWRpYUZlYXR1cmVFdmFsKENT
U1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqLCBGcmFtZSogZnJhbQogICAgIGlmICghdmFsdWUp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY29uc3QgaW50IHZpZXdNb2RlQ1NTS2V5d29y
ZElEID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFZhbHVlSUQo
KTsKKyAgICBjb25zdCBpbnQgdmlld01vZGVDU1NLZXl3b3JkSUQgPSB0b0NTU1ByaW1pdGl2ZVZh
bHVlKHZhbHVlKS0+Z2V0VmFsdWVJRCgpOwogICAgIGNvbnN0IFBhZ2U6OlZpZXdNb2RlIHZpZXdN
b2RlID0gZnJhbWUtPnBhZ2UoKS0+dmlld01vZGUoKTsKICAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwogICAgIHN3aXRjaCAodmlld01vZGUpIHsKQEAgLTY3OCw3ICs2NzgsNyBAQCBzdGF0aWMgYm9v
bCBwb2ludGVyTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiwg
RnJhbWUqIGZyYW1lLAogICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgQ1NTVmFsdWVJRCBpZCA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRWYWx1ZUlEKCk7CisgICAgY29uc3QgQ1NT
VmFsdWVJRCBpZCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpLT5nZXRWYWx1ZUlEKCk7CiAg
ICAgcmV0dXJuIChwb2ludGVyID09IE5vUG9pbnRlciAmJiBpZCA9PSBDU1NWYWx1ZU5vbmUpCiAg
ICAgICAgIHx8IChwb2ludGVyID09IFRvdWNoUG9pbnRlciAmJiBpZCA9PSBDU1NWYWx1ZUNvYXJz
ZSkKICAgICAgICAgfHwgKHBvaW50ZXIgPT0gTW91c2VQb2ludGVyICYmIGlkID09IENTU1ZhbHVl
RmluZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXgg
YzM5NzIzY2E3NWE5Y2Q0ZDI1N2QwMTE1ZWIxMjQyYjFkMGMyODVjMi4uYTExZWIyYTk0MWVkNWY3
MTQ1OWZjZDg1YWVjYzZmM2ExZjU2ZWY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NT
dHlsZVNlbGVjdG9yLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAg
QVNTRVJUKHZhbHVlKTsKICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSAw
OwogICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBw
cmltaXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogCiAgICAgY29uc3Qg
U3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKICAgICBTVkdSZW5kZXJTdHlsZSogc3Znc3R5bGUgPSBz
dGF0ZS5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1
ZSogdmFsdWUpCiAgICAgICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICBD
U1NQcmltaXRpdmVWYWx1ZSogZGFzaCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
ZGFzaGVzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKKyAgICAgICAgICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogZGFzaCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoZGFzaGVzLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKGkpKTsKICAgICAgICAgICAgICAgICBhcnJheS5hcHBlbmQoU1ZHTGVu
Z3RoOjpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoZGFzaCkpOwogICAgICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggZDYxZTNlMDFiMTQ1YmRlZjg3
MWUwMzc3OWFiYTZhMjAxOWRkNjZlMC4uYzI4NzkwZThmYjI5OTJlMjU0NjZhNzY3MmRkMGE2ODU0
NDliMTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtNDE4
LDggKzQxOCw4IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0OjpnZXRMYXllcmVkU2hvcnRoYW5k
VmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYKICAgICAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgeVZhbHVlID0gbmV4dFZhbHVlOwogCi0gICAg
ICAgICAgICAgICAgICAgIENTU1ZhbHVlSUQgeElkID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZS5nZXQoKSktPmdldFZhbHVlSUQoKTsKLSAgICAgICAgICAgICAgICAgICAg
Q1NTVmFsdWVJRCB5SWQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHlWYWx1ZS5n
ZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICAgICAgICAgICAgICAgICAgQ1NTVmFsdWVJRCB4SWQg
PSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdldCgpKS0+Z2V0VmFsdWVJRCgpOworICAgICAg
ICAgICAgICAgICAgICBDU1NWYWx1ZUlEIHlJZCA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoeVZhbHVl
LmdldCgpKS0+Z2V0VmFsdWVJRCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoeElkICE9IHlJ
ZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhJZCA9PSBDU1NWYWx1ZVJlcGVhdCAm
JiB5SWQgPT0gQ1NTVmFsdWVOb1JlcGVhdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVzZVJlcGVhdFhTaG9ydGhhbmQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCmluZGV4IDYyY2I5Y2VhNDdkODc4ZTkwZjhmMjNhOTNjNTNmNWY4ZTM1ODlmMTcuLmRiMWM5
NjIzZjcyYjgxNmU4MDIyZjBmMmFmNDBlOTgzYmNmZjBiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKQEAgLTE5MTMsNyArMTkxMyw3IEBAIHN0YXRpYyBib29sIGNyZWF0ZUdy
aWRUcmFja1NpemUoQ1NTVmFsdWUqIHZhbHVlLCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUsIGNv
bnN0CiAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlKTsKICAgICBQYWlyKiBt
aW5NYXhUcmFja0JyZWFkdGggPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CiAgICAg
aWYgKCFtaW5NYXhUcmFja0JyZWFkdGgpIHsKICAgICAgICAgTGVuZ3RoIHdvcmtpbmdMZW5ndGg7
CkBAIC0xOTM3LDcgKzE5MzcsNyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KENT
U1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpegogewogICAgIC8v
IEhhbmRsZSAnbm9uZScuCiAgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm4g
cHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7CiAgICAgfQogCkBA
IC0xOTQ4LDcgKzE5NDgsNyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1Zh
bHVlKiB2YWx1ZSwgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpegogICAgIGZvciAoQ1NT
VmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01vcmUoKTsgaS5hZHZhbmNlKCkpIHsK
ICAgICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGkudmFsdWUoKTsKICAgICAgICAgaWYgKGN1
cnJWYWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGN1
cnJWYWx1ZSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGN1cnJWYWx1ZSk7CiAgICAgICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUtPmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgICAgICBOYW1lZEdyaWRMaW5lc01h
cDo6QWRkUmVzdWx0IHJlc3VsdCA9IG5hbWVkR3JpZExpbmVzLmFkZChwcmltaXRpdmVWYWx1ZS0+
Z2V0U3RyaW5nVmFsdWUoKSwgVmVjdG9yPHNpemVfdD4oKSk7CiAgICAgICAgICAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoY3VycmVudE5hbWVkR3JpZExpbmUpOwpAQCAtMTk3
Niw3ICsxOTc2LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFBvc2l0aW9uKENTU1ZhbHVlKiB2
YWx1ZSwgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICAvLyBGb3Igbm93LCB3ZSBvbmx5IGFj
Y2VwdDogJ2F1dG8nIHwgWyA8aW50ZWdlcj4gfHwgPHN0cmluZz4gXSB8IHNwYW4gJiYgPGludGVn
ZXI+PwogICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAg
ICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0byk7
CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTkyLDE3ICsxOTkyLDE3IEBAIHN0
YXRpYyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSogdmFsdWUsIEdyaWRQb3NpdGlv
biYgcG9zaXRpb24pCiAgICAgU3RyaW5nIGdyaWRMaW5lTmFtZTsKIAogICAgIENTU1ZhbHVlTGlz
dEl0ZXJhdG9yIGl0ID0gdmFsdWVzOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjdXJyZW50VmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0LnZhbHVlKCkpOworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBjdXJyZW50VmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0LnZh
bHVlKCkpOwogICAgIGlmIChjdXJyZW50VmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVNw
YW4pIHsKICAgICAgICAgaXNTcGFuUG9zaXRpb24gPSB0cnVlOwogICAgICAgICBpdC5hZHZhbmNl
KCk7Ci0gICAgICAgIGN1cnJlbnRWYWx1ZSA9IGl0Lmhhc01vcmUoKSA/IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oaXQudmFsdWUoKSkgOiAwOworICAgICAgICBjdXJyZW50VmFsdWUg
PSBpdC5oYXNNb3JlKCkgPyB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0LnZhbHVlKCkpIDogMDsKICAg
ICB9CiAKICAgICBpZiAoY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1ZS0+aXNOdW1iZXIoKSkg
ewogICAgICAgICBncmlkTGluZU51bWJlciA9IGN1cnJlbnRWYWx1ZS0+Z2V0SW50VmFsdWUoKTsK
ICAgICAgICAgaXQuYWR2YW5jZSgpOwotICAgICAgICBjdXJyZW50VmFsdWUgPSBpdC5oYXNNb3Jl
KCkgPyBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0LnZhbHVlKCkpIDogMDsKKyAg
ICAgICAgY3VycmVudFZhbHVlID0gaXQuaGFzTW9yZSgpID8gdG9DU1NQcmltaXRpdmVWYWx1ZShp
dC52YWx1ZSgpKSA6IDA7CiAgICAgfQogCiAgICAgaWYgKGN1cnJlbnRWYWx1ZSAmJiBjdXJyZW50
VmFsdWUtPmlzU3RyaW5nKCkpIHsKQEAgLTIwMjMsNyArMjAyMyw3IEBAIHN0YXRpYyBib29sIGNy
ZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSogdmFsdWUsIEdyaWRQb3NpdGlvbiYgcG9zaXRpb24p
CiBzdGF0aWMgYm9vbCBoYXNWYXJpYWJsZVJlZmVyZW5jZShDU1NWYWx1ZSogdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NT
UHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUtPmhh
c1ZhcmlhYmxlUmVmZXJlbmNlKCk7CiAgICAgfQogCkBAIC0yMTIxLDcgKzIxMjEsNyBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUq
IHZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSA/IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpIDogMDsKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSog
cHJpbWl0aXZlVmFsdWUgPSB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpID8gdG9DU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZSkgOiAwOwogCiAgICAgZmxvYXQgem9vbUZhY3RvciA9IHN0YXRlLnN0eWxl
KCktPmVmZmVjdGl2ZVpvb20oKTsKIApAQCAtMjE2OCw3ICsyMTY4LDcgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkK
ICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogY29udGVudFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsK
KyAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29udGVudFZhbHVlID0gdG9DU1NQ
cmltaXRpdmVWYWx1ZShpdGVtKTsKIAogICAgICAgICAgICAgICAgIGlmIChjb250ZW50VmFsdWUt
PmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0Q29u
dGVudChjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBkaWRTZXQpOwpAQCAt
MjI0Miw4ICsyMjQyLDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1By
b3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZmly
c3QtPmlzUHJpbWl0aXZlVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oc2Vjb25kLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOwotICAgICAgICAg
ICAgICAgIFN0cmluZyBzdGFydFF1b3RlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
PihmaXJzdCktPmdldFN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGVuZFF1
b3RlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihzZWNvbmQpLT5nZXRTdHJpbmdW
YWx1ZSgpOworICAgICAgICAgICAgICAgIFN0cmluZyBzdGFydFF1b3RlID0gdG9DU1NQcmltaXRp
dmVWYWx1ZShmaXJzdCktPmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgU3RyaW5n
IGVuZFF1b3RlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShzZWNvbmQpLT5nZXRTdHJpbmdWYWx1ZSgp
OwogICAgICAgICAgICAgICAgIHF1b3Rlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3RhcnRRdW90
ZSwgZW5kUXVvdGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCkt
PnNldFF1b3RlcyhRdW90ZXNEYXRhOjpjcmVhdGUocXVvdGVzKSk7CkBAIC0zNDc1LDcgKzM0NzUs
NyBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gU3R5bGVSZXNvbHZlcjo6cGFy
c2VDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlcgogICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSB2
YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSk7CiAgICAgICAgIGlmICghdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
dG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGFycmF5UGFyYW1ldGVyLT5hZGRWYWx1ZShwcmltaXRp
dmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSk7CkBAIC0zNDg2LDcgKzM0ODYsNyBAQCBQYXNzUmVm
UHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gU3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0b21GaWx0
ZXJBcnJheVBhcmFtZXRlcgogUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IFN0eWxl
UmVzb2x2ZXI6OnBhcnNlQ3VzdG9tRmlsdGVyQ29sb3JQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiBu
YW1lLCBDU1NWYWx1ZUxpc3QqIHZhbHVlcykKIHsKICAgICBBU1NFUlQodmFsdWVzLT5sZW5ndGgo
KSk7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygw
KSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUgPSB0b0NTU1By
aW1pdGl2ZVZhbHVlKHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7CiAgICAgUmVm
UHRyPEN1c3RvbUZpbHRlckNvbG9yUGFyYW1ldGVyPiBjb2xvclBhcmFtZXRlciA9IEN1c3RvbUZp
bHRlckNvbG9yUGFyYW1ldGVyOjpjcmVhdGUobmFtZSk7CiAgICAgY29sb3JQYXJhbWV0ZXItPnNl
dENvbG9yKENvbG9yKGZpcnN0UHJpbWl0aXZlVmFsdWUtPmdldFJHQkEzMlZhbHVlKCkpKTsKICAg
ICByZXR1cm4gY29sb3JQYXJhbWV0ZXIucmVsZWFzZSgpOwpAQCAtMzQ5OSw3ICszNDk5LDcgQEAg
UGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQYXJhbWV0ZXI+IFN0eWxlUmVzb2x2ZXI6OnBhcnNlQ3Vz
dG9tRmlsdGVyTnVtYmVyUGFyYW1ldGUKICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gdmFsdWVz
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpOwogICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHRvQ1NT
UHJpbWl0aXZlVmFsdWUodmFsdWUpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1p
dGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICBudW1iZXJQYXJhbWV0ZXItPmFkZFZhbHVlKHByaW1pdGl2ZVZh
bHVlLT5nZXREb3VibGVWYWx1ZSgpKTsKQEAgLTM1NDgsNyArMzU0OCw3IEBAIFBhc3NSZWZQdHI8
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiBTdHlsZVJlc29sdmVyOjpwYXJzZUN1c3RvbUZpbHRlclBh
cmFtZXRlcihjb25zCiAgICAgaWYgKCF2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkt
PmlzUHJpbWl0aXZlVmFsdWUoKSB8fCB2YWx1ZXMtPmxlbmd0aCgpID4gNCkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjaygwKSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0UHJpbWl0aXZlVmFsdWUg
PSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7
CiAgICAgaWYgKGZpcnN0UHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikKICAgICAgICAgcmV0dXJuIHBhcnNlQ3VzdG9tRmlsdGVy
TnVtYmVyUGFyYW1ldGVyKG5hbWUsIHZhbHVlcyk7CiAKQEAgLTM1NjgsNyArMzU2OCw3IEBAIGJv
b2wgU3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0KENTU1ZhbHVl
KiBwYXJhbWV0ZXJzVmFsdWUsIEN1CiAgICAgICAgIENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGl0ZXJh
dG9yKHBhcmFtZXRlckl0ZXJhdG9yLnZhbHVlKCkpOwogICAgICAgICBpZiAoIWl0ZXJhdG9yLmlz
UHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPihpdGVyYXRvci52YWx1ZSgpKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZShpdGVyYXRvci52YWx1ZSgpKTsKICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19TVFJJTkcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApA
QCAtMzYzNSw3ICszNjM1LDcgQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJPcGVyYXRpb24+IFN0
eWxlUmVzb2x2ZXI6OmNyZWF0ZUN1c3RvbUZpbHRlck9wZXJhdGlvbldpdGgKIAogICAgICAgICAg
ICAgQVNTRVJUKG1peEZ1bmN0aW9uLT5sZW5ndGgoKSA8PSAzKTsKICAgICAgICAgICAgIHdoaWxl
IChpdGVyYXRvci5oYXNNb3JlKCkpIHsKLSAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZXJh
dG9yLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaXRlcmF0b3IudmFsdWUoKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKENTU1BhcnNlcjo6aXNCbGVuZE1vZGUocHJpbWl0aXZlVmFsdWUtPmdldFZh
bHVlSUQoKSkpCiAgICAgICAgICAgICAgICAgICAgIG1peFNldHRpbmdzLmJsZW5kTW9kZSA9ICpw
cmltaXRpdmVWYWx1ZTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChDU1NQYXJzZXI6OmlzQ29t
cG9zaXRlT3BlcmF0b3IocHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSkpCkBAIC0zNjY4LDcg
KzM2NjgsNyBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZl
cjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uV2l0aAogICAgICAgICAvLyB0aGUgbWVzaC1i
b3ggbGlzdCwgaWYgbm90IGl0IG1lYW5zIGl0IGlzIHRoZSBwYXJhbWV0ZXJzIGxpc3QuCiAKICAg
ICAgICAgaWYgKGl0ZXJhdG9yLmhhc01vcmUoKSAmJiBpdGVyYXRvci5pc1ByaW1pdGl2ZVZhbHVl
KCkpIHsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlcmF0b3IudmFsdWUoKSk7CisgICAgICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZh
bHVlKGl0ZXJhdG9yLnZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5p
c051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgb25seSBvbmUgaW50ZWdlciB2YWx1
ZSBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgc2V0IGJvdGgKICAgICAgICAgICAgICAgICAvLyB0aGUg
cm93cyBhbmQgdGhlIGNvbHVtbnMuCkBAIC0zNjc3LDcgKzM2NzcsNyBAQCBQYXNzUmVmUHRyPEN1
c3RvbUZpbHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uV2l0aAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIFRyeSB0byBt
YXRjaCBhbm90aGVyIG51bWJlciBmb3IgdGhlIHJvd3MuCiAgICAgICAgICAgICAgICAgaWYgKGl0
ZXJhdG9yLmhhc01vcmUoKSAmJiBpdGVyYXRvci5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVyYXRvci52YWx1ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRp
dmVWYWx1ZShpdGVyYXRvci52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5pc051bWJlcigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtZXNoUm93
cyA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgaXRlcmF0b3IuYWR2YW5jZSgpOwpAQCAtMzY4Nyw3ICszNjg3LDcgQEAgUGFzc1JlZlB0cjxD
dXN0b21GaWx0ZXJPcGVyYXRpb24+IFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUN1c3RvbUZpbHRlck9w
ZXJhdGlvbldpdGgKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGl0ZXJhdG9yLmhh
c01vcmUoKSAmJiBpdGVyYXRvci5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4oaXRlcmF0b3IudmFsdWUoKSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKGl0ZXJhdG9yLnZhbHVlKCkp
OwogICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFs
dWVEZXRhY2hlZCkgewogICAgICAgICAgICAgICAgIG1lc2hUeXBlID0gTWVzaFR5cGVEZXRhY2hl
ZDsKICAgICAgICAgICAgICAgICBpdGVyYXRvci5hZHZhbmNlKCk7CkBAIC0zNzMzLDcgKzM3MzMs
NyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUq
IGluVmFsdWUsIEZpbHRlck9wZXJhdGlvbnMmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
ICAgICBpZiAoaW5WYWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4oaW5WYWx1ZSk7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9
IHRvQ1NTUHJpbWl0aXZlVmFsdWUoaW5WYWx1ZSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTM4MDQsNyArMzgwNCw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRl
RmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aW9ucyYKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBmaXJzdFZhbHVlID0gZmlsdGVyVmFsdWUtPmxlbmd0aCgpID8gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPihmaWx0ZXJWYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygw
KSkgOiAwOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3RWYWx1ZSA9IGZpbHRlclZh
bHVlLT5sZW5ndGgoKSA/IHRvQ1NTUHJpbWl0aXZlVmFsdWUoZmlsdGVyVmFsdWUtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soMCkpIDogMDsKICAgICAgICAgc3dpdGNoIChmaWx0ZXJWYWx1ZS0+b3Bl
cmF0aW9uVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkdyYXlz
Y2FsZUZpbHRlck9wZXJhdGlvbjoKICAgICAgICAgY2FzZSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6
U2VwaWFGaWx0ZXJPcGVyYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJh
bnNmb3JtRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlv
bnMuY3BwCmluZGV4IDIzYWZmNDkyZDExODhiYTI0MjY3MTYzMDhkNDgwZjEzMzBjMGFmN2MuLmIy
NGU1Zjk1YzUwM2YzYzQxNWJiNzM5MGI4ODAyNDAwOWFlNzA4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCB0cmFu
c2Zvcm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlLAogICAgICAgICBpZiAoaGF2ZU5vblByaW1pdGl2ZVZhbHVlKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0VmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDApKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0VmFs
dWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDApKTsKIAogICAgICAgICBzd2l0Y2ggKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25U
eXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVUcmFu
c2Zvcm1PcGVyYXRpb246CkBAIC0xMjQsNyArMTI0LDcgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFs
dWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxl
LAogICAgICAgICAgICAgICAgIHN4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAg
ICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBz
ZWNvbmRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBzZWNvbmRW
YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzeSA9IHN4OwpAQCAtMTQ2LDExICsxNDYsMTEgQEAgYm9vbCB0
cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSogcm9vdFN0eWxlLAogICAgICAgICAgICAgICAgIHN4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91
YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlv
blR5cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0
aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkg
PiAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOworICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZh
bHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IHN6ID0gdGhpcmRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjaygxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogc2Vjb25kVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVl
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHN5
ID0gc2Vjb25kVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBzeDsKQEAgLTE3MCw3ICsxNzAsNyBA
QCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlKiByb290U3R5bGUsCiAgICAgICAgICAgICAgICAgdHggPSBjb252ZXJ0VG9G
bG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yKTsKICAg
ICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlvbikgewogICAg
ICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogc2Vjb25kVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHR5ID0gY29u
dmVydFRvRmxvYXRMZW5ndGgoc2Vjb25kVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0
b3IpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTk1LDEx
ICsxOTUsMTEgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLAogICAgICAgICAgICAgICAgIHR4ID0g
Y29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZh
Y3Rvcik7CiAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBl
KCkgIT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRp
b24pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+
IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRl
bVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFs
dWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwogICAgICAgICAgICAgICAgICAgICAgICAg
dHogPSBjb252ZXJ0VG9GbG9hdExlbmd0aCh0aGlyZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6
b29tRmFjdG9yKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBp
ZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSB0
b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5ndGgo
c2Vjb25kVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IpOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMjM2LDkgKzIzNiw5IEBAIGJvb2wgdHJh
bnNmb3Jtc0ZvclZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUqIHJvb3RTdHlsZSwKICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90
YXRlM0RUcmFuc2Zvcm1PcGVyYXRpb246IHsKICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1
ZS0+bGVuZ3RoKCkgPCA0KQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7Ci0gICAgICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwot
ICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvdXJ0aFZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVj
aygzKSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEp
KTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gdG9DU1NQcmlt
aXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7Cisg
ICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZm91cnRoVmFsdWUgPSB0b0NTU1ByaW1pdGl2
ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMpKTsKICAgICAg
ICAgICAgIGRvdWJsZSB4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICAgICAg
ICAgIGRvdWJsZSB5ID0gc2Vjb25kVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CiAgICAgICAgICAg
ICBkb3VibGUgeiA9IHRoaXJkVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CkBAIC0yNTgsNyArMjU4
LDcgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLAogICAgICAgICAgICAgICAgIGFuZ2xlWCA9IGFu
Z2xlOwogICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgp
ID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBzZWNvbmRWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVZ
ID0gc2Vjb25kVmFsdWUtPmNvbXB1dGVEZWdyZWVzKCk7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CkBAIC0yNzAsMzMgKzI3MCwzMyBAQCBib29sIHRyYW5zZm9ybXNG
b3JWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiByb290
U3R5bGUsCiAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpIDwgNikKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRvdWJsZSBhID0gZmlyc3RWYWx1ZS0+
Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSBiID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygx
KSktPmdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgYyA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMikpLT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIGQgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDMpKS0+Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSBlID0gem9v
bUZhY3RvciAqIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUt
Pml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNCkpLT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAg
ICAgZG91YmxlIGYgPSB6b29tRmFjdG9yICogc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg1KSktPmdldERvdWJsZVZh
bHVlKCk7CisgICAgICAgICAgICBkb3VibGUgYiA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNm
b3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpLT5nZXREb3VibGVWYWx1ZSgpOwor
ICAgICAgICAgICAgZG91YmxlIGMgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVl
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAg
ICAgIGRvdWJsZSBkID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjaygzKSktPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBkb3Vi
bGUgZSA9IHpvb21GYWN0b3IgKiB0b0NTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDQpKS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAg
IGRvdWJsZSBmID0gem9vbUZhY3RvciAqIHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFs
dWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNSkpLT5nZXREb3VibGVWYWx1ZSgpOwogICAgICAg
ICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKGEsIGIsIGMsIGQsIGUsIGYpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeDNEVHJh
bnNmb3JtT3BlcmF0aW9uOiB7CiAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0
aCgpIDwgMTYpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtYXRyaXgoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zv
cm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSktPmdldERvdWJsZVZhbHVlKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpLT5nZXREb3Vi
bGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KDIpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhv
dXRCb3VuZHNDaGVjaygzKSktPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFs
dWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNCkpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKS0+Z2V0RG91YmxlVmFs
dWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg2KSkt
PmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soNykpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDgpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFu
c2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg5KSktPmdldERvdWJsZVZhbHVlKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTApKS0+Z2V0
RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjaygxMSkpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB6b29tRmFjdG9yICogc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zv
cm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMikpLT5nZXREb3VibGVWYWx1ZSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tRmFjdG9yICogc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVj
aygxMykpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDE0KSktPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3Jt
VmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTUpKS0+Z2V0RG91YmxlVmFsdWUoKSk7Cisg
ICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgodG9DU1NQcmltaXRpdmVWYWx1
ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSktPmdldERvdWJsZVZh
bHVlKCksCisgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1
ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAg
ICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygyKSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgdG9DU1NQ
cmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygzKSkt
PmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0
cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg0KSktPmdldERvdWJsZVZhbHVl
KCksCisgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg1KSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAg
ICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjayg2KSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgdG9DU1NQcmlt
aXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg3KSktPmdl
dERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFu
c2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg4KSktPmdldERvdWJsZVZhbHVlKCks
CisgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRl
bVdpdGhvdXRCb3VuZHNDaGVjayg5KSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAg
ICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjaygxMCkpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIHRvQ1NTUHJpbWl0
aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTEpKS0+Z2V0
RG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICB6b29tRmFjdG9yICogdG9DU1NQcmltaXRp
dmVWYWx1ZSh0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMikpLT5nZXRE
b3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIHpvb21GYWN0b3IgKiB0b0NTU1ByaW1pdGl2
ZVZhbHVlKHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEzKSktPmdldERv
dWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgdG9DU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zv
cm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxNCkpLT5nZXREb3VibGVWYWx1ZSgpLAor
ICAgICAgICAgICAgICAgIHRvQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtVmFsdWUtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMTUpKS0+Z2V0RG91YmxlVmFsdWUoKSk7CiAgICAgICAgICAgICBv
cGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246
OmNyZWF0ZShtYXRyaXgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGVhNjQ3MGE4NGNh
YzhhOTA5ZGIxY2Y0ZDgwNGY3ZTM4ODY2ZDQxMGEuLjRlMWU1M2E3NTIzZmIyOWJkYTlmZjdlYWI4
YWE0NjcwN2NmN2E4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVz
b2x2ZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgZmxvYXQgVmlld3BvcnRTdHlsZVJlc29sdmVy
OjpnZXRWaWV3cG9ydEFyZ3VtZW50VmFsdWUoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QKICAgICBp
ZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4g
ZGVmYXVsdFZhbHVlOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5nZXQoKSk7CisgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZS5n
ZXQoKSk7CiAKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTnVtYmVyKCkgfHwgcHJpbWl0aXZl
VmFsdWUtPmlzUHgoKSkKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLT5nZXRGbG9hdFZh
bHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCmluZGV4IGEzM2I4OTVk
ODc2OTZlYzMzZTBlY2JhNjllNTc2Zjg0YjA1YzhjNzguLmI0ZGQ1MGQ2MTRiZTJiNjkzZWNiMGU2
NzM5YjgwNTU3NDA1MDY2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3Bw
CkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgV2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZShj
b25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZT4gdmFsdWUgPSBzdHlsZURlY2xhcmF0aW9uLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKIAogICAgICAgICAvLyBDaGVjayBmb3IgYSAibm9u
ZSIgb3IgZW1wdHkgdHJhbnNmb3JtLiBJbiB0aGVzZSBjYXNlcyB3ZSBjYW4gdXNlIHRoZSBkZWZh
dWx0IGlkZW50aXR5IG1hdHJpeC4KLSAgICAgICAgaWYgKCF2YWx1ZSB8fCAodmFsdWUtPmlzUHJp
bWl0aXZlVmFsdWUoKSAmJiAoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5n
ZXQoKSkpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKSkKKyAgICAgICAgaWYgKCF2YWx1
ZSB8fCAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiAodG9DU1NQcmltaXRpdmVWYWx1ZSh2
YWx1ZS5nZXQoKSkpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKSkKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDRjY2QzNjA0
MzgwMzI4ZTU4YjAzM2QzZDc5Y2FkZjM4OWY2YTllYWMuLjQ2ZGY2ZTYwMmQ3YzA3NDU3ZjM2NDRk
MjQ2NGFjYjJmMzBlODRlYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCkBAIC0xNTE0LDcgKzE1MTQsNyBAQCBmbG9hdCBBcHBseVN0eWxlQ29tbWFu
ZDo6Y29tcHV0ZWRGb250U2l6ZShOb2RlKiBub2RlKQogCiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2
YWx1ZSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0b3Iobm9kZSkucHJvcGVydHlWYWx1ZShDU1NQcm9w
ZXJ0eUZvbnRTaXplKTsKICAgICBBU1NFUlQodmFsdWUgJiYgdmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUu
Z2V0KCkpLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIHJl
dHVybiB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLmdldCgpKS0+Z2V0RmxvYXRWYWx1ZShDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKIH0KIAogdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6am9p
bkNoaWxkVGV4dE5vZGVzKE5vZGUqIG5vZGUsIGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3Qg
UG9zaXRpb24mIGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Z1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRl
eCAyZTA0ODdhM2NhZjM1OTJkYjM4NmZkODVkMDBhN2FmNjA2ZDBhZTA4Li4yZmIyZjJkYmUyMTQ3
NGE5YTdjZjI4MGYxNDRjYmNkNmVkMzc2NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgaW50IGlkZW50aWZpZXJGb3JTdHlsZVBy
b3BlcnR5KFQqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiAgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IGV4dHJhY3RQcm9wZXJ0eVZhbHVlKHN0eWxlLCBwcm9wZXJ0eUlEKTsK
ICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZS5nZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICByZXR1cm4gdG9DU1NQcmltaXRpdmVWYWx1ZSh2
YWx1ZS5nZXQoKSktPmdldFZhbHVlSUQoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gUGFz
c1JlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gZ2V0UHJvcGVydGllc05vdEluKFN0eWxl
UHJvcGVydHlTZXQqIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIFQqIGJhc2VTdHlsZSk7
CkBAIC0yMDEsNyArMjAxLDcgQEAgSFRNTEVsZW1lbnRFcXVpdmFsZW50OjpIVE1MRWxlbWVudEVx
dWl2YWxlbnQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWVJRCBwcmltaXQKIGJvb2wgSFRNTEVs
ZW1lbnRFcXVpdmFsZW50Ojp2YWx1ZUlzUHJlc2VudEluU3R5bGUoRWxlbWVudCogZWxlbWVudCwg
U3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2
YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKG1fcHJvcGVydHlJRCk7Ci0gICAgcmV0
dXJuIG1hdGNoZXMoZWxlbWVudCkgJiYgdmFsdWUgJiYgdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSAmJiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlLmdldCgpKS0+Z2V0VmFs
dWVJRCgpID09IG1fcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKTsKKyAgICByZXR1cm4gbWF0
Y2hlcyhlbGVtZW50KSAmJiB2YWx1ZSAmJiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHRv
Q1NTUHJpbWl0aXZlVmFsdWUodmFsdWUuZ2V0KCkpLT5nZXRWYWx1ZUlEKCkgPT0gbV9wcmltaXRp
dmVWYWx1ZS0+Z2V0VmFsdWVJRCgpOwogfQogCiB2b2lkIEhUTUxFbGVtZW50RXF1aXZhbGVudDo6
YWRkVG9TdHlsZShFbGVtZW50KiwgRWRpdGluZ1N0eWxlKiBzdHlsZSkgY29uc3QKQEAgLTM3OCw3
ICszNzgsNyBAQCBzdGF0aWMgUkdCQTMyIGNzc1ZhbHVlVG9SR0JBKENTU1ZhbHVlKiBjb2xvclZh
bHVlKQogICAgIGlmICghY29sb3JWYWx1ZSB8fCAhY29sb3JWYWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OwogICAgIAotICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVDb2xvciA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4oY29sb3JWYWx1ZSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZUNvbG9y
ID0gdG9DU1NQcmltaXRpdmVWYWx1ZShjb2xvclZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlQ29s
b3ItPmlzUkdCQ29sb3IoKSkKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUNvbG9yLT5nZXRSR0JB
MzJWYWx1ZSgpOwogICAgIApAQCAtNDk4LDcgKzQ5OCw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpl
eHRyYWN0Rm9udFNpemVEZWx0YSgpCiAgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZS5nZXQo
KSk7CisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gdG9DU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZS5nZXQoKSk7CiAKICAgICAvLyBPbmx5IFBYIGhhbmRsZWQgbm93LiBJZiB3
ZSBoYW5kbGUgbW9yZSB0eXBlcyBpbiB0aGUgZnV0dXJlLCBwZXJoYXBzCiAgICAgLy8gYSBzd2l0
Y2ggc3RhdGVtZW50IGhlcmUgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZS4KQEAgLTUyMywxMyAr
NTIzLDEzIEBAIGJvb2wgRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rp
b24mIHdyaXRpbmdEaXJlY3Rpb24pIGNvbnN0CiAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCAhdW5p
Y29kZUJpZGktPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih1bmljb2RlQmlkaS5nZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICBDU1NWYWx1ZUlE
IHVuaWNvZGVCaWRpVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHVuaWNvZGVCaWRpLmdldCgp
KS0+Z2V0VmFsdWVJRCgpOwogICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlRW1i
ZWQpIHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBkaXJlY3Rpb24gPSBtX211dGFibGVTdHls
ZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CiAgICAgICAgIGlm
ICghZGlyZWN0aW9uIHx8ICFkaXJlY3Rpb24tPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICB3cml0aW5nRGlyZWN0aW9uID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihkaXJlY3Rpb24uZ2V0KCkpLT5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVMdHIgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRvTGVmdFdy
aXRpbmdEaXJlY3Rpb247CisgICAgICAgIHdyaXRpbmdEaXJlY3Rpb24gPSB0b0NTU1ByaW1pdGl2
ZVZhbHVlKGRpcmVjdGlvbi5nZXQoKSktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUx0ciA/IExl
ZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsK
IAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC05NDksOSArOTQ5LDkgQEAgdm9pZCBF
ZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBT
aG91bGRQcmVzZXJ2ZVdyaXQKICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAogICAgIGlmICh1bmljb2RlQmlkaSAmJiB1
bmljb2RlQmlkaS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgIG1fbXV0YWJsZVN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxDU1NWYWx1
ZUlEPihzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHVuaWNvZGVCaWRpLmdldCgpKS0+
Z2V0VmFsdWVJRCgpKSk7CisgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPih0b0NTU1ByaW1pdGl2
ZVZhbHVlKHVuaWNvZGVCaWRpLmdldCgpKS0+Z2V0VmFsdWVJRCgpKSk7CiAgICAgICAgIGlmIChk
aXJlY3Rpb24gJiYgZGlyZWN0aW9uLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICBt
X211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0YXRpY19j
YXN0PENTU1ZhbHVlSUQ+KHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZGlyZWN0aW9u
LmdldCgpKS0+Z2V0VmFsdWVJRCgpKSk7CisgICAgICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KHRv
Q1NTUHJpbWl0aXZlVmFsdWUoZGlyZWN0aW9uLmdldCgpKS0+Z2V0VmFsdWVJRCgpKSk7CiAgICAg
fQogfQogCkBAIC0xMTQ5LDcgKzExNDksNyBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHls
ZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24oU3R5bGVkRWxlbWVudCogZWxlbWVudCkKICAgICAg
ICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHByb3BlcnR5LnZhbHVlKCk7CiAgICAgICAgICAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSkt
PmlzUGVyY2VudGFnZSgpKSB7CisgICAgICAgICAgICBpZiAodG9DU1NQcmltaXRpdmVWYWx1ZSh2
YWx1ZSktPmlzUGVyY2VudGFnZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxDU1NW
YWx1ZT4gY29tcHV0ZWRQcm9wZXJ0eVZhbHVlID0gY29tcHV0ZWRTdHlsZS5wcm9wZXJ0eVZhbHVl
KHByb3BlcnR5LmlkKCkpKQogICAgICAgICAgICAgICAgICAgICBmcm9tQ29tcHV0ZWRTdHlsZS0+
YWRkUGFyc2VkUHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHkuaWQoKSwgY29tcHV0ZWRQcm9w
ZXJ0eVZhbHVlLnJlbGVhc2UoKSkpOwogICAgICAgICAgICAgfQpAQCAtMTIyMiw3ICsxMjIyLDcg
QEAgaW50IEVkaXRpbmdTdHlsZTo6bGVnYWN5Rm9udFNpemUoRG9jdW1lbnQqIGRvY3VtZW50KSBj
b25zdAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUgPSBtX211dGFibGVTdHlsZS0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTaXplKTsKICAgICBpZiAoIWNzc1ZhbHVl
IHx8ICFjc3NWYWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gbGVnYWN5Rm9udFNpemVGcm9tQ1NTVmFsdWUoZG9jdW1lbnQsIHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oY3NzVmFsdWUuZ2V0KCkpLAorICAgIHJldHVybiBsZWdhY3lG
b250U2l6ZUZyb21DU1NWYWx1ZShkb2N1bWVudCwgdG9DU1NQcmltaXRpdmVWYWx1ZShjc3NWYWx1
ZS5nZXQoKSksCiAgICAgICAgIG1fc2hvdWxkVXNlRml4ZWREZWZhdWx0Rm9udFNpemUsIEFsd2F5
c1VzZUxlZ2FjeUZvbnRTaXplKTsKIH0KIApAQCAtMTI4Niw3ICsxMjg2LDcgQEAgV3JpdGluZ0Rp
cmVjdGlvbiBFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYKICAgICAgICAgICAgIGlmICghdW5pY29kZUJpZGkgfHwgIXVuaWNvZGVC
aWRpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgICAgIENTU1ZhbHVlSUQgdW5pY29kZUJpZGlWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRWYWx1ZUlEKCk7CisgICAgICAg
ICAgICBDU1NWYWx1ZUlEIHVuaWNvZGVCaWRpVmFsdWUgPSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHVu
aWNvZGVCaWRpLmdldCgpKS0+Z2V0VmFsdWVJRCgpOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVC
aWRpVmFsdWUgPT0gQ1NTVmFsdWVFbWJlZCB8fCB1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVl
QmlkaU92ZXJyaWRlKQogICAgICAgICAgICAgICAgIHJldHVybiBOYXR1cmFsV3JpdGluZ0RpcmVj
dGlvbjsKICAgICAgICAgfQpAQCAtMTMxNSw3ICsxMzE1LDcgQEAgV3JpdGluZ0RpcmVjdGlvbiBF
ZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYKICAgICAgICAgaWYgKCF1bmljb2RlQmlkaSB8fCAhdW5pY29kZUJpZGktPmlzUHJpbWl0
aXZlVmFsdWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIENTU1ZhbHVlSUQg
dW5pY29kZUJpZGlWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odW5pY29k
ZUJpZGkuZ2V0KCkpLT5nZXRWYWx1ZUlEKCk7CisgICAgICAgIENTU1ZhbHVlSUQgdW5pY29kZUJp
ZGlWYWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUodW5pY29kZUJpZGkuZ2V0KCkpLT5nZXRWYWx1
ZUlEKCk7CiAgICAgICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlTm9ybWFsKQog
ICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTEzMjcsNyArMTMyNyw3IEBAIFdyaXRpbmdEaXJl
Y3Rpb24gRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mCiAgICAgICAgIGlmICghZGlyZWN0aW9uIHx8ICFkaXJlY3Rpb24tPmlzUHJp
bWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIENTU1ZhbHVl
SUQgZGlyZWN0aW9uVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGRpcmVj
dGlvbi5nZXQoKSktPmdldFZhbHVlSUQoKTsKKyAgICAgICAgQ1NTVmFsdWVJRCBkaXJlY3Rpb25W
YWx1ZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUoZGlyZWN0aW9uLmdldCgpKS0+Z2V0VmFsdWVJRCgp
OwogICAgICAgICBpZiAoZGlyZWN0aW9uVmFsdWUgIT0gQ1NTVmFsdWVMdHIgJiYgZGlyZWN0aW9u
VmFsdWUgIT0gQ1NTVmFsdWVSdGwpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTQ2Nyw3
ICsxNDY3LDcgQEAgdm9pZCBTdHlsZUNoYW5nZTo6ZXh0cmFjdFRleHRTdHlsZXMoRG9jdW1lbnQq
IGRvY3VtZW50LCBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCoKICAgICBpZiAoUmVmUHRyPENTU1Zh
bHVlPiBmb250U2l6ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9u
dFNpemUpKSB7CiAgICAgICAgIGlmICghZm9udFNpemUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAg
ICAgICAgICAgIHN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplKTsgLy8g
Q2FuJ3QgbWFrZSBzZW5zZSBvZiB0aGUgbnVtYmVyLiBQdXQgbm8gZm9udCBzaXplLgotICAgICAg
ICBlbHNlIGlmIChpbnQgbGVnYWN5Rm9udFNpemUgPSBsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1
ZShkb2N1bWVudCwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihmb250U2l6ZS5nZXQo
KSksCisgICAgICAgIGVsc2UgaWYgKGludCBsZWdhY3lGb250U2l6ZSA9IGxlZ2FjeUZvbnRTaXpl
RnJvbUNTU1ZhbHVlKGRvY3VtZW50LCB0b0NTU1ByaW1pdGl2ZVZhbHVlKGZvbnRTaXplLmdldCgp
KSwKICAgICAgICAgICAgICAgICBzaG91bGRVc2VGaXhlZEZvbnREZWZhdWx0U2l6ZSwgVXNlTGVn
YWN5Rm9udFNpemVPbmx5SWZQaXhlbFZhbHVlc01hdGNoKSkgewogICAgICAgICAgICAgbV9hcHBs
eUZvbnRTaXplID0gU3RyaW5nOjpudW1iZXIobGVnYWN5Rm9udFNpemUpOwogICAgICAgICAgICAg
c3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUpOwpAQCAtMTQ5OSw3ICsx
NDk5LDcgQEAgc3RhdGljIGJvb2wgZm9udFdlaWdodElzQm9sZChDU1NWYWx1ZSogZm9udFdlaWdo
dCkKIAogICAgIC8vIEJlY2F1c2UgYiB0YWcgY2FuIG9ubHkgYm9sZCB0ZXh0LCB0aGVyZSBhcmUg
b25seSB0d28gc3RhdGVzIGluIHBsYWluIGh0bWw6IGJvbGQgYW5kIG5vdCBib2xkLgogICAgIC8v
IENvbGxhcHNlIGFsbCBvdGhlciB2YWx1ZXMgdG8gZWl0aGVyIG9uZSBvZiB0aGVzZSB0d28gc3Rh
dGVzIGZvciBlZGl0aW5nIHB1cnBvc2VzLgotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihmb250V2VpZ2h0KS0+Z2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoICh0
b0NTU1ByaW1pdGl2ZVZhbHVlKGZvbnRXZWlnaHQpLT5nZXRWYWx1ZUlEKCkpIHsKICAgICAgICAg
Y2FzZSBDU1NWYWx1ZTEwMDoKICAgICAgICAgY2FzZSBDU1NWYWx1ZTIwMDoKICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZTMwMDoKQEAgLTE1OTMsNyArMTU5Myw3IEBAIGJvb2wgaXNUcmFuc3BhcmVudENv
bG9yVmFsdWUoQ1NTVmFsdWUqIGNzc1ZhbHVlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBp
ZiAoIWNzc1ZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KGNzc1ZhbHVlKTsgICAgCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlID0gdG9D
U1NQcmltaXRpdmVWYWx1ZShjc3NWYWx1ZSk7ICAgIAogICAgIGlmICh2YWx1ZS0+aXNSR0JDb2xv
cigpKQogICAgICAgICByZXR1cm4gIWFscGhhQ2hhbm5lbCh2YWx1ZS0+Z2V0UkdCQTMyVmFsdWUo
KSk7ICAgIAogICAgIHJldHVybiB2YWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlVHJhbnNw
YXJlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYTc0M2JiNjQ2NjE1MDlmNzg5
NTNiNWIwOTg4ODVmY2UzZGM1OWNiOS4uNzY3ZjdlMDZhYjdmYjk5MWY1YTMyYzAyMDU3YmVmMGQ4
M2FkY2FjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBA
IHN0YXRpYyBib29sIHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUoU3R5bGVQcm9wZXJ0eVNl
dCogc3R5bGUsIENTU1Byb3BlcnR5SUQKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKCF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUuZ2V0KCkpLT5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOworICAgIHJldHVybiB0b0NTU1ByaW1pdGl2ZVZhbHVlKHZh
bHVlLmdldCgpKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZTsKIH0KIAogc3RhdGljIGJv
b2wgbmVlZEludGVyY2hhbmdlTmV3bGluZUFmdGVyKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdikK
</data>

          </attachment>
      

    </bug>

</bugzilla>