<?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>194727</bug_id>
          
          <creation_ts>2019-02-15 15:26:28 -0800</creation_ts>
          <short_desc>[JSC] Make builtin objects more lazily initialized under non-JIT mode</short_desc>
          <delta_ts>2019-02-15 17:39:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1506803</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-15 15:26:28 -0800</bug_when>
    <thetext>[JSC] Make builtin objects more lazily initialized under non-JIT mode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506806</commentid>
    <comment_count>1</comment_count>
      <attachid>362167</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-15 15:31:58 -0800</bug_when>
    <thetext>Created attachment 362167
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506808</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-15 15:34:50 -0800</bug_when>
    <thetext>Attachment 362167 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 5 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>1506810</commentid>
    <comment_count>3</comment_count>
      <attachid>362167</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-15 15:36:03 -0800</bug_when>
    <thetext>Comment on attachment 362167
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=362167&amp;action=review

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests (OOPS!).

Remove this part later, this should be covered by existing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506814</commentid>
    <comment_count>4</comment_count>
      <attachid>362170</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-15 15:38:53 -0800</bug_when>
    <thetext>Created attachment 362170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506848</commentid>
    <comment_count>5</comment_count>
      <attachid>362170</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-02-15 16:27:16 -0800</bug_when>
    <thetext>Comment on attachment 362170
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506855</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-15 16:34:19 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #5)
&gt; Comment on attachment 362170 [details]
&gt; Patch
&gt; 
&gt; r=me

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506885</commentid>
    <comment_count>7</comment_count>
      <attachid>362170</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-15 17:12:32 -0800</bug_when>
    <thetext>Comment on attachment 362170
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=362170&amp;action=review

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        accesses to these prototypes from the concurrent compiler threads, this &quot;lazily initialize uder non-JIT&quot;

/uder/under/

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        drop some @Number referneces to avoid eager initialization. This removes some object allocations and 1

/referneces/references/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506895</commentid>
    <comment_count>8</comment_count>
      <attachid>362170</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-15 17:34:32 -0800</bug_when>
    <thetext>Comment on attachment 362170
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=362170&amp;action=review

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt; +        accesses to these prototypes from the concurrent compiler threads, this &quot;lazily initialize uder non-JIT&quot;
&gt; 
&gt; /uder/under/

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt;&gt; +        drop some @Number referneces to avoid eager initialization. This removes some object allocations and 1
&gt; 
&gt; /referneces/references/

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506901</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-15 17:38:25 -0800</bug_when>
    <thetext>Committed r241637: &lt;https://trac.webkit.org/changeset/241637&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506902</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-15 17:39:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/48131308&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362167</attachid>
            <date>2019-02-15 15:31:58 -0800</date>
            <delta_ts>2019-02-15 15:38:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194727-20190215153158.patch</filename>
            <type>text/plain</type>
            <size>25873</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NDVhNDQ4Y2U4NTZlZjAzOTNjYmE0ODEwZDliZGJkNTFkYTE1YTAyLi4wNDMzZWUwZTJkNmU2OWI5
ZTc4NmI5ZThiZTk2ZGYzZjFiNWIzYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOS0wMi0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE1ha2UgYnVpbHRpbiBvYmplY3RzIG1vcmUgbGF6aWx5IGluaXRp
YWxpemVkIHVuZGVyIG5vbi1KSVQgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQm9vbGVhbiwgU3ltYm9sLCBhbmQgTnVtYmVyIGNvbnN0cnVjdG9y
cyBhbmQgcHJvdG90eXBlcyBhcmUgaW5pdGlhbGl6ZWQgZWFnZXJseSwgYnV0IHRoaXMgaXMgbGFy
Z2VseQorICAgICAgICBiZWNhdXNlIGNvbmN1cnJlbnQgY29tcGlsZXIgY2FuIHRvdWNoIE51bWJl
clByb3RvdHlwZSBldGMuIHdoZW4gdHJhdmVyc2luZyBvYmplY3QncyBwcm90b3R5cGVzLiBUaGlz
CisgICAgICAgIG1lYW5zIHRoYXQgZWFnZXIgaW5pdGlhbGl6YXRpb24gaXMgbm90IG5lY2Vzc2Fy
eSB1bmRlciBub24tSklUIG1vZGUuIFdoaWxlIHdlIGNhbiBpbnZlc3RpZ2F0ZSBhbGwgdGhlCisg
ICAgICAgIGFjY2Vzc2VzIHRvIHRoZXNlIHByb3RvdHlwZXMgZnJvbSB0aGUgY29uY3VycmVudCBj
b21waWxlciB0aHJlYWRzLCB0aGlzICJsYXppbHkgaW5pdGlhbGl6ZSB1ZGVyIG5vbi1KSVQiCisg
ICAgICAgIGlzIHNhZmUgYW5kIGJlbmVmaWNpYWwgdG8gbm9uLUpJVCBtb2RlLiBUaGlzIHBhdGNo
IGxhemlseSBpbml0aWFsaXplcyB0aGVtIHVuZGVyIG5vbi1KSVQgbW9kZSwgYW5kCisgICAgICAg
IGRyb3Agc29tZSBATnVtYmVyIHJlZmVybmVjZXMgdG8gYXZvaWQgZWFnZXIgaW5pdGlhbGl6YXRp
b24uIFRoaXMgcmVtb3ZlcyBzb21lIG9iamVjdCBhbGxvY2F0aW9ucyBhbmQgMQorICAgICAgICBN
YXJrZWRCbG9jayBhbGxvY2F0aW9uIGp1c3QgZm9yIFN5bWJvbHMuCisKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmJvb2xlYW5Qcm90b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bnVtYmVyUHJvdG90eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnN5bWJvbFByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojpib29sZWFuT2JqZWN0U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbE9iamVjdFN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpudW1iZXJPYmplY3RTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6c3RyaW5nT2JqZWN0U3RydWN0dXJlIGNvbnN0KToKKwogMjAxOS0wMi0x
NSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU2FtcGxpbmdQcm9m
aWxlcjo6c3RhY2tUcmFjZXNBc0pTT04oKSBzaG91bGQgZXNjYXBlIHN0cmluZ3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYzRiNWJjODJiZmM4ZjFiNjliZGU2OTkzZjFlZTk0Yjc2N2VlOWI3YS4uZGRiNmY3ZDlk
ZWM2Mzc0YjdkNWU0NDhhMWM1OGQzMWMzMmM4OWEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE5LTAyLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0pTQ10gTWFrZSBidWlsdGluIG9iamVjdHMgbW9yZSBsYXppbHkgaW5pdGlhbGl6ZWQg
dW5kZXIgbm9uLUpJVCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTQ3MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAgIChwcml2YXRlSW5p
dGlhbGl6ZVJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAgICAocmVhZGFibGVC
eXRlU3RyZWFtQ29udHJvbGxlclJlc3BvbmQpOgorCiAyMDE5LTAyLTE1ICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgbWV0aG9kIHRvIGRpc3BhdGNo
IGEgUG9pbnRlckV2ZW50IGJhc2VkIG9uIGEgUGxhdGZvcm1Ub3VjaEV2ZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMDE5YmY5
YjAxMjgyODFjZDFhNWE0MmNlMDcyNjM3YWVmMjQyODA3Yi4uYzIzYzE5MjU3ZjRiMjk3Yzc4YmRi
MmViZDBjNTU4ZTU5OTFjOTQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzI4LDYgKzMyOCw3IEBAIGNvbnN0IEdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxl
ID0gewogICBEYXRlICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Q6Om1fZGF0ZVN0cnVj
dHVyZSAgICAgICAgICAgICAgRG9udEVudW18Q2xhc3NTdHJ1Y3R1cmUKICAgQm9vbGVhbiAgICAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUgICAgIERv
bnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIE51bWJlciAgICAgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdDo6bV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUgICAgICBEb250RW51bXxDbGFzc1N0cnVjdHVy
ZQorICBTeW1ib2wgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Q6Om1fc3ltYm9sT2JqZWN0
U3RydWN0dXJlICAgICAgRG9udEVudW18Q2xhc3NTdHJ1Y3R1cmUKICAgV2Vha01hcCAgICAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX3dlYWtNYXBTdHJ1Y3R1cmUgICAgICAgICAgIERvbnRF
bnVtfENsYXNzU3RydWN0dXJlCiAgIFdlYWtTZXQgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dDo6bV93ZWFrU2V0U3RydWN0dXJlICAgICAgICAgICBEb250RW51bXxDbGFzc1N0cnVjdHVyZQog
QGVuZApAQCAtNzYzLDcgKzc2NCw2IEBAIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jCiAgICAgbV9h
c3luY0dlbmVyYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX2FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSk7CiAgICAgbV9hc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmdldCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIAotICAgIAogICAgIG1f
b2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgbV9mdW5jdGlvblByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgbV9hcnJheVByb3RvdHlwZS0+cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBh
cnJheUNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CkBAIC05MDYsNyArOTA2LDYgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QK
ICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmluc3RhbmNlT2ZQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0luc3RhbmNlT2YsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkJ1aWx0aW5Mb2dQcml2YXRlTmFtZSgp
LCBidWlsdGluTG9nLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5CdWls
dGluRGVzY3JpYmVQcml2YXRlTmFtZSgpLCBidWlsdGluRGVzY3JpYmUsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk51bWJlclByaXZhdGVOYW1lKCksIG51bWJlckNvbnN0
cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5SZWdFeHBQcml2
YXRlTmFtZSgpLCByZWdFeHBDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuU3RyaW5nUHJpdmF0ZU5hbWUoKSwgc3RyaW5nQ29uc3RydWN0b3IsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFic1ByaXZhdGVOYW1lKCksIHByaXZh
dGVGdW5jQWJzLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCkBAIC0xMDI0LDkx
ICsxMDIzLDkzIEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgfQogI2VuZGlmIC8vIEVO
QUJMRShXRUJBU1NFTUJMWSkKIAotICAgIHsKKyAgICBhdXRvIHNldHVwQWRhcHRpdmVXYXRjaHBv
aW50ID0gWyZdIChKU09iamVjdCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIC0+IE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uIHsKKyAgICAgICAgLy8gUGVyZm9ybWluZyB0aGVzZSBnZXRz
IHNob3VsZCBub3QgdGhyb3cuCiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbEV4ZWMo
KTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OkdldCk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gYmFzZS0+Z2V0T3duUHJv
cGVydHlTbG90KGJhc2UsIGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7CisgICAgICAgIGNhdGNoU2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24o
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkpOworICAg
ICAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsK
KyAgICAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgICAgICBBU1NFUlQo
anNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUpKTsKKworICAgICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBnZW5lcmF0ZUNvbmRpdGlvbkZv
clNlbGZFcXVpdmFsZW5jZShtX3ZtLCBudWxscHRyLCBiYXNlLCBpZGVudC5pbXBsKCkpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChjb25kaXRpb24ucmVxdWlyZWRWYWx1ZSgpID09IGZ1bmN0aW9u
VmFsdWUpOworCisgICAgICAgIGJvb2wgaXNXYXRjaGFibGUgPSBjb25kaXRpb24uaXNXYXRjaGFi
bGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdhdGNoYWJpbGl0eSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGlzV2F0Y2hhYmxlKTsgLy8gV2UgYWxsb3cgdGhpcyB0byBpbnN0YWxsIHRoZSBu
ZWNlc3Nhcnkgd2F0Y2hwb2ludHMuCisKKyAgICAgICAgcmV0dXJuIGNvbmRpdGlvbjsKKyAgICB9
OwogCi0gICAgICAgIGF1dG8gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQgPSBbJl0gKEpTT2JqZWN0
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgLT4gT2JqZWN0UHJvcGVydHlDb25kaXRp
b24gewotICAgICAgICAgICAgLy8gUGVyZm9ybWluZyB0aGVzZSBnZXRzIHNob3VsZCBub3QgdGhy
b3cuCi0gICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gYmFzZS0+
Z2V0T3duUHJvcGVydHlTbG90KGJhc2UsIGV4ZWMsIGlkZW50LCBzbG90KTsKLSAgICAgICAgICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwotICAgICAgICAgICAgY2F0Y2hTY29wZS5h
c3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2xvdC5pc0Nh
Y2hlYWJsZVZhbHVlKCkpOwotICAgICAgICAgICAgSlNWYWx1ZSBmdW5jdGlvblZhbHVlID0gc2xv
dC5nZXRWYWx1ZShleGVjLCBpZGVudCk7Ci0gICAgICAgICAgICBjYXRjaFNjb3BlLmFzc2VydE5v
RXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9u
Kj4odm0sIGZ1bmN0aW9uVmFsdWUpKTsKLQotICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb24gY29uZGl0aW9uID0gZ2VuZXJhdGVDb25kaXRpb25Gb3JTZWxmRXF1aXZhbGVuY2UobV92
bSwgbnVsbHB0ciwgYmFzZSwgaWRlbnQuaW1wbCgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGNvbmRpdGlvbi5yZXF1aXJlZFZhbHVlKCkgPT0gZnVuY3Rpb25WYWx1ZSk7Ci0KLSAgICAg
ICAgICAgIGJvb2wgaXNXYXRjaGFibGUgPSBjb25kaXRpb24uaXNXYXRjaGFibGUoUHJvcGVydHlD
b25kaXRpb246OkVuc3VyZVdhdGNoYWJpbGl0eSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpc1dhdGNoYWJsZSk7IC8vIFdlIGFsbG93IHRoaXMgdG8gaW5zdGFsbCB0aGUgbmVjZXNzYXJ5
IHdhdGNocG9pbnRzLgotCi0gICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uOwotICAgICAgICB9
OworICAgIHsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQoYXJyYXlJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5uZXh0KTsKKyAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0
ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRj
aHBvaW50KTsKKyAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dC0+aW5zdGFsbCh2
bSk7CisgICAgfQorICAgIHsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0
aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhpcy0+YXJyYXlQcm90b3R5cGUoKSwgbV92
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7CisgICAgICAgIG1fYXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3Bl
cnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRp
b24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fYXJyYXlQ
cm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOworICAgIH0KIAot
ICAgICAgICB7Ci0gICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24g
PSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChhcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnBy
b3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICAgICAgbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBl
TmV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJv
dG9jb2xXYXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1fYXJyYXlJdGVyYXRvclByb3RvdHlwZU5l
eHQtPmluc3RhbGwodm0pOwotICAgICAgICB9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KHRo
aXMtPmFycmF5UHJvdG90eXBlKCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wp
OwotICAgICAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9
IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldh
dGNocG9pbnQtPmluc3RhbGwodm0pOwotICAgICAgICB9CisgICAgeworICAgICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtYXBJ
dGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICAgICAgbV9t
YXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
Y29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9t
YXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKKyAgICB9Cisg
ICAgeworICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFk
YXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCk7CisgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JX
YXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBQcm90b3R5cGVTeW1ib2xJdGVyYXRv
cldhdGNocG9pbnQtPmluc3RhbGwodm0pOworICAgIH0KIAotICAgICAgICB7Ci0gICAgICAgICAg
ICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hw
b2ludChtYXBJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAg
ICAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFr
ZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9tYXBJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7
Ci0gICAgICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3Rh
bGwodm0pOwotICAgICAgICB9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fbWFwUHJvdG90
eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAg
ICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBv
aW50U2V0Pj4oY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKLSAg
ICAgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxs
KHZtKTsKLSAgICAgICAgfQorICAgIHsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24g
Y29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoc2V0SXRlcmF0b3JQcm90b3R5cGUs
IG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7CisgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9zZXRJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5
cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CisgICAgfQorICAgIHsKKyAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQo
bV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wp
OworICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0
YWxsKHZtKTsKKyAgICB9CiAKLSAgICAgICAgewotICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoc2V0SXRlcmF0b3JQ
cm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7Ci0gICAgICAgICAgICBtX3NldEl0
ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFBy
b3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25k
aXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQpOwotICAgICAgICAgICAgbV9z
ZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKLSAgICAgICAg
fQotICAgICAgICB7Ci0gICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRp
b24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlwZS5nZXQoKSwgbV92bS5w
cm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0gICAgICAgICAgICBtX3NldFByb3RvdHlw
ZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlv
biwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7Ci0gICAgICAgICAgICBtX3NldFBy
b3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7Ci0gICAgICAgIH0K
KyAgICB7CisgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVw
QWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuZ2V0KCksIG1fdm0u
cHJvcGVydHlOYW1lcy0+bmV4dCk7CisgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVO
ZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9zdHJpbmdJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90
b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7CisgICAgfQorICAgIHsKKyAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9p
bnQobV9zdHJpbmdQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JT
eW1ib2wpOworICAgICAgICBtX3N0cmluZ1Byb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2lu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JX
YXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKKyAgICB9CiAKLSAgICAgICAgewotICAgICAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9p
bnQobV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5u
ZXh0KTsKLSAgICAgICAgICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2lu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3Rv
Y29sV2F0Y2hwb2ludCk7Ci0gICAgICAgICAgICBtX3N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4
dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwotICAgICAgICB9Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRj
aHBvaW50KG1fc3RyaW5nUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sKTsKLSAgICAgICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JX
YXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1fc3RyaW5nUHJvdG90eXBlU3lt
Ym9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKLSAgICAgICAgfQorICAgIHsKKyAg
ICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdh
dGNocG9pbnQobV9tYXBQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+c2V0KTsK
KyAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4oY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOworICAgICAgICBtX21hcFByb3RvdHlw
ZVNldFdhdGNocG9pbnQtPmluc3RhbGwodm0pOworICAgIH0KIAotICAgICAgICB7Ci0gICAgICAg
ICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0
Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwot
ICAgICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4oY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQpOwotICAgICAgICAgICAgbV9tYXBQ
cm90b3R5cGVTZXRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKLSAgICAgICAgfQorICAgIHsKKyAg
ICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdh
dGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+YWRkKTsK
KyAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4oY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOworICAgICAgICBtX3NldFByb3RvdHlw
ZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0pOworICAgIH0KIAotICAgICAgICB7Ci0gICAgICAg
ICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0
Y2hwb2ludChtX3NldFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwot
ICAgICAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4oY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQpOwotICAgICAgICAgICAgbV9zZXRQ
cm90b3R5cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKLSAgICAgICAgfQorICAgIC8vIFVu
Zm9ydHVuYXRlbHksIHRoZSBwcm90b3R5cGUgb2JqZWN0cyBvZiB0aGUgYnVpbHRpbiBvYmplY3Rz
IGNhbiBiZSB0b3VjaGVkIGZyb20gY29uY3VycmVudCBjb21waWxlcnMuIFNvIGVhZ2VybHkgaW5p
dGlhbGl6ZSB0aGVtIG9ubHkgaWYgd2UgdXNlIEpJVC4KKyAgICBpZiAoVk06OmNhblVzZUpJVCgp
KSB7CisgICAgICAgIHRoaXMtPmJvb2xlYW5Qcm90b3R5cGUoKTsKKyAgICAgICAgYXV0byogbnVt
YmVyUHJvdG90eXBlID0gdGhpcy0+bnVtYmVyUHJvdG90eXBlKCk7CisgICAgICAgIHRoaXMtPnN5
bWJvbFByb3RvdHlwZSgpOwogCi0gICAgICAgIHsKLSAgICAgICAgICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG51bWJlclByb3Rv
dHlwZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKTsKLSAgICAgICAgICAgIG1fbnVt
YmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29u
ZGl0aW9uLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludCk7Ci0gICAgICAgICAgICBtX251bWJl
clByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7Ci0gICAgICAgICAgICBt
X251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0
aW9uKj4obnVtYmVyUHJvdG90eXBlKCktPmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
dG9TdHJpbmcpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24g
Y29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlLCBtX3Zt
LnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0
cmluZ1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRh
cHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fbnVtYmVy
VG9TdHJpbmdXYXRjaHBvaW50KTsKKyAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dh
dGNocG9pbnQtPmluc3RhbGwodm0pOworICAgICAgICBtX251bWJlclByb3RvVG9TdHJpbmdGdW5j
dGlvbi5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVyUHJvdG90eXBlLT5n
ZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSkpOwogICAgIH0KIAogICAg
IHJlc2V0UHJvdG90eXBlKHZtLCBnZXRQcm90b3R5cGVEaXJlY3Qodm0pKTsKQEAgLTE2NTEsNyAr
MTY1Miw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5t
X2dldHRlclNldHRlclN0cnVjdHVyZSk7CiAgICAgdGhpc09iamVjdC0+bV9uYXRpdmVTdGRGdW5j
dGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2JpZ0ludE9iamVjdFN0cnVjdHVyZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQodGhpc09i
amVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNP
YmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlz
T2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZGU1NDY3YzY3OWM4ZWZlMDA4NTFm
OTJmMmI5ZTRhMmM1ZDRlNzMyYy4uMDZlMDA5M2IyYjU5NTRlZGE2NTFjMTRkZGYyZTMxOWZhNjQ2
MzZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCkBAIC0xMjksOSArMTI5LDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgV2F0Y2hwb2ludD4gY2xh
c3MgT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ7CiAKICNkZWZpbmUgRk9S
X0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRV9XSVRIX0NPTlNUUlVDVE9SKG1hY3JvKSBcCiAgICAg
bWFjcm8oU3RyaW5nLCBzdHJpbmcsIHN0cmluZ09iamVjdCwgU3RyaW5nT2JqZWN0LCBTdHJpbmcs
IG9iamVjdCkgXAotICAgIG1hY3JvKFN5bWJvbCwgc3ltYm9sLCBzeW1ib2xPYmplY3QsIFN5bWJv
bE9iamVjdCwgU3ltYm9sLCBvYmplY3QpIFwKLSAgICBtYWNybyhOdW1iZXIsIG51bWJlciwgbnVt
YmVyT2JqZWN0LCBOdW1iZXJPYmplY3QsIE51bWJlciwgb2JqZWN0KSBcCi0gICAgbWFjcm8oQm9v
bGVhbiwgYm9vbGVhbiwgYm9vbGVhbk9iamVjdCwgQm9vbGVhbk9iamVjdCwgQm9vbGVhbiwgb2Jq
ZWN0KSBcCiAgICAgbWFjcm8oRXJyb3IsIGVycm9yLCBlcnJvciwgRXJyb3JJbnN0YW5jZSwgRXJy
b3IsIG9iamVjdCkgXAogICAgIG1hY3JvKE1hcCwgbWFwLCBtYXAsIEpTTWFwLCBNYXAsIG9iamVj
dCkgXAogICAgIG1hY3JvKFNldCwgc2V0LCBzZXQsIEpTU2V0LCBTZXQsIG9iamVjdCkgXApAQCAt
MTQ4LDcgKzE0NSwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBXYXRjaHBvaW50PiBjbGFzcyBPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDsKICAgICBtYWNybyhKU0ludGVybmFs
UHJvbWlzZSwgaW50ZXJuYWxQcm9taXNlLCBpbnRlcm5hbFByb21pc2UsIEpTSW50ZXJuYWxQcm9t
aXNlLCBJbnRlcm5hbFByb21pc2UsIG9iamVjdCkgXAogCiAjZGVmaW5lIEZPUl9FQUNIX0xBWllf
QlVJTFRJTl9UWVBFKG1hY3JvKSBcCisgICAgbWFjcm8oQm9vbGVhbiwgYm9vbGVhbiwgYm9vbGVh
bk9iamVjdCwgQm9vbGVhbk9iamVjdCwgQm9vbGVhbiwgb2JqZWN0KSBcCiAgICAgbWFjcm8oRGF0
ZSwgZGF0ZSwgZGF0ZSwgRGF0ZUluc3RhbmNlLCBEYXRlLCBvYmplY3QpIFwKKyAgICBtYWNybyhO
dW1iZXIsIG51bWJlciwgbnVtYmVyT2JqZWN0LCBOdW1iZXJPYmplY3QsIE51bWJlciwgb2JqZWN0
KSBcCisgICAgbWFjcm8oU3ltYm9sLCBzeW1ib2wsIHN5bWJvbE9iamVjdCwgU3ltYm9sT2JqZWN0
LCBTeW1ib2wsIG9iamVjdCkgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBX
ZWFrTWFwLCB3ZWFrTWFwKSBcCiAgICAgREVGSU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8sIFdl
YWtTZXQsIHdlYWtTZXQpIFwKIApAQCAtNDU2LDcgKzQ1NiwxMSBAQCBjbGFzcyBKU0dsb2JhbE9i
amVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBJbmxpbmVXYXRj
aHBvaW50U2V0JiBtYXBTZXRXYXRjaHBvaW50KCkgeyByZXR1cm4gbV9tYXBTZXRXYXRjaHBvaW50
OyB9CiAgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0QWRkV2F0Y2hwb2ludCgpIHsgcmV0dXJu
IG1fc2V0QWRkV2F0Y2hwb2ludDsgfQogICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFycmF5U3Bl
Y2llc1dhdGNocG9pbnQoKSB7IHJldHVybiBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQ7IH0KLSAg
ICBJbmxpbmVXYXRjaHBvaW50U2V0JiBudW1iZXJUb1N0cmluZ1dhdGNocG9pbnQoKSB7IHJldHVy
biBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludDsgfQorICAgIElubGluZVdhdGNocG9pbnRTZXQm
IG51bWJlclRvU3RyaW5nV2F0Y2hwb2ludCgpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VS
VChWTTo6Y2FuVXNlSklUKCkpOworICAgICAgICByZXR1cm4gbV9udW1iZXJUb1N0cmluZ1dhdGNo
cG9pbnQ7CisgICAgfQogICAgIC8vIElmIHRoaXMgaGFzbid0IGJlZW4gaW52YWxpZGF0ZWQsIGl0
IG1lYW5zIHRoZSBhcnJheSBpdGVyYXRvciBwcm90b2NvbAogICAgIC8vIGlzIG5vdCBvYnNlcnZh
YmxlIHRvIHVzZXIgY29kZSB5ZXQuCiAgICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX2FycmF5SXRl
cmF0b3JQcm90b2NvbFdhdGNocG9pbnQ7CkBAIC02MTgsMTIgKzYyMiwxMiBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBPYmpl
Y3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpOyB9CiAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQogICAgIEFycmF5
UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90b3R5
cGUuZ2V0KCk7IH0KLSAgICBCb29sZWFuUHJvdG90eXBlKiBib29sZWFuUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9ib29sZWFuUHJvdG90eXBlLmdldCgpOyB9CisgICAgSlNPYmplY3QqIGJv
b2xlYW5Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUu
cHJvdG90eXBlKHRoaXMpOyB9CiAgICAgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZ1Byb3RvdHlwZS5nZXQoKTsgfQotICAgIFN5bWJvbFBy
b3RvdHlwZSogc3ltYm9sUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xQcm90b3R5
cGUuZ2V0KCk7IH0KLSAgICBOdW1iZXJQcm90b3R5cGUqIG51bWJlclByb3RvdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbnVtYmVyUHJvdG90eXBlLmdldCgpOyB9CisgICAgSlNPYmplY3QqIG51bWJl
clByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2JqZWN0U3RydWN0dXJlLnByb3Rv
dHlwZSh0aGlzKTsgfQogICAgIEJpZ0ludFByb3RvdHlwZSogYmlnSW50UHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9iaWdJbnRQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBKU09iamVjdCogZGF0
ZVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVyZS5wcm90b3R5cGUodGhp
cyk7IH0KKyAgICBKU09iamVjdCogc3ltYm9sUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9z
eW1ib2xPYmplY3RTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CiAgICAgUmVnRXhwUHJvdG90
eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cFByb3RvdHlwZS5n
ZXQoKTsgfQogICAgIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCk7IH0KICAgICBJdGVyYXRvclByb3RvdHlwZSogaXRl
cmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgp
OyB9CkBAIC02NzEsNyArNjc1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgIHJldHVybiBvcmlnaW5hbEFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhpbmdNb2RlKCkgfCBJc0FycmF5
KSA9PSBzdHJ1Y3R1cmU7CiAgICAgfQogICAgICAgICAKLSAgICBTdHJ1Y3R1cmUqIGJvb2xlYW5P
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUu
Z2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGJvb2xlYW5PYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0
dXJlKiBjYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxs
YmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogY2Fs
bGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tGdW5jdGlv
blN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQodGhp
cyk7IH0KQEAgLTY4NCw2ICs2ODgsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGdsaWJXcmFwcGVyT2Jq
ZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nbGliV3JhcHBlck9iamVjdFN0cnVjdHVy
ZS5nZXQodGhpcyk7IH0KICNlbmRpZgogICAgIFN0cnVjdHVyZSogZGF0ZVN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUq
IHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3Ry
dWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogbnVsbFByb3RvdHlwZU9iamVjdFN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZShF
cnJvclR5cGUgZXJyb3JUeXBlKSBjb25zdApAQCAtNzM0LDE0ICs3MzksMTMgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3Ry
dWN0dXJlKiBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dldHRlclNl
dHRlclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbmF0aXZlU3RkRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlLmdl
dCh0aGlzKTsgfQogICAgIFByb3BlcnR5T2Zmc2V0IGZ1bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9Ci0gICAgU3RydWN0dXJlKiBudW1iZXJP
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bWJlck9iamVjdFN0cnVjdHVyZS5n
ZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbnVtYmVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJl
KiBtYXBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcFN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBT
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogYXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXN5bmNH
ZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7
IH0KLSAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBiaWdJbnRP
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2JpZ0ludE9iamVjdFN0cnVjdHVyZS5n
ZXQoKTsgfQogICAgIFN0cnVjdHVyZSogaXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAg
ICAgU3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5q
cyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRl
cm5hbHMuanMKaW5kZXggYTY4NmJlNDc5YmRhNWJhOWQ1OGM1OWMzZWQwNDMzMTFmZjE5NGU1ZS4u
Nzc4NjVmMTM0MGMxMTBlYjRlZWQzN2VhMGI2NjUwODQzZTAwNjI0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFt
SW50ZXJuYWxzLmpzCkBAIC01NCw3ICs1NCw3IEBAIGZ1bmN0aW9uIHByaXZhdGVJbml0aWFsaXpl
UmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcihzdHJlYW0sIHVuZGVybHlpbmdCeXRlU291CiAg
ICAgbGV0IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSA9IHVuZGVybHlpbmdCeXRlU291cmNlLmF1dG9B
bGxvY2F0ZUNodW5rU2l6ZTsKICAgICBpZiAoYXV0b0FsbG9jYXRlQ2h1bmtTaXplICE9PSBAdW5k
ZWZpbmVkKSB7CiAgICAgICAgIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSA9IEB0b051bWJlcihhdXRv
QWxsb2NhdGVDaHVua1NpemUpOwotICAgICAgICBpZiAoYXV0b0FsbG9jYXRlQ2h1bmtTaXplIDw9
IDAgfHwgYXV0b0FsbG9jYXRlQ2h1bmtTaXplID09PSBATnVtYmVyLlBPU0lUSVZFX0lORklOSVRZ
IHx8IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSA9PT0gQE51bWJlci5ORUdBVElWRV9JTkZJTklUWSkK
KyAgICAgICAgaWYgKGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSA8PSAwIHx8IGF1dG9BbGxvY2F0ZUNo
dW5rU2l6ZSA9PT0gQEluZmluaXR5IHx8IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSA9PT0gLUBJbmZp
bml0eSkKICAgICAgICAgICAgIEB0aHJvd1JhbmdlRXJyb3IoImF1dG9BbGxvY2F0ZUNodW5rU2l6
ZSB2YWx1ZSBpcyBuZWdhdGl2ZSBvciBlcXVhbCB0byBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZp
bml0eSIpOwogICAgIH0KICAgICBAcHV0QnlJZERpcmVjdFByaXZhdGUodGhpcywgImF1dG9BbGxv
Y2F0ZUNodW5rU2l6ZSIsIGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSk7CkBAIC0zODEsNyArMzgxLDcg
QEAgZnVuY3Rpb24gcmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlclJlc3BvbmQoY29udHJvbGxl
ciwgYnl0ZXNXcml0dGVuKQogCiAgICAgYnl0ZXNXcml0dGVuID0gQHRvTnVtYmVyKGJ5dGVzV3Jp
dHRlbik7CiAKLSAgICBpZiAoQGlzTmFOKGJ5dGVzV3JpdHRlbikgfHwgYnl0ZXNXcml0dGVuID09
PSBATnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIHx8IGJ5dGVzV3JpdHRlbiA8IDAgKQorICAgIGlm
IChAaXNOYU4oYnl0ZXNXcml0dGVuKSB8fCBieXRlc1dyaXR0ZW4gPT09IEBJbmZpbml0eSB8fCBi
eXRlc1dyaXR0ZW4gPCAwICkKICAgICAgICAgQHRocm93UmFuZ2VFcnJvcigiYnl0ZXNXcml0dGVu
IGhhcyBhbiBpbmNvcnJlY3QgdmFsdWUiKTsKIAogICAgIEBhc3NlcnQoQGdldEJ5SWREaXJlY3RQ
cml2YXRlKGNvbnRyb2xsZXIsICJwZW5kaW5nUHVsbEludG9zIikubGVuZ3RoID4gMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362170</attachid>
            <date>2019-02-15 15:38:53 -0800</date>
            <delta_ts>2019-02-15 16:27:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194727-20190215153852.patch</filename>
            <type>text/plain</type>
            <size>25840</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NDVhNDQ4Y2U4NTZlZjAzOTNjYmE0ODEwZDliZGJkNTFkYTE1YTAyLi4wNDMzZWUwZTJkNmU2OWI5
ZTc4NmI5ZThiZTk2ZGYzZjFiNWIzYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOS0wMi0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE1ha2UgYnVpbHRpbiBvYmplY3RzIG1vcmUgbGF6aWx5IGluaXRp
YWxpemVkIHVuZGVyIG5vbi1KSVQgbW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQm9vbGVhbiwgU3ltYm9sLCBhbmQgTnVtYmVyIGNvbnN0cnVjdG9y
cyBhbmQgcHJvdG90eXBlcyBhcmUgaW5pdGlhbGl6ZWQgZWFnZXJseSwgYnV0IHRoaXMgaXMgbGFy
Z2VseQorICAgICAgICBiZWNhdXNlIGNvbmN1cnJlbnQgY29tcGlsZXIgY2FuIHRvdWNoIE51bWJl
clByb3RvdHlwZSBldGMuIHdoZW4gdHJhdmVyc2luZyBvYmplY3QncyBwcm90b3R5cGVzLiBUaGlz
CisgICAgICAgIG1lYW5zIHRoYXQgZWFnZXIgaW5pdGlhbGl6YXRpb24gaXMgbm90IG5lY2Vzc2Fy
eSB1bmRlciBub24tSklUIG1vZGUuIFdoaWxlIHdlIGNhbiBpbnZlc3RpZ2F0ZSBhbGwgdGhlCisg
ICAgICAgIGFjY2Vzc2VzIHRvIHRoZXNlIHByb3RvdHlwZXMgZnJvbSB0aGUgY29uY3VycmVudCBj
b21waWxlciB0aHJlYWRzLCB0aGlzICJsYXppbHkgaW5pdGlhbGl6ZSB1ZGVyIG5vbi1KSVQiCisg
ICAgICAgIGlzIHNhZmUgYW5kIGJlbmVmaWNpYWwgdG8gbm9uLUpJVCBtb2RlLiBUaGlzIHBhdGNo
IGxhemlseSBpbml0aWFsaXplcyB0aGVtIHVuZGVyIG5vbi1KSVQgbW9kZSwgYW5kCisgICAgICAg
IGRyb3Agc29tZSBATnVtYmVyIHJlZmVybmVjZXMgdG8gYXZvaWQgZWFnZXIgaW5pdGlhbGl6YXRp
b24uIFRoaXMgcmVtb3ZlcyBzb21lIG9iamVjdCBhbGxvY2F0aW9ucyBhbmQgMQorICAgICAgICBN
YXJrZWRCbG9jayBhbGxvY2F0aW9uIGp1c3QgZm9yIFN5bWJvbHMuCisKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmJvb2xlYW5Qcm90b3R5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bnVtYmVyUHJvdG90eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnN5bWJvbFByb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojpib29sZWFuT2JqZWN0U3RydWN0dXJlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnN5bWJvbE9iamVjdFN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpudW1iZXJPYmplY3RTdHJ1Y3R1cmUgY29uc3QpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6c3RyaW5nT2JqZWN0U3RydWN0dXJlIGNvbnN0KToKKwogMjAxOS0wMi0x
NSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgU2FtcGxpbmdQcm9m
aWxlcjo6c3RhY2tUcmFjZXNBc0pTT04oKSBzaG91bGQgZXNjYXBlIHN0cmluZ3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYzRiNWJjODJiZmM4ZjFiNjliZGU2OTkzZjFlZTk0Yjc2N2VlOWI3YS4uNzFjMTdiYWNi
YjU2OWQ2ZDY2ZDc0NDBjMDc1YTAyMjgyMWYwMDU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE5LTAyLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0pTQ10gTWFrZSBidWlsdGluIG9iamVjdHMgbW9yZSBsYXppbHkgaW5pdGlhbGl6ZWQg
dW5kZXIgbm9uLUpJVCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTQ3MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMu
anM6CisgICAgICAgIChwcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xs
ZXIpOgorICAgICAgICAocmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlclJlc3BvbmQpOgorCiAy
MDE5LTAyLTE1ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGEgbWV0aG9kIHRvIGRpc3BhdGNoIGEgUG9pbnRlckV2ZW50IGJhc2VkIG9uIGEgUGxhdGZv
cm1Ub3VjaEV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggMDE5YmY5YjAxMjgyODFjZDFhNWE0MmNlMDcyNjM3YWVmMjQyODA3
Yi4uYzIzYzE5MjU3ZjRiMjk3Yzc4YmRiMmViZDBjNTU4ZTU5OTFjOTQ1MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzI4LDYg
KzMyOCw3IEBAIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0Ojpz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0gewogICBEYXRlICAgICAgICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3Q6Om1fZGF0ZVN0cnVjdHVyZSAgICAgICAgICAgICAgRG9udEVudW18Q2xhc3NT
dHJ1Y3R1cmUKICAgQm9vbGVhbiAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX2Jvb2xl
YW5PYmplY3RTdHJ1Y3R1cmUgICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIE51bWJlciAg
ICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6bV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUgICAg
ICBEb250RW51bXxDbGFzc1N0cnVjdHVyZQorICBTeW1ib2wgICAgICAgICAgICAgICAgSlNHbG9i
YWxPYmplY3Q6Om1fc3ltYm9sT2JqZWN0U3RydWN0dXJlICAgICAgRG9udEVudW18Q2xhc3NTdHJ1
Y3R1cmUKICAgV2Vha01hcCAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0OjptX3dlYWtNYXBT
dHJ1Y3R1cmUgICAgICAgICAgIERvbnRFbnVtfENsYXNzU3RydWN0dXJlCiAgIFdlYWtTZXQgICAg
ICAgICAgICAgICBKU0dsb2JhbE9iamVjdDo6bV93ZWFrU2V0U3RydWN0dXJlICAgICAgICAgICBE
b250RW51bXxDbGFzc1N0cnVjdHVyZQogQGVuZApAQCAtNzYzLDcgKzc2NCw2IEBAIG1fICMjIGxv
d2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jCiAgICAgbV9hc3luY0dlbmVyYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX2Fz
eW5jR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgbV9hc3luY0dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtX2FzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmdldCgp
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOwogICAgIAotICAgIAogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0
cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAg
bV9hcnJheVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBhcnJheUNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CkBAIC05MDYsNyArOTA2LDYgQEAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUs
IGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmluc3RhbmNlT2ZQcml2YXRlTmFtZSgpLCBwcml2
YXRlRnVuY0luc3RhbmNlT2YsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LkJ1aWx0aW5Mb2dQcml2YXRlTmFtZSgpLCBidWlsdGluTG9nLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5CdWlsdGluRGVzY3JpYmVQcml2YXRlTmFtZSgpLCBidWlsdGlu
RGVzY3JpYmUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLk51bWJlclBy
aXZhdGVOYW1lKCksIG51bWJlckNvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5SZWdFeHBQcml2YXRlTmFtZSgpLCByZWdFeHBDb25zdHJ1Y3RvciwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUlu
Zm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuU3RyaW5nUHJpdmF0ZU5hbWUoKSwg
c3RyaW5nQ29uc3RydWN0b3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmFic1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jQWJzLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCkBAIC0xMDI0LDkxICsxMDIzLDkzIEBAIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3Ry
dWN0CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKIAotICAgIHsKKyAgICBh
dXRvIHNldHVwQWRhcHRpdmVXYXRjaHBvaW50ID0gWyZdIChKU09iamVjdCogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpIC0+IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHsKKyAgICAgICAg
Ly8gUGVyZm9ybWluZyB0aGVzZSBnZXRzIHNob3VsZCBub3QgdGhyb3cuCiAgICAgICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGdsb2JhbEV4ZWMoKTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFz
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CisgICAgICAgIGJvb2wg
cmVzdWx0ID0gYmFzZS0+Z2V0T3duUHJvcGVydHlTbG90KGJhc2UsIGV4ZWMsIGlkZW50LCBzbG90
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgICAgIGNhdGNo
U2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2xvdC5p
c0NhY2hlYWJsZVZhbHVlKCkpOworICAgICAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBzbG90
LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsKKyAgICAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOworICAgICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1
bmN0aW9uVmFsdWUpKTsKKworICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRp
b24gPSBnZW5lcmF0ZUNvbmRpdGlvbkZvclNlbGZFcXVpdmFsZW5jZShtX3ZtLCBudWxscHRyLCBi
YXNlLCBpZGVudC5pbXBsKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25kaXRpb24ucmVx
dWlyZWRWYWx1ZSgpID09IGZ1bmN0aW9uVmFsdWUpOworCisgICAgICAgIGJvb2wgaXNXYXRjaGFi
bGUgPSBjb25kaXRpb24uaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdhdGNo
YWJpbGl0eSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzV2F0Y2hhYmxlKTsgLy8gV2UgYWxs
b3cgdGhpcyB0byBpbnN0YWxsIHRoZSBuZWNlc3Nhcnkgd2F0Y2hwb2ludHMuCisKKyAgICAgICAg
cmV0dXJuIGNvbmRpdGlvbjsKKyAgICB9OwogCi0gICAgICAgIGF1dG8gc2V0dXBBZGFwdGl2ZVdh
dGNocG9pbnQgPSBbJl0gKEpTT2JqZWN0KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkg
LT4gT2JqZWN0UHJvcGVydHlDb25kaXRpb24gewotICAgICAgICAgICAgLy8gUGVyZm9ybWluZyB0
aGVzZSBnZXRzIHNob3VsZCBub3QgdGhyb3cuCi0gICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICAgICAg
ICAgIGJvb2wgcmVzdWx0ID0gYmFzZS0+Z2V0T3duUHJvcGVydHlTbG90KGJhc2UsIGV4ZWMsIGlk
ZW50LCBzbG90KTsKLSAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwot
ICAgICAgICAgICAgY2F0Y2hTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkpOwotICAgICAgICAgICAgSlNW
YWx1ZSBmdW5jdGlvblZhbHVlID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7Ci0gICAgICAg
ICAgICBjYXRjaFNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICBBU1NFUlQo
anNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIGZ1bmN0aW9uVmFsdWUpKTsKLQotICAgICAg
ICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gZ2VuZXJhdGVDb25kaXRp
b25Gb3JTZWxmRXF1aXZhbGVuY2UobV92bSwgbnVsbHB0ciwgYmFzZSwgaWRlbnQuaW1wbCgpKTsK
LSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvbmRpdGlvbi5yZXF1aXJlZFZhbHVlKCkgPT0g
ZnVuY3Rpb25WYWx1ZSk7Ci0KLSAgICAgICAgICAgIGJvb2wgaXNXYXRjaGFibGUgPSBjb25kaXRp
b24uaXNXYXRjaGFibGUoUHJvcGVydHlDb25kaXRpb246OkVuc3VyZVdhdGNoYWJpbGl0eSk7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1dhdGNoYWJsZSk7IC8vIFdlIGFsbG93IHRoaXMg
dG8gaW5zdGFsbCB0aGUgbmVjZXNzYXJ5IHdhdGNocG9pbnRzLgotCi0gICAgICAgICAgICByZXR1
cm4gY29uZGl0aW9uOwotICAgICAgICB9OworICAgIHsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoYXJyYXlJdGVyYXRv
clByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICAgICAgbV9hcnJheUl0
ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9h
cnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9hcnJheUl0ZXJhdG9y
UHJvdG90eXBlTmV4dC0+aW5zdGFsbCh2bSk7CisgICAgfQorICAgIHsKKyAgICAgICAgT2JqZWN0
UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQodGhp
cy0+YXJyYXlQcm90b3R5cGUoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7
CisgICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fYXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hw
b2ludCk7CisgICAgICAgIG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQt
Pmluc3RhbGwodm0pOworICAgIH0KIAotICAgICAgICB7Ci0gICAgICAgICAgICBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChhcnJheUl0
ZXJhdG9yUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPm5leHQpOwotICAgICAgICAgICAg
bV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRp
dGlvbiwgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1f
YXJyYXlJdGVyYXRvclByb3RvdHlwZU5leHQtPmluc3RhbGwodm0pOwotICAgICAgICB9Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNl
dHVwQWRhcHRpdmVXYXRjaHBvaW50KHRoaXMtPmFycmF5UHJvdG90eXBlKCksIG1fdm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwotICAgICAgICAgICAgbV9hcnJheVByb3RvdHlwZVN5
bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwg
bV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1fYXJyYXlQ
cm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwotICAgICAgICB9
CisgICAgeworICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1
cEFkYXB0aXZlV2F0Y2hwb2ludChtYXBJdGVyYXRvclByb3RvdHlwZSwgbV92bS5wcm9wZXJ0eU5h
bWVzLT5uZXh0KTsKKyAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xX
YXRjaHBvaW50KTsKKyAgICAgICAgbV9tYXBJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50
LT5pbnN0YWxsKHZtKTsKKyAgICB9CisgICAgeworICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5n
ZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7CisgICAgICAgIG1fbWFw
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
Y29uZGl0aW9uLCBtX21hcEl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKKyAgICAgICAgbV9t
YXBQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOworICAgIH0K
IAotICAgICAgICB7Ci0gICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRp
b24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtYXBJdGVyYXRvclByb3RvdHlwZSwgbV92bS5w
cm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgICAgIG1fbWFwSXRlcmF0b3JQcm90b3R5cGVO
ZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9tYXBJdGVy
YXRvclByb3RvY29sV2F0Y2hwb2ludCk7Ci0gICAgICAgICAgICBtX21hcEl0ZXJhdG9yUHJvdG90
eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwotICAgICAgICB9Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRp
dmVXYXRjaHBvaW50KG1fbWFwUHJvdG90eXBlLmdldCgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JX
YXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZl
V2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX21hcEl0ZXJhdG9y
UHJvdG9jb2xXYXRjaHBvaW50KTsKLSAgICAgICAgICAgIG1fbWFwUHJvdG90eXBlU3ltYm9sSXRl
cmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKLSAgICAgICAgfQorICAgIHsKKyAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9p
bnQoc2V0SXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7CisgICAg
ICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAg
ICAgIG1fc2V0SXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7Cisg
ICAgfQorICAgIHsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0g
c2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOworICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0
ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9zZXRJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc2V0UHJvdG90eXBlU3ltYm9s
SXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKKyAgICB9CiAKLSAgICAgICAgewotICAg
ICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2
ZVdhdGNocG9pbnQoc2V0SXRlcmF0b3JQcm90b3R5cGUsIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4
dCk7Ci0gICAgICAgICAgICBtX3NldEl0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElu
bGluZVdhdGNocG9pbnRTZXQ+Pihjb25kaXRpb24sIG1fc2V0SXRlcmF0b3JQcm90b2NvbFdhdGNo
cG9pbnQpOwotICAgICAgICAgICAgbV9zZXRJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50
LT5pbnN0YWxsKHZtKTsKLSAgICAgICAgfQotICAgICAgICB7Ci0gICAgICAgICAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBjb25kaXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3Nl
dFByb3RvdHlwZS5nZXQoKSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCk7Ci0g
ICAgICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6
bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+KGNvbmRpdGlvbiwgbV9zZXRJdGVyYXRvclByb3RvY29sV2F0Y2hwb2lu
dCk7Ci0gICAgICAgICAgICBtX3NldFByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludC0+
aW5zdGFsbCh2bSk7Ci0gICAgICAgIH0KKyAgICB7CisgICAgICAgIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUuZ2V0KCksIG1fdm0ucHJvcGVydHlOYW1lcy0+bmV4dCk7CisgICAgICAgIG1f
c3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+KGNvbmRpdGlvbiwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAg
ICAgIG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7
CisgICAgfQorICAgIHsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9u
ID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdQcm90b3R5cGUuZ2V0KCksIG1fdm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOworICAgICAgICBtX3N0cmluZ1Byb3RvdHlw
ZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlv
biwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7CisgICAgICAgIG1fc3RyaW5n
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKKyAgICB9CiAK
LSAgICAgICAgewotICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9u
ID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zdHJpbmdJdGVyYXRvclByb3RvdHlwZS5nZXQo
KSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKLSAgICAgICAgICAgIG1fc3RyaW5nSXRlcmF0
b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KGNvbmRpdGlv
biwgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCk7Ci0gICAgICAgICAgICBtX3N0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dFdhdGNocG9pbnQtPmluc3RhbGwodm0pOwotICAgICAg
ICB9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRp
dGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG1fc3RyaW5nUHJvdG90eXBlLmdldCgpLCBt
X3ZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKLSAgICAgICAgICAgIG1fc3RyaW5n
UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4o
Y29uZGl0aW9uLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KTsKLSAgICAgICAg
ICAgIG1fc3RyaW5nUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKLSAgICAgICAgfQorICAgIHsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29u
ZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9tYXBQcm90b3R5cGUuZ2V0KCksIG1f
dm0ucHJvcGVydHlOYW1lcy0+c2V0KTsKKyAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9pbnQp
OworICAgICAgICBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQtPmluc3RhbGwodm0pOworICAg
IH0KIAotICAgICAgICB7Ci0gICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25k
aXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX21hcFByb3RvdHlwZS5nZXQoKSwgbV92
bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwotICAgICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX21hcFNldFdhdGNocG9p
bnQpOwotICAgICAgICAgICAgbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKLSAgICAgICAgfQorICAgIHsKKyAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29u
ZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQobV9zZXRQcm90b3R5cGUuZ2V0KCksIG1f
dm0ucHJvcGVydHlOYW1lcy0+YWRkKTsKKyAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBv
aW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9pbnQp
OworICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQtPmluc3RhbGwodm0pOworICAg
IH0KIAotICAgICAgICB7Ci0gICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25k
aXRpb24gPSBzZXR1cEFkYXB0aXZlV2F0Y2hwb2ludChtX3NldFByb3RvdHlwZS5nZXQoKSwgbV92
bS5wcm9wZXJ0eU5hbWVzLT5hZGQpOwotICAgICAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRj
aHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX3NldEFkZFdhdGNocG9p
bnQpOwotICAgICAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50LT5pbnN0YWxsKHZt
KTsKLSAgICAgICAgfQorICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoZSBwcm90b3R5cGUgb2JqZWN0
cyBvZiB0aGUgYnVpbHRpbiBvYmplY3RzIGNhbiBiZSB0b3VjaGVkIGZyb20gY29uY3VycmVudCBj
b21waWxlcnMuIFNvIGVhZ2VybHkgaW5pdGlhbGl6ZSB0aGVtIG9ubHkgaWYgd2UgdXNlIEpJVC4K
KyAgICBpZiAoVk06OmNhblVzZUpJVCgpKSB7CisgICAgICAgIHRoaXMtPmJvb2xlYW5Qcm90b3R5
cGUoKTsKKyAgICAgICAgYXV0byogbnVtYmVyUHJvdG90eXBlID0gdGhpcy0+bnVtYmVyUHJvdG90
eXBlKCk7CisgICAgICAgIHRoaXMtPnN5bWJvbFByb3RvdHlwZSgpOwogCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRp
dmVXYXRjaHBvaW50KG51bWJlclByb3RvdHlwZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnRvU3Ry
aW5nKTsKLSAgICAgICAgICAgIG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4oY29uZGl0aW9uLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2lu
dCk7Ci0gICAgICAgICAgICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludC0+aW5z
dGFsbCh2bSk7Ci0gICAgICAgICAgICBtX251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5zZXQo
dm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4obnVtYmVyUHJvdG90eXBlKCktPmdldERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcpKSk7Ci0gICAgICAgIH0KKyAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0dXBBZGFwdGl2ZVdhdGNocG9p
bnQobnVtYmVyUHJvdG90eXBlLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKTsKKyAgICAg
ICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+Pihjb25kaXRpb24sIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50KTsKKyAgICAgICAgbV9u
dW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQtPmluc3RhbGwodm0pOworICAgICAgICBt
X251bWJlclByb3RvVG9TdHJpbmdGdW5jdGlvbi5zZXQodm0sIHRoaXMsIGpzQ2FzdDxKU0Z1bmN0
aW9uKj4obnVtYmVyUHJvdG90eXBlLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRv
U3RyaW5nKSkpOwogICAgIH0KIAogICAgIHJlc2V0UHJvdG90eXBlKHZtLCBnZXRQcm90b3R5cGVE
aXJlY3Qodm0pKTsKQEAgLTE2NTEsNyArMTY1Miw2IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNp
dG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dldHRlclNldHRlclN0cnVjdHVyZSk7CiAgICAgdGhp
c09iamVjdC0+bV9uYXRpdmVTdGRGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2JpZ0ludE9iamVjdFN0cnVjdHVyZSk7Ci0g
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fcmVnRXhwU3RydWN0dXJlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggZGU1NDY3YzY3OWM4ZWZlMDA4NTFmOTJmMmI5ZTRhMmM1ZDRlNzMyYy4uMDZlMDA5M2IyYjU5
NTRlZGE2NTFjMTRkZGYyZTMxOWZhNjQ2MzZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xMjksOSArMTI5LDYgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgV2F0Y2hwb2ludD4gY2xhc3MgT2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ7CiAKICNkZWZpbmUgRk9SX0VBQ0hfU0lNUExFX0JVSUxUSU5fVFlQRV9XSVRIX0NP
TlNUUlVDVE9SKG1hY3JvKSBcCiAgICAgbWFjcm8oU3RyaW5nLCBzdHJpbmcsIHN0cmluZ09iamVj
dCwgU3RyaW5nT2JqZWN0LCBTdHJpbmcsIG9iamVjdCkgXAotICAgIG1hY3JvKFN5bWJvbCwgc3lt
Ym9sLCBzeW1ib2xPYmplY3QsIFN5bWJvbE9iamVjdCwgU3ltYm9sLCBvYmplY3QpIFwKLSAgICBt
YWNybyhOdW1iZXIsIG51bWJlciwgbnVtYmVyT2JqZWN0LCBOdW1iZXJPYmplY3QsIE51bWJlciwg
b2JqZWN0KSBcCi0gICAgbWFjcm8oQm9vbGVhbiwgYm9vbGVhbiwgYm9vbGVhbk9iamVjdCwgQm9v
bGVhbk9iamVjdCwgQm9vbGVhbiwgb2JqZWN0KSBcCiAgICAgbWFjcm8oRXJyb3IsIGVycm9yLCBl
cnJvciwgRXJyb3JJbnN0YW5jZSwgRXJyb3IsIG9iamVjdCkgXAogICAgIG1hY3JvKE1hcCwgbWFw
LCBtYXAsIEpTTWFwLCBNYXAsIG9iamVjdCkgXAogICAgIG1hY3JvKFNldCwgc2V0LCBzZXQsIEpT
U2V0LCBTZXQsIG9iamVjdCkgXApAQCAtMTQ4LDcgKzE0NSwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBXYXRjaHBvaW50PiBjbGFzcyBPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2lu
dDsKICAgICBtYWNybyhKU0ludGVybmFsUHJvbWlzZSwgaW50ZXJuYWxQcm9taXNlLCBpbnRlcm5h
bFByb21pc2UsIEpTSW50ZXJuYWxQcm9taXNlLCBJbnRlcm5hbFByb21pc2UsIG9iamVjdCkgXAog
CiAjZGVmaW5lIEZPUl9FQUNIX0xBWllfQlVJTFRJTl9UWVBFKG1hY3JvKSBcCisgICAgbWFjcm8o
Qm9vbGVhbiwgYm9vbGVhbiwgYm9vbGVhbk9iamVjdCwgQm9vbGVhbk9iamVjdCwgQm9vbGVhbiwg
b2JqZWN0KSBcCiAgICAgbWFjcm8oRGF0ZSwgZGF0ZSwgZGF0ZSwgRGF0ZUluc3RhbmNlLCBEYXRl
LCBvYmplY3QpIFwKKyAgICBtYWNybyhOdW1iZXIsIG51bWJlciwgbnVtYmVyT2JqZWN0LCBOdW1i
ZXJPYmplY3QsIE51bWJlciwgb2JqZWN0KSBcCisgICAgbWFjcm8oU3ltYm9sLCBzeW1ib2wsIHN5
bWJvbE9iamVjdCwgU3ltYm9sT2JqZWN0LCBTeW1ib2wsIG9iamVjdCkgXAogICAgIERFRklORV9T
VEFOREFSRF9CVUlMVElOKG1hY3JvLCBXZWFrTWFwLCB3ZWFrTWFwKSBcCiAgICAgREVGSU5FX1NU
QU5EQVJEX0JVSUxUSU4obWFjcm8sIFdlYWtTZXQsIHdlYWtTZXQpIFwKIApAQCAtNDU2LDcgKzQ1
NiwxMSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBtYXBTZXRXYXRjaHBvaW50KCkgeyBy
ZXR1cm4gbV9tYXBTZXRXYXRjaHBvaW50OyB9CiAgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0
QWRkV2F0Y2hwb2ludCgpIHsgcmV0dXJuIG1fc2V0QWRkV2F0Y2hwb2ludDsgfQogICAgIElubGlu
ZVdhdGNocG9pbnRTZXQmIGFycmF5U3BlY2llc1dhdGNocG9pbnQoKSB7IHJldHVybiBtX2FycmF5
U3BlY2llc1dhdGNocG9pbnQ7IH0KLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBudW1iZXJUb1N0
cmluZ1dhdGNocG9pbnQoKSB7IHJldHVybiBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludDsgfQor
ICAgIElubGluZVdhdGNocG9pbnRTZXQmIG51bWJlclRvU3RyaW5nV2F0Y2hwb2ludCgpCisgICAg
eworICAgICAgICBSRUxFQVNFX0FTU0VSVChWTTo6Y2FuVXNlSklUKCkpOworICAgICAgICByZXR1
cm4gbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQ7CisgICAgfQogICAgIC8vIElmIHRoaXMgaGFz
bid0IGJlZW4gaW52YWxpZGF0ZWQsIGl0IG1lYW5zIHRoZSBhcnJheSBpdGVyYXRvciBwcm90b2Nv
bAogICAgIC8vIGlzIG5vdCBvYnNlcnZhYmxlIHRvIHVzZXIgY29kZSB5ZXQuCiAgICAgSW5saW5l
V2F0Y2hwb2ludFNldCBtX2FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQ7CkBAIC02MTgs
MTIgKzYyMiwxMiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpOyB9CiAgICAgRnVuY3Rpb25Qcm90
b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKTsgfQogICAgIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICBCb29sZWFuUHJvdG90eXBl
KiBib29sZWFuUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9ib29sZWFuUHJvdG90eXBlLmdl
dCgpOyB9CisgICAgSlNPYmplY3QqIGJvb2xlYW5Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CiAgICAgU3RyaW5nUHJv
dG90eXBlKiBzdHJpbmdQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ1Byb3RvdHlw
ZS5nZXQoKTsgfQotICAgIFN5bWJvbFByb3RvdHlwZSogc3ltYm9sUHJvdG90eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9zeW1ib2xQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICBOdW1iZXJQcm90b3R5cGUq
IG51bWJlclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyUHJvdG90eXBlLmdldCgp
OyB9CisgICAgSlNPYmplY3QqIG51bWJlclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVt
YmVyT2JqZWN0U3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsgfQogICAgIEJpZ0ludFByb3RvdHlw
ZSogYmlnSW50UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9iaWdJbnRQcm90b3R5cGUuZ2V0
KCk7IH0KICAgICBKU09iamVjdCogZGF0ZVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
ZVN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7IH0KKyAgICBKU09iamVjdCogc3ltYm9sUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9zeW1ib2xPYmplY3RTdHJ1Y3R1cmUucHJvdG90eXBlKHRo
aXMpOyB9CiAgICAgUmVnRXhwUHJvdG90eXBlKiByZWdFeHBQcm90b3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKTsgfQogICAgIEVycm9yUHJvdG90eXBlKiBlcnJv
clByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JQcm90b3R5cGUuZ2V0KCk7IH0KICAg
ICBJdGVyYXRvclByb3RvdHlwZSogaXRlcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9CkBAIC02NzEsNyArNjc1LDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAg
IHJldHVybiBvcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+
aW5kZXhpbmdNb2RlKCkgfCBJc0FycmF5KSA9PSBzdHJ1Y3R1cmU7CiAgICAgfQogICAgICAgICAK
LSAgICBTdHJ1Y3R1cmUqIGJvb2xlYW5PYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGJvb2xlYW5P
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLmdldCh0aGlz
KTsgfQogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1
Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFj
a09iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KQEAgLTY4NCw2ICs2ODgsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBT
dHJ1Y3R1cmUqIGdsaWJXcmFwcGVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9n
bGliV3JhcHBlck9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICNlbmRpZgogICAgIFN0cnVj
dHVyZSogZGF0ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVyZS5nZXQo
dGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVy
ZSogbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVsbFBy
b3RvdHlwZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3Ry
dWN0dXJlKiBlcnJvclN0cnVjdHVyZShFcnJvclR5cGUgZXJyb3JUeXBlKSBjb25zdApAQCAtNzM0
LDE0ICs3MzksMTMgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2dldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVj
dHVyZSogbmF0aXZlU3RkRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hdGl2
ZVN0ZEZ1bmN0aW9uU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFByb3BlcnR5T2Zmc2V0IGZ1
bmN0aW9uTmFtZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25OYW1lT2Zmc2V0OyB9
Ci0gICAgU3RydWN0dXJlKiBudW1iZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X251bWJlck9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbnVtYmVyT2Jq
ZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udW1iZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0
KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X21hcFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcmVnRXhwU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdFeHBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IGdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogYXN5bmNGdW5jdGlvblN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogYXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXN5bmNHZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAg
IFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmdPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KLSAgICBTdHJ1Y3R1cmUqIHN5bWJvbE9iamVjdFN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9sT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiBiaWdJbnRPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2JpZ0ludE9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogaXRlcmF0b3JS
ZXN1bHRPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yUmVzdWx0T2Jq
ZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlQnl0ZVN0cmVhbUludGVybmFscy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanMKaW5kZXggYTY4NmJlNDc5YmRhNWJhOWQ1
OGM1OWMzZWQwNDMzMTFmZjE5NGU1ZS4uNzc4NjVmMTM0MGMxMTBlYjRlZWQzN2VhMGI2NjUwODQz
ZTAwNjI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlQnl0ZVN0cmVhbUludGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC01NCw3ICs1NCw3IEBAIGZ1
bmN0aW9uIHByaXZhdGVJbml0aWFsaXplUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcihzdHJl
YW0sIHVuZGVybHlpbmdCeXRlU291CiAgICAgbGV0IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSA9IHVu
ZGVybHlpbmdCeXRlU291cmNlLmF1dG9BbGxvY2F0ZUNodW5rU2l6ZTsKICAgICBpZiAoYXV0b0Fs
bG9jYXRlQ2h1bmtTaXplICE9PSBAdW5kZWZpbmVkKSB7CiAgICAgICAgIGF1dG9BbGxvY2F0ZUNo
dW5rU2l6ZSA9IEB0b051bWJlcihhdXRvQWxsb2NhdGVDaHVua1NpemUpOwotICAgICAgICBpZiAo
YXV0b0FsbG9jYXRlQ2h1bmtTaXplIDw9IDAgfHwgYXV0b0FsbG9jYXRlQ2h1bmtTaXplID09PSBA
TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIHx8IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSA9PT0gQE51
bWJlci5ORUdBVElWRV9JTkZJTklUWSkKKyAgICAgICAgaWYgKGF1dG9BbGxvY2F0ZUNodW5rU2l6
ZSA8PSAwIHx8IGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSA9PT0gQEluZmluaXR5IHx8IGF1dG9BbGxv
Y2F0ZUNodW5rU2l6ZSA9PT0gLUBJbmZpbml0eSkKICAgICAgICAgICAgIEB0aHJvd1JhbmdlRXJy
b3IoImF1dG9BbGxvY2F0ZUNodW5rU2l6ZSB2YWx1ZSBpcyBuZWdhdGl2ZSBvciBlcXVhbCB0byBw
b3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZpbml0eSIpOwogICAgIH0KICAgICBAcHV0QnlJZERpcmVj
dFByaXZhdGUodGhpcywgImF1dG9BbGxvY2F0ZUNodW5rU2l6ZSIsIGF1dG9BbGxvY2F0ZUNodW5r
U2l6ZSk7CkBAIC0zODEsNyArMzgxLDcgQEAgZnVuY3Rpb24gcmVhZGFibGVCeXRlU3RyZWFtQ29u
dHJvbGxlclJlc3BvbmQoY29udHJvbGxlciwgYnl0ZXNXcml0dGVuKQogCiAgICAgYnl0ZXNXcml0
dGVuID0gQHRvTnVtYmVyKGJ5dGVzV3JpdHRlbik7CiAKLSAgICBpZiAoQGlzTmFOKGJ5dGVzV3Jp
dHRlbikgfHwgYnl0ZXNXcml0dGVuID09PSBATnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIHx8IGJ5
dGVzV3JpdHRlbiA8IDAgKQorICAgIGlmIChAaXNOYU4oYnl0ZXNXcml0dGVuKSB8fCBieXRlc1dy
aXR0ZW4gPT09IEBJbmZpbml0eSB8fCBieXRlc1dyaXR0ZW4gPCAwICkKICAgICAgICAgQHRocm93
UmFuZ2VFcnJvcigiYnl0ZXNXcml0dGVuIGhhcyBhbiBpbmNvcnJlY3QgdmFsdWUiKTsKIAogICAg
IEBhc3NlcnQoQGdldEJ5SWREaXJlY3RQcml2YXRlKGNvbnRyb2xsZXIsICJwZW5kaW5nUHVsbElu
dG9zIikubGVuZ3RoID4gMCk7Cg==
</data>
<flag name="review"
          id="378822"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>