<?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>153174</bug_id>
          
          <creation_ts>2016-01-15 19:48:26 -0800</creation_ts>
          <short_desc>Remove GraphicsContext::drawConvexPolygon() and GraphicsContext::clipConvexPolygon()</short_desc>
          <delta_ts>2016-01-20 21:19: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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1156087</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-15 19:48:26 -0800</bug_when>
    <thetext>Remove GraphicsContext::drawConvexPolygon() and GraphicsContext::clipConvexPolygon()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156089</commentid>
    <comment_count>1</comment_count>
      <attachid>269139</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-15 19:52:14 -0800</bug_when>
    <thetext>Created attachment 269139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156090</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-15 19:53:08 -0800</bug_when>
    <thetext>Attachment 269139 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderElement.cpp:2061:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2062:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2066:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2069:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2074:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2075:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2078:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2079:  Extra space after (  [whitespace/parens] [2]
Total errors found: 8 in 11 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>1156103</commentid>
    <comment_count>3</comment_count>
      <attachid>269144</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-15 20:32:07 -0800</bug_when>
    <thetext>Created attachment 269144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156104</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-15 20:34:45 -0800</bug_when>
    <thetext>Attachment 269144 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderElement.cpp:2061:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2062:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2066:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2069:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2074:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2075:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2078:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2079:  Extra space after (  [whitespace/parens] [2]
Total errors found: 8 in 12 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>1156181</commentid>
    <comment_count>5</comment_count>
      <attachid>269173</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-16 09:16:00 -0800</bug_when>
    <thetext>Created attachment 269173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156183</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-16 09:18:06 -0800</bug_when>
    <thetext>Attachment 269173 did not pass style-queue:


ERROR: Source/WebCore/rendering/RenderElement.cpp:2061:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2062:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2066:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2069:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2074:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2075:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2078:  Extra space after (  [whitespace/parens] [2]
ERROR: Source/WebCore/rendering/RenderElement.cpp:2079:  Extra space after (  [whitespace/parens] [2]
Total errors found: 8 in 12 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>1156247</commentid>
    <comment_count>7</comment_count>
      <attachid>269173</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-01-16 18:33:48 -0800</bug_when>
    <thetext>Comment on attachment 269173
Patch

Nice simplification!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157206</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-20 21:19:36 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/195170</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269139</attachid>
            <date>2016-01-15 19:52:14 -0800</date>
            <delta_ts>2016-01-15 20:32:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153174-20160115195144.patch</filename>
            <type>text/plain</type>
            <size>46975</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjEyMjViNTJmYzBiNzFk
ZGJjMjc2NDk4MjQwNWYzY2JhMzYwNjE4NS4uNGJiYjFhZmNjNmIyNWRkOTRlODVkMjlhMWMzNjk4
NTdlNWJhYjY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE2LTAxLTE1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBHcmFw
aGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKCkgYW5kIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cENvbnZleFBvbHlnb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUzMTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbigpIGFuZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBDb252ZXhQb2x5Z29uKCkgd2VyZQorICAgICAgICBwb29ybHkgbmFtZWQg
KG5vbi1jb252ZXggcG9seWdvbnMgYXJlIGFsbG93ZWQpLCBhbmQganVzdCBzeW50YWN0aWMgc3Vn
YXIgb3ZlcgorICAgICAgICBjbGlwUGF0aCgpIGFuZCBkcmF3UGF0aCgpLgorICAgICAgICAKKyAg
ICAgICAgUmVtb3ZlIHRoZW0sIGJ1dCBhZGQgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBjcmVh
dGUgYSBQYXRoIGZyb20gYSBWZWN0b3Igb2YgCisgICAgICAgIHBvaW50cy4gRm9yIENHLCB3ZSBj
YW4gdXNlIHRoZSBtb3JlIGVmZmljaWVudCBDR1BhdGhBZGRMaW5lcygpLgorICAgICAgICAKKyAg
ICAgICAgQWRkIFRleHRTdHJlYW0gZHVtcGluZyBmb3IgUGF0aC4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cG9seWdvblBhdGhGcm9tUG9p
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmR1bXApOgorICAgICAgICAoV2ViQ29yZTo6
b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxp
YXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ29udmV4UG9seWdvblRvQ29udGV4dCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcENvbnZl
eFBvbHlnb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZENvbnZleFBvbHlnb25Ub1Bh
dGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29u
dmV4UG9seWdvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmNsaXBDb252ZXhQb2x5Z29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cG9seWdvblBhdGhGcm9t
UG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6Om1vdmVUbyk6CisgICAgICAgIChXZWJD
b3JlOjpQYXRoOjphZGRMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRkUXVhZEN1
cnZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRkQmV6aWVyQ3VydmVUbyk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXRoOjphZGRBcmNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpDbGlwQ29udmV4UG9seWdvbjo6Q2xpcENvbnZleFBvbHlnb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBDb252ZXhQb2x5Z29u
OjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0
b3I8PCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YWRkQ29udmV4
UG9seWdvblRvUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0NvbnZleFBvbHlnb246OkRyYXdDb252ZXhQb2x5Z29uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Q29udmV4UG9seWdvbjo6bG9jYWxCb3VuZHMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdDb252ZXhQb2x5Z29u
OjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpD
bGlwQ29udmV4UG9seWdvbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpDbGlwQ29udmV4UG9seWdvbjo6cG9pbnRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwQ29udmV4UG9seWdvbjo6YW50aWFsaWFzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Q29udmV4UG9seWdvbjo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Q29u
dmV4UG9seWdvbjo6cG9pbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3Q29udmV4UG9seWdvbjo6YW50aWFsaWFzZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0NvbnZleFBvbHln
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpj
bGlwQ29udmV4UG9seWdvbik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6ZHJhd0xp
bmVGb3JCb3hTaWRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29y
YXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25z
KToKKwogMjAxNi0wMS0xMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIGEgd2F5IHRvIHRlc3QgZGlzcGxheS1saXN0IGRyYXdpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCBjMDg5NTU4MzJiNmYzNTVjZjIxYWQ1ZDMzYzRhODA0NGE1OTYzNGFmLi40
ZDg0MWFjMjFhYzNmY2JmMDdhYzM1NDNhNWIxNTIzZWYyMjdhZjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYtMDEtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnZl
eFBvbHlnb24oKSBhbmQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbigpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxNzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdDb252ZXhQb2x5Z29uKCkgYW5kIEdyYXBoaWNzQ29udGV4dDo6Y2xpcENvbnZleFBv
bHlnb24oKSB3ZXJlCisgICAgICAgIHBvb3JseSBuYW1lZCAobm9uLWNvbnZleCBwb2x5Z29ucyBh
cmUgYWxsb3dlZCksIGFuZCBqdXN0IHN5bnRhY3RpYyBzdWdhciBvdmVyCisgICAgICAgIGNsaXBQ
YXRoKCkgYW5kIGRyYXdQYXRoKCkuCisgICAgICAgIAorICAgICAgICBSZW1vdmUgdGhlbSwgYnV0
IGFkZCBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIFBhdGggZnJvbSBhIFZlY3Rv
ciBvZiAKKyAgICAgICAgcG9pbnRzLiBGb3IgQ0csIHdlIGNhbiB1c2UgdGhlIG1vcmUgZWZmaWNp
ZW50IENHUGF0aEFkZExpbmVzKCkuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKEhVRFNsaWRlcjo6ZHJhdyk6CisKIDIwMTYtMDEtMDUgIFBlciBB
cm5lIFZvbGxhbiAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gRG93
bmxvYWQgc2hvdWxkIHVzZSBoZWFkZXIgdmFsdWVzIGZyb20gcHJvdmlkZWQgcmVxdWVzdCBvYmpl
Y3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCmluZGV4IGU2Mzc3YjgwZDk3ZjRjY2UxOTIzZTM0ZTFmMTg3ZWY1NGQwYjFjYTYuLjRm
ZmE3YzZkNjAyODJjYWJlNTkzNWM4MzE0YWY1NDc4YmU1OGEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zNDIsNyAr
MzQyLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3Qm
KTsKICAgICB2b2lkIGRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENv
bG9yJiBlbGxpcHNlQ29sb3IsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcik7Ci0gICAgdm9pZCBk
cmF3Q29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiwgYm9v
bCBzaG91bGRBbnRpYWxpYXMgPSBmYWxzZSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZp
bGxQYXRoKGNvbnN0IFBhdGgmKTsKICAgICB2b2lkIHN0cm9rZVBhdGgoY29uc3QgUGF0aCYpOwpA
QCAtMzg4LDcgKzM4Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBPdXQoY29uc3QgRmxvYXRS
ZWN0Jik7CiAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYpOwogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlID0gUlVMRV9FVkVO
T0REKTsKLSAgICB2b2lkIGNsaXBDb252ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0
IEZsb2F0UG9pbnQqLCBib29sIGFudGlhbGlhcyA9IHRydWUpOwogICAgIHZvaWQgY2xpcFRvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICAKICAgICBJbnRS
ZWN0IGNsaXBCb3VuZHMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aC5jcHAKaW5kZXggZjA4OGVmZmM0MWJkNDViMDg1MzZkNWI2MWIyMzZhZTgzYTFhMmFlNS4u
MDFjNjIzZTY3MDAxOGUxZjM4MDI4ZmY4YTYwZDNmMGI4MTIyZWVlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAj
aW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVk
ZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTE2MiwxMCArMTYz
LDYxIEBAIHZvaWQgUGF0aDo6YWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMCiB9CiAKICNpZiAhVVNFKENHKQorUGF0aCBQ
YXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQ+JiBwb2lu
dHMpCit7CisgICAgUGF0aCBwYXRoOworICAgIGlmIChwb2ludHMuc2l6ZSgpIDwgMikKKyAgICAg
ICAgcmV0dXJuIHBhdGg7CisKKyAgICBwYXRoLm1vdmVUbyhwb2ludHNbMF0pOworICAgIGZvciAo
c2l6ZV90IGkgPSAxOyBpIDwgcG9pbnRzLnNpemUoKTsgKytpKQorICAgICAgICBwYXRoLmFkZExp
bmVUbyhwb2ludHNbaV0pOworCisgICAgcGF0aC5jbG9zZVN1YnBhdGgoKTsKKyAgICByZXR1cm4g
cGF0aDsKK30KKwogRmxvYXRSZWN0IFBhdGg6OmZhc3RCb3VuZGluZ1JlY3QoKSBjb25zdAogewog
ICAgIHJldHVybiBib3VuZGluZ1JlY3QoKTsKIH0KICNlbmRpZgogCisjaWZuZGVmIE5ERUJVRwor
dm9pZCBQYXRoOjpkdW1wKCkgY29uc3QKK3sKKyAgICBUZXh0U3RyZWFtIHN0cmVhbTsKKyAgICBz
dHJlYW0gPDwgKnRoaXM7CisgICAgV1RGTG9nQWx3YXlzKCIlcyIsIHN0cmVhbS5yZWxlYXNlKCku
dXRmOCgpLmRhdGEoKSk7Cit9CisjZW5kaWYKKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiBzdHJlYW0sIGNvbnN0IFBhdGgmIHBhdGgpCit7CisgICAgVGV4dFN0cmVhbTo6R3Jv
dXBTY29wZSBncm91cChzdHJlYW0pOworICAgIHN0cmVhbSA8PCAicGF0aCAiIDw8ICZwYXRoOwor
CisgICAgcGF0aC5hcHBseShbJnN0cmVhbV0oY29uc3QgUGF0aEVsZW1lbnQmIGVsZW1lbnQpIHsK
KyAgICAgICAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHsKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVu
dE1vdmVUb1BvaW50OiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMSB2YWx1ZS4K
KyAgICAgICAgICAgIHN0cmVhbSA8PCAiIG1vdmUgdG8gIiA8PCBlbGVtZW50LnBvaW50c1swXTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkTGluZVRvUG9p
bnQ6IC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVlLgorICAgICAgICAg
ICAgc3RyZWFtIDw8ICIgYWRkIGxpbmUgdG8gIiA8PCBlbGVtZW50LnBvaW50c1swXTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2lu
dDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDIgdmFsdWVzLgorICAgICAgICAg
ICAgc3RyZWFtIDw8ICIgYWRkIHF1YWQgY3VydmUgdG8gIiA8PCBlbGVtZW50LnBvaW50c1swXSA8
PCAiICIgPDwgZWxlbWVudC5wb2ludHNbMV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2ls
bCBjb250YWluIDMgdmFsdWVzLgorICAgICAgICAgICAgc3RyZWFtIDw8ICIgYWRkIGN1cnZlIHRv
ICIgPDwgZWxlbWVudC5wb2ludHNbMF0gPDwgIiAiIDw8IGVsZW1lbnQucG9pbnRzWzFdIDw8ICIg
IiA8PCBlbGVtZW50LnBvaW50c1syXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFBhdGhFbGVtZW50Q2xvc2VTdWJwYXRoOiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRh
aW4gbm8gdmFsdWVzLgorICAgICAgICAgICAgc3RyZWFtIDw8ICIgY2xvc2Ugc3VicGF0aCI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0pOworICAgIAorICAgIHJldHVybiBz
dHJlYW07Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAppbmRl
eCBkMzdmOTAwYTllZTllOTZlNzZiMTkwNjEwODU3MWEwZjlhZDY1YWU4Li44M2RjYjE0NTRjODA2
MGUxM2E3MzJkYmU3MTMyZTZmYWVkMmQ5YjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgVVNFKENHKQogCkBAIC01MCw3ICs1MSw3IEBAIHR5
cGVkZWYgV2ViQ29yZTo6Q2Fpcm9QYXRoIFBsYXRmb3JtUGF0aDsKICNlbGlmIFVTRShXSU5HREkp
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBQbGF0Zm9ybVBhdGg7CitjbGFzcyBQ
bGF0Zm9ybVBhdGg7CiB9CiB0eXBlZGVmIFdlYkNvcmU6OlBsYXRmb3JtUGF0aCBQbGF0Zm9ybVBh
dGg7CiAKQEAgLTcyLDYgKzczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBh
dGhUcmF2ZXJzYWxTdGF0ZTsKICAgICBjbGFzcyBSb3VuZGVkUmVjdDsKICAgICBjbGFzcyBTdHJv
a2VTdHlsZUFwcGxpZXI7CisgICAgY2xhc3MgVGV4dFN0cmVhbTsKIAogICAgIGVudW0gUGF0aEVs
ZW1lbnRUeXBlIHsKICAgICAgICAgUGF0aEVsZW1lbnRNb3ZlVG9Qb2ludCwgLy8gVGhlIHBvaW50
cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCkBAIC0xMDIsNiArMTA0LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIFBhdGgoY29uc3QgUGF0aCYp
OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXRoJiBvcGVyYXRvcj0oY29uc3QgUGF0aCYpOwor
ICAgICAgICAKKyAgICAgICAgc3RhdGljIFBhdGggcG9seWdvblBhdGhGcm9tUG9pbnRzKGNvbnN0
IFZlY3RvcjxGbG9hdFBvaW50PiYpOwogCiAgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgRmxv
YXRQb2ludCYsIFdpbmRSdWxlIHJ1bGUgPSBSVUxFX05PTlpFUk8pIGNvbnN0OwogICAgICAgICBi
b29sIHN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciosIGNvbnN0IEZsb2F0UG9pbnQm
KSBjb25zdDsKQEAgLTE2NCwxMCArMTY4LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBwbGF0Zm9ybUFkZFBhdGhGb3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRS
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21SaWdodFJhZGl1cyk7CiAjZW5kaWYKIAorI2lmbmRlZiBOREVCVUcKKyAgICAgICAg
dm9pZCBkdW1wKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFBsYXRm
b3JtUGF0aFB0ciBtX3BhdGg7CiAgICAgfTsKIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgUGF0aCYpOworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCmluZGV4IGMwNzQ0YjAwNzgxMzFhMjY4YTFjZTk5MzBjZWE1MWI0OTNkMmM5NTIu
LmIwMDM2ZmQ2NWUyNGE4YTM1ODc5MzJkNThhOTAzMzUyODQzNzc0YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKQEAgLTc3LDE0ICs3Nyw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBm
aWxsUmVjdFdpdGhDb2xvcihjYWlyb190KiBjciwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDCiAgICAgY2Fpcm9fZmlsbChjcik7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZENvbnZleFBvbHln
b25Ub0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgc2l6ZV90IG51bVBvaW50cywgY29uc3QgRmxv
YXRQb2ludCogcG9pbnRzKQotewotICAgIGNhaXJvX21vdmVfdG8oY29udGV4dCwgcG9pbnRzWzBd
LngoKSwgcG9pbnRzWzBdLnkoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBudW1Qb2lu
dHM7IGkrKykKLSAgICAgICAgY2Fpcm9fbGluZV90byhjb250ZXh0LCBwb2ludHNbaV0ueCgpLCBw
b2ludHNbaV0ueSgpKTsKLSAgICBjYWlyb19jbG9zZV9wYXRoKGNvbnRleHQpOwotfQotCiBlbnVt
IFBhdGhEcmF3aW5nU3R5bGUgeyAKICAgICBGaWxsID0gMSwKICAgICBTdHJva2UgPSAyLApAQCAt
NDM1LDY5ICs0MjcsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2UoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogICAgICAgICBjYWlyb19uZXdfcGF0aChjcik7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbihzaXplX3QgbnBvaW50cywgY29uc3Qg
RmxvYXRQb2ludCogcG9pbnRzLCBib29sIHNob3VsZEFudGlhbGlhcykKLXsKLSAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobnBvaW50cyA8PSAx
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdDb252ZXhQb2x5Z29uKG5wb2ludHMsIHBvaW50cywg
c2hvdWxkQW50aWFsaWFzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhaXJvX3Qq
IGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Ci0KLSAgICBjYWlyb19zYXZlKGNyKTsKLSAg
ICBjYWlyb19zZXRfYW50aWFsaWFzKGNyLCBzaG91bGRBbnRpYWxpYXMgPyBDQUlST19BTlRJQUxJ
QVNfREVGQVVMVCA6IENBSVJPX0FOVElBTElBU19OT05FKTsKLSAgICBhZGRDb252ZXhQb2x5Z29u
VG9Db250ZXh0KGNyLCBucG9pbnRzLCBwb2ludHMpOwotCi0gICAgaWYgKGZpbGxDb2xvcigpLmFs
cGhhKCkpIHsKLSAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwgZmlsbENvbG9yKCkp
OwotICAgICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBDQUlST19GSUxMX1JVTEVfRVZFTl9P
REQpOwotICAgICAgICBjYWlyb19maWxsX3ByZXNlcnZlKGNyKTsKLSAgICB9Ci0KLSAgICBpZiAo
c3Ryb2tlU3R5bGUoKSAhPSBOb1N0cm9rZSkgewotICAgICAgICBzZXRTb3VyY2VSR0JBRnJvbUNv
bG9yKGNyLCBzdHJva2VDb2xvcigpKTsKLSAgICAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgoY3Is
IHN0cm9rZVRoaWNrbmVzcygpKTsKLSAgICAgICAgY2Fpcm9fc3Ryb2tlKGNyKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwotCi0gICAgY2Fpcm9fcmVzdG9yZShjcik7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVt
UG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMsIGJvb2wgYW50aWFsaWFzZWQpCi17Ci0g
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG51
bVBvaW50cyA8PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkg
ewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsaXBDb252ZXhQb2x5Z29uKG51bVBv
aW50cywgcG9pbnRzLCBhbnRpYWxpYXNlZCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwotCi0gICAgY2Fpcm9fbmV3
X3BhdGgoY3IpOwotICAgIGNhaXJvX2ZpbGxfcnVsZV90IHNhdmVkRmlsbFJ1bGUgPSBjYWlyb19n
ZXRfZmlsbF9ydWxlKGNyKTsKLSAgICBjYWlyb19hbnRpYWxpYXNfdCBzYXZlZEFudGlhbGlhc1J1
bGUgPSBjYWlyb19nZXRfYW50aWFsaWFzKGNyKTsKLQotICAgIGNhaXJvX3NldF9hbnRpYWxpYXMo
Y3IsIGFudGlhbGlhc2VkID8gQ0FJUk9fQU5USUFMSUFTX0RFRkFVTFQgOiBDQUlST19BTlRJQUxJ
QVNfTk9ORSk7Ci0gICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX1dJ
TkRJTkcpOwotICAgIGFkZENvbnZleFBvbHlnb25Ub0NvbnRleHQoY3IsIG51bVBvaW50cywgcG9p
bnRzKTsKLSAgICBjYWlyb19jbGlwKGNyKTsKLQotICAgIGNhaXJvX3NldF9hbnRpYWxpYXMoY3Is
IHNhdmVkQW50aWFsaWFzUnVsZSk7Ci0gICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRG
aWxsUnVsZSk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRo
JiBwYXRoKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0aC5pc0VtcHR5KCkp
CkBAIC0xMjk0LDcgKzEyMjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1T
aG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCiAKICAgICAvLyBXaGVuIHRydWUsIHVzZSB0aGUg
ZGVmYXVsdCBDYWlybyBiYWNrZW5kIGFudGlhbGlhcyBtb2RlICh1c3VhbGx5IHRoaXMKICAgICAv
LyBlbmFibGVzIHN0YW5kYXJkICdncmF5c2NhbGUnIGFudGlhbGlhc2luZyk7IGZhbHNlIHRvIGV4
cGxpY2l0bHkgZGlzYWJsZQotICAgIC8vIGFudGlhbGlhc2luZy4gVGhpcyBpcyB0aGUgc2FtZSBz
dHJhdGVneSBhcyB1c2VkIGluIGRyYXdDb252ZXhQb2x5Z29uKCkuCisgICAgLy8gYW50aWFsaWFz
aW5nLgogICAgIGNhaXJvX3NldF9hbnRpYWxpYXMocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGVu
YWJsZSA/IENBSVJPX0FOVElBTElBU19ERUZBVUxUIDogQ0FJUk9fQU5USUFMSUFTX05PTkUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMWM2Yjk0YTBkNmEwM2E2OTUwNDUxYWY5N2E0MWI0
MDAxN2NlNmY3OC4uM2JiOTIxM2M3NjNmMGE3NmNmOTlmZWIzMzc0OTk5NjA0ZmUzZjUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcApAQCAtNTMyLDY4ICs1MzIsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGRyYXdQYXRoKHBhdGgp
OwogfQogCi1zdGF0aWMgdm9pZCBhZGRDb252ZXhQb2x5Z29uVG9QYXRoKFBhdGgmIHBhdGgsIHNp
emVfdCBudW1iZXJPZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzKQotewotICAgIEFT
U0VSVChudW1iZXJPZlBvaW50cyA+IDApOwotCi0gICAgcGF0aC5tb3ZlVG8ocG9pbnRzWzBdKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG51bWJlck9mUG9pbnRzOyArK2kpCi0gICAgICAg
IHBhdGguYWRkTGluZVRvKHBvaW50c1tpXSk7Ci0gICAgcGF0aC5jbG9zZVN1YnBhdGgoKTsKLX0K
LQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKHNpemVfdCBudW1iZXJP
ZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzLCBib29sIGFudGlhbGlhc2VkKQotewot
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChu
dW1iZXJPZlBvaW50cyA8PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXNSZWNvcmRp
bmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdDb252ZXhQb2x5Z29u
KG51bWJlck9mUG9pbnRzLCBwb2ludHMsIGFudGlhbGlhc2VkKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0K
LSAgICBpZiAoYW50aWFsaWFzZWQgIT0gc2hvdWxkQW50aWFsaWFzKCkpCi0gICAgICAgIENHQ29u
dGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBhbnRpYWxpYXNlZCk7Ci0KLSAgICBQYXRo
IHBhdGg7Ci0gICAgYWRkQ29udmV4UG9seWdvblRvUGF0aChwYXRoLCBudW1iZXJPZlBvaW50cywg
cG9pbnRzKTsKLSAgICBkcmF3UGF0aChwYXRoKTsKLQotICAgIGlmIChhbnRpYWxpYXNlZCAhPSBz
aG91bGRBbnRpYWxpYXMoKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNv
bnRleHQsIHNob3VsZEFudGlhbGlhcygpKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNs
aXBDb252ZXhQb2x5Z29uKHNpemVfdCBudW1iZXJPZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCog
cG9pbnRzLCBib29sIGFudGlhbGlhcykKLXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobnVtYmVyT2ZQb2ludHMgPD0gMSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlz
dFJlY29yZGVyLT5jbGlwQ29udmV4UG9seWdvbihudW1iZXJPZlBvaW50cywgcG9pbnRzLCBhbnRp
YWxpYXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0dDb250ZXh0UmVmIGNvbnRl
eHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLQotICAgIGlmIChhbnRpYWxpYXMgIT0gc2hvdWxkQW50
aWFsaWFzKCkpCi0gICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBh
bnRpYWxpYXMpOwotCi0gICAgUGF0aCBwYXRoOwotICAgIGFkZENvbnZleFBvbHlnb25Ub1BhdGgo
cGF0aCwgbnVtYmVyT2ZQb2ludHMsIHBvaW50cyk7Ci0gICAgY2xpcFBhdGgocGF0aCwgUlVMRV9O
T05aRVJPKTsKLQotICAgIGlmIChhbnRpYWxpYXMgIT0gc2hvdWxkQW50aWFsaWFzKCkpCi0gICAg
ICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBzaG91bGRBbnRpYWxpYXMo
KSk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4oKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUGF0aENHLmNwcAppbmRleCAxNGJjZTkzY2VlMGQ1ODg5ZjlmZjBkYjE3NWIw
NzQyNjYxN2QyMDk5Li43MDcxMTJkY2FkMjg3NjczZDI4YjRkYjJlZTY3MDc3NWJkZmMzNDcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKQEAg
LTczLDYgKzczLDIyIEBAIHN0YXRpYyBpbmxpbmUgQ0dDb250ZXh0UmVmIHNjcmF0Y2hDb250ZXh0
KCkKICAgICByZXR1cm4gY29udGV4dDsKIH0KIAorUGF0aCBQYXRoOjpwb2x5Z29uUGF0aEZyb21Q
b2ludHMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQ+JiBwb2ludHMpCit7CisgICAgUGF0aCBwYXRo
OworICAgIGlmIChwb2ludHMuc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0dXJuIHBhdGg7CisKKyAg
ICBWZWN0b3I8Q0dQb2ludCwgMzI+IGNnUG9pbnRzOworICAgIGNnUG9pbnRzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkocG9pbnRzLnNpemUoKSAtIDEpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcG9pbnRzLnNpemUoKTsgKytpKQorICAgICAgICBjZ1BvaW50cy51bmNoZWNrZWRBcHBlbmQo
cG9pbnRzW2ldKTsKKworICAgIENHUGF0aEFkZExpbmVzKHBhdGguZW5zdXJlUGxhdGZvcm1QYXRo
KCksIG51bGxwdHIsIGNnUG9pbnRzLmRhdGEoKSwgY2dQb2ludHMuc2l6ZSgpKTsKKyAgICBwYXRo
LmNsb3NlU3VicGF0aCgpOworICAgIHJldHVybiBwYXRoOworfQorCiBQYXRoOjpQYXRoKCkKICAg
ICA6IG1fcGF0aChudWxscHRyKQogewpAQCAtMjQ1LDI3ICsyNjEsMjcgQEAgRmxvYXRSZWN0IFBh
dGg6OnN0cm9rZUJvdW5kaW5nUmVjdChTdHJva2VTdHlsZUFwcGxpZXIqIGFwcGxpZXIpIGNvbnN0
CiAKIHZvaWQgUGF0aDo6bW92ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQogewotICAgIENH
UGF0aE1vdmVUb1BvaW50KGVuc3VyZVBsYXRmb3JtUGF0aCgpLCAwLCBwb2ludC54KCksIHBvaW50
LnkoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQoZW5zdXJlUGxhdGZvcm1QYXRoKCksIG51bGxw
dHIsIHBvaW50LngoKSwgcG9pbnQueSgpKTsKIH0KIAogdm9pZCBQYXRoOjphZGRMaW5lVG8oY29u
c3QgRmxvYXRQb2ludCYgcCkKIHsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChlbnN1cmVQbGF0
Zm9ybVBhdGgoKSwgMCwgcC54KCksIHAueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChl
bnN1cmVQbGF0Zm9ybVBhdGgoKSwgbnVsbHB0ciwgcC54KCksIHAueSgpKTsKIH0KIAogdm9pZCBQ
YXRoOjphZGRRdWFkQ3VydmVUbyhjb25zdCBGbG9hdFBvaW50JiBjcCwgY29uc3QgRmxvYXRQb2lu
dCYgcCkKIHsKLSAgICBDR1BhdGhBZGRRdWFkQ3VydmVUb1BvaW50KGVuc3VyZVBsYXRmb3JtUGF0
aCgpLCAwLCBjcC54KCksIGNwLnkoKSwgcC54KCksIHAueSgpKTsKKyAgICBDR1BhdGhBZGRRdWFk
Q3VydmVUb1BvaW50KGVuc3VyZVBsYXRmb3JtUGF0aCgpLCBudWxscHRyLCBjcC54KCksIGNwLnko
KSwgcC54KCksIHAueSgpKTsKIH0KIAogdm9pZCBQYXRoOjphZGRCZXppZXJDdXJ2ZVRvKGNvbnN0
IEZsb2F0UG9pbnQmIGNwMSwgY29uc3QgRmxvYXRQb2ludCYgY3AyLCBjb25zdCBGbG9hdFBvaW50
JiBwKQogewotICAgIENHUGF0aEFkZEN1cnZlVG9Qb2ludChlbnN1cmVQbGF0Zm9ybVBhdGgoKSwg
MCwgY3AxLngoKSwgY3AxLnkoKSwgY3AyLngoKSwgY3AyLnkoKSwgcC54KCksIHAueSgpKTsKKyAg
ICBDR1BhdGhBZGRDdXJ2ZVRvUG9pbnQoZW5zdXJlUGxhdGZvcm1QYXRoKCksIG51bGxwdHIsIGNw
MS54KCksIGNwMS55KCksIGNwMi54KCksIGNwMi55KCksIHAueCgpLCBwLnkoKSk7CiB9CiAKIHZv
aWQgUGF0aDo6YWRkQXJjVG8oY29uc3QgRmxvYXRQb2ludCYgcDEsIGNvbnN0IEZsb2F0UG9pbnQm
IHAyLCBmbG9hdCByYWRpdXMpCiB7Ci0gICAgQ0dQYXRoQWRkQXJjVG9Qb2ludChlbnN1cmVQbGF0
Zm9ybVBhdGgoKSwgMCwgcDEueCgpLCBwMS55KCksIHAyLngoKSwgcDIueSgpLCByYWRpdXMpOwor
ICAgIENHUGF0aEFkZEFyY1RvUG9pbnQoZW5zdXJlUGxhdGZvcm1QYXRoKCksIG51bGxwdHIsIHAx
LngoKSwgcDEueSgpLCBwMi54KCksIHAyLnkoKSwgcmFkaXVzKTsKIH0KIAogdm9pZCBQYXRoOjpw
bGF0Zm9ybUFkZFBhdGhGb3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1
cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJv
dHRvbVJpZ2h0UmFkaXVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4
IDBjYWJlMTVlMGM2OGVkODA4ZmJjZjFkYmUzYzVkNDhkNjg4NzhkNWQuLjJlNDkzYWIxOGMwMzRk
MjJjMzgzY2U3NzNlNjE1ZmE4OTc3YjYzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5jcHAKQEAgLTc5LDggKzc5LDYgQEAgc2l6ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNvbnN0
IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8Q2xpcE91dFRvUGF0
aD4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICByZXR1cm4g
c2l6ZW9mKGRvd25jYXN0PENsaXBQYXRoPihpdGVtKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cENvbnZleFBvbHlnb246Ci0gICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8Q2xpcENvbnZl
eFBvbHlnb24+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAg
ICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdHbHlwaHM+KGl0ZW0pKTsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3SW1hZ2U6CkBAIC0xMDUsOCArMTAzLDYgQEAgc2l6ZV90IEl0ZW06OnNpemVJ
bkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8
RHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcj4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdFbGxpcHNlOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdFbGxpcHNlPihp
dGVtKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0NvbnZleFBvbHlnb246Ci0gICAgICAgIHJl
dHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0NvbnZleFBvbHlnb24+KGl0ZW0pKTsKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGF0aDoKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3
UGF0aD4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgpAQCAt
MzQ4LDI2ICszNDQsNiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgQ2xpcFBhdGgmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCi1DbGlwQ29u
dmV4UG9seWdvbjo6Q2xpcENvbnZleFBvbHlnb24oc2l6ZV90IG51bWJlck9mUG9pbnRzLCBjb25z
dCBGbG9hdFBvaW50KiBwb2ludHMsIGJvb2wgYW50aWFsaWFzZWQpCi0gICAgOiBJdGVtKEl0ZW1U
eXBlOjpDbGlwQ29udmV4UG9seWdvbikKLSAgICAsIG1fYW50aWFsaWFzKGFudGlhbGlhc2VkKQot
ewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZQb2ludHM7ICsraSkKLSAgICAg
ICAgbV9wb2ludHMuYXBwZW5kKHBvaW50c1tpXSk7Ci19Ci0KLXZvaWQgQ2xpcENvbnZleFBvbHln
b246OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKLXsKLSAgICBjb250ZXh0
LmNsaXBDb252ZXhQb2x5Z29uKG1fcG9pbnRzLnNpemUoKSwgbV9wb2ludHMuZGF0YSgpLCBtX2Fu
dGlhbGlhcyk7Ci19Ci0KLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBDbGlwQ29udmV4UG9seWdvbiYgaXRlbSkKLXsKLSAgICB0cy5kdW1wUHJvcGVy
dHkoInBvaW50cyIsIGl0ZW0ucG9pbnRzKCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiYW50aWFs
aWFzIiwgaXRlbS5hbnRpYWxpYXMoKSk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiBEcmF3R2x5cGhz
OjpEcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGds
eXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQs
IGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9jYWxB
bmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiAgICAgOiBEcmF3aW5nSXRl
bShJdGVtVHlwZTo6RHJhd0dseXBocykKICAgICAsIG1fZm9udChjb25zdF9jYXN0PEZvbnQmPihm
b250KSkKQEAgLTY4Miw0NyArNjU4LDYgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdFbGxpcHNlJiBpdGVtKQogICAgIHJldHVybiB0czsK
IH0KIAotLy8gRklYTUU6IFNoYXJlIHRoaXMgY29kZS4KLXZvaWQgYWRkQ29udmV4UG9seWdvblRv
UGF0aChQYXRoJiBwYXRoLCBzaXplX3QgbnVtYmVyT2ZQb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQq
IHBvaW50cykKLXsKLSAgICBBU1NFUlQobnVtYmVyT2ZQb2ludHMgPiAwKTsKLQotICAgIHBhdGgu
bW92ZVRvKHBvaW50c1swXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBudW1iZXJPZlBv
aW50czsgKytpKQotICAgICAgICBwYXRoLmFkZExpbmVUbyhwb2ludHNbaV0pOwotICAgIHBhdGgu
Y2xvc2VTdWJwYXRoKCk7Ci19Ci0KLURyYXdDb252ZXhQb2x5Z29uOjpEcmF3Q29udmV4UG9seWdv
bihzaXplX3QgbnVtYmVyT2ZQb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqIHBvaW50cywgYm9vbCBh
bnRpYWxpYXNlZCkKLSAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3Q29udmV4UG9seWdv
bikKLSAgICAsIG1fYW50aWFsaWFzZWQoYW50aWFsaWFzZWQpCi17Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBudW1iZXJPZlBvaW50czsgKytpKQotICAgICAgICBtX3BvaW50cy5hcHBlbmQo
cG9pbnRzW2ldKTsKLX0KLQotT3B0aW9uYWw8RmxvYXRSZWN0PiBEcmF3Q29udmV4UG9seWdvbjo6
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QKLXsKLSAgICBGbG9hdFJl
Y3QgcmVzdWx0OwotICAgIGZvciAoYXV0byYgcG9pbnQgOiBtX3BvaW50cykKLSAgICAgICAgcmVz
dWx0LmV4dGVuZChwb2ludCk7Ci0gICAgcmVzdWx0LmluZmxhdGUobV9hbnRpYWxpYXNlZCA/IDEg
OiAwKTsgLy8gQWNjb3VudCBmb3IgYW50aWFsaWFzaW5nCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdm9pZCBEcmF3Q29udmV4UG9seWdvbjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KSBjb25zdAotewotICAgIGNvbnRleHQuZHJhd0NvbnZleFBvbHlnb24obV9wb2ludHMuc2l6ZSgp
LCBtX3BvaW50cy5kYXRhKCksIG1fYW50aWFsaWFzZWQpOwotfQotCi1zdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0NvbnZleFBvbHlnb24mIGl0
ZW0pCi17Ci0gICAgdHMgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgRHJhd2luZ0l0ZW0mPihpdGVtKTsK
LSAgICB0cy5kdW1wUHJvcGVydHkoInBvaW50cyIsIGl0ZW0ucG9pbnRzKCkpOwotICAgIHRzLmR1
bXBQcm9wZXJ0eSgiYW50aWFsaWFzZWQiLCBpdGVtLmFudGlhbGlhc2VkKCkpOwotICAgIHJldHVy
biB0czsKLX0KLQogdm9pZCBEcmF3UGF0aDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KSBjb25zdAogewogI2lmIFVTRShDRykKQEAgLTEwMjMsNyArOTU4LDYgQEAgc3RhdGljIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQog
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6IHRzIDw8ICJjbGlwLW91dCI7IGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6IHRzIDw8ICJjbGlwLW91dC10by1wYXRoIjsg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6IHRzIDw8ICJjbGlwLXBhdGgiOyBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwQ29udmV4UG9seWdvbjogdHMgPDwgImNsaXAt
Y29udmV4LXBvbHlnb24iOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB0
cyA8PCAiZHJhdy1nbHlwaHMiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6
IHRzIDw8ICJkcmF3LWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVk
SW1hZ2U6IHRzIDw8ICJkcmF3LXRpbGVkLWltYWdlIjsgYnJlYWs7CkBAIC0xMDM3LDcgKzk3MSw2
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJ
dGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OiB0cyA8
PCAiZHJhdy1saW5lcy1mb3ItdGV4dCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdM
aW5lRm9yRG9jdW1lbnRNYXJrZXI6IHRzIDw8ICJkcmF3LWxpbmVzLWZvci1kb2N1bWVudC1tYXJr
ZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZTogdHMgPDwgImRyYXct
ZWxsaXBzZSI7IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdDb252ZXhQb2x5Z29uOiB0
cyA8PCAiZHJhdy1jb252ZXgtcG9sZ29uIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1BhdGg6IHRzIDw8ICJkcmF3LXBhdGgiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
Rm9jdXNSaW5nUGF0aDogdHMgPDwgImRyYXctZm9jdXMtcmluZy1wYXRoIjsgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOiB0cyA8PCAiZHJhdy1mb2N1cy1yaW5n
LXJlY3RzIjsgYnJlYWs7CkBAIC0xMTE0LDkgKzEwNDcsNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBQYXRoOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxDbGlwUGF0aD4oaXRlbSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBDb252ZXhQb2x5Z29uOgotICAgICAg
ICB0cyA8PCBkb3duY2FzdDxDbGlwQ29udmV4UG9seWdvbj4oaXRlbSk7Ci0gICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0
PERyYXdHbHlwaHM+KGl0ZW0pOwogICAgICAgICBicmVhazsKQEAgLTExNTIsOSArMTA4Miw2IEBA
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0ZW0p
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0
PERyYXdFbGxpcHNlPihpdGVtKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0NvbnZleFBvbHlnb246Ci0gICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdDb252ZXhQb2x5
Z29uPihpdGVtKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6
CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PERyYXdQYXRoPihpdGVtKTsKICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCAwN2QyZDVmMmRjYmFmNDM1OGU0
MTIzZjljNGJmZDhlODNiN2MyNWVhLi41MDY1ZjM4Mjk3MTZhMTVkNmVjMmEzM2VmNTc2MGI0OTQ0
NzY2Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTY0LDcgKzY0LDYg
QEAgZW51bSBjbGFzcyBJdGVtVHlwZSB7CiAgICAgQ2xpcE91dCwKICAgICBDbGlwT3V0VG9QYXRo
LAogICAgIENsaXBQYXRoLAotICAgIENsaXBDb252ZXhQb2x5Z29uLAogICAgIERyYXdHbHlwaHMs
CiAgICAgRHJhd0ltYWdlLAogICAgIERyYXdUaWxlZEltYWdlLApAQCAtNzgsNyArNzcsNiBAQCBl
bnVtIGNsYXNzIEl0ZW1UeXBlIHsKICAgICBEcmF3TGluZXNGb3JUZXh0LAogICAgIERyYXdMaW5l
Rm9yRG9jdW1lbnRNYXJrZXIsCiAgICAgRHJhd0VsbGlwc2UsCi0gICAgRHJhd0NvbnZleFBvbHln
b24sCiAgICAgRHJhd1BhdGgsCiAgICAgRHJhd0ZvY3VzUmluZ1BhdGgsCiAgICAgRHJhd0ZvY3Vz
UmluZ1JlY3RzLApAQCAtNTIyLDI1ICs1MjAsNiBAQCBwcml2YXRlOgogICAgIFdpbmRSdWxlIG1f
d2luZFJ1bGU7CiB9OwogCi1jbGFzcyBDbGlwQ29udmV4UG9seWdvbiA6IHB1YmxpYyBJdGVtIHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENsaXBDb252ZXhQb2x5Z29uPiBjcmVhdGUoc2l6ZV90
IG51bWJlck9mUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMsIGJvb2wgYW50aWFsaWFz
ZWQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGlwQ29udmV4UG9seWdv
bihudW1iZXJPZlBvaW50cywgcG9pbnRzLCBhbnRpYWxpYXNlZCkpOwotICAgIH0KLQotICAgIGNv
bnN0IFZlY3RvcjxGbG9hdFBvaW50PiYgcG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHM7
IH0KLSAgICBib29sIGFudGlhbGlhcygpIGNvbnN0IHsgcmV0dXJuIG1fYW50aWFsaWFzOyB9Ci0K
LXByaXZhdGU6Ci0gICAgQ2xpcENvbnZleFBvbHlnb24oc2l6ZV90IG51bWJlck9mUG9pbnRzLCBj
b25zdCBGbG9hdFBvaW50KiwgYm9vbCBhbnRpYWxpYXNlZCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBWZWN0b3I8Rmxv
YXRQb2ludD4gbV9wb2ludHM7Ci0gICAgYm9vbCBtX2FudGlhbGlhczsKLX07Ci0KIGNsYXNzIERy
YXdHbHlwaHMgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
RHJhd0dseXBocz4gY3JlYXRlKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQg
Y291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYg
bG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCkBAIC04OTcsMjYg
Kzg3Niw2IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKIH07CiAKLWNsYXNzIERy
YXdDb252ZXhQb2x5Z29uIDogcHVibGljIERyYXdpbmdJdGVtIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPERyYXdDb252ZXhQb2x5Z29uPiBjcmVhdGUoc2l6ZV90IG51bWJlck9mUG9pbnRzLCBj
b25zdCBGbG9hdFBvaW50KiBwb2ludHMsIGJvb2wgYW50aWFsaWFzZWQpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3Q29udmV4UG9seWdvbihudW1iZXJPZlBvaW50cywg
cG9pbnRzLCBhbnRpYWxpYXNlZCkpOwotICAgIH0KLQotICAgIGNvbnN0IFZlY3RvcjxGbG9hdFBv
aW50PiYgcG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHM7IH0KLSAgICBib29sIGFudGlh
bGlhc2VkKCkgY29uc3QgeyByZXR1cm4gbV9hbnRpYWxpYXNlZDsgfQotCi1wcml2YXRlOgotICAg
IERyYXdDb252ZXhQb2x5Z29uKHNpemVfdCBudW1iZXJPZlBvaW50cywgY29uc3QgRmxvYXRQb2lu
dCosIGJvb2wgYW50aWFsaWFzZWQpOwotCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5KEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLQot
ICAgIFZlY3RvcjxGbG9hdFBvaW50PiBtX3BvaW50czsKLSAgICBib29sIG1fYW50aWFsaWFzZWQ7
Ci19OwotCiBjbGFzcyBEcmF3UGF0aCA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxEcmF3UGF0aD4gY3JlYXRlKGNvbnN0IFBhdGgmIHBhdGgpCkBAIC0xMzU1
LDkgKzEzMTQsNiBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fc2NhbGVGYWN0b3I7CiB9OwogCi0v
LyBGSVhNRTogdGhpcyBuZWVkcyB0byBtb3ZlLgotdm9pZCBhZGRDb252ZXhQb2x5Z29uVG9QYXRo
KFBhdGgmLCBzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50Kik7Ci0KIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEl0ZW0mKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgRGlzcGxheUxpc3QKQEAgLTEzOTEsNyArMTM0Nyw2IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRElTUExBWUxJU1RfSVRFTShDbGlwKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZ
TElTVF9JVEVNKENsaXBPdXQpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oQ2xpcE91dFRvUGF0aCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRF
TShDbGlwUGF0aCkKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShDbGlw
Q29udmV4UG9seWdvbikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShE
cmF3R2x5cGhzKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJ
bWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJ
bWFnZSkKQEAgLTE0MDUsNyArMTM2MCw2IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExB
WUxJU1RfSVRFTShEcmF3TGluZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1Rf
SVRFTShEcmF3TGluZXNGb3JUZXh0KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElT
VF9JVEVNKERyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0RJU1BMQVlMSVNUX0lURU0oRHJhd0VsbGlwc2UpCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJ
U1BMQVlMSVNUX0lURU0oRHJhd0NvbnZleFBvbHlnb24pCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0RJU1BMQVlMSVNUX0lURU0oRHJhd1BhdGgpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BM
QVlMSVNUX0lURU0oRHJhd0ZvY3VzUmluZ1BhdGgpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJ
U1BMQVlMSVNUX0lURU0oRHJhd0ZvY3VzUmluZ1JlY3RzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDc4OWE4NDZmOGQ5MjY4ODk1Njc4ODcxYTNlZTgwOTE2
ZjY1NTE0MmEuLjM2NmNmZjc4NmQyMWQ4YzQ1OTkxZjYzNWM1NmUyOWVjMjNiYzQ3MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTIzNywxMiArMjM3LDYg
QEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAg
IHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdDb252
ZXhQb2x5Z29uKHNpemVfdCBudW1iZXJPZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRz
LCBib29sIGFudGlhbGlhc2VkKQotewotICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNh
c3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd0NvbnZleFBvbHlnb246OmNyZWF0ZShudW1i
ZXJPZlBvaW50cywgcG9pbnRzLCBhbnRpYWxpYXNlZCkpKTsKLSAgICB1cGRhdGVJdGVtRXh0ZW50
KG5ld0l0ZW0pOwotfQotCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0aChjb25zdCBQYXRoJiBwYXRo
KQogewogICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFw
cGVuZEl0ZW0oRHJhd1BhdGg6OmNyZWF0ZShwYXRoKSkpOwpAQCAtMzY3LDE1ICszNjEsNiBAQCB2
b2lkIFJlY29yZGVyOjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSB3aW5kUnVs
ZSkKICAgICBhcHBlbmRJdGVtKENsaXBQYXRoOjpjcmVhdGUocGF0aCwgd2luZFJ1bGUpKTsKIH0K
IAotdm9pZCBSZWNvcmRlcjo6Y2xpcENvbnZleFBvbHlnb24oc2l6ZV90IG51bVBvaW50cywgY29u
c3QgRmxvYXRQb2ludCogcG9pbnRzLCBib29sIGFudGlhbGlhcykKLXsKLSAgICBQYXRoIHBvbHln
b25QYXRoOwotICAgIGFkZENvbnZleFBvbHlnb25Ub1BhdGgocG9seWdvblBhdGgsIG51bVBvaW50
cywgcG9pbnRzKTsKLSAgICBjdXJyZW50U3RhdGUoKS5jbGlwQm91bmRzLmludGVyc2VjdChwb2x5
Z29uUGF0aC5mYXN0Qm91bmRpbmdSZWN0KCkpOwotCi0gICAgYXBwZW5kSXRlbShDbGlwQ29udmV4
UG9seWdvbjo6Y3JlYXRlKG51bVBvaW50cywgcG9pbnRzLCBhbnRpYWxpYXMpKTsKLX0KLQogdm9p
ZCBSZWNvcmRlcjo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cikKIHsKICAgICAvLyBGSVhNRTogdGhpcyBjaGFuZ2VzIHRoZSBiYXNlQ1RNLCB3aGljaCB3aWxs
IGludmFsaWRhdGUgYWxsIG9mIG91ciBjYWNoZWQgZXh0ZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDJmMzZhM2Y4MDM1ZWRhNmQ4Y2Q4YzY4YmFjNDk0ZWZk
OTkwODQ3NTkuLjUyZTM5YWM1ZmViZDQ4NTdlN2UyMTk1ZjI4ODVhMTcyM2Y4YTNkYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtOTUsNyArOTUsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBE
YXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5lcywgZmxvYXQg
c3Ryb2tlVGhpY2tuZXNzKTsKICAgICB2b2lkIGRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoY29u
c3QgRmxvYXRQb2ludCYsIGZsb2F0IHdpZHRoLCBHcmFwaGljc0NvbnRleHQ6OkRvY3VtZW50TWFy
a2VyTGluZVN0eWxlKTsKICAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwot
ICAgIHZvaWQgZHJhd0NvbnZleFBvbHlnb24oc2l6ZV90IG51bWJlck9mUG9pbnRzLCBjb25zdCBG
bG9hdFBvaW50KiwgYm9vbCBhbnRpYWxpYXNlZCk7CiAgICAgdm9pZCBkcmF3UGF0aChjb25zdCBQ
YXRoJik7CiAKICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgUGF0aCYsIGludCB3aWR0aCwg
aW50IG9mZnNldCwgY29uc3QgQ29sb3ImKTsKQEAgLTExNiw3ICsxMTUsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgY2xpcE91dChjb25z
dCBQYXRoJik7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpOwotICAg
IHZvaWQgY2xpcENvbnZleFBvbHlnb24oc2l6ZV90IG51bVBvaW50cywgY29uc3QgRmxvYXRQb2lu
dCosIGJvb2wgYW50aWFsaWFzKTsKICAgICAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAppbmRleCAwYWZiZGY4NDJmM2ZiZGJiZTYxN2I5NmIyZDI0MTBjNTVhMmQ5
NjI5Li43YzFkMGE3MjEzZWI0MGM2NWQ5MWYwMDQ0ZTJhZDczMjY4OGQ0ZjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTE5
MDUsOCArMTkwNSw2IEBAIHN0YXRpYyB2b2lkIGZpbmRJbm5lclZlcnRleChjb25zdCBGbG9hdFBv
aW50JiBvdXRlckNvcm5lciwgY29uc3QgRmxvYXRQb2ludCYgaW5uCiB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJl
Y3QmIGlubmVyQm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEJveFNpZGUgc2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29sIHNlY29u
ZEVkZ2VNYXRjaGVzKQogewotICAgIEZsb2F0UG9pbnQgcXVhZFs0XTsKLQogICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGNv
bnN0IEZsb2F0UmVjdCYgb3V0ZXJSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhvdXRlckJv
cmRlci5yZWN0KCksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBjb25zdCBGbG9hdFJlY3QmIGlu
bmVyUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoaW5uZXJCb3JkZXIucmVjdCgpLCBkZXZp
Y2VTY2FsZUZhY3Rvcik7CkBAIC0xOTI3LDEyICsxOTI1LDE0IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNz
Q29udGV4CiAgICAgLy8gICAgICAgMyAgLyAgICAgICAgICAgICAgXCAgMyAgIAogICAgIC8vICAg
ICAgICAgMC0tLS0tLS0tLS0tLS0tLS0zCiAgICAgLy8KKyAgICBWZWN0b3I8RmxvYXRQb2ludD4g
cXVhZDsKKyAgICBxdWFkLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoNCk7CiAgICAgc3dpdGNoIChz
aWRlKSB7CiAgICAgY2FzZSBCU1RvcDoKLSAgICAgICAgcXVhZFswXSA9IG91dGVyUmVjdC5taW5Y
TWluWUNvcm5lcigpOwotICAgICAgICBxdWFkWzFdID0gaW5uZXJSZWN0Lm1pblhNaW5ZQ29ybmVy
KCk7Ci0gICAgICAgIHF1YWRbMl0gPSBpbm5lclJlY3QubWF4WE1pbllDb3JuZXIoKTsKLSAgICAg
ICAgcXVhZFszXSA9IG91dGVyUmVjdC5tYXhYTWluWUNvcm5lcigpOworICAgICAgICBxdWFkLnVu
Y2hlY2tlZEFwcGVuZChvdXRlclJlY3QubWluWE1pbllDb3JuZXIoKSk7CisgICAgICAgIHF1YWQu
dW5jaGVja2VkQXBwZW5kKGlubmVyUmVjdC5taW5YTWluWUNvcm5lcigpKTsKKyAgICAgICAgcXVh
ZC51bmNoZWNrZWRBcHBlbmQoaW5uZXJSZWN0Lm1heFhNaW5ZQ29ybmVyKCkpOworICAgICAgICBx
dWFkLnVuY2hlY2tlZEFwcGVuZChvdXRlclJlY3QubWF4WE1pbllDb3JuZXIoKSk7CiAKICAgICAg
ICAgaWYgKCFpbm5lckJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS5pc1plcm8oKSkKICAgICAgICAg
ICAgIGZpbmRJbm5lclZlcnRleChvdXRlclJlY3QubWluWE1pbllDb3JuZXIoKSwgaW5uZXJSZWN0
Lm1pblhNaW5ZQ29ybmVyKCksIGNlbnRlclBvaW50LCBxdWFkWzFdKTsKQEAgLTE5NDIsMTAgKzE5
NDIsMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29u
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXgKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIEJTTGVmdDoKLSAgICAgICAgcXVhZFswXSA9IG91dGVyUmVjdC5taW5YTWluWUNvcm5lcigp
OwotICAgICAgICBxdWFkWzFdID0gaW5uZXJSZWN0Lm1pblhNaW5ZQ29ybmVyKCk7Ci0gICAgICAg
IHF1YWRbMl0gPSBpbm5lclJlY3QubWluWE1heFlDb3JuZXIoKTsKLSAgICAgICAgcXVhZFszXSA9
IG91dGVyUmVjdC5taW5YTWF4WUNvcm5lcigpOworICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVu
ZChvdXRlclJlY3QubWluWE1pbllDb3JuZXIoKSk7CisgICAgICAgIHF1YWQudW5jaGVja2VkQXBw
ZW5kKGlubmVyUmVjdC5taW5YTWluWUNvcm5lcigpKTsKKyAgICAgICAgcXVhZC51bmNoZWNrZWRB
cHBlbmQoaW5uZXJSZWN0Lm1pblhNYXhZQ29ybmVyKCkpOworICAgICAgICBxdWFkLnVuY2hlY2tl
ZEFwcGVuZChvdXRlclJlY3QubWluWE1heFlDb3JuZXIoKSk7CiAKICAgICAgICAgaWYgKCFpbm5l
ckJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS5pc1plcm8oKSkKICAgICAgICAgICAgIGZpbmRJbm5l
clZlcnRleChvdXRlclJlY3QubWluWE1pbllDb3JuZXIoKSwgaW5uZXJSZWN0Lm1pblhNaW5ZQ29y
bmVyKCksIGNlbnRlclBvaW50LCBxdWFkWzFdKTsKQEAgLTE5NTUsMTAgKzE5NTUsMTAgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXgKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEJTQm90dG9t
OgotICAgICAgICBxdWFkWzBdID0gb3V0ZXJSZWN0Lm1pblhNYXhZQ29ybmVyKCk7Ci0gICAgICAg
IHF1YWRbMV0gPSBpbm5lclJlY3QubWluWE1heFlDb3JuZXIoKTsKLSAgICAgICAgcXVhZFsyXSA9
IGlubmVyUmVjdC5tYXhYTWF4WUNvcm5lcigpOwotICAgICAgICBxdWFkWzNdID0gb3V0ZXJSZWN0
Lm1heFhNYXhZQ29ybmVyKCk7CisgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKG91dGVyUmVj
dC5taW5YTWF4WUNvcm5lcigpKTsKKyAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQoaW5uZXJS
ZWN0Lm1pblhNYXhZQ29ybmVyKCkpOworICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZChpbm5l
clJlY3QubWF4WE1heFlDb3JuZXIoKSk7CisgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKG91
dGVyUmVjdC5tYXhYTWF4WUNvcm5lcigpKTsKIAogICAgICAgICBpZiAoIWlubmVyQm9yZGVyLnJh
ZGlpKCkuYm90dG9tTGVmdCgpLmlzWmVybygpKQogICAgICAgICAgICAgZmluZElubmVyVmVydGV4
KG91dGVyUmVjdC5taW5YTWF4WUNvcm5lcigpLCBpbm5lclJlY3QubWluWE1heFlDb3JuZXIoKSwg
Y2VudGVyUG9pbnQsIHF1YWRbMV0pOwpAQCAtMTk2OCwxMCArMTk2OCwxMCBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQlNSaWdodDoKLSAgICAg
ICAgcXVhZFswXSA9IG91dGVyUmVjdC5tYXhYTWluWUNvcm5lcigpOwotICAgICAgICBxdWFkWzFd
ID0gaW5uZXJSZWN0Lm1heFhNaW5ZQ29ybmVyKCk7Ci0gICAgICAgIHF1YWRbMl0gPSBpbm5lclJl
Y3QubWF4WE1heFlDb3JuZXIoKTsKLSAgICAgICAgcXVhZFszXSA9IG91dGVyUmVjdC5tYXhYTWF4
WUNvcm5lcigpOworICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZChvdXRlclJlY3QubWF4WE1p
bllDb3JuZXIoKSk7CisgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKGlubmVyUmVjdC5tYXhY
TWluWUNvcm5lcigpKTsKKyAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQoaW5uZXJSZWN0Lm1h
eFhNYXhZQ29ybmVyKCkpOworICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZChvdXRlclJlY3Qu
bWF4WE1heFlDb3JuZXIoKSk7CiAKICAgICAgICAgaWYgKCFpbm5lckJvcmRlci5yYWRpaSgpLnRv
cFJpZ2h0KCkuaXNaZXJvKCkpCiAgICAgICAgICAgICBmaW5kSW5uZXJWZXJ0ZXgob3V0ZXJSZWN0
Lm1heFhNaW5ZQ29ybmVyKCksIGlubmVyUmVjdC5tYXhYTWluWUNvcm5lcigpLCBjZW50ZXJQb2lu
dCwgcXVhZFsxXSk7CkBAIC0xOTg0LDI1ICsxOTg0LDM1IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4CiAgICAgLy8gSWYgdGhlIGJvcmRlciBtYXRjaGVzIGJvdGggb2YgaXRzIGFkamFjZW50IHNp
ZGVzLCBkb24ndCBhbnRpLWFsaWFzIHRoZSBjbGlwLCBhbmQKICAgICAvLyBpZiBuZWl0aGVyIHNp
ZGUgbWF0Y2hlcywgYW50aS1hbGlhcyB0aGUgY2xpcC4KICAgICBpZiAoZmlyc3RFZGdlTWF0Y2hl
cyA9PSBzZWNvbmRFZGdlTWF0Y2hlcykgewotICAgICAgICBncmFwaGljc0NvbnRleHQuY2xpcENv
bnZleFBvbHlnb24oNCwgcXVhZCwgIWZpcnN0RWRnZU1hdGNoZXMpOworICAgICAgICBib29sIHdh
c0FudGlhbGlhc2VkID0gZ3JhcGhpY3NDb250ZXh0LnNob3VsZEFudGlhbGlhcygpOworICAgICAg
ICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKCFmaXJzdEVkZ2VNYXRjaGVzKTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBQYXRoKFBhdGg6OnBvbHlnb25QYXRoRnJvbVBv
aW50cyhxdWFkKSwgUlVMRV9OT05aRVJPKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNo
b3VsZEFudGlhbGlhcyh3YXNBbnRpYWxpYXNlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICAvLyBTcXVhcmUgb2ZmIHRoZSBlbmQgd2hpY2ggc2hvdWxkbid0IGJlIGFmZmVjdGVkIGJ5
IGFudGlhbGlhc2luZywgYW5kIGNsaXAuCi0gICAgRmxvYXRQb2ludCBmaXJzdFF1YWRbNF07Ci0g
ICAgZmlyc3RRdWFkWzBdID0gcXVhZFswXTsKLSAgICBmaXJzdFF1YWRbMV0gPSBxdWFkWzFdOwot
ICAgIGZpcnN0UXVhZFsyXSA9IHNpZGUgPT0gQlNUb3AgfHwgc2lkZSA9PSBCU0JvdHRvbSA/IEZs
b2F0UG9pbnQocXVhZFszXS54KCksIHF1YWRbMl0ueSgpKSA6IEZsb2F0UG9pbnQocXVhZFsyXS54
KCksIHF1YWRbM10ueSgpKTsKLSAgICBmaXJzdFF1YWRbM10gPSBxdWFkWzNdOwotICAgIGdyYXBo
aWNzQ29udGV4dC5jbGlwQ29udmV4UG9seWdvbig0LCBmaXJzdFF1YWQsICFmaXJzdEVkZ2VNYXRj
aGVzKTsKLQotICAgIEZsb2F0UG9pbnQgc2Vjb25kUXVhZFs0XTsKLSAgICBzZWNvbmRRdWFkWzBd
ID0gcXVhZFswXTsKLSAgICBzZWNvbmRRdWFkWzFdID0gc2lkZSA9PSBCU1RvcCB8fCBzaWRlID09
IEJTQm90dG9tID8gRmxvYXRQb2ludChxdWFkWzBdLngoKSwgcXVhZFsxXS55KCkpIDogRmxvYXRQ
b2ludChxdWFkWzFdLngoKSwgcXVhZFswXS55KCkpOwotICAgIHNlY29uZFF1YWRbMl0gPSBxdWFk
WzJdOwotICAgIHNlY29uZFF1YWRbM10gPSBxdWFkWzNdOworICAgIFZlY3RvcjxGbG9hdFBvaW50
PiBmaXJzdFF1YWQgPSB7CisgICAgICAgIHF1YWRbMF0sCisgICAgICAgIHF1YWRbMV0sCisgICAg
ICAgIHNpZGUgPT0gQlNUb3AgfHwgc2lkZSA9PSBCU0JvdHRvbSA/IEZsb2F0UG9pbnQocXVhZFsz
XS54KCksIHF1YWRbMl0ueSgpKSA6IEZsb2F0UG9pbnQocXVhZFsyXS54KCksIHF1YWRbM10ueSgp
KSwKKyAgICAgICAgcXVhZFszXQorICAgIH07CisgICAgYm9vbCB3YXNBbnRpYWxpYXNlZCA9IGdy
YXBoaWNzQ29udGV4dC5zaG91bGRBbnRpYWxpYXMoKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0
U2hvdWxkQW50aWFsaWFzKCFmaXJzdEVkZ2VNYXRjaGVzKTsKKyAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFBhdGgoUGF0aDo6cG9seWdvblBhdGhGcm9tUG9pbnRzKGZpcnN0UXVhZCksIFJVTEVfTk9O
WkVSTyk7CisKKyAgICBWZWN0b3I8RmxvYXRQb2ludD4gc2Vjb25kUXVhZCA9IHsKKyAgICAgICAg
cXVhZFswXSwKKyAgICAgICAgc2lkZSA9PSBCU1RvcCB8fCBzaWRlID09IEJTQm90dG9tID8gRmxv
YXRQb2ludChxdWFkWzBdLngoKSwgcXVhZFsxXS55KCkpIDogRmxvYXRQb2ludChxdWFkWzFdLngo
KSwgcXVhZFswXS55KCkpLAorICAgICAgICBxdWFkWzJdLAorICAgICAgICBxdWFkWzNdCisgICAg
fTsKICAgICAvLyBBbnRpYWxpYXNpbmcgYWZmZWN0cyB0aGUgc2Vjb25kIHNpZGUuCi0gICAgZ3Jh
cGhpY3NDb250ZXh0LmNsaXBDb252ZXhQb2x5Z29uKDQsIHNlY29uZFF1YWQsICFzZWNvbmRFZGdl
TWF0Y2hlcyk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyghc2Vjb25k
RWRnZU1hdGNoZXMpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwUGF0aChQYXRoOjpwb2x5Z29u
UGF0aEZyb21Qb2ludHMoc2Vjb25kUXVhZCksIFJVTEVfTk9OWkVSTyk7CisKKyAgICBncmFwaGlj
c0NvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKHdhc0FudGlhbGlhc2VkKTsKIH0KIAogc3RhdGlj
IExheW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJbm5lcihjb25zdCBSb3VuZGVk
UmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgQm94U2lkZSBzaWRl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IGEyY2M3
MWViMzhlOWI4ODJiODA3MWUwOWI5M2JkN2QyYzE3NDdlMzMuLmY0YzZiNGY0OWM4Zjc0MzA3MWJl
OGYxOTlhZTM5ZWI1Y2ZmMjFjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAKQEAgLTIwMzcsOCArMjAzNyw2IEBAIHZvaWQgUmVuZGVyRWxlbWVudDo6ZHJh
d0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBG
CiAgICAgICAgIEFTU0VSVCh4MiA+PSB4MSk7CiAgICAgICAgIEFTU0VSVCh5MiA+PSB5MSk7CiAg
ICAgICAgIGlmICghYWRqYWNlbnRXaWR0aDEgJiYgIWFkamFjZW50V2lkdGgyKSB7Ci0gICAgICAg
ICAgICAvLyBUdXJuIG9mZiBhbnRpYWxpYXNpbmcgdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIGRy
YXdDb252ZXhQb2x5Z29uKCk7Ci0gICAgICAgICAgICAvLyB0aGlzIG1hdHRlcnMgZm9yIHJlY3Rz
IGluIHRyYW5zZm9ybWVkIGNvbnRleHRzLgogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsQ29sb3IoY29sb3IpOwogICAgICAgICAgICAgYm9vbCB3YXNBbnRpYWxpYXNlZCA9IGdyYXBo
aWNzQ29udGV4dC5zaG91bGRBbnRpYWxpYXMoKTsKQEAgLTIwNTUsMzcgKzIwNTMsNDIgQEAgdm9p
ZCBSZW5kZXJFbGVtZW50OjpkcmF3TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IEYKICAgICAgICAgeDIgPSByb3VuZFRvRGV2aWNlUGl4ZWwoeDIs
IGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgeTIgPSByb3VuZFRvRGV2aWNlUGl4ZWwoeTIs
IGRldmljZVNjYWxlRmFjdG9yKTsKIAotICAgICAgICBGbG9hdFBvaW50IHF1YWRbNF07CisgICAg
ICAgIFZlY3RvcjxGbG9hdFBvaW50PiBxdWFkOworICAgICAgICBxdWFkLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoNCk7CiAgICAgICAgIHN3aXRjaCAoc2lkZSkgewogICAgICAgICBjYXNlIEJTVG9w
OgotICAgICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQoeDEgKyBzdGQ6Om1heDxmbG9hdD4o
LWFkamFjZW50V2lkdGgxLCAwKSwgeTEpOwotICAgICAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9p
bnQoeDEgKyBzdGQ6Om1heDxmbG9hdD4oYWRqYWNlbnRXaWR0aDEsIDApLCB5Mik7Ci0gICAgICAg
ICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh4MiAtIHN0ZDo6bWF4PGZsb2F0PihhZGphY2VudFdp
ZHRoMiwgMCksIHkyKTsKLSAgICAgICAgICAgIHF1YWRbM10gPSBGbG9hdFBvaW50KHgyIC0gc3Rk
OjptYXg8ZmxvYXQ+KC1hZGphY2VudFdpZHRoMiwgMCksIHkxKTsKKyAgICAgICAgICAgIHF1YWQu
dW5jaGVja2VkQXBwZW5kKHsgeDEgKyBzdGQ6Om1heDxmbG9hdD4oLWFkamFjZW50V2lkdGgxLCAw
KSwgeTEgfSk7CisgICAgICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZCh7IHgxICsgc3RkOjpt
YXg8ZmxvYXQ+KCBhZGphY2VudFdpZHRoMSwgMCksIHkyIH0pOworICAgICAgICAgICAgcXVhZC51
bmNoZWNrZWRBcHBlbmQoeyB4MiAtIHN0ZDo6bWF4PGZsb2F0PiggYWRqYWNlbnRXaWR0aDIsIDAp
LCB5MiB9KTsKKyAgICAgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDIgLSBzdGQ6Om1h
eDxmbG9hdD4oLWFkamFjZW50V2lkdGgyLCAwKSwgeTEgfSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBCU0JvdHRvbToKLSAgICAgICAgICAgIHF1YWRbMF0gPSBGbG9hdFBvaW50
KHgxICsgc3RkOjptYXg8ZmxvYXQ+KGFkamFjZW50V2lkdGgxLCAwKSwgeTEpOwotICAgICAgICAg
ICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQoeDEgKyBzdGQ6Om1heDxmbG9hdD4oLWFkamFjZW50V2lk
dGgxLCAwKSwgeTIpOwotICAgICAgICAgICAgcXVhZFsyXSA9IEZsb2F0UG9pbnQoeDIgLSBzdGQ6
Om1heDxmbG9hdD4oLWFkamFjZW50V2lkdGgyLCAwKSwgeTIpOwotICAgICAgICAgICAgcXVhZFsz
XSA9IEZsb2F0UG9pbnQoeDIgLSBzdGQ6Om1heDxmbG9hdD4oYWRqYWNlbnRXaWR0aDIsIDApLCB5
MSk7CisgICAgICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZCh7IHgxICsgc3RkOjptYXg8Zmxv
YXQ+KCBhZGphY2VudFdpZHRoMSwgMCksIHkxIH0pOworICAgICAgICAgICAgcXVhZC51bmNoZWNr
ZWRBcHBlbmQoeyB4MSArIHN0ZDo6bWF4PGZsb2F0PigtYWRqYWNlbnRXaWR0aDEsIDApLCB5MiB9
KTsKKyAgICAgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDIgLSBzdGQ6Om1heDxmbG9h
dD4oLWFkamFjZW50V2lkdGgyLCAwKSwgeTIgfSk7CisgICAgICAgICAgICBxdWFkLnVuY2hlY2tl
ZEFwcGVuZCh7IHgyIC0gc3RkOjptYXg8ZmxvYXQ+KCBhZGphY2VudFdpZHRoMiwgMCksIHkxIH0p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQlNMZWZ0OgotICAgICAgICAgICAg
cXVhZFswXSA9IEZsb2F0UG9pbnQoeDEsIHkxICsgc3RkOjptYXg8ZmxvYXQ+KC1hZGphY2VudFdp
ZHRoMSwgMCkpOwotICAgICAgICAgICAgcXVhZFsxXSA9IEZsb2F0UG9pbnQoeDEsIHkyIC0gc3Rk
OjptYXg8ZmxvYXQ+KC1hZGphY2VudFdpZHRoMiwgMCkpOwotICAgICAgICAgICAgcXVhZFsyXSA9
IEZsb2F0UG9pbnQoeDIsIHkyIC0gc3RkOjptYXg8ZmxvYXQ+KGFkamFjZW50V2lkdGgyLCAwKSk7
Ci0gICAgICAgICAgICBxdWFkWzNdID0gRmxvYXRQb2ludCh4MiwgeTEgKyBzdGQ6Om1heDxmbG9h
dD4oYWRqYWNlbnRXaWR0aDEsIDApKTsKKyAgICAgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5k
KHsgeDEsIHkxICsgc3RkOjptYXg8ZmxvYXQ+KC1hZGphY2VudFdpZHRoMSwgMCkgfSk7CisgICAg
ICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZCh7IHgxLCB5MiAtIHN0ZDo6bWF4PGZsb2F0Pigt
YWRqYWNlbnRXaWR0aDIsIDApIH0pOworICAgICAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQo
eyB4MiwgeTIgLSBzdGQ6Om1heDxmbG9hdD4oIGFkamFjZW50V2lkdGgyLCAwKSB9KTsKKyAgICAg
ICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDIsIHkxICsgc3RkOjptYXg8ZmxvYXQ+KCBh
ZGphY2VudFdpZHRoMSwgMCkgfSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBC
U1JpZ2h0OgotICAgICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQoeDEsIHkxICsgc3RkOjpt
YXg8ZmxvYXQ+KGFkamFjZW50V2lkdGgxLCAwKSk7Ci0gICAgICAgICAgICBxdWFkWzFdID0gRmxv
YXRQb2ludCh4MSwgeTIgLSBzdGQ6Om1heDxmbG9hdD4oYWRqYWNlbnRXaWR0aDIsIDApKTsKLSAg
ICAgICAgICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHgyLCB5MiAtIHN0ZDo6bWF4PGZsb2F0Pigt
YWRqYWNlbnRXaWR0aDIsIDApKTsKLSAgICAgICAgICAgIHF1YWRbM10gPSBGbG9hdFBvaW50KHgy
LCB5MSArIHN0ZDo6bWF4PGZsb2F0PigtYWRqYWNlbnRXaWR0aDEsIDApKTsKKyAgICAgICAgICAg
IHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDEsIHkxICsgc3RkOjptYXg8ZmxvYXQ+KCBhZGphY2Vu
dFdpZHRoMSwgMCkgfSk7CisgICAgICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZCh7IHgxLCB5
MiAtIHN0ZDo6bWF4PGZsb2F0PiggYWRqYWNlbnRXaWR0aDIsIDApIH0pOworICAgICAgICAgICAg
cXVhZC51bmNoZWNrZWRBcHBlbmQoeyB4MiwgeTIgLSBzdGQ6Om1heDxmbG9hdD4oLWFkamFjZW50
V2lkdGgyLCAwKSB9KTsKKyAgICAgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDIsIHkx
ICsgc3RkOjptYXg8ZmxvYXQ+KC1hZGphY2VudFdpZHRoMSwgMCkgfSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHls
ZShOb1N0cm9rZSk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoY29sb3Ip
OwotICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0NvbnZleFBvbHlnb24oNCwgcXVhZCwgYW50
aWFsaWFzKTsKKyAgICAgICAgYm9vbCB3YXNBbnRpYWxpYXNlZCA9IGdyYXBoaWNzQ29udGV4dC5z
aG91bGRBbnRpYWxpYXMoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlh
bGlhcyhhbnRpYWxpYXMpOworICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd1BhdGgoUGF0aDo6
cG9seWdvblBhdGhGcm9tUG9pbnRzKHF1YWQpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dFNob3VsZEFudGlhbGlhcyh3YXNBbnRpYWxpYXNlZCk7CisKICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldFN0cm9rZVN0eWxlKG9sZFN0cm9rZVN0eWxlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGZmMDli
MTRhMDAxOGE3NTI1MjU0NDVhMDdmMTkzMzkzOWMxODM0YjMuLmZjZjBhNzA5OTAzODJhMTUyOTMx
MThkOTUwOTc5ODA1Yzk4MTk5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0KQEAgLTY4MywyNSArNjgzLDI2IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBh
aW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QK
ICAgICAgICAgZmxvYXQgY2VudGVyWCA9IGZsb29yZihidXR0b25DbGlwLngoKSArIGJ1dHRvbkNs
aXAud2lkdGgoKSAvIDIuMCkgLSAwLjU7CiAgICAgICAgIGZsb2F0IGNlbnRlclkgPSBmbG9vcmYo
YnV0dG9uQ2xpcC55KCkgKyBidXR0b25DbGlwLmhlaWdodCgpICogMy4wIC8gOC4wKTsKIAotICAg
ICAgICBGbG9hdFBvaW50IGFycm93WzNdOwotICAgICAgICBGbG9hdFBvaW50IHNoYWRvd1szXTsK
LQotICAgICAgICBhcnJvd1swXSA9IEZsb2F0UG9pbnQoY2VudGVyWCAtIE1lbnVMaXN0QXJyb3dX
aWR0aCAvIDIuMCwgY2VudGVyWSk7Ci0gICAgICAgIGFycm93WzFdID0gRmxvYXRQb2ludChjZW50
ZXJYICsgTWVudUxpc3RBcnJvd1dpZHRoIC8gMi4wLCBjZW50ZXJZKTsKLSAgICAgICAgYXJyb3db
Ml0gPSBGbG9hdFBvaW50KGNlbnRlclgsIGNlbnRlclkgKyBNZW51TGlzdEFycm93SGVpZ2h0KTsK
LQotICAgICAgICBzaGFkb3dbMF0gPSBGbG9hdFBvaW50KGFycm93WzBdLngoKSwgYXJyb3dbMF0u
eSgpICsgMS4wZik7Ci0gICAgICAgIHNoYWRvd1sxXSA9IEZsb2F0UG9pbnQoYXJyb3dbMV0ueCgp
LCBhcnJvd1sxXS55KCkgKyAxLjBmKTsKLSAgICAgICAgc2hhZG93WzJdID0gRmxvYXRQb2ludChh
cnJvd1syXS54KCksIGFycm93WzJdLnkoKSArIDEuMGYpOwotCiAgICAgICAgIGZsb2F0IG9wYWNp
dHkgPSBpc1JlYWRPbmx5Q29udHJvbChib3gpID8gMC4yIDogMC41OwogICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNp
dHkpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29sb3IoMC4w
ZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRy
YXdDb252ZXhQb2x5Z29uKDMsIHNoYWRvdywgdHJ1ZSk7CisKKyAgICAgICAgVmVjdG9yPEZsb2F0
UG9pbnQ+IHNoYWRvdyA9IHsKKyAgICAgICAgICAgIHsgYXJyb3dbMF0ueCgpLCBhcnJvd1swXS55
KCkgKyAxIH0sCisgICAgICAgICAgICB7IGFycm93WzFdLngoKSwgYXJyb3dbMV0ueSgpICsgMSB9
LAorICAgICAgICAgICAgeyBhcnJvd1syXS54KCksIGFycm93WzJdLnkoKSArIDEgfQorICAgICAg
ICB9OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdQYXRoKFBhdGg6OnBvbHlnb25Q
YXRoRnJvbVBvaW50cyhzaGFkb3cpKTsKIAogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNl
dFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUpOworICAgICAgICBWZWN0b3I8RmxvYXRQ
b2ludD4gYXJyb3cgPSB7CisgICAgICAgICAgICB7IGNlbnRlclggLSBNZW51TGlzdEFycm93V2lk
dGggLyAyLCBjZW50ZXJZIH0sCisgICAgICAgICAgICB7IGNlbnRlclggKyBNZW51TGlzdEFycm93
V2lkdGggLyAyLCBjZW50ZXJZIH0sCisgICAgICAgICAgICB7IGNlbnRlclgsIGNlbnRlclkgKyBN
ZW51TGlzdEFycm93SGVpZ2h0IH0KKyAgICAgICAgfTsKKworICAgICAgICBwYWludEluZm8uY29u
dGV4dCgpLmRyYXdQYXRoKFBhdGg6OnBvbHlnb25QYXRoRnJvbVBvaW50cyhhcnJvdykpOwogICAg
IH0KIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQppbmRleCBhZDEwZjI3N2E2NTFmNjA0YjNiYjRmNmJmMWZhZTQ2MzY5NmY3NTBi
Li4yZjYwNjk5MzQ3MDVjMzVlMTU0MjU4ZDI1YTY0YTNmMDVmOWU1MTE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xMjc4LDIxICsxMjc4LDIxIEBA
IGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25z
dCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxs
Q29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvcikpOwogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoTm9TdHJva2Up
OwogCi0gICAgRmxvYXRQb2ludCBhcnJvdzFbM107Ci0gICAgYXJyb3cxWzBdID0gRmxvYXRQb2lu
dChsZWZ0RWRnZSwgY2VudGVyWSAtIHNwYWNlQmV0d2VlbkFycm93cyAvIDIuMGYpOwotICAgIGFy
cm93MVsxXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UgKyBhcnJvd1dpZHRoLCBjZW50ZXJZIC0gc3Bh
Y2VCZXR3ZWVuQXJyb3dzIC8gMi4wZik7Ci0gICAgYXJyb3cxWzJdID0gRmxvYXRQb2ludChsZWZ0
RWRnZSArIGFycm93V2lkdGggLyAyLjBmLCBjZW50ZXJZIC0gc3BhY2VCZXR3ZWVuQXJyb3dzIC8g
Mi4wZiAtIGFycm93SGVpZ2h0KTsKLQogICAgIC8vIERyYXcgdGhlIHRvcCBhcnJvdwotICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cxLCB0cnVlKTsKLQot
ICAgIEZsb2F0UG9pbnQgYXJyb3cyWzNdOwotICAgIGFycm93MlswXSA9IEZsb2F0UG9pbnQobGVm
dEVkZ2UsIGNlbnRlclkgKyBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmKTsKLSAgICBhcnJvdzJb
MV0gPSBGbG9hdFBvaW50KGxlZnRFZGdlICsgYXJyb3dXaWR0aCwgY2VudGVyWSArIHNwYWNlQmV0
d2VlbkFycm93cyAvIDIuMGYpOwotICAgIGFycm93MlsyXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2Ug
KyBhcnJvd1dpZHRoIC8gMi4wZiwgY2VudGVyWSArIHNwYWNlQmV0d2VlbkFycm93cyAvIDIuMGYg
KyBhcnJvd0hlaWdodCk7CisgICAgVmVjdG9yPEZsb2F0UG9pbnQ+IGFycm93MSA9IHsKKyAgICAg
ICAgeyBsZWZ0RWRnZSwgY2VudGVyWSAtIHNwYWNlQmV0d2VlbkFycm93cyAvIDIuMGYgfSwKKyAg
ICAgICAgeyBsZWZ0RWRnZSArIGFycm93V2lkdGgsIGNlbnRlclkgLSBzcGFjZUJldHdlZW5BcnJv
d3MgLyAyLjBmIH0sCisgICAgICAgIHsgbGVmdEVkZ2UgKyBhcnJvd1dpZHRoIC8gMi4wZiwgY2Vu
dGVyWSAtIHNwYWNlQmV0d2VlbkFycm93cyAvIDIuMGYgLSBhcnJvd0hlaWdodCB9CisgICAgfTsK
KyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdQYXRoKFBhdGg6OnBvbHlnb25QYXRoRnJvbVBv
aW50cyhhcnJvdzEpKTsKIAogICAgIC8vIERyYXcgdGhlIGJvdHRvbSBhcnJvdwotICAgIHBhaW50
SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cyLCB0cnVlKTsKKyAgICBW
ZWN0b3I8RmxvYXRQb2ludD4gYXJyb3cyID0geworICAgICAgICB7IGxlZnRFZGdlLCBjZW50ZXJZ
ICsgc3BhY2VCZXR3ZWVuQXJyb3dzIC8gMi4wZiB9LAorICAgICAgICB7IGxlZnRFZGdlICsgYXJy
b3dXaWR0aCwgY2VudGVyWSArIHNwYWNlQmV0d2VlbkFycm93cyAvIDIuMGYgfSwKKyAgICAgICAg
eyBsZWZ0RWRnZSArIGFycm93V2lkdGggLyAyLjBmLCBjZW50ZXJZICsgc3BhY2VCZXR3ZWVuQXJy
b3dzIC8gMi4wZiArIGFycm93SGVpZ2h0IH0KKyAgICB9OworICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZHJhd1BhdGgoUGF0aDo6cG9seWdvblBhdGhGcm9tUG9pbnRzKGFycm93MikpOwogCiAgICAg
Q29sb3IgbGVmdFNlcGFyYXRvckNvbG9yKDAsIDAsIDAsIDQwKTsKICAgICBDb2xvciByaWdodFNl
cGFyYXRvckNvbG9yKDI1NSwgMjU1LCAyNTUsIDQwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKaW5kZXggMWNkOTc1NDlkMjEzZjgzYjNiYTEy
Mjc5NTRmMjhkNWI0MDZlOGFkYi4uMWI2NjJjYjRlMjY3ODA5ZWM1Yzk3MTJiZWFmNDc3NzYxYTBj
MjcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5jcHAKQEAgLTE0NiwxNyArMTQ2LDE1IEBAIHZvaWQgSFVEU2xpZGVyOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKICAgICB9CiAKICAgICAvLyBEcmF3IGEgZGlhbW9uZAotICAgIEZs
b2F0UG9pbnQgcG9pbnRzWzRdOwogICAgIGZsb2F0IGhhbGYgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
bV9idXR0b25TaXplKSAvIDI7Ci0gICAgcG9pbnRzWzBdLnNldFgobV9yZWN0LmxvY2F0aW9uKCku
eCgpICsgbV9idXR0b25Qb3NpdGlvbiArIGhhbGYpOwotICAgIHBvaW50c1swXS5zZXRZKG1fcmVj
dC5sb2NhdGlvbigpLnkoKSk7Ci0gICAgcG9pbnRzWzFdLnNldFgobV9yZWN0LmxvY2F0aW9uKCku
eCgpICsgbV9idXR0b25Qb3NpdGlvbiArIG1fYnV0dG9uU2l6ZSk7Ci0gICAgcG9pbnRzWzFdLnNl
dFkobV9yZWN0LmxvY2F0aW9uKCkueSgpICsgaGFsZik7Ci0gICAgcG9pbnRzWzJdLnNldFgobV9y
ZWN0LmxvY2F0aW9uKCkueCgpICsgbV9idXR0b25Qb3NpdGlvbiArIGhhbGYpOwotICAgIHBvaW50
c1syXS5zZXRZKG1fcmVjdC5sb2NhdGlvbigpLnkoKSArIG1fYnV0dG9uU2l6ZSk7Ci0gICAgcG9p
bnRzWzNdLnNldFgobV9yZWN0LmxvY2F0aW9uKCkueCgpICsgbV9idXR0b25Qb3NpdGlvbik7Ci0g
ICAgcG9pbnRzWzNdLnNldFkobV9yZWN0LmxvY2F0aW9uKCkueSgpICsgaGFsZik7Ci0gICAgY29u
dGV4dC5kcmF3Q29udmV4UG9seWdvbig0LCBwb2ludHMsIHRydWUpOworCisgICAgVmVjdG9yPEZs
b2F0UG9pbnQ+IHBvaW50cyA9IHsKKyAgICAgICAgeyBtX3JlY3QubG9jYXRpb24oKS54KCkgKyBt
X2J1dHRvblBvc2l0aW9uICsgaGFsZiwgbV9yZWN0LmxvY2F0aW9uKCkueSgpIH0sCisgICAgICAg
IHsgbV9yZWN0LmxvY2F0aW9uKCkueCgpICsgbV9idXR0b25Qb3NpdGlvbiArIG1fYnV0dG9uU2l6
ZSwgbV9yZWN0LmxvY2F0aW9uKCkueSgpICsgaGFsZiB9LAorICAgICAgICB7IG1fcmVjdC5sb2Nh
dGlvbigpLngoKSArIG1fYnV0dG9uUG9zaXRpb24gKyBoYWxmLCBtX3JlY3QubG9jYXRpb24oKS55
KCkgKyBtX2J1dHRvblNpemUgfSwKKyAgICAgICAgeyBtX3JlY3QubG9jYXRpb24oKS54KCkgKyBt
X2J1dHRvblBvc2l0aW9uLCBtX3JlY3QubG9jYXRpb24oKS55KCkgKyBoYWxmIH0KKyAgICB9Owor
ICAgIGNvbnRleHQuZHJhd1BhdGgoUGF0aDo6cG9seWdvblBhdGhGcm9tUG9pbnRzKHBvaW50cykp
OwogfQogCiB2b2lkIEhVRFNsaWRlcjo6ZHJhZyhjb25zdCBJbnRQb2ludCYgcG9pbnQsIGJvb2wg
c3RhcnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269144</attachid>
            <date>2016-01-15 20:32:07 -0800</date>
            <delta_ts>2016-01-16 09:15:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153174-20160115203137.patch</filename>
            <type>text/plain</type>
            <size>47768</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjEyMjViNTJmYzBiNzFk
ZGJjMjc2NDk4MjQwNWYzY2JhMzYwNjE4NS4uNGJiYjFhZmNjNmIyNWRkOTRlODVkMjlhMWMzNjk4
NTdlNWJhYjY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE2LTAxLTE1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBHcmFw
aGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKCkgYW5kIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cENvbnZleFBvbHlnb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUzMTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbigpIGFuZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBDb252ZXhQb2x5Z29uKCkgd2VyZQorICAgICAgICBwb29ybHkgbmFtZWQg
KG5vbi1jb252ZXggcG9seWdvbnMgYXJlIGFsbG93ZWQpLCBhbmQganVzdCBzeW50YWN0aWMgc3Vn
YXIgb3ZlcgorICAgICAgICBjbGlwUGF0aCgpIGFuZCBkcmF3UGF0aCgpLgorICAgICAgICAKKyAg
ICAgICAgUmVtb3ZlIHRoZW0sIGJ1dCBhZGQgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBjcmVh
dGUgYSBQYXRoIGZyb20gYSBWZWN0b3Igb2YgCisgICAgICAgIHBvaW50cy4gRm9yIENHLCB3ZSBj
YW4gdXNlIHRoZSBtb3JlIGVmZmljaWVudCBDR1BhdGhBZGRMaW5lcygpLgorICAgICAgICAKKyAg
ICAgICAgQWRkIFRleHRTdHJlYW0gZHVtcGluZyBmb3IgUGF0aC4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cG9seWdvblBhdGhGcm9tUG9p
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmR1bXApOgorICAgICAgICAoV2ViQ29yZTo6
b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxp
YXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ29udmV4UG9seWdvblRvQ29udGV4dCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcENvbnZl
eFBvbHlnb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZENvbnZleFBvbHlnb25Ub1Bh
dGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29u
dmV4UG9seWdvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmNsaXBDb252ZXhQb2x5Z29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cG9seWdvblBhdGhGcm9t
UG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6Om1vdmVUbyk6CisgICAgICAgIChXZWJD
b3JlOjpQYXRoOjphZGRMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRkUXVhZEN1
cnZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRkQmV6aWVyQ3VydmVUbyk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXRoOjphZGRBcmNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpDbGlwQ29udmV4UG9seWdvbjo6Q2xpcENvbnZleFBvbHlnb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBDb252ZXhQb2x5Z29u
OjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0
b3I8PCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YWRkQ29udmV4
UG9seWdvblRvUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0NvbnZleFBvbHlnb246OkRyYXdDb252ZXhQb2x5Z29uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Q29udmV4UG9seWdvbjo6bG9jYWxCb3VuZHMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdDb252ZXhQb2x5Z29u
OjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpD
bGlwQ29udmV4UG9seWdvbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpDbGlwQ29udmV4UG9seWdvbjo6cG9pbnRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwQ29udmV4UG9seWdvbjo6YW50aWFsaWFzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Q29udmV4UG9seWdvbjo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Q29u
dmV4UG9seWdvbjo6cG9pbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3Q29udmV4UG9seWdvbjo6YW50aWFsaWFzZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0NvbnZleFBvbHln
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpj
bGlwQ29udmV4UG9seWdvbik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6ZHJhd0xp
bmVGb3JCb3hTaWRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29y
YXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25z
KToKKwogMjAxNi0wMS0xMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIGEgd2F5IHRvIHRlc3QgZGlzcGxheS1saXN0IGRyYXdpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCBjMDg5NTU4MzJiNmYzNTVjZjIxYWQ1ZDMzYzRhODA0NGE1OTYzNGFmLi40
ZDg0MWFjMjFhYzNmY2JmMDdhYzM1NDNhNWIxNTIzZWYyMjdhZjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYtMDEtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnZl
eFBvbHlnb24oKSBhbmQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbigpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxNzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdDb252ZXhQb2x5Z29uKCkgYW5kIEdyYXBoaWNzQ29udGV4dDo6Y2xpcENvbnZleFBv
bHlnb24oKSB3ZXJlCisgICAgICAgIHBvb3JseSBuYW1lZCAobm9uLWNvbnZleCBwb2x5Z29ucyBh
cmUgYWxsb3dlZCksIGFuZCBqdXN0IHN5bnRhY3RpYyBzdWdhciBvdmVyCisgICAgICAgIGNsaXBQ
YXRoKCkgYW5kIGRyYXdQYXRoKCkuCisgICAgICAgIAorICAgICAgICBSZW1vdmUgdGhlbSwgYnV0
IGFkZCBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIFBhdGggZnJvbSBhIFZlY3Rv
ciBvZiAKKyAgICAgICAgcG9pbnRzLiBGb3IgQ0csIHdlIGNhbiB1c2UgdGhlIG1vcmUgZWZmaWNp
ZW50IENHUGF0aEFkZExpbmVzKCkuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKEhVRFNsaWRlcjo6ZHJhdyk6CisKIDIwMTYtMDEtMDUgIFBlciBB
cm5lIFZvbGxhbiAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gRG93
bmxvYWQgc2hvdWxkIHVzZSBoZWFkZXIgdmFsdWVzIGZyb20gcHJvdmlkZWQgcmVxdWVzdCBvYmpl
Y3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCmluZGV4IGU2Mzc3YjgwZDk3ZjRjY2UxOTIzZTM0ZTFmMTg3ZWY1NGQwYjFjYTYuLjRm
ZmE3YzZkNjAyODJjYWJlNTkzNWM4MzE0YWY1NDc4YmU1OGEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zNDIsNyAr
MzQyLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3Qm
KTsKICAgICB2b2lkIGRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENv
bG9yJiBlbGxpcHNlQ29sb3IsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcik7Ci0gICAgdm9pZCBk
cmF3Q29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiwgYm9v
bCBzaG91bGRBbnRpYWxpYXMgPSBmYWxzZSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZp
bGxQYXRoKGNvbnN0IFBhdGgmKTsKICAgICB2b2lkIHN0cm9rZVBhdGgoY29uc3QgUGF0aCYpOwpA
QCAtMzg4LDcgKzM4Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBPdXQoY29uc3QgRmxvYXRS
ZWN0Jik7CiAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYpOwogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlID0gUlVMRV9FVkVO
T0REKTsKLSAgICB2b2lkIGNsaXBDb252ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0
IEZsb2F0UG9pbnQqLCBib29sIGFudGlhbGlhcyA9IHRydWUpOwogICAgIHZvaWQgY2xpcFRvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICAKICAgICBJbnRS
ZWN0IGNsaXBCb3VuZHMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aC5jcHAKaW5kZXggZjA4OGVmZmM0MWJkNDViMDg1MzZkNWI2MWIyMzZhZTgzYTFhMmFlNS4u
MDFjNjIzZTY3MDAxOGUxZjM4MDI4ZmY4YTYwZDNmMGI4MTIyZWVlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAj
aW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVk
ZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTE2MiwxMCArMTYz
LDYxIEBAIHZvaWQgUGF0aDo6YWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMCiB9CiAKICNpZiAhVVNFKENHKQorUGF0aCBQ
YXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQ+JiBwb2lu
dHMpCit7CisgICAgUGF0aCBwYXRoOworICAgIGlmIChwb2ludHMuc2l6ZSgpIDwgMikKKyAgICAg
ICAgcmV0dXJuIHBhdGg7CisKKyAgICBwYXRoLm1vdmVUbyhwb2ludHNbMF0pOworICAgIGZvciAo
c2l6ZV90IGkgPSAxOyBpIDwgcG9pbnRzLnNpemUoKTsgKytpKQorICAgICAgICBwYXRoLmFkZExp
bmVUbyhwb2ludHNbaV0pOworCisgICAgcGF0aC5jbG9zZVN1YnBhdGgoKTsKKyAgICByZXR1cm4g
cGF0aDsKK30KKwogRmxvYXRSZWN0IFBhdGg6OmZhc3RCb3VuZGluZ1JlY3QoKSBjb25zdAogewog
ICAgIHJldHVybiBib3VuZGluZ1JlY3QoKTsKIH0KICNlbmRpZgogCisjaWZuZGVmIE5ERUJVRwor
dm9pZCBQYXRoOjpkdW1wKCkgY29uc3QKK3sKKyAgICBUZXh0U3RyZWFtIHN0cmVhbTsKKyAgICBz
dHJlYW0gPDwgKnRoaXM7CisgICAgV1RGTG9nQWx3YXlzKCIlcyIsIHN0cmVhbS5yZWxlYXNlKCku
dXRmOCgpLmRhdGEoKSk7Cit9CisjZW5kaWYKKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiBzdHJlYW0sIGNvbnN0IFBhdGgmIHBhdGgpCit7CisgICAgVGV4dFN0cmVhbTo6R3Jv
dXBTY29wZSBncm91cChzdHJlYW0pOworICAgIHN0cmVhbSA8PCAicGF0aCAiIDw8ICZwYXRoOwor
CisgICAgcGF0aC5hcHBseShbJnN0cmVhbV0oY29uc3QgUGF0aEVsZW1lbnQmIGVsZW1lbnQpIHsK
KyAgICAgICAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHsKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVu
dE1vdmVUb1BvaW50OiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMSB2YWx1ZS4K
KyAgICAgICAgICAgIHN0cmVhbSA8PCAiIG1vdmUgdG8gIiA8PCBlbGVtZW50LnBvaW50c1swXTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkTGluZVRvUG9p
bnQ6IC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVlLgorICAgICAgICAg
ICAgc3RyZWFtIDw8ICIgYWRkIGxpbmUgdG8gIiA8PCBlbGVtZW50LnBvaW50c1swXTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2lu
dDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDIgdmFsdWVzLgorICAgICAgICAg
ICAgc3RyZWFtIDw8ICIgYWRkIHF1YWQgY3VydmUgdG8gIiA8PCBlbGVtZW50LnBvaW50c1swXSA8
PCAiICIgPDwgZWxlbWVudC5wb2ludHNbMV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2ls
bCBjb250YWluIDMgdmFsdWVzLgorICAgICAgICAgICAgc3RyZWFtIDw8ICIgYWRkIGN1cnZlIHRv
ICIgPDwgZWxlbWVudC5wb2ludHNbMF0gPDwgIiAiIDw8IGVsZW1lbnQucG9pbnRzWzFdIDw8ICIg
IiA8PCBlbGVtZW50LnBvaW50c1syXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFBhdGhFbGVtZW50Q2xvc2VTdWJwYXRoOiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRh
aW4gbm8gdmFsdWVzLgorICAgICAgICAgICAgc3RyZWFtIDw8ICIgY2xvc2Ugc3VicGF0aCI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0pOworICAgIAorICAgIHJldHVybiBz
dHJlYW07Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAppbmRl
eCBkMzdmOTAwYTllZTllOTZlNzZiMTkwNjEwODU3MWEwZjlhZDY1YWU4Li44M2RjYjE0NTRjODA2
MGUxM2E3MzJkYmU3MTMyZTZmYWVkMmQ5YjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgVVNFKENHKQogCkBAIC01MCw3ICs1MSw3IEBAIHR5
cGVkZWYgV2ViQ29yZTo6Q2Fpcm9QYXRoIFBsYXRmb3JtUGF0aDsKICNlbGlmIFVTRShXSU5HREkp
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBQbGF0Zm9ybVBhdGg7CitjbGFzcyBQ
bGF0Zm9ybVBhdGg7CiB9CiB0eXBlZGVmIFdlYkNvcmU6OlBsYXRmb3JtUGF0aCBQbGF0Zm9ybVBh
dGg7CiAKQEAgLTcyLDYgKzczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBh
dGhUcmF2ZXJzYWxTdGF0ZTsKICAgICBjbGFzcyBSb3VuZGVkUmVjdDsKICAgICBjbGFzcyBTdHJv
a2VTdHlsZUFwcGxpZXI7CisgICAgY2xhc3MgVGV4dFN0cmVhbTsKIAogICAgIGVudW0gUGF0aEVs
ZW1lbnRUeXBlIHsKICAgICAgICAgUGF0aEVsZW1lbnRNb3ZlVG9Qb2ludCwgLy8gVGhlIHBvaW50
cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCkBAIC0xMDIsNiArMTA0LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIFBhdGgoY29uc3QgUGF0aCYp
OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXRoJiBvcGVyYXRvcj0oY29uc3QgUGF0aCYpOwor
ICAgICAgICAKKyAgICAgICAgc3RhdGljIFBhdGggcG9seWdvblBhdGhGcm9tUG9pbnRzKGNvbnN0
IFZlY3RvcjxGbG9hdFBvaW50PiYpOwogCiAgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgRmxv
YXRQb2ludCYsIFdpbmRSdWxlIHJ1bGUgPSBSVUxFX05PTlpFUk8pIGNvbnN0OwogICAgICAgICBi
b29sIHN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciosIGNvbnN0IEZsb2F0UG9pbnQm
KSBjb25zdDsKQEAgLTE2NCwxMCArMTY4LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBwbGF0Zm9ybUFkZFBhdGhGb3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRS
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21SaWdodFJhZGl1cyk7CiAjZW5kaWYKIAorI2lmbmRlZiBOREVCVUcKKyAgICAgICAg
dm9pZCBkdW1wKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFBsYXRm
b3JtUGF0aFB0ciBtX3BhdGg7CiAgICAgfTsKIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgUGF0aCYpOworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCmluZGV4IGMwNzQ0YjAwNzgxMzFhMjY4YTFjZTk5MzBjZWE1MWI0OTNkMmM5NTIu
LmIwMDM2ZmQ2NWUyNGE4YTM1ODc5MzJkNThhOTAzMzUyODQzNzc0YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKQEAgLTc3LDE0ICs3Nyw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBm
aWxsUmVjdFdpdGhDb2xvcihjYWlyb190KiBjciwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDCiAgICAgY2Fpcm9fZmlsbChjcik7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZENvbnZleFBvbHln
b25Ub0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgc2l6ZV90IG51bVBvaW50cywgY29uc3QgRmxv
YXRQb2ludCogcG9pbnRzKQotewotICAgIGNhaXJvX21vdmVfdG8oY29udGV4dCwgcG9pbnRzWzBd
LngoKSwgcG9pbnRzWzBdLnkoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBudW1Qb2lu
dHM7IGkrKykKLSAgICAgICAgY2Fpcm9fbGluZV90byhjb250ZXh0LCBwb2ludHNbaV0ueCgpLCBw
b2ludHNbaV0ueSgpKTsKLSAgICBjYWlyb19jbG9zZV9wYXRoKGNvbnRleHQpOwotfQotCiBlbnVt
IFBhdGhEcmF3aW5nU3R5bGUgeyAKICAgICBGaWxsID0gMSwKICAgICBTdHJva2UgPSAyLApAQCAt
NDM1LDY5ICs0MjcsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2UoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogICAgICAgICBjYWlyb19uZXdfcGF0aChjcik7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbihzaXplX3QgbnBvaW50cywgY29uc3Qg
RmxvYXRQb2ludCogcG9pbnRzLCBib29sIHNob3VsZEFudGlhbGlhcykKLXsKLSAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobnBvaW50cyA8PSAx
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdDb252ZXhQb2x5Z29uKG5wb2ludHMsIHBvaW50cywg
c2hvdWxkQW50aWFsaWFzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhaXJvX3Qq
IGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Ci0KLSAgICBjYWlyb19zYXZlKGNyKTsKLSAg
ICBjYWlyb19zZXRfYW50aWFsaWFzKGNyLCBzaG91bGRBbnRpYWxpYXMgPyBDQUlST19BTlRJQUxJ
QVNfREVGQVVMVCA6IENBSVJPX0FOVElBTElBU19OT05FKTsKLSAgICBhZGRDb252ZXhQb2x5Z29u
VG9Db250ZXh0KGNyLCBucG9pbnRzLCBwb2ludHMpOwotCi0gICAgaWYgKGZpbGxDb2xvcigpLmFs
cGhhKCkpIHsKLSAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwgZmlsbENvbG9yKCkp
OwotICAgICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBDQUlST19GSUxMX1JVTEVfRVZFTl9P
REQpOwotICAgICAgICBjYWlyb19maWxsX3ByZXNlcnZlKGNyKTsKLSAgICB9Ci0KLSAgICBpZiAo
c3Ryb2tlU3R5bGUoKSAhPSBOb1N0cm9rZSkgewotICAgICAgICBzZXRTb3VyY2VSR0JBRnJvbUNv
bG9yKGNyLCBzdHJva2VDb2xvcigpKTsKLSAgICAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgoY3Is
IHN0cm9rZVRoaWNrbmVzcygpKTsKLSAgICAgICAgY2Fpcm9fc3Ryb2tlKGNyKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwotCi0gICAgY2Fpcm9fcmVzdG9yZShjcik7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVt
UG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMsIGJvb2wgYW50aWFsaWFzZWQpCi17Ci0g
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG51
bVBvaW50cyA8PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkg
ewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsaXBDb252ZXhQb2x5Z29uKG51bVBv
aW50cywgcG9pbnRzLCBhbnRpYWxpYXNlZCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwotCi0gICAgY2Fpcm9fbmV3
X3BhdGgoY3IpOwotICAgIGNhaXJvX2ZpbGxfcnVsZV90IHNhdmVkRmlsbFJ1bGUgPSBjYWlyb19n
ZXRfZmlsbF9ydWxlKGNyKTsKLSAgICBjYWlyb19hbnRpYWxpYXNfdCBzYXZlZEFudGlhbGlhc1J1
bGUgPSBjYWlyb19nZXRfYW50aWFsaWFzKGNyKTsKLQotICAgIGNhaXJvX3NldF9hbnRpYWxpYXMo
Y3IsIGFudGlhbGlhc2VkID8gQ0FJUk9fQU5USUFMSUFTX0RFRkFVTFQgOiBDQUlST19BTlRJQUxJ
QVNfTk9ORSk7Ci0gICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX1dJ
TkRJTkcpOwotICAgIGFkZENvbnZleFBvbHlnb25Ub0NvbnRleHQoY3IsIG51bVBvaW50cywgcG9p
bnRzKTsKLSAgICBjYWlyb19jbGlwKGNyKTsKLQotICAgIGNhaXJvX3NldF9hbnRpYWxpYXMoY3Is
IHNhdmVkQW50aWFsaWFzUnVsZSk7Ci0gICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRG
aWxsUnVsZSk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRo
JiBwYXRoKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0aC5pc0VtcHR5KCkp
CkBAIC0xMjk0LDcgKzEyMjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1T
aG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCiAKICAgICAvLyBXaGVuIHRydWUsIHVzZSB0aGUg
ZGVmYXVsdCBDYWlybyBiYWNrZW5kIGFudGlhbGlhcyBtb2RlICh1c3VhbGx5IHRoaXMKICAgICAv
LyBlbmFibGVzIHN0YW5kYXJkICdncmF5c2NhbGUnIGFudGlhbGlhc2luZyk7IGZhbHNlIHRvIGV4
cGxpY2l0bHkgZGlzYWJsZQotICAgIC8vIGFudGlhbGlhc2luZy4gVGhpcyBpcyB0aGUgc2FtZSBz
dHJhdGVneSBhcyB1c2VkIGluIGRyYXdDb252ZXhQb2x5Z29uKCkuCisgICAgLy8gYW50aWFsaWFz
aW5nLgogICAgIGNhaXJvX3NldF9hbnRpYWxpYXMocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGVu
YWJsZSA/IENBSVJPX0FOVElBTElBU19ERUZBVUxUIDogQ0FJUk9fQU5USUFMSUFTX05PTkUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMWM2Yjk0YTBkNmEwM2E2OTUwNDUxYWY5N2E0MWI0
MDAxN2NlNmY3OC4uYTQ0OTY1NDA0NmFlOGYxMGFiYWQxNjQxNWU2NDYwYWRiYmJiOGU4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcApAQCAtNTMyLDY4ICs1MzIsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGRyYXdQYXRoKHBhdGgp
OwogfQogCi1zdGF0aWMgdm9pZCBhZGRDb252ZXhQb2x5Z29uVG9QYXRoKFBhdGgmIHBhdGgsIHNp
emVfdCBudW1iZXJPZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzKQotewotICAgIEFT
U0VSVChudW1iZXJPZlBvaW50cyA+IDApOwotCi0gICAgcGF0aC5tb3ZlVG8ocG9pbnRzWzBdKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG51bWJlck9mUG9pbnRzOyArK2kpCi0gICAgICAg
IHBhdGguYWRkTGluZVRvKHBvaW50c1tpXSk7Ci0gICAgcGF0aC5jbG9zZVN1YnBhdGgoKTsKLX0K
LQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKHNpemVfdCBudW1iZXJP
ZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzLCBib29sIGFudGlhbGlhc2VkKQotewot
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChu
dW1iZXJPZlBvaW50cyA8PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXNSZWNvcmRp
bmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdDb252ZXhQb2x5Z29u
KG51bWJlck9mUG9pbnRzLCBwb2ludHMsIGFudGlhbGlhc2VkKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0K
LSAgICBpZiAoYW50aWFsaWFzZWQgIT0gc2hvdWxkQW50aWFsaWFzKCkpCi0gICAgICAgIENHQ29u
dGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBhbnRpYWxpYXNlZCk7Ci0KLSAgICBQYXRo
IHBhdGg7Ci0gICAgYWRkQ29udmV4UG9seWdvblRvUGF0aChwYXRoLCBudW1iZXJPZlBvaW50cywg
cG9pbnRzKTsKLSAgICBkcmF3UGF0aChwYXRoKTsKLQotICAgIGlmIChhbnRpYWxpYXNlZCAhPSBz
aG91bGRBbnRpYWxpYXMoKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNv
bnRleHQsIHNob3VsZEFudGlhbGlhcygpKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNs
aXBDb252ZXhQb2x5Z29uKHNpemVfdCBudW1iZXJPZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCog
cG9pbnRzLCBib29sIGFudGlhbGlhcykKLXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobnVtYmVyT2ZQb2ludHMgPD0gMSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlz
dFJlY29yZGVyLT5jbGlwQ29udmV4UG9seWdvbihudW1iZXJPZlBvaW50cywgcG9pbnRzLCBhbnRp
YWxpYXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0dDb250ZXh0UmVmIGNvbnRl
eHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLQotICAgIGlmIChhbnRpYWxpYXMgIT0gc2hvdWxkQW50
aWFsaWFzKCkpCi0gICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBh
bnRpYWxpYXMpOwotCi0gICAgUGF0aCBwYXRoOwotICAgIGFkZENvbnZleFBvbHlnb25Ub1BhdGgo
cGF0aCwgbnVtYmVyT2ZQb2ludHMsIHBvaW50cyk7Ci0gICAgY2xpcFBhdGgocGF0aCwgUlVMRV9O
T05aRVJPKTsKLQotICAgIGlmIChhbnRpYWxpYXMgIT0gc2hvdWxkQW50aWFsaWFzKCkpCi0gICAg
ICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBzaG91bGRBbnRpYWxpYXMo
KSk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4oKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC03MDMsMTQgKzY0MSw2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICBDR0NvbnRl
eHREcmF3UGF0aChjb250ZXh0LCBkcmF3aW5nTW9kZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9p
ZCBmaWxsUGF0aFdpdGhGaWxsUnVsZShDR0NvbnRleHRSZWYgY29udGV4dCwgV2luZFJ1bGUgZmls
bFJ1bGUpCi17Ci0gICAgaWYgKGZpbGxSdWxlID09IFJVTEVfRVZFTk9ERCkKLSAgICAgICAgQ0dD
b250ZXh0RU9GaWxsUGF0aChjb250ZXh0KTsKLSAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dEZp
bGxQYXRoKGNvbnRleHQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29u
c3QgUGF0aCYgcGF0aCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhdGguaXNF
bXB0eSgpKQpAQCAtNzY3LDcgKzY5NywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBh
dGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKQogICAg
ICAgICBhcHBseUZpbGxQYXR0ZXJuKCk7Ci0gICAgZmlsbFBhdGhXaXRoRmlsbFJ1bGUoY29udGV4
dCwgZmlsbFJ1bGUoKSk7CisKKyAgICBpZiAoZmlsbFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQpCisg
ICAgICAgIENHQ29udGV4dEVPRmlsbFBhdGgoY29udGV4dCk7CisgICAgZWxzZQorICAgICAgICBD
R0NvbnRleHRGaWxsUGF0aChjb250ZXh0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXRoQ0cuY3BwCmluZGV4IDE0YmNlOTNjZWUwZDU4ODlmOWZmMGRiMTc1YjA3
NDI2NjE3ZDIwOTkuLjcwNzExMmRjYWQyODc2NzNkMjhiNGRiMmVlNjcwNzc1YmRmYzM0NzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcApAQCAt
NzMsNiArNzMsMjIgQEAgc3RhdGljIGlubGluZSBDR0NvbnRleHRSZWYgc2NyYXRjaENvbnRleHQo
KQogICAgIHJldHVybiBjb250ZXh0OwogfQogCitQYXRoIFBhdGg6OnBvbHlnb25QYXRoRnJvbVBv
aW50cyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludD4mIHBvaW50cykKK3sKKyAgICBQYXRoIHBhdGg7
CisgICAgaWYgKHBvaW50cy5zaXplKCkgPCAyKQorICAgICAgICByZXR1cm4gcGF0aDsKKworICAg
IFZlY3RvcjxDR1BvaW50LCAzMj4gY2dQb2ludHM7CisgICAgY2dQb2ludHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShwb2ludHMuc2l6ZSgpIC0gMSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwb2ludHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGNnUG9pbnRzLnVuY2hlY2tlZEFwcGVuZChw
b2ludHNbaV0pOworCisgICAgQ0dQYXRoQWRkTGluZXMocGF0aC5lbnN1cmVQbGF0Zm9ybVBhdGgo
KSwgbnVsbHB0ciwgY2dQb2ludHMuZGF0YSgpLCBjZ1BvaW50cy5zaXplKCkpOworICAgIHBhdGgu
Y2xvc2VTdWJwYXRoKCk7CisgICAgcmV0dXJuIHBhdGg7Cit9CisKIFBhdGg6OlBhdGgoKQogICAg
IDogbV9wYXRoKG51bGxwdHIpCiB7CkBAIC0yNDUsMjcgKzI2MSwyNyBAQCBGbG9hdFJlY3QgUGF0
aDo6c3Ryb2tlQm91bmRpbmdSZWN0KFN0cm9rZVN0eWxlQXBwbGllciogYXBwbGllcikgY29uc3QK
IAogdm9pZCBQYXRoOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCiB7Ci0gICAgQ0dQ
YXRoTW92ZVRvUG9pbnQoZW5zdXJlUGxhdGZvcm1QYXRoKCksIDAsIHBvaW50LngoKSwgcG9pbnQu
eSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChlbnN1cmVQbGF0Zm9ybVBhdGgoKSwgbnVsbHB0
ciwgcG9pbnQueCgpLCBwb2ludC55KCkpOwogfQogCiB2b2lkIFBhdGg6OmFkZExpbmVUbyhjb25z
dCBGbG9hdFBvaW50JiBwKQogewotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KGVuc3VyZVBsYXRm
b3JtUGF0aCgpLCAwLCBwLngoKSwgcC55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KGVu
c3VyZVBsYXRmb3JtUGF0aCgpLCBudWxscHRyLCBwLngoKSwgcC55KCkpOwogfQogCiB2b2lkIFBh
dGg6OmFkZFF1YWRDdXJ2ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIGNwLCBjb25zdCBGbG9hdFBvaW50
JiBwKQogewotICAgIENHUGF0aEFkZFF1YWRDdXJ2ZVRvUG9pbnQoZW5zdXJlUGxhdGZvcm1QYXRo
KCksIDAsIGNwLngoKSwgY3AueSgpLCBwLngoKSwgcC55KCkpOworICAgIENHUGF0aEFkZFF1YWRD
dXJ2ZVRvUG9pbnQoZW5zdXJlUGxhdGZvcm1QYXRoKCksIG51bGxwdHIsIGNwLngoKSwgY3AueSgp
LCBwLngoKSwgcC55KCkpOwogfQogCiB2b2lkIFBhdGg6OmFkZEJlemllckN1cnZlVG8oY29uc3Qg
RmxvYXRQb2ludCYgY3AxLCBjb25zdCBGbG9hdFBvaW50JiBjcDIsIGNvbnN0IEZsb2F0UG9pbnQm
IHApCiB7Ci0gICAgQ0dQYXRoQWRkQ3VydmVUb1BvaW50KGVuc3VyZVBsYXRmb3JtUGF0aCgpLCAw
LCBjcDEueCgpLCBjcDEueSgpLCBjcDIueCgpLCBjcDIueSgpLCBwLngoKSwgcC55KCkpOworICAg
IENHUGF0aEFkZEN1cnZlVG9Qb2ludChlbnN1cmVQbGF0Zm9ybVBhdGgoKSwgbnVsbHB0ciwgY3Ax
LngoKSwgY3AxLnkoKSwgY3AyLngoKSwgY3AyLnkoKSwgcC54KCksIHAueSgpKTsKIH0KIAogdm9p
ZCBQYXRoOjphZGRBcmNUbyhjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYg
cDIsIGZsb2F0IHJhZGl1cykKIHsKLSAgICBDR1BhdGhBZGRBcmNUb1BvaW50KGVuc3VyZVBsYXRm
b3JtUGF0aCgpLCAwLCBwMS54KCksIHAxLnkoKSwgcDIueCgpLCBwMi55KCksIHJhZGl1cyk7Cisg
ICAgQ0dQYXRoQWRkQXJjVG9Qb2ludChlbnN1cmVQbGF0Zm9ybVBhdGgoKSwgbnVsbHB0ciwgcDEu
eCgpLCBwMS55KCksIHAyLngoKSwgcDIueSgpLCByYWRpdXMpOwogfQogCiB2b2lkIFBhdGg6OnBs
YXRmb3JtQWRkUGF0aEZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
RmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVz
LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90
dG9tUmlnaHRSYWRpdXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXgg
MGNhYmUxNWUwYzY4ZWQ4MDhmYmNmMWRiZTNjNWQ0OGQ2ODg3OGQ1ZC4uMmU0OTNhYjE4YzAzNGQy
MmMzODNjZTc3M2U2MTVmYTg5NzdiNjMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcApAQCAtNzksOCArNzksNiBAQCBzaXplX3QgSXRlbTo6c2l6ZUluQnl0ZXMoY29uc3Qg
SXRlbSYgaXRlbSkKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwT3V0VG9QYXRo
PihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHJldHVybiBz
aXplb2YoZG93bmNhc3Q8Q2xpcFBhdGg+KGl0ZW0pKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
Q29udmV4UG9seWdvbjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwQ29udmV4
UG9seWdvbj4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAg
IHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0dseXBocz4oaXRlbSkpOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZToKQEAgLTEwNSw4ICsxMDMsNiBAQCBzaXplX3QgSXRlbTo6c2l6ZUlu
Qnl0ZXMoY29uc3QgSXRlbSYgaXRlbSkKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxE
cmF3TGluZUZvckRvY3VtZW50TWFya2VyPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0VsbGlwc2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0VsbGlwc2U+KGl0
ZW0pKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Q29udmV4UG9seWdvbjoKLSAgICAgICAgcmV0
dXJuIHNpemVvZihkb3duY2FzdDxEcmF3Q29udmV4UG9seWdvbj4oaXRlbSkpOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdQYXRoOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQ
YXRoPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6CkBAIC0z
NDgsMjYgKzM0NCw2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBDbGlwUGF0aCYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLUNsaXBDb252
ZXhQb2x5Z29uOjpDbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtYmVyT2ZQb2ludHMsIGNvbnN0
IEZsb2F0UG9pbnQqIHBvaW50cywgYm9vbCBhbnRpYWxpYXNlZCkKLSAgICA6IEl0ZW0oSXRlbVR5
cGU6OkNsaXBDb252ZXhQb2x5Z29uKQotICAgICwgbV9hbnRpYWxpYXMoYW50aWFsaWFzZWQpCi17
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlBvaW50czsgKytpKQotICAgICAg
ICBtX3BvaW50cy5hcHBlbmQocG9pbnRzW2ldKTsKLX0KLQotdm9pZCBDbGlwQ29udmV4UG9seWdv
bjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAotewotICAgIGNvbnRleHQu
Y2xpcENvbnZleFBvbHlnb24obV9wb2ludHMuc2l6ZSgpLCBtX3BvaW50cy5kYXRhKCksIG1fYW50
aWFsaWFzKTsKLX0KLQotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IENsaXBDb252ZXhQb2x5Z29uJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0
eSgicG9pbnRzIiwgaXRlbS5wb2ludHMoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJhbnRpYWxp
YXMiLCBpdGVtLmFudGlhbGlhcygpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIERyYXdHbHlwaHM6
OkRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5
cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBjb3VudCwg
Y29uc3QgRmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2NhbEFu
Y2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKICAgICA6IERyYXdpbmdJdGVt
KEl0ZW1UeXBlOjpEcmF3R2x5cGhzKQogICAgICwgbV9mb250KGNvbnN0X2Nhc3Q8Rm9udCY+KGZv
bnQpKQpAQCAtNjgyLDQ3ICs2NTgsNiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0VsbGlwc2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwog
fQogCi0vLyBGSVhNRTogU2hhcmUgdGhpcyBjb2RlLgotdm9pZCBhZGRDb252ZXhQb2x5Z29uVG9Q
YXRoKFBhdGgmIHBhdGgsIHNpemVfdCBudW1iZXJPZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCog
cG9pbnRzKQotewotICAgIEFTU0VSVChudW1iZXJPZlBvaW50cyA+IDApOwotCi0gICAgcGF0aC5t
b3ZlVG8ocG9pbnRzWzBdKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG51bWJlck9mUG9p
bnRzOyArK2kpCi0gICAgICAgIHBhdGguYWRkTGluZVRvKHBvaW50c1tpXSk7Ci0gICAgcGF0aC5j
bG9zZVN1YnBhdGgoKTsKLX0KLQotRHJhd0NvbnZleFBvbHlnb246OkRyYXdDb252ZXhQb2x5Z29u
KHNpemVfdCBudW1iZXJPZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzLCBib29sIGFu
dGlhbGlhc2VkKQotICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdDb252ZXhQb2x5Z29u
KQotICAgICwgbV9hbnRpYWxpYXNlZChhbnRpYWxpYXNlZCkKLXsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bWJlck9mUG9pbnRzOyArK2kpCi0gICAgICAgIG1fcG9pbnRzLmFwcGVuZChw
b2ludHNbaV0pOwotfQotCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdDb252ZXhQb2x5Z29uOjps
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAotewotICAgIEZsb2F0UmVj
dCByZXN1bHQ7Ci0gICAgZm9yIChhdXRvJiBwb2ludCA6IG1fcG9pbnRzKQotICAgICAgICByZXN1
bHQuZXh0ZW5kKHBvaW50KTsKLSAgICByZXN1bHQuaW5mbGF0ZShtX2FudGlhbGlhc2VkID8gMSA6
IDApOyAvLyBBY2NvdW50IGZvciBhbnRpYWxpYXNpbmcKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci12b2lkIERyYXdDb252ZXhQb2x5Z29uOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0Ci17Ci0gICAgY29udGV4dC5kcmF3Q29udmV4UG9seWdvbihtX3BvaW50cy5zaXplKCks
IG1fcG9pbnRzLmRhdGEoKSwgbV9hbnRpYWxpYXNlZCk7Ci19Ci0KLXN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Q29udmV4UG9seWdvbiYgaXRl
bSkKLXsKLSAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3aW5nSXRlbSY+KGl0ZW0pOwot
ICAgIHRzLmR1bXBQcm9wZXJ0eSgicG9pbnRzIiwgaXRlbS5wb2ludHMoKSk7Ci0gICAgdHMuZHVt
cFByb3BlcnR5KCJhbnRpYWxpYXNlZCIsIGl0ZW0uYW50aWFsaWFzZWQoKSk7Ci0gICAgcmV0dXJu
IHRzOwotfQotCiB2b2lkIERyYXdQYXRoOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0CiB7CiAjaWYgVVNFKENHKQpAQCAtMTAyMyw3ICs5NTgsNiBAQCBzdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbVR5cGUmIHR5cGUpCiAg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDogdHMgPDwgImNsaXAtb3V0IjsgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDogdHMgPDwgImNsaXAtb3V0LXRvLXBhdGgiOyBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDogdHMgPDwgImNsaXAtcGF0aCI7IGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBDb252ZXhQb2x5Z29uOiB0cyA8PCAiY2xpcC1j
b252ZXgtcG9seWdvbiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6IHRz
IDw8ICJkcmF3LWdseXBocyI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZTog
dHMgPDwgImRyYXctaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJ
bWFnZTogdHMgPDwgImRyYXctdGlsZWQtaW1hZ2UiOyBicmVhazsKQEAgLTEwMzcsNyArOTcxLDYg
QEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0
ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6IHRzIDw8
ICJkcmF3LWxpbmVzLWZvci10ZXh0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xp
bmVGb3JEb2N1bWVudE1hcmtlcjogdHMgPDwgImRyYXctbGluZXMtZm9yLWRvY3VtZW50LW1hcmtl
ciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOiB0cyA8PCAiZHJhdy1l
bGxpcHNlIjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0NvbnZleFBvbHlnb246IHRz
IDw8ICJkcmF3LWNvbnZleC1wb2xnb24iOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0aDogdHMgPDwgImRyYXctcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdG
b2N1c1JpbmdQYXRoOiB0cyA8PCAiZHJhdy1mb2N1cy1yaW5nLXBhdGgiOyBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6IHRzIDw8ICJkcmF3LWZvY3VzLXJpbmct
cmVjdHMiOyBicmVhazsKQEAgLTExMTQsOSArMTA0Nyw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcFBhdGg6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PENsaXBQYXRoPihpdGVtKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcENvbnZleFBvbHlnb246Ci0gICAgICAg
IHRzIDw8IGRvd25jYXN0PENsaXBDb252ZXhQb2x5Z29uPihpdGVtKTsKLSAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8
RHJhd0dseXBocz4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTE1Miw5ICsxMDgyLDYgQEAg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8
RHJhd0VsbGlwc2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3Q29udmV4UG9seWdvbjoKLSAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd0NvbnZleFBvbHln
b24+KGl0ZW0pOwotICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoK
ICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1BhdGg+KGl0ZW0pOwogICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDA3ZDJkNWYyZGNiYWY0MzU4ZTQx
MjNmOWM0YmZkOGU4M2I3YzI1ZWEuLjUwNjVmMzgyOTcxNmExNWQ2ZWMyYTMzZWY1NzYwYjQ5NDQ3
NjZjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtNjQsNyArNjQsNiBA
QCBlbnVtIGNsYXNzIEl0ZW1UeXBlIHsKICAgICBDbGlwT3V0LAogICAgIENsaXBPdXRUb1BhdGgs
CiAgICAgQ2xpcFBhdGgsCi0gICAgQ2xpcENvbnZleFBvbHlnb24sCiAgICAgRHJhd0dseXBocywK
ICAgICBEcmF3SW1hZ2UsCiAgICAgRHJhd1RpbGVkSW1hZ2UsCkBAIC03OCw3ICs3Nyw2IEBAIGVu
dW0gY2xhc3MgSXRlbVR5cGUgewogICAgIERyYXdMaW5lc0ZvclRleHQsCiAgICAgRHJhd0xpbmVG
b3JEb2N1bWVudE1hcmtlciwKICAgICBEcmF3RWxsaXBzZSwKLSAgICBEcmF3Q29udmV4UG9seWdv
biwKICAgICBEcmF3UGF0aCwKICAgICBEcmF3Rm9jdXNSaW5nUGF0aCwKICAgICBEcmF3Rm9jdXNS
aW5nUmVjdHMsCkBAIC01MjIsMjUgKzUyMCw2IEBAIHByaXZhdGU6CiAgICAgV2luZFJ1bGUgbV93
aW5kUnVsZTsKIH07CiAKLWNsYXNzIENsaXBDb252ZXhQb2x5Z29uIDogcHVibGljIEl0ZW0gewot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8Q2xpcENvbnZleFBvbHlnb24+IGNyZWF0ZShzaXplX3Qg
bnVtYmVyT2ZQb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqIHBvaW50cywgYm9vbCBhbnRpYWxpYXNl
ZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENsaXBDb252ZXhQb2x5Z29u
KG51bWJlck9mUG9pbnRzLCBwb2ludHMsIGFudGlhbGlhc2VkKSk7Ci0gICAgfQotCi0gICAgY29u
c3QgVmVjdG9yPEZsb2F0UG9pbnQ+JiBwb2ludHMoKSBjb25zdCB7IHJldHVybiBtX3BvaW50czsg
fQotICAgIGJvb2wgYW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9hbnRpYWxpYXM7IH0KLQot
cHJpdmF0ZToKLSAgICBDbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtYmVyT2ZQb2ludHMsIGNv
bnN0IEZsb2F0UG9pbnQqLCBib29sIGFudGlhbGlhc2VkKTsKLQotICAgIHZpcnR1YWwgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLQotICAgIFZlY3RvcjxGbG9h
dFBvaW50PiBtX3BvaW50czsKLSAgICBib29sIG1fYW50aWFsaWFzOwotfTsKLQogY2xhc3MgRHJh
d0dseXBocyA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxE
cmF3R2x5cGhzPiBjcmVhdGUoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBj
b3VudCwgY29uc3QgRmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBs
b2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKQEAgLTg5NywyNiAr
ODc2LDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogfTsKIAotY2xhc3MgRHJh
d0NvbnZleFBvbHlnb24gOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewotcHVibGljOgotICAgIHN0YXRp
YyBSZWY8RHJhd0NvbnZleFBvbHlnb24+IGNyZWF0ZShzaXplX3QgbnVtYmVyT2ZQb2ludHMsIGNv
bnN0IEZsb2F0UG9pbnQqIHBvaW50cywgYm9vbCBhbnRpYWxpYXNlZCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdDb252ZXhQb2x5Z29uKG51bWJlck9mUG9pbnRzLCBw
b2ludHMsIGFudGlhbGlhc2VkKSk7Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9yPEZsb2F0UG9p
bnQ+JiBwb2ludHMoKSBjb25zdCB7IHJldHVybiBtX3BvaW50czsgfQotICAgIGJvb2wgYW50aWFs
aWFzZWQoKSBjb25zdCB7IHJldHVybiBtX2FudGlhbGlhc2VkOyB9Ci0KLXByaXZhdGU6Ci0gICAg
RHJhd0NvbnZleFBvbHlnb24oc2l6ZV90IG51bWJlck9mUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50
KiwgYm9vbCBhbnRpYWxpYXNlZCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwotCi0g
ICAgVmVjdG9yPEZsb2F0UG9pbnQ+IG1fcG9pbnRzOwotICAgIGJvb2wgbV9hbnRpYWxpYXNlZDsK
LX07Ci0KIGNsYXNzIERyYXdQYXRoIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPERyYXdQYXRoPiBjcmVhdGUoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTEzNTUs
OSArMTMxNCw2IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9zY2FsZUZhY3RvcjsKIH07CiAKLS8v
IEZJWE1FOiB0aGlzIG5lZWRzIHRvIG1vdmUuCi12b2lkIGFkZENvbnZleFBvbHlnb25Ub1BhdGgo
UGF0aCYsIHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqKTsKLQogVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgSXRlbSYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdApAQCAtMTM5MSw3ICsxMzQ3LDYgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19ESVNQTEFZTElTVF9JVEVNKENsaXApCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlM
SVNUX0lURU0oQ2xpcE91dCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRF
TShDbGlwT3V0VG9QYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KENsaXBQYXRoKQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKENsaXBD
b252ZXhQb2x5Z29uKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERy
YXdHbHlwaHMpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0lt
YWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdUaWxlZElt
YWdlKQpAQCAtMTQwNSw3ICsxMzYwLDYgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZ
TElTVF9JVEVNKERyYXdMaW5lKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9J
VEVNKERyYXdMaW5lc0ZvclRleHQpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oRHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RElTUExBWUxJU1RfSVRFTShEcmF3RWxsaXBzZSkKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElT
UExBWUxJU1RfSVRFTShEcmF3Q29udmV4UG9seWdvbikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RElTUExBWUxJU1RfSVRFTShEcmF3UGF0aCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExB
WUxJU1RfSVRFTShEcmF3Rm9jdXNSaW5nUGF0aCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElT
UExBWUxJU1RfSVRFTShEcmF3Rm9jdXNSaW5nUmVjdHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNzg5YTg0NmY4ZDkyNjg4OTU2Nzg4NzFhM2VlODA5MTZm
NjU1MTQyYS4uMzY2Y2ZmNzg2ZDIxZDhjNDU5OTFmNjM1YzU2ZTI5ZWMyM2JjNDcxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMjM3LDEyICsyMzcsNiBA
QCB2b2lkIFJlY29yZGVyOjpkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAg
dXBkYXRlSXRlbUV4dGVudChuZXdJdGVtKTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZHJhd0NvbnZl
eFBvbHlnb24oc2l6ZV90IG51bWJlck9mUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMs
IGJvb2wgYW50aWFsaWFzZWQpCi17Ci0gICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2Fz
dDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3Q29udmV4UG9seWdvbjo6Y3JlYXRlKG51bWJl
ck9mUG9pbnRzLCBwb2ludHMsIGFudGlhbGlhc2VkKSkpOwotICAgIHVwZGF0ZUl0ZW1FeHRlbnQo
bmV3SXRlbSk7Ci19Ci0KIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiB7CiAgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBw
ZW5kSXRlbShEcmF3UGF0aDo6Y3JlYXRlKHBhdGgpKSk7CkBAIC0zNjcsMTUgKzM2MSw2IEBAIHZv
aWQgUmVjb3JkZXI6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHdpbmRSdWxl
KQogICAgIGFwcGVuZEl0ZW0oQ2xpcFBhdGg6OmNyZWF0ZShwYXRoLCB3aW5kUnVsZSkpOwogfQog
Ci12b2lkIFJlY29yZGVyOjpjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25z
dCBGbG9hdFBvaW50KiBwb2ludHMsIGJvb2wgYW50aWFsaWFzKQotewotICAgIFBhdGggcG9seWdv
blBhdGg7Ci0gICAgYWRkQ29udmV4UG9seWdvblRvUGF0aChwb2x5Z29uUGF0aCwgbnVtUG9pbnRz
LCBwb2ludHMpOwotICAgIGN1cnJlbnRTdGF0ZSgpLmNsaXBCb3VuZHMuaW50ZXJzZWN0KHBvbHln
b25QYXRoLmZhc3RCb3VuZGluZ1JlY3QoKSk7Ci0KLSAgICBhcHBlbmRJdGVtKENsaXBDb252ZXhQ
b2x5Z29uOjpjcmVhdGUobnVtUG9pbnRzLCBwb2ludHMsIGFudGlhbGlhcykpOwotfQotCiB2b2lk
IFJlY29yZGVyOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
KQogewogICAgIC8vIEZJWE1FOiB0aGlzIGNoYW5nZXMgdGhlIGJhc2VDVE0sIHdoaWNoIHdpbGwg
aW52YWxpZGF0ZSBhbGwgb2Ygb3VyIGNhY2hlZCBleHRlbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKaW5kZXggMmYzNmEzZjgwMzVlZGE2ZDhjZDhjNjhiYWM0OTRlZmQ5
OTA4NDc1OS4uNTJlMzlhYzVmZWJkNDg1N2U3ZTIxOTVmMjg4NWExNzIzZjhhM2RhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC05NSw3ICs5NSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IERh
c2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzLCBmbG9hdCBz
dHJva2VUaGlja25lc3MpOwogICAgIHZvaWQgZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihjb25z
dCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIEdyYXBoaWNzQ29udGV4dDo6RG9jdW1lbnRNYXJr
ZXJMaW5lU3R5bGUpOwogICAgIHZvaWQgZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7Ci0g
ICAgdm9pZCBkcmF3Q29udmV4UG9seWdvbihzaXplX3QgbnVtYmVyT2ZQb2ludHMsIGNvbnN0IEZs
b2F0UG9pbnQqLCBib29sIGFudGlhbGlhc2VkKTsKICAgICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBh
dGgmKTsKIAogICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgaW50IHdpZHRoLCBp
bnQgb2Zmc2V0LCBjb25zdCBDb2xvciYpOwpAQCAtMTE2LDcgKzExNSw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsaXBPdXQoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBjbGlwT3V0KGNvbnN0
IFBhdGgmKTsKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSk7Ci0gICAg
dm9pZCBjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50
KiwgYm9vbCBhbnRpYWxpYXMpOwogICAgIAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCmluZGV4IDBhZmJkZjg0MmYzZmJkYmJlNjE3Yjk2YjJkMjQxMGM1NWEyZDk2
MjkuLjdjMWQwYTcyMTNlYjQwYzY1ZDkxZjAwNDRlMmFkNzMyNjg4ZDRmM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMTkw
NSw4ICsxOTA1LDYgQEAgc3RhdGljIHZvaWQgZmluZElubmVyVmVydGV4KGNvbnN0IEZsb2F0UG9p
bnQmIG91dGVyQ29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm4KIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVj
dCYgaW5uZXJCb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQm94U2lkZSBzaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJvb2wgc2Vjb25k
RWRnZU1hdGNoZXMpCiB7Ci0gICAgRmxvYXRQb2ludCBxdWFkWzRdOwotCiAgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgY29u
c3QgRmxvYXRSZWN0JiBvdXRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKG91dGVyQm9y
ZGVyLnJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGNvbnN0IEZsb2F0UmVjdCYgaW5u
ZXJSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhpbm5lckJvcmRlci5yZWN0KCksIGRldmlj
ZVNjYWxlRmFjdG9yKTsKQEAgLTE5MjcsMTIgKzE5MjUsMTQgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3ND
b250ZXgKICAgICAvLyAgICAgICAzICAvICAgICAgICAgICAgICBcICAzICAgCiAgICAgLy8gICAg
ICAgICAwLS0tLS0tLS0tLS0tLS0tLTMKICAgICAvLworICAgIFZlY3RvcjxGbG9hdFBvaW50PiBx
dWFkOworICAgIHF1YWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg0KTsKICAgICBzd2l0Y2ggKHNp
ZGUpIHsKICAgICBjYXNlIEJTVG9wOgotICAgICAgICBxdWFkWzBdID0gb3V0ZXJSZWN0Lm1pblhN
aW5ZQ29ybmVyKCk7Ci0gICAgICAgIHF1YWRbMV0gPSBpbm5lclJlY3QubWluWE1pbllDb3JuZXIo
KTsKLSAgICAgICAgcXVhZFsyXSA9IGlubmVyUmVjdC5tYXhYTWluWUNvcm5lcigpOwotICAgICAg
ICBxdWFkWzNdID0gb3V0ZXJSZWN0Lm1heFhNaW5ZQ29ybmVyKCk7CisgICAgICAgIHF1YWQudW5j
aGVja2VkQXBwZW5kKG91dGVyUmVjdC5taW5YTWluWUNvcm5lcigpKTsKKyAgICAgICAgcXVhZC51
bmNoZWNrZWRBcHBlbmQoaW5uZXJSZWN0Lm1pblhNaW5ZQ29ybmVyKCkpOworICAgICAgICBxdWFk
LnVuY2hlY2tlZEFwcGVuZChpbm5lclJlY3QubWF4WE1pbllDb3JuZXIoKSk7CisgICAgICAgIHF1
YWQudW5jaGVja2VkQXBwZW5kKG91dGVyUmVjdC5tYXhYTWluWUNvcm5lcigpKTsKIAogICAgICAg
ICBpZiAoIWlubmVyQm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLmlzWmVybygpKQogICAgICAgICAg
ICAgZmluZElubmVyVmVydGV4KG91dGVyUmVjdC5taW5YTWluWUNvcm5lcigpLCBpbm5lclJlY3Qu
bWluWE1pbllDb3JuZXIoKSwgY2VudGVyUG9pbnQsIHF1YWRbMV0pOwpAQCAtMTk0MiwxMCArMTk0
MiwxMCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24o
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleAogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgQlNMZWZ0OgotICAgICAgICBxdWFkWzBdID0gb3V0ZXJSZWN0Lm1pblhNaW5ZQ29ybmVyKCk7
Ci0gICAgICAgIHF1YWRbMV0gPSBpbm5lclJlY3QubWluWE1pbllDb3JuZXIoKTsKLSAgICAgICAg
cXVhZFsyXSA9IGlubmVyUmVjdC5taW5YTWF4WUNvcm5lcigpOwotICAgICAgICBxdWFkWzNdID0g
b3V0ZXJSZWN0Lm1pblhNYXhZQ29ybmVyKCk7CisgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5k
KG91dGVyUmVjdC5taW5YTWluWUNvcm5lcigpKTsKKyAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBl
bmQoaW5uZXJSZWN0Lm1pblhNaW5ZQ29ybmVyKCkpOworICAgICAgICBxdWFkLnVuY2hlY2tlZEFw
cGVuZChpbm5lclJlY3QubWluWE1heFlDb3JuZXIoKSk7CisgICAgICAgIHF1YWQudW5jaGVja2Vk
QXBwZW5kKG91dGVyUmVjdC5taW5YTWF4WUNvcm5lcigpKTsKIAogICAgICAgICBpZiAoIWlubmVy
Qm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLmlzWmVybygpKQogICAgICAgICAgICAgZmluZElubmVy
VmVydGV4KG91dGVyUmVjdC5taW5YTWluWUNvcm5lcigpLCBpbm5lclJlY3QubWluWE1pbllDb3Ju
ZXIoKSwgY2VudGVyUG9pbnQsIHF1YWRbMV0pOwpAQCAtMTk1NSwxMCArMTk1NSwxMCBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQlNCb3R0b206
Ci0gICAgICAgIHF1YWRbMF0gPSBvdXRlclJlY3QubWluWE1heFlDb3JuZXIoKTsKLSAgICAgICAg
cXVhZFsxXSA9IGlubmVyUmVjdC5taW5YTWF4WUNvcm5lcigpOwotICAgICAgICBxdWFkWzJdID0g
aW5uZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCk7Ci0gICAgICAgIHF1YWRbM10gPSBvdXRlclJlY3Qu
bWF4WE1heFlDb3JuZXIoKTsKKyAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQob3V0ZXJSZWN0
Lm1pblhNYXhZQ29ybmVyKCkpOworICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZChpbm5lclJl
Y3QubWluWE1heFlDb3JuZXIoKSk7CisgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKGlubmVy
UmVjdC5tYXhYTWF4WUNvcm5lcigpKTsKKyAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQob3V0
ZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCkpOwogCiAgICAgICAgIGlmICghaW5uZXJCb3JkZXIucmFk
aWkoKS5ib3R0b21MZWZ0KCkuaXNaZXJvKCkpCiAgICAgICAgICAgICBmaW5kSW5uZXJWZXJ0ZXgo
b3V0ZXJSZWN0Lm1pblhNYXhZQ29ybmVyKCksIGlubmVyUmVjdC5taW5YTWF4WUNvcm5lcigpLCBj
ZW50ZXJQb2ludCwgcXVhZFsxXSk7CkBAIC0xOTY4LDEwICsxOTY4LDEwIEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBCU1JpZ2h0OgotICAgICAg
ICBxdWFkWzBdID0gb3V0ZXJSZWN0Lm1heFhNaW5ZQ29ybmVyKCk7Ci0gICAgICAgIHF1YWRbMV0g
PSBpbm5lclJlY3QubWF4WE1pbllDb3JuZXIoKTsKLSAgICAgICAgcXVhZFsyXSA9IGlubmVyUmVj
dC5tYXhYTWF4WUNvcm5lcigpOwotICAgICAgICBxdWFkWzNdID0gb3V0ZXJSZWN0Lm1heFhNYXhZ
Q29ybmVyKCk7CisgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKG91dGVyUmVjdC5tYXhYTWlu
WUNvcm5lcigpKTsKKyAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQoaW5uZXJSZWN0Lm1heFhN
aW5ZQ29ybmVyKCkpOworICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZChpbm5lclJlY3QubWF4
WE1heFlDb3JuZXIoKSk7CisgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKG91dGVyUmVjdC5t
YXhYTWF4WUNvcm5lcigpKTsKIAogICAgICAgICBpZiAoIWlubmVyQm9yZGVyLnJhZGlpKCkudG9w
UmlnaHQoKS5pc1plcm8oKSkKICAgICAgICAgICAgIGZpbmRJbm5lclZlcnRleChvdXRlclJlY3Qu
bWF4WE1pbllDb3JuZXIoKSwgaW5uZXJSZWN0Lm1heFhNaW5ZQ29ybmVyKCksIGNlbnRlclBvaW50
LCBxdWFkWzFdKTsKQEAgLTE5ODQsMjUgKzE5ODQsMzUgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXgKICAgICAvLyBJZiB0aGUgYm9yZGVyIG1hdGNoZXMgYm90aCBvZiBpdHMgYWRqYWNlbnQgc2lk
ZXMsIGRvbid0IGFudGktYWxpYXMgdGhlIGNsaXAsIGFuZAogICAgIC8vIGlmIG5laXRoZXIgc2lk
ZSBtYXRjaGVzLCBhbnRpLWFsaWFzIHRoZSBjbGlwLgogICAgIGlmIChmaXJzdEVkZ2VNYXRjaGVz
ID09IHNlY29uZEVkZ2VNYXRjaGVzKSB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwQ29u
dmV4UG9seWdvbig0LCBxdWFkLCAhZmlyc3RFZGdlTWF0Y2hlcyk7CisgICAgICAgIGJvb2wgd2Fz
QW50aWFsaWFzZWQgPSBncmFwaGljc0NvbnRleHQuc2hvdWxkQW50aWFsaWFzKCk7CisgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoIWZpcnN0RWRnZU1hdGNoZXMpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuY2xpcFBhdGgoUGF0aDo6cG9seWdvblBhdGhGcm9tUG9p
bnRzKHF1YWQpLCBSVUxFX05PTlpFUk8pOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hv
dWxkQW50aWFsaWFzKHdhc0FudGlhbGlhc2VkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIC8vIFNxdWFyZSBvZmYgdGhlIGVuZCB3aGljaCBzaG91bGRuJ3QgYmUgYWZmZWN0ZWQgYnkg
YW50aWFsaWFzaW5nLCBhbmQgY2xpcC4KLSAgICBGbG9hdFBvaW50IGZpcnN0UXVhZFs0XTsKLSAg
ICBmaXJzdFF1YWRbMF0gPSBxdWFkWzBdOwotICAgIGZpcnN0UXVhZFsxXSA9IHF1YWRbMV07Ci0g
ICAgZmlyc3RRdWFkWzJdID0gc2lkZSA9PSBCU1RvcCB8fCBzaWRlID09IEJTQm90dG9tID8gRmxv
YXRQb2ludChxdWFkWzNdLngoKSwgcXVhZFsyXS55KCkpIDogRmxvYXRQb2ludChxdWFkWzJdLngo
KSwgcXVhZFszXS55KCkpOwotICAgIGZpcnN0UXVhZFszXSA9IHF1YWRbM107Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LmNsaXBDb252ZXhQb2x5Z29uKDQsIGZpcnN0UXVhZCwgIWZpcnN0RWRnZU1hdGNo
ZXMpOwotCi0gICAgRmxvYXRQb2ludCBzZWNvbmRRdWFkWzRdOwotICAgIHNlY29uZFF1YWRbMF0g
PSBxdWFkWzBdOwotICAgIHNlY29uZFF1YWRbMV0gPSBzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0g
QlNCb3R0b20gPyBGbG9hdFBvaW50KHF1YWRbMF0ueCgpLCBxdWFkWzFdLnkoKSkgOiBGbG9hdFBv
aW50KHF1YWRbMV0ueCgpLCBxdWFkWzBdLnkoKSk7Ci0gICAgc2Vjb25kUXVhZFsyXSA9IHF1YWRb
Ml07Ci0gICAgc2Vjb25kUXVhZFszXSA9IHF1YWRbM107CisgICAgVmVjdG9yPEZsb2F0UG9pbnQ+
IGZpcnN0UXVhZCA9IHsKKyAgICAgICAgcXVhZFswXSwKKyAgICAgICAgcXVhZFsxXSwKKyAgICAg
ICAgc2lkZSA9PSBCU1RvcCB8fCBzaWRlID09IEJTQm90dG9tID8gRmxvYXRQb2ludChxdWFkWzNd
LngoKSwgcXVhZFsyXS55KCkpIDogRmxvYXRQb2ludChxdWFkWzJdLngoKSwgcXVhZFszXS55KCkp
LAorICAgICAgICBxdWFkWzNdCisgICAgfTsKKyAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3Jh
cGhpY3NDb250ZXh0LnNob3VsZEFudGlhbGlhcygpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRT
aG91bGRBbnRpYWxpYXMoIWZpcnN0RWRnZU1hdGNoZXMpOworICAgIGdyYXBoaWNzQ29udGV4dC5j
bGlwUGF0aChQYXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoZmlyc3RRdWFkKSwgUlVMRV9OT05a
RVJPKTsKKworICAgIFZlY3RvcjxGbG9hdFBvaW50PiBzZWNvbmRRdWFkID0geworICAgICAgICBx
dWFkWzBdLAorICAgICAgICBzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0gQlNCb3R0b20gPyBGbG9h
dFBvaW50KHF1YWRbMF0ueCgpLCBxdWFkWzFdLnkoKSkgOiBGbG9hdFBvaW50KHF1YWRbMV0ueCgp
LCBxdWFkWzBdLnkoKSksCisgICAgICAgIHF1YWRbMl0sCisgICAgICAgIHF1YWRbM10KKyAgICB9
OwogICAgIC8vIEFudGlhbGlhc2luZyBhZmZlY3RzIHRoZSBzZWNvbmQgc2lkZS4KLSAgICBncmFw
aGljc0NvbnRleHQuY2xpcENvbnZleFBvbHlnb24oNCwgc2Vjb25kUXVhZCwgIXNlY29uZEVkZ2VN
YXRjaGVzKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKCFzZWNvbmRF
ZGdlTWF0Y2hlcyk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBQYXRoKFBhdGg6OnBvbHlnb25Q
YXRoRnJvbVBvaW50cyhzZWNvbmRRdWFkKSwgUlVMRV9OT05aRVJPKTsKKworICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMod2FzQW50aWFsaWFzZWQpOwogfQogCiBzdGF0aWMg
TGF5b3V0UmVjdCBjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKGNvbnN0IFJvdW5kZWRS
ZWN0JiBvdXRlckJvcmRlciwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBCb3hTaWRlIHNpZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYTJjYzcx
ZWIzOGU5Yjg4MmI4MDcxZTA5YjkzYmQ3ZDJjMTc0N2UzMy4uNjNkMzhjODc2Mjk5MjAyMTkyZjIx
MjA1MDNkZjRjMDE4NTFjMDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcApAQCAtMjAzNyw4ICsyMDM3LDYgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3
TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEYK
ICAgICAgICAgQVNTRVJUKHgyID49IHgxKTsKICAgICAgICAgQVNTRVJUKHkyID49IHkxKTsKICAg
ICAgICAgaWYgKCFhZGphY2VudFdpZHRoMSAmJiAhYWRqYWNlbnRXaWR0aDIpIHsKLSAgICAgICAg
ICAgIC8vIFR1cm4gb2ZmIGFudGlhbGlhc2luZyB0byBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgZHJh
d0NvbnZleFBvbHlnb24oKTsKLSAgICAgICAgICAgIC8vIHRoaXMgbWF0dGVycyBmb3IgcmVjdHMg
aW4gdHJhbnNmb3JtZWQgY29udGV4dHMuCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0
U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxDb2xvcihjb2xvcik7CiAgICAgICAgICAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3JhcGhp
Y3NDb250ZXh0LnNob3VsZEFudGlhbGlhcygpOwpAQCAtMjA1NSwzNyArMjA1Myw0MiBAQCB2b2lk
IFJlbmRlckVsZW1lbnQ6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgRgogICAgICAgICB4MiA9IHJvdW5kVG9EZXZpY2VQaXhlbCh4Miwg
ZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICB5MiA9IHJvdW5kVG9EZXZpY2VQaXhlbCh5Miwg
ZGV2aWNlU2NhbGVGYWN0b3IpOwogCi0gICAgICAgIEZsb2F0UG9pbnQgcXVhZFs0XTsKKyAgICAg
ICAgVmVjdG9yPEZsb2F0UG9pbnQ+IHF1YWQ7CisgICAgICAgIHF1YWQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSg0KTsKICAgICAgICAgc3dpdGNoIChzaWRlKSB7CiAgICAgICAgIGNhc2UgQlNUb3A6
Ci0gICAgICAgICAgICBxdWFkWzBdID0gRmxvYXRQb2ludCh4MSArIHN0ZDo6bWF4PGZsb2F0Pigt
YWRqYWNlbnRXaWR0aDEsIDApLCB5MSk7Ci0gICAgICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2lu
dCh4MSArIHN0ZDo6bWF4PGZsb2F0PihhZGphY2VudFdpZHRoMSwgMCksIHkyKTsKLSAgICAgICAg
ICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHgyIC0gc3RkOjptYXg8ZmxvYXQ+KGFkamFjZW50V2lk
dGgyLCAwKSwgeTIpOwotICAgICAgICAgICAgcXVhZFszXSA9IEZsb2F0UG9pbnQoeDIgLSBzdGQ6
Om1heDxmbG9hdD4oLWFkamFjZW50V2lkdGgyLCAwKSwgeTEpOworICAgICAgICAgICAgcXVhZC51
bmNoZWNrZWRBcHBlbmQoeyB4MSArIHN0ZDo6bWF4PGZsb2F0PigtYWRqYWNlbnRXaWR0aDEsIDAp
LCB5MSB9KTsKKyAgICAgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDEgKyBzdGQ6Om1h
eDxmbG9hdD4oIGFkamFjZW50V2lkdGgxLCAwKSwgeTIgfSk7CisgICAgICAgICAgICBxdWFkLnVu
Y2hlY2tlZEFwcGVuZCh7IHgyIC0gc3RkOjptYXg8ZmxvYXQ+KCBhZGphY2VudFdpZHRoMiwgMCks
IHkyIH0pOworICAgICAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQoeyB4MiAtIHN0ZDo6bWF4
PGZsb2F0PigtYWRqYWNlbnRXaWR0aDIsIDApLCB5MSB9KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEJTQm90dG9tOgotICAgICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQo
eDEgKyBzdGQ6Om1heDxmbG9hdD4oYWRqYWNlbnRXaWR0aDEsIDApLCB5MSk7Ci0gICAgICAgICAg
ICBxdWFkWzFdID0gRmxvYXRQb2ludCh4MSArIHN0ZDo6bWF4PGZsb2F0PigtYWRqYWNlbnRXaWR0
aDEsIDApLCB5Mik7Ci0gICAgICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh4MiAtIHN0ZDo6
bWF4PGZsb2F0PigtYWRqYWNlbnRXaWR0aDIsIDApLCB5Mik7Ci0gICAgICAgICAgICBxdWFkWzNd
ID0gRmxvYXRQb2ludCh4MiAtIHN0ZDo6bWF4PGZsb2F0PihhZGphY2VudFdpZHRoMiwgMCksIHkx
KTsKKyAgICAgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDEgKyBzdGQ6Om1heDxmbG9h
dD4oIGFkamFjZW50V2lkdGgxLCAwKSwgeTEgfSk7CisgICAgICAgICAgICBxdWFkLnVuY2hlY2tl
ZEFwcGVuZCh7IHgxICsgc3RkOjptYXg8ZmxvYXQ+KC1hZGphY2VudFdpZHRoMSwgMCksIHkyIH0p
OworICAgICAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQoeyB4MiAtIHN0ZDo6bWF4PGZsb2F0
PigtYWRqYWNlbnRXaWR0aDIsIDApLCB5MiB9KTsKKyAgICAgICAgICAgIHF1YWQudW5jaGVja2Vk
QXBwZW5kKHsgeDIgLSBzdGQ6Om1heDxmbG9hdD4oIGFkamFjZW50V2lkdGgyLCAwKSwgeTEgfSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCU0xlZnQ6Ci0gICAgICAgICAgICBx
dWFkWzBdID0gRmxvYXRQb2ludCh4MSwgeTEgKyBzdGQ6Om1heDxmbG9hdD4oLWFkamFjZW50V2lk
dGgxLCAwKSk7Ci0gICAgICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh4MSwgeTIgLSBzdGQ6
Om1heDxmbG9hdD4oLWFkamFjZW50V2lkdGgyLCAwKSk7Ci0gICAgICAgICAgICBxdWFkWzJdID0g
RmxvYXRQb2ludCh4MiwgeTIgLSBzdGQ6Om1heDxmbG9hdD4oYWRqYWNlbnRXaWR0aDIsIDApKTsK
LSAgICAgICAgICAgIHF1YWRbM10gPSBGbG9hdFBvaW50KHgyLCB5MSArIHN0ZDo6bWF4PGZsb2F0
PihhZGphY2VudFdpZHRoMSwgMCkpOworICAgICAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQo
eyB4MSwgeTEgKyBzdGQ6Om1heDxmbG9hdD4oLWFkamFjZW50V2lkdGgxLCAwKSB9KTsKKyAgICAg
ICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDEsIHkyIC0gc3RkOjptYXg8ZmxvYXQ+KC1h
ZGphY2VudFdpZHRoMiwgMCkgfSk7CisgICAgICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZCh7
IHgyLCB5MiAtIHN0ZDo6bWF4PGZsb2F0PiggYWRqYWNlbnRXaWR0aDIsIDApIH0pOworICAgICAg
ICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQoeyB4MiwgeTEgKyBzdGQ6Om1heDxmbG9hdD4oIGFk
amFjZW50V2lkdGgxLCAwKSB9KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJT
UmlnaHQ6Ci0gICAgICAgICAgICBxdWFkWzBdID0gRmxvYXRQb2ludCh4MSwgeTEgKyBzdGQ6Om1h
eDxmbG9hdD4oYWRqYWNlbnRXaWR0aDEsIDApKTsKLSAgICAgICAgICAgIHF1YWRbMV0gPSBGbG9h
dFBvaW50KHgxLCB5MiAtIHN0ZDo6bWF4PGZsb2F0PihhZGphY2VudFdpZHRoMiwgMCkpOwotICAg
ICAgICAgICAgcXVhZFsyXSA9IEZsb2F0UG9pbnQoeDIsIHkyIC0gc3RkOjptYXg8ZmxvYXQ+KC1h
ZGphY2VudFdpZHRoMiwgMCkpOwotICAgICAgICAgICAgcXVhZFszXSA9IEZsb2F0UG9pbnQoeDIs
IHkxICsgc3RkOjptYXg8ZmxvYXQ+KC1hZGphY2VudFdpZHRoMSwgMCkpOworICAgICAgICAgICAg
cXVhZC51bmNoZWNrZWRBcHBlbmQoeyB4MSwgeTEgKyBzdGQ6Om1heDxmbG9hdD4oIGFkamFjZW50
V2lkdGgxLCAwKSB9KTsKKyAgICAgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDEsIHky
IC0gc3RkOjptYXg8ZmxvYXQ+KCBhZGphY2VudFdpZHRoMiwgMCkgfSk7CisgICAgICAgICAgICBx
dWFkLnVuY2hlY2tlZEFwcGVuZCh7IHgyLCB5MiAtIHN0ZDo6bWF4PGZsb2F0PigtYWRqYWNlbnRX
aWR0aDIsIDApIH0pOworICAgICAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQoeyB4MiwgeTEg
KyBzdGQ6Om1heDxmbG9hdD4oLWFkamFjZW50V2lkdGgxLCAwKSB9KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVN0eWxl
KE5vU3Ryb2tlKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7
Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3Q29udmV4UG9seWdvbig0LCBxdWFkLCBhbnRp
YWxpYXMpOworICAgICAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3JhcGhpY3NDb250ZXh0LnNo
b3VsZEFudGlhbGlhcygpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkQW50aWFs
aWFzKGFudGlhbGlhcyk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChQYXRoOjpw
b2x5Z29uUGF0aEZyb21Qb2ludHMocXVhZCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0
U2hvdWxkQW50aWFsaWFzKHdhc0FudGlhbGlhc2VkKTsKKwogICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0U3Ryb2tlU3R5bGUob2xkU3Ryb2tlU3R5bGUpOwogICAgICAgICBicmVhazsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggZmYwOWIx
NGEwMDE4YTc1MjUyNTQ0NWEwN2YxOTMzOTM5YzE4MzRiMy4uOWYyZGY1MTQwNmRmOTFiN2EwNGE4
ODY0MTBlYzcwNGY5YzUzMGFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbQpAQCAtNjgzLDI1ICs2ODMsMjYgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFp
bnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAog
ICAgICAgICBmbG9hdCBjZW50ZXJYID0gZmxvb3JmKGJ1dHRvbkNsaXAueCgpICsgYnV0dG9uQ2xp
cC53aWR0aCgpIC8gMi4wKSAtIDAuNTsKICAgICAgICAgZmxvYXQgY2VudGVyWSA9IGZsb29yZihi
dXR0b25DbGlwLnkoKSArIGJ1dHRvbkNsaXAuaGVpZ2h0KCkgKiAzLjAgLyA4LjApOwogCi0gICAg
ICAgIEZsb2F0UG9pbnQgYXJyb3dbM107Ci0gICAgICAgIEZsb2F0UG9pbnQgc2hhZG93WzNdOwot
Ci0gICAgICAgIGFycm93WzBdID0gRmxvYXRQb2ludChjZW50ZXJYIC0gTWVudUxpc3RBcnJvd1dp
ZHRoIC8gMi4wLCBjZW50ZXJZKTsKLSAgICAgICAgYXJyb3dbMV0gPSBGbG9hdFBvaW50KGNlbnRl
clggKyBNZW51TGlzdEFycm93V2lkdGggLyAyLjAsIGNlbnRlclkpOwotICAgICAgICBhcnJvd1sy
XSA9IEZsb2F0UG9pbnQoY2VudGVyWCwgY2VudGVyWSArIE1lbnVMaXN0QXJyb3dIZWlnaHQpOwor
ICAgICAgICBWZWN0b3I8RmxvYXRQb2ludD4gYXJyb3cgPSB7CisgICAgICAgICAgICB7IGNlbnRl
clggLSBNZW51TGlzdEFycm93V2lkdGggLyAyLCBjZW50ZXJZIH0sCisgICAgICAgICAgICB7IGNl
bnRlclggKyBNZW51TGlzdEFycm93V2lkdGggLyAyLCBjZW50ZXJZIH0sCisgICAgICAgICAgICB7
IGNlbnRlclgsIGNlbnRlclkgKyBNZW51TGlzdEFycm93SGVpZ2h0IH0KKyAgICAgICAgfTsKIAot
ICAgICAgICBzaGFkb3dbMF0gPSBGbG9hdFBvaW50KGFycm93WzBdLngoKSwgYXJyb3dbMF0ueSgp
ICsgMS4wZik7Ci0gICAgICAgIHNoYWRvd1sxXSA9IEZsb2F0UG9pbnQoYXJyb3dbMV0ueCgpLCBh
cnJvd1sxXS55KCkgKyAxLjBmKTsKLSAgICAgICAgc2hhZG93WzJdID0gRmxvYXRQb2ludChhcnJv
d1syXS54KCksIGFycm93WzJdLnkoKSArIDEuMGYpOworICAgICAgICBWZWN0b3I8RmxvYXRQb2lu
dD4gc2hhZG93ID0geworICAgICAgICAgICAgeyBhcnJvd1swXS54KCksIGFycm93WzBdLnkoKSAr
IDEgfSwKKyAgICAgICAgICAgIHsgYXJyb3dbMV0ueCgpLCBhcnJvd1sxXS55KCkgKyAxIH0sCisg
ICAgICAgICAgICB7IGFycm93WzJdLngoKSwgYXJyb3dbMl0ueSgpICsgMSB9CisgICAgICAgIH07
CiAKICAgICAgICAgZmxvYXQgb3BhY2l0eSA9IGlzUmVhZE9ubHlDb250cm9sKGJveCkgPyAwLjIg
OiAwLjU7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3Io
MC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSk7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgc2hhZG93LCB0cnVlKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UGF0aChQYXRoOjpwb2x5Z29uUGF0aEZy
b21Qb2ludHMoc2hhZG93KSk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJv
a2VDb2xvcihDb2xvcjo6d2hpdGUpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZp
bGxDb2xvcihDb2xvcjo6d2hpdGUpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdD
b252ZXhQb2x5Z29uKDMsIGFycm93LCB0cnVlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5kcmF3UGF0aChQYXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoYXJyb3cpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KaW5kZXggYWQxMGYyNzdhNjUxZjYwNGIzYmI0ZjZiZjFmYWU0NjM2OTZmNzUwYi4uYWM0
MDA0OTU3NDQ2N2NlYTFlZGU1NjdmZDNlNTY0YzVmOTY1MWY3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTI3OCwyMSArMTI3OCwyMSBAQCBib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVu
ZGVyQm94JiByZW5kZXJlciwgYwogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9y
KHJlbmRlcmVyLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3Ip
KTsKICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKIAot
ICAgIEZsb2F0UG9pbnQgYXJyb3cxWzNdOwotICAgIGFycm93MVswXSA9IEZsb2F0UG9pbnQobGVm
dEVkZ2UsIGNlbnRlclkgLSBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmKTsKLSAgICBhcnJvdzFb
MV0gPSBGbG9hdFBvaW50KGxlZnRFZGdlICsgYXJyb3dXaWR0aCwgY2VudGVyWSAtIHNwYWNlQmV0
d2VlbkFycm93cyAvIDIuMGYpOwotICAgIGFycm93MVsyXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2Ug
KyBhcnJvd1dpZHRoIC8gMi4wZiwgY2VudGVyWSAtIHNwYWNlQmV0d2VlbkFycm93cyAvIDIuMGYg
LSBhcnJvd0hlaWdodCk7Ci0KICAgICAvLyBEcmF3IHRoZSB0b3AgYXJyb3cKLSAgICBwYWludElu
Zm8uY29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29uKDMsIGFycm93MSwgdHJ1ZSk7Ci0KLSAgICBG
bG9hdFBvaW50IGFycm93MlszXTsKLSAgICBhcnJvdzJbMF0gPSBGbG9hdFBvaW50KGxlZnRFZGdl
LCBjZW50ZXJZICsgc3BhY2VCZXR3ZWVuQXJyb3dzIC8gMi4wZik7Ci0gICAgYXJyb3cyWzFdID0g
RmxvYXRQb2ludChsZWZ0RWRnZSArIGFycm93V2lkdGgsIGNlbnRlclkgKyBzcGFjZUJldHdlZW5B
cnJvd3MgLyAyLjBmKTsKLSAgICBhcnJvdzJbMl0gPSBGbG9hdFBvaW50KGxlZnRFZGdlICsgYXJy
b3dXaWR0aCAvIDIuMGYsIGNlbnRlclkgKyBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmICsgYXJy
b3dIZWlnaHQpOworICAgIFZlY3RvcjxGbG9hdFBvaW50PiBhcnJvdzEgPSB7CisgICAgICAgIHsg
bGVmdEVkZ2UsIGNlbnRlclkgLSBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmIH0sCisgICAgICAg
IHsgbGVmdEVkZ2UgKyBhcnJvd1dpZHRoLCBjZW50ZXJZIC0gc3BhY2VCZXR3ZWVuQXJyb3dzIC8g
Mi4wZiB9LAorICAgICAgICB7IGxlZnRFZGdlICsgYXJyb3dXaWR0aCAvIDIuMGYsIGNlbnRlclkg
LSBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmIC0gYXJyb3dIZWlnaHQgfQorICAgIH07CisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUGF0aChQYXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMo
YXJyb3cxKSk7CiAKICAgICAvLyBEcmF3IHRoZSBib3R0b20gYXJyb3cKLSAgICBwYWludEluZm8u
Y29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29uKDMsIGFycm93MiwgdHJ1ZSk7CisgICAgVmVjdG9y
PEZsb2F0UG9pbnQ+IGFycm93MiA9IHsKKyAgICAgICAgeyBsZWZ0RWRnZSwgY2VudGVyWSArIHNw
YWNlQmV0d2VlbkFycm93cyAvIDIuMGYgfSwKKyAgICAgICAgeyBsZWZ0RWRnZSArIGFycm93V2lk
dGgsIGNlbnRlclkgKyBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmIH0sCisgICAgICAgIHsgbGVm
dEVkZ2UgKyBhcnJvd1dpZHRoIC8gMi4wZiwgY2VudGVyWSArIHNwYWNlQmV0d2VlbkFycm93cyAv
IDIuMGYgKyBhcnJvd0hlaWdodCB9CisgICAgfTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmZp
bGxQYXRoKFBhdGg6OnBvbHlnb25QYXRoRnJvbVBvaW50cyhhcnJvdzIpKTsKIAogICAgIENvbG9y
IGxlZnRTZXBhcmF0b3JDb2xvcigwLCAwLCAwLCA0MCk7CiAgICAgQ29sb3IgcmlnaHRTZXBhcmF0
b3JDb2xvcigyNTUsIDI1NSwgMjU1LCA0MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDFjZDk3NTQ5ZDIxM2Y4M2IzYmExMjI3OTU0
ZjI4ZDViNDA2ZThhZGIuLjFiNjYyY2I0ZTI2NzgwOWVjNWM5NzEyYmVhZjQ3Nzc2MWEwYzI3MTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3Bw
CkBAIC0xNDYsMTcgKzE0NiwxNSBAQCB2b2lkIEhVRFNsaWRlcjo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiAgICAgfQogCiAgICAgLy8gRHJhdyBhIGRpYW1vbmQKLSAgICBGbG9hdFBv
aW50IHBvaW50c1s0XTsKICAgICBmbG9hdCBoYWxmID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYnV0
dG9uU2l6ZSkgLyAyOwotICAgIHBvaW50c1swXS5zZXRYKG1fcmVjdC5sb2NhdGlvbigpLngoKSAr
IG1fYnV0dG9uUG9zaXRpb24gKyBoYWxmKTsKLSAgICBwb2ludHNbMF0uc2V0WShtX3JlY3QubG9j
YXRpb24oKS55KCkpOwotICAgIHBvaW50c1sxXS5zZXRYKG1fcmVjdC5sb2NhdGlvbigpLngoKSAr
IG1fYnV0dG9uUG9zaXRpb24gKyBtX2J1dHRvblNpemUpOwotICAgIHBvaW50c1sxXS5zZXRZKG1f
cmVjdC5sb2NhdGlvbigpLnkoKSArIGhhbGYpOwotICAgIHBvaW50c1syXS5zZXRYKG1fcmVjdC5s
b2NhdGlvbigpLngoKSArIG1fYnV0dG9uUG9zaXRpb24gKyBoYWxmKTsKLSAgICBwb2ludHNbMl0u
c2V0WShtX3JlY3QubG9jYXRpb24oKS55KCkgKyBtX2J1dHRvblNpemUpOwotICAgIHBvaW50c1sz
XS5zZXRYKG1fcmVjdC5sb2NhdGlvbigpLngoKSArIG1fYnV0dG9uUG9zaXRpb24pOwotICAgIHBv
aW50c1szXS5zZXRZKG1fcmVjdC5sb2NhdGlvbigpLnkoKSArIGhhbGYpOwotICAgIGNvbnRleHQu
ZHJhd0NvbnZleFBvbHlnb24oNCwgcG9pbnRzLCB0cnVlKTsKKworICAgIFZlY3RvcjxGbG9hdFBv
aW50PiBwb2ludHMgPSB7CisgICAgICAgIHsgbV9yZWN0LmxvY2F0aW9uKCkueCgpICsgbV9idXR0
b25Qb3NpdGlvbiArIGhhbGYsIG1fcmVjdC5sb2NhdGlvbigpLnkoKSB9LAorICAgICAgICB7IG1f
cmVjdC5sb2NhdGlvbigpLngoKSArIG1fYnV0dG9uUG9zaXRpb24gKyBtX2J1dHRvblNpemUsIG1f
cmVjdC5sb2NhdGlvbigpLnkoKSArIGhhbGYgfSwKKyAgICAgICAgeyBtX3JlY3QubG9jYXRpb24o
KS54KCkgKyBtX2J1dHRvblBvc2l0aW9uICsgaGFsZiwgbV9yZWN0LmxvY2F0aW9uKCkueSgpICsg
bV9idXR0b25TaXplIH0sCisgICAgICAgIHsgbV9yZWN0LmxvY2F0aW9uKCkueCgpICsgbV9idXR0
b25Qb3NpdGlvbiwgbV9yZWN0LmxvY2F0aW9uKCkueSgpICsgaGFsZiB9CisgICAgfTsKKyAgICBj
b250ZXh0LmRyYXdQYXRoKFBhdGg6OnBvbHlnb25QYXRoRnJvbVBvaW50cyhwb2ludHMpKTsKIH0K
IAogdm9pZCBIVURTbGlkZXI6OmRyYWcoY29uc3QgSW50UG9pbnQmIHBvaW50LCBib29sIHN0YXJ0
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269173</attachid>
            <date>2016-01-16 09:16:00 -0800</date>
            <delta_ts>2016-01-16 18:33:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153174-20160116091530.patch</filename>
            <type>text/plain</type>
            <size>47800</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjEyMjViNTJmYzBiNzFk
ZGJjMjc2NDk4MjQwNWYzY2JhMzYwNjE4NS4uNGJiYjFhZmNjNmIyNWRkOTRlODVkMjlhMWMzNjk4
NTdlNWJhYjY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE2LTAxLTE1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBHcmFw
aGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKCkgYW5kIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cENvbnZleFBvbHlnb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUzMTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbigpIGFuZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBDb252ZXhQb2x5Z29uKCkgd2VyZQorICAgICAgICBwb29ybHkgbmFtZWQg
KG5vbi1jb252ZXggcG9seWdvbnMgYXJlIGFsbG93ZWQpLCBhbmQganVzdCBzeW50YWN0aWMgc3Vn
YXIgb3ZlcgorICAgICAgICBjbGlwUGF0aCgpIGFuZCBkcmF3UGF0aCgpLgorICAgICAgICAKKyAg
ICAgICAgUmVtb3ZlIHRoZW0sIGJ1dCBhZGQgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBjcmVh
dGUgYSBQYXRoIGZyb20gYSBWZWN0b3Igb2YgCisgICAgICAgIHBvaW50cy4gRm9yIENHLCB3ZSBj
YW4gdXNlIHRoZSBtb3JlIGVmZmljaWVudCBDR1BhdGhBZGRMaW5lcygpLgorICAgICAgICAKKyAg
ICAgICAgQWRkIFRleHRTdHJlYW0gZHVtcGluZyBmb3IgUGF0aC4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cG9seWdvblBhdGhGcm9tUG9p
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmR1bXApOgorICAgICAgICAoV2ViQ29yZTo6
b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxp
YXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ29udmV4UG9seWdvblRvQ29udGV4dCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcENvbnZl
eFBvbHlnb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZENvbnZleFBvbHlnb25Ub1Bh
dGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29u
dmV4UG9seWdvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmNsaXBDb252ZXhQb2x5Z29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6cG9seWdvblBhdGhGcm9t
UG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6Om1vdmVUbyk6CisgICAgICAgIChXZWJD
b3JlOjpQYXRoOjphZGRMaW5lVG8pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRkUXVhZEN1
cnZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRkQmV6aWVyQ3VydmVUbyk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXRoOjphZGRBcmNUbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW06OnNpemVJbkJ5dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpDbGlwQ29udmV4UG9seWdvbjo6Q2xpcENvbnZleFBvbHlnb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBDb252ZXhQb2x5Z29u
OjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0
b3I8PCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YWRkQ29udmV4
UG9seWdvblRvUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RHJhd0NvbnZleFBvbHlnb246OkRyYXdDb252ZXhQb2x5Z29uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Q29udmV4UG9seWdvbjo6bG9jYWxCb3VuZHMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdDb252ZXhQb2x5Z29u
OjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpD
bGlwQ29udmV4UG9seWdvbjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpDbGlwQ29udmV4UG9seWdvbjo6cG9pbnRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwQ29udmV4UG9seWdvbjo6YW50aWFsaWFzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Q29udmV4UG9seWdvbjo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Q29u
dmV4UG9seWdvbjo6cG9pbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3Q29udmV4UG9seWdvbjo6YW50aWFsaWFzZWQpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0NvbnZleFBvbHln
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpj
bGlwQ29udmV4UG9seWdvbik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6ZHJhd0xp
bmVGb3JCb3hTaWRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29y
YXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25z
KToKKwogMjAxNi0wMS0xMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIGEgd2F5IHRvIHRlc3QgZGlzcGxheS1saXN0IGRyYXdpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCBjMDg5NTU4MzJiNmYzNTVjZjIxYWQ1ZDMzYzRhODA0NGE1OTYzNGFmLi40
ZDg0MWFjMjFhYzNmY2JmMDdhYzM1NDNhNWIxNTIzZWYyMjdhZjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYtMDEtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnZl
eFBvbHlnb24oKSBhbmQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbigpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxNzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdDb252ZXhQb2x5Z29uKCkgYW5kIEdyYXBoaWNzQ29udGV4dDo6Y2xpcENvbnZleFBv
bHlnb24oKSB3ZXJlCisgICAgICAgIHBvb3JseSBuYW1lZCAobm9uLWNvbnZleCBwb2x5Z29ucyBh
cmUgYWxsb3dlZCksIGFuZCBqdXN0IHN5bnRhY3RpYyBzdWdhciBvdmVyCisgICAgICAgIGNsaXBQ
YXRoKCkgYW5kIGRyYXdQYXRoKCkuCisgICAgICAgIAorICAgICAgICBSZW1vdmUgdGhlbSwgYnV0
IGFkZCBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIFBhdGggZnJvbSBhIFZlY3Rv
ciBvZiAKKyAgICAgICAgcG9pbnRzLiBGb3IgQ0csIHdlIGNhbiB1c2UgdGhlIG1vcmUgZWZmaWNp
ZW50IENHUGF0aEFkZExpbmVzKCkuCisKKyAgICAgICAgKiBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKEhVRFNsaWRlcjo6ZHJhdyk6CisKIDIwMTYtMDEtMDUgIFBlciBB
cm5lIFZvbGxhbiAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gRG93
bmxvYWQgc2hvdWxkIHVzZSBoZWFkZXIgdmFsdWVzIGZyb20gcHJvdmlkZWQgcmVxdWVzdCBvYmpl
Y3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCmluZGV4IGU2Mzc3YjgwZDk3ZjRjY2UxOTIzZTM0ZTFmMTg3ZWY1NGQwYjFjYTYuLjRm
ZmE3YzZkNjAyODJjYWJlNTkzNWM4MzE0YWY1NDc4YmU1OGEzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zNDIsNyAr
MzQyLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3Qm
KTsKICAgICB2b2lkIGRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENv
bG9yJiBlbGxpcHNlQ29sb3IsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcik7Ci0gICAgdm9pZCBk
cmF3Q29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiwgYm9v
bCBzaG91bGRBbnRpYWxpYXMgPSBmYWxzZSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZp
bGxQYXRoKGNvbnN0IFBhdGgmKTsKICAgICB2b2lkIHN0cm9rZVBhdGgoY29uc3QgUGF0aCYpOwpA
QCAtMzg4LDcgKzM4Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBPdXQoY29uc3QgRmxvYXRS
ZWN0Jik7CiAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYpOwogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlID0gUlVMRV9FVkVO
T0REKTsKLSAgICB2b2lkIGNsaXBDb252ZXhQb2x5Z29uKHNpemVfdCBudW1Qb2ludHMsIGNvbnN0
IEZsb2F0UG9pbnQqLCBib29sIGFudGlhbGlhcyA9IHRydWUpOwogICAgIHZvaWQgY2xpcFRvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICAKICAgICBJbnRS
ZWN0IGNsaXBCb3VuZHMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aC5jcHAKaW5kZXggZjA4OGVmZmM0MWJkNDViMDg1MzZkNWI2MWIyMzZhZTgzYTFhMmFlNS4u
MDFjNjIzZTY3MDAxOGUxZjM4MDI4ZmY4YTYwZDNmMGI4MTIyZWVlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiUGF0aFRyYXZlcnNhbFN0YXRlLmgiCiAj
aW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVk
ZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTE2MiwxMCArMTYz
LDYxIEBAIHZvaWQgUGF0aDo6YWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB0b3BMCiB9CiAKICNpZiAhVVNFKENHKQorUGF0aCBQ
YXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQ+JiBwb2lu
dHMpCit7CisgICAgUGF0aCBwYXRoOworICAgIGlmIChwb2ludHMuc2l6ZSgpIDwgMikKKyAgICAg
ICAgcmV0dXJuIHBhdGg7CisKKyAgICBwYXRoLm1vdmVUbyhwb2ludHNbMF0pOworICAgIGZvciAo
c2l6ZV90IGkgPSAxOyBpIDwgcG9pbnRzLnNpemUoKTsgKytpKQorICAgICAgICBwYXRoLmFkZExp
bmVUbyhwb2ludHNbaV0pOworCisgICAgcGF0aC5jbG9zZVN1YnBhdGgoKTsKKyAgICByZXR1cm4g
cGF0aDsKK30KKwogRmxvYXRSZWN0IFBhdGg6OmZhc3RCb3VuZGluZ1JlY3QoKSBjb25zdAogewog
ICAgIHJldHVybiBib3VuZGluZ1JlY3QoKTsKIH0KICNlbmRpZgogCisjaWZuZGVmIE5ERUJVRwor
dm9pZCBQYXRoOjpkdW1wKCkgY29uc3QKK3sKKyAgICBUZXh0U3RyZWFtIHN0cmVhbTsKKyAgICBz
dHJlYW0gPDwgKnRoaXM7CisgICAgV1RGTG9nQWx3YXlzKCIlcyIsIHN0cmVhbS5yZWxlYXNlKCku
dXRmOCgpLmRhdGEoKSk7Cit9CisjZW5kaWYKKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiBzdHJlYW0sIGNvbnN0IFBhdGgmIHBhdGgpCit7CisgICAgVGV4dFN0cmVhbTo6R3Jv
dXBTY29wZSBncm91cChzdHJlYW0pOworICAgIHN0cmVhbSA8PCAicGF0aCAiIDw8ICZwYXRoOwor
CisgICAgcGF0aC5hcHBseShbJnN0cmVhbV0oY29uc3QgUGF0aEVsZW1lbnQmIGVsZW1lbnQpIHsK
KyAgICAgICAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHsKKyAgICAgICAgY2FzZSBQYXRoRWxlbWVu
dE1vdmVUb1BvaW50OiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRhaW4gMSB2YWx1ZS4K
KyAgICAgICAgICAgIHN0cmVhbSA8PCAiIG1vdmUgdG8gIiA8PCBlbGVtZW50LnBvaW50c1swXTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkTGluZVRvUG9p
bnQ6IC8vIFRoZSBwb2ludHMgbWVtYmVyIHdpbGwgY29udGFpbiAxIHZhbHVlLgorICAgICAgICAg
ICAgc3RyZWFtIDw8ICIgYWRkIGxpbmUgdG8gIiA8PCBlbGVtZW50LnBvaW50c1swXTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2lu
dDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2lsbCBjb250YWluIDIgdmFsdWVzLgorICAgICAgICAg
ICAgc3RyZWFtIDw8ICIgYWRkIHF1YWQgY3VydmUgdG8gIiA8PCBlbGVtZW50LnBvaW50c1swXSA8
PCAiICIgPDwgZWxlbWVudC5wb2ludHNbMV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludDogLy8gVGhlIHBvaW50cyBtZW1iZXIgd2ls
bCBjb250YWluIDMgdmFsdWVzLgorICAgICAgICAgICAgc3RyZWFtIDw8ICIgYWRkIGN1cnZlIHRv
ICIgPDwgZWxlbWVudC5wb2ludHNbMF0gPDwgIiAiIDw8IGVsZW1lbnQucG9pbnRzWzFdIDw8ICIg
IiA8PCBlbGVtZW50LnBvaW50c1syXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFBhdGhFbGVtZW50Q2xvc2VTdWJwYXRoOiAvLyBUaGUgcG9pbnRzIG1lbWJlciB3aWxsIGNvbnRh
aW4gbm8gdmFsdWVzLgorICAgICAgICAgICAgc3RyZWFtIDw8ICIgY2xvc2Ugc3VicGF0aCI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0pOworICAgIAorICAgIHJldHVybiBz
dHJlYW07Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAppbmRl
eCBkMzdmOTAwYTllZTllOTZlNzZiMTkwNjEwODU3MWEwZjlhZDY1YWU4Li44M2RjYjE0NTRjODA2
MGUxM2E3MzJkYmU3MTMyZTZmYWVkMmQ5YjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgVVNFKENHKQogCkBAIC01MCw3ICs1MSw3IEBAIHR5
cGVkZWYgV2ViQ29yZTo6Q2Fpcm9QYXRoIFBsYXRmb3JtUGF0aDsKICNlbGlmIFVTRShXSU5HREkp
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBQbGF0Zm9ybVBhdGg7CitjbGFzcyBQ
bGF0Zm9ybVBhdGg7CiB9CiB0eXBlZGVmIFdlYkNvcmU6OlBsYXRmb3JtUGF0aCBQbGF0Zm9ybVBh
dGg7CiAKQEAgLTcyLDYgKzczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFBh
dGhUcmF2ZXJzYWxTdGF0ZTsKICAgICBjbGFzcyBSb3VuZGVkUmVjdDsKICAgICBjbGFzcyBTdHJv
a2VTdHlsZUFwcGxpZXI7CisgICAgY2xhc3MgVGV4dFN0cmVhbTsKIAogICAgIGVudW0gUGF0aEVs
ZW1lbnRUeXBlIHsKICAgICAgICAgUGF0aEVsZW1lbnRNb3ZlVG9Qb2ludCwgLy8gVGhlIHBvaW50
cyBtZW1iZXIgd2lsbCBjb250YWluIDEgdmFsdWUuCkBAIC0xMDIsNiArMTA0LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIFBhdGgoY29uc3QgUGF0aCYp
OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXRoJiBvcGVyYXRvcj0oY29uc3QgUGF0aCYpOwor
ICAgICAgICAKKyAgICAgICAgc3RhdGljIFBhdGggcG9seWdvblBhdGhGcm9tUG9pbnRzKGNvbnN0
IFZlY3RvcjxGbG9hdFBvaW50PiYpOwogCiAgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgRmxv
YXRQb2ludCYsIFdpbmRSdWxlIHJ1bGUgPSBSVUxFX05PTlpFUk8pIGNvbnN0OwogICAgICAgICBi
b29sIHN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwbGllciosIGNvbnN0IEZsb2F0UG9pbnQm
KSBjb25zdDsKQEAgLTE2NCwxMCArMTY4LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBwbGF0Zm9ybUFkZFBhdGhGb3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRS
YWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXpl
JiBib3R0b21SaWdodFJhZGl1cyk7CiAjZW5kaWYKIAorI2lmbmRlZiBOREVCVUcKKyAgICAgICAg
dm9pZCBkdW1wKCkgY29uc3Q7CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFBsYXRm
b3JtUGF0aFB0ciBtX3BhdGg7CiAgICAgfTsKIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgUGF0aCYpOworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCmluZGV4IGMwNzQ0YjAwNzgxMzFhMjY4YTFjZTk5MzBjZWE1MWI0OTNkMmM5NTIu
LmIwMDM2ZmQ2NWUyNGE4YTM1ODc5MzJkNThhOTAzMzUyODQzNzc0YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKQEAgLTc3LDE0ICs3Nyw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBm
aWxsUmVjdFdpdGhDb2xvcihjYWlyb190KiBjciwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDCiAgICAgY2Fpcm9fZmlsbChjcik7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZENvbnZleFBvbHln
b25Ub0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgc2l6ZV90IG51bVBvaW50cywgY29uc3QgRmxv
YXRQb2ludCogcG9pbnRzKQotewotICAgIGNhaXJvX21vdmVfdG8oY29udGV4dCwgcG9pbnRzWzBd
LngoKSwgcG9pbnRzWzBdLnkoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBudW1Qb2lu
dHM7IGkrKykKLSAgICAgICAgY2Fpcm9fbGluZV90byhjb250ZXh0LCBwb2ludHNbaV0ueCgpLCBw
b2ludHNbaV0ueSgpKTsKLSAgICBjYWlyb19jbG9zZV9wYXRoKGNvbnRleHQpOwotfQotCiBlbnVt
IFBhdGhEcmF3aW5nU3R5bGUgeyAKICAgICBGaWxsID0gMSwKICAgICBTdHJva2UgPSAyLApAQCAt
NDM1LDY5ICs0MjcsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2UoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogICAgICAgICBjYWlyb19uZXdfcGF0aChjcik7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29udmV4UG9seWdvbihzaXplX3QgbnBvaW50cywgY29uc3Qg
RmxvYXRQb2ludCogcG9pbnRzLCBib29sIHNob3VsZEFudGlhbGlhcykKLXsKLSAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobnBvaW50cyA8PSAx
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdDb252ZXhQb2x5Z29uKG5wb2ludHMsIHBvaW50cywg
c2hvdWxkQW50aWFsaWFzKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhaXJvX3Qq
IGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Ci0KLSAgICBjYWlyb19zYXZlKGNyKTsKLSAg
ICBjYWlyb19zZXRfYW50aWFsaWFzKGNyLCBzaG91bGRBbnRpYWxpYXMgPyBDQUlST19BTlRJQUxJ
QVNfREVGQVVMVCA6IENBSVJPX0FOVElBTElBU19OT05FKTsKLSAgICBhZGRDb252ZXhQb2x5Z29u
VG9Db250ZXh0KGNyLCBucG9pbnRzLCBwb2ludHMpOwotCi0gICAgaWYgKGZpbGxDb2xvcigpLmFs
cGhhKCkpIHsKLSAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjciwgZmlsbENvbG9yKCkp
OwotICAgICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBDQUlST19GSUxMX1JVTEVfRVZFTl9P
REQpOwotICAgICAgICBjYWlyb19maWxsX3ByZXNlcnZlKGNyKTsKLSAgICB9Ci0KLSAgICBpZiAo
c3Ryb2tlU3R5bGUoKSAhPSBOb1N0cm9rZSkgewotICAgICAgICBzZXRTb3VyY2VSR0JBRnJvbUNv
bG9yKGNyLCBzdHJva2VDb2xvcigpKTsKLSAgICAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgoY3Is
IHN0cm9rZVRoaWNrbmVzcygpKTsKLSAgICAgICAgY2Fpcm9fc3Ryb2tlKGNyKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgY2Fpcm9fbmV3X3BhdGgoY3IpOwotCi0gICAgY2Fpcm9fcmVzdG9yZShjcik7
Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVt
UG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMsIGJvb2wgYW50aWFsaWFzZWQpCi17Ci0g
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG51
bVBvaW50cyA8PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkg
ewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsaXBDb252ZXhQb2x5Z29uKG51bVBv
aW50cywgcG9pbnRzLCBhbnRpYWxpYXNlZCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwotCi0gICAgY2Fpcm9fbmV3
X3BhdGgoY3IpOwotICAgIGNhaXJvX2ZpbGxfcnVsZV90IHNhdmVkRmlsbFJ1bGUgPSBjYWlyb19n
ZXRfZmlsbF9ydWxlKGNyKTsKLSAgICBjYWlyb19hbnRpYWxpYXNfdCBzYXZlZEFudGlhbGlhc1J1
bGUgPSBjYWlyb19nZXRfYW50aWFsaWFzKGNyKTsKLQotICAgIGNhaXJvX3NldF9hbnRpYWxpYXMo
Y3IsIGFudGlhbGlhc2VkID8gQ0FJUk9fQU5USUFMSUFTX0RFRkFVTFQgOiBDQUlST19BTlRJQUxJ
QVNfTk9ORSk7Ci0gICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgQ0FJUk9fRklMTF9SVUxFX1dJ
TkRJTkcpOwotICAgIGFkZENvbnZleFBvbHlnb25Ub0NvbnRleHQoY3IsIG51bVBvaW50cywgcG9p
bnRzKTsKLSAgICBjYWlyb19jbGlwKGNyKTsKLQotICAgIGNhaXJvX3NldF9hbnRpYWxpYXMoY3Is
IHNhdmVkQW50aWFsaWFzUnVsZSk7Ci0gICAgY2Fpcm9fc2V0X2ZpbGxfcnVsZShjciwgc2F2ZWRG
aWxsUnVsZSk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRo
JiBwYXRoKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0aC5pc0VtcHR5KCkp
CkBAIC0xMjk0LDcgKzEyMjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1T
aG91bGRBbnRpYWxpYXMoYm9vbCBlbmFibGUpCiAKICAgICAvLyBXaGVuIHRydWUsIHVzZSB0aGUg
ZGVmYXVsdCBDYWlybyBiYWNrZW5kIGFudGlhbGlhcyBtb2RlICh1c3VhbGx5IHRoaXMKICAgICAv
LyBlbmFibGVzIHN0YW5kYXJkICdncmF5c2NhbGUnIGFudGlhbGlhc2luZyk7IGZhbHNlIHRvIGV4
cGxpY2l0bHkgZGlzYWJsZQotICAgIC8vIGFudGlhbGlhc2luZy4gVGhpcyBpcyB0aGUgc2FtZSBz
dHJhdGVneSBhcyB1c2VkIGluIGRyYXdDb252ZXhQb2x5Z29uKCkuCisgICAgLy8gYW50aWFsaWFz
aW5nLgogICAgIGNhaXJvX3NldF9hbnRpYWxpYXMocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGVu
YWJsZSA/IENBSVJPX0FOVElBTElBU19ERUZBVUxUIDogQ0FJUk9fQU5USUFMSUFTX05PTkUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggMWM2Yjk0YTBkNmEwM2E2OTUwNDUxYWY5N2E0MWI0
MDAxN2NlNmY3OC4uYTQ0OTY1NDA0NmFlOGYxMGFiYWQxNjQxNWU2NDYwYWRiYmJiOGU4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcApAQCAtNTMyLDY4ICs1MzIsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGRyYXdQYXRoKHBhdGgp
OwogfQogCi1zdGF0aWMgdm9pZCBhZGRDb252ZXhQb2x5Z29uVG9QYXRoKFBhdGgmIHBhdGgsIHNp
emVfdCBudW1iZXJPZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzKQotewotICAgIEFT
U0VSVChudW1iZXJPZlBvaW50cyA+IDApOwotCi0gICAgcGF0aC5tb3ZlVG8ocG9pbnRzWzBdKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG51bWJlck9mUG9pbnRzOyArK2kpCi0gICAgICAg
IHBhdGguYWRkTGluZVRvKHBvaW50c1tpXSk7Ci0gICAgcGF0aC5jbG9zZVN1YnBhdGgoKTsKLX0K
LQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKHNpemVfdCBudW1iZXJP
ZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzLCBib29sIGFudGlhbGlhc2VkKQotewot
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChu
dW1iZXJPZlBvaW50cyA8PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaXNSZWNvcmRp
bmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdDb252ZXhQb2x5Z29u
KG51bWJlck9mUG9pbnRzLCBwb2ludHMsIGFudGlhbGlhc2VkKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7Ci0K
LSAgICBpZiAoYW50aWFsaWFzZWQgIT0gc2hvdWxkQW50aWFsaWFzKCkpCi0gICAgICAgIENHQ29u
dGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBhbnRpYWxpYXNlZCk7Ci0KLSAgICBQYXRo
IHBhdGg7Ci0gICAgYWRkQ29udmV4UG9seWdvblRvUGF0aChwYXRoLCBudW1iZXJPZlBvaW50cywg
cG9pbnRzKTsKLSAgICBkcmF3UGF0aChwYXRoKTsKLQotICAgIGlmIChhbnRpYWxpYXNlZCAhPSBz
aG91bGRBbnRpYWxpYXMoKSkKLSAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKGNv
bnRleHQsIHNob3VsZEFudGlhbGlhcygpKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNs
aXBDb252ZXhQb2x5Z29uKHNpemVfdCBudW1iZXJPZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCog
cG9pbnRzLCBib29sIGFudGlhbGlhcykKLXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobnVtYmVyT2ZQb2ludHMgPD0gMSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlz
dFJlY29yZGVyLT5jbGlwQ29udmV4UG9seWdvbihudW1iZXJPZlBvaW50cywgcG9pbnRzLCBhbnRp
YWxpYXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ0dDb250ZXh0UmVmIGNvbnRl
eHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLQotICAgIGlmIChhbnRpYWxpYXMgIT0gc2hvdWxkQW50
aWFsaWFzKCkpCi0gICAgICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBh
bnRpYWxpYXMpOwotCi0gICAgUGF0aCBwYXRoOwotICAgIGFkZENvbnZleFBvbHlnb25Ub1BhdGgo
cGF0aCwgbnVtYmVyT2ZQb2ludHMsIHBvaW50cyk7Ci0gICAgY2xpcFBhdGgocGF0aCwgUlVMRV9O
T05aRVJPKTsKLQotICAgIGlmIChhbnRpYWxpYXMgIT0gc2hvdWxkQW50aWFsaWFzKCkpCi0gICAg
ICAgIENHQ29udGV4dFNldFNob3VsZEFudGlhbGlhcyhjb250ZXh0LCBzaG91bGRBbnRpYWxpYXMo
KSk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4oKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC03MDMsMTQgKzY0MSw2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICBDR0NvbnRl
eHREcmF3UGF0aChjb250ZXh0LCBkcmF3aW5nTW9kZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9p
ZCBmaWxsUGF0aFdpdGhGaWxsUnVsZShDR0NvbnRleHRSZWYgY29udGV4dCwgV2luZFJ1bGUgZmls
bFJ1bGUpCi17Ci0gICAgaWYgKGZpbGxSdWxlID09IFJVTEVfRVZFTk9ERCkKLSAgICAgICAgQ0dD
b250ZXh0RU9GaWxsUGF0aChjb250ZXh0KTsKLSAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dEZp
bGxQYXRoKGNvbnRleHQpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgoY29u
c3QgUGF0aCYgcGF0aCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhdGguaXNF
bXB0eSgpKQpAQCAtNzY3LDcgKzY5NywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBh
dGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGlmIChtX3N0YXRlLmZpbGxQYXR0ZXJuKQogICAg
ICAgICBhcHBseUZpbGxQYXR0ZXJuKCk7Ci0gICAgZmlsbFBhdGhXaXRoRmlsbFJ1bGUoY29udGV4
dCwgZmlsbFJ1bGUoKSk7CisKKyAgICBpZiAoZmlsbFJ1bGUoKSA9PSBSVUxFX0VWRU5PREQpCisg
ICAgICAgIENHQ29udGV4dEVPRmlsbFBhdGgoY29udGV4dCk7CisgICAgZWxzZQorICAgICAgICBD
R0NvbnRleHRGaWxsUGF0aChjb250ZXh0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXRoQ0cuY3BwCmluZGV4IDE0YmNlOTNjZWUwZDU4ODlmOWZmMGRiMTc1YjA3
NDI2NjE3ZDIwOTkuLjcwNzExMmRjYWQyODc2NzNkMjhiNGRiMmVlNjcwNzc1YmRmYzM0NzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcApAQCAt
NzMsNiArNzMsMjIgQEAgc3RhdGljIGlubGluZSBDR0NvbnRleHRSZWYgc2NyYXRjaENvbnRleHQo
KQogICAgIHJldHVybiBjb250ZXh0OwogfQogCitQYXRoIFBhdGg6OnBvbHlnb25QYXRoRnJvbVBv
aW50cyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludD4mIHBvaW50cykKK3sKKyAgICBQYXRoIHBhdGg7
CisgICAgaWYgKHBvaW50cy5zaXplKCkgPCAyKQorICAgICAgICByZXR1cm4gcGF0aDsKKworICAg
IFZlY3RvcjxDR1BvaW50LCAzMj4gY2dQb2ludHM7CisgICAgY2dQb2ludHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShwb2ludHMuc2l6ZSgpIC0gMSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwb2ludHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGNnUG9pbnRzLnVuY2hlY2tlZEFwcGVuZChw
b2ludHNbaV0pOworCisgICAgQ0dQYXRoQWRkTGluZXMocGF0aC5lbnN1cmVQbGF0Zm9ybVBhdGgo
KSwgbnVsbHB0ciwgY2dQb2ludHMuZGF0YSgpLCBjZ1BvaW50cy5zaXplKCkpOworICAgIHBhdGgu
Y2xvc2VTdWJwYXRoKCk7CisgICAgcmV0dXJuIHBhdGg7Cit9CisKIFBhdGg6OlBhdGgoKQogICAg
IDogbV9wYXRoKG51bGxwdHIpCiB7CkBAIC0yNDUsMjcgKzI2MSwyNyBAQCBGbG9hdFJlY3QgUGF0
aDo6c3Ryb2tlQm91bmRpbmdSZWN0KFN0cm9rZVN0eWxlQXBwbGllciogYXBwbGllcikgY29uc3QK
IAogdm9pZCBQYXRoOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCiB7Ci0gICAgQ0dQ
YXRoTW92ZVRvUG9pbnQoZW5zdXJlUGxhdGZvcm1QYXRoKCksIDAsIHBvaW50LngoKSwgcG9pbnQu
eSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChlbnN1cmVQbGF0Zm9ybVBhdGgoKSwgbnVsbHB0
ciwgcG9pbnQueCgpLCBwb2ludC55KCkpOwogfQogCiB2b2lkIFBhdGg6OmFkZExpbmVUbyhjb25z
dCBGbG9hdFBvaW50JiBwKQogewotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KGVuc3VyZVBsYXRm
b3JtUGF0aCgpLCAwLCBwLngoKSwgcC55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KGVu
c3VyZVBsYXRmb3JtUGF0aCgpLCBudWxscHRyLCBwLngoKSwgcC55KCkpOwogfQogCiB2b2lkIFBh
dGg6OmFkZFF1YWRDdXJ2ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIGNwLCBjb25zdCBGbG9hdFBvaW50
JiBwKQogewotICAgIENHUGF0aEFkZFF1YWRDdXJ2ZVRvUG9pbnQoZW5zdXJlUGxhdGZvcm1QYXRo
KCksIDAsIGNwLngoKSwgY3AueSgpLCBwLngoKSwgcC55KCkpOworICAgIENHUGF0aEFkZFF1YWRD
dXJ2ZVRvUG9pbnQoZW5zdXJlUGxhdGZvcm1QYXRoKCksIG51bGxwdHIsIGNwLngoKSwgY3AueSgp
LCBwLngoKSwgcC55KCkpOwogfQogCiB2b2lkIFBhdGg6OmFkZEJlemllckN1cnZlVG8oY29uc3Qg
RmxvYXRQb2ludCYgY3AxLCBjb25zdCBGbG9hdFBvaW50JiBjcDIsIGNvbnN0IEZsb2F0UG9pbnQm
IHApCiB7Ci0gICAgQ0dQYXRoQWRkQ3VydmVUb1BvaW50KGVuc3VyZVBsYXRmb3JtUGF0aCgpLCAw
LCBjcDEueCgpLCBjcDEueSgpLCBjcDIueCgpLCBjcDIueSgpLCBwLngoKSwgcC55KCkpOworICAg
IENHUGF0aEFkZEN1cnZlVG9Qb2ludChlbnN1cmVQbGF0Zm9ybVBhdGgoKSwgbnVsbHB0ciwgY3Ax
LngoKSwgY3AxLnkoKSwgY3AyLngoKSwgY3AyLnkoKSwgcC54KCksIHAueSgpKTsKIH0KIAogdm9p
ZCBQYXRoOjphZGRBcmNUbyhjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYg
cDIsIGZsb2F0IHJhZGl1cykKIHsKLSAgICBDR1BhdGhBZGRBcmNUb1BvaW50KGVuc3VyZVBsYXRm
b3JtUGF0aCgpLCAwLCBwMS54KCksIHAxLnkoKSwgcDIueCgpLCBwMi55KCksIHJhZGl1cyk7Cisg
ICAgQ0dQYXRoQWRkQXJjVG9Qb2ludChlbnN1cmVQbGF0Zm9ybVBhdGgoKSwgbnVsbHB0ciwgcDEu
eCgpLCBwMS55KCksIHAyLngoKSwgcDIueSgpLCByYWRpdXMpOwogfQogCiB2b2lkIFBhdGg6OnBs
YXRmb3JtQWRkUGF0aEZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
RmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVz
LCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90
dG9tUmlnaHRSYWRpdXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXgg
MGNhYmUxNWUwYzY4ZWQ4MDhmYmNmMWRiZTNjNWQ0OGQ2ODg3OGQ1ZC4uMmU0OTNhYjE4YzAzNGQy
MmMzODNjZTc3M2U2MTVmYTg5NzdiNjMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcApAQCAtNzksOCArNzksNiBAQCBzaXplX3QgSXRlbTo6c2l6ZUluQnl0ZXMoY29uc3Qg
SXRlbSYgaXRlbSkKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwT3V0VG9QYXRo
PihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHJldHVybiBz
aXplb2YoZG93bmNhc3Q8Q2xpcFBhdGg+KGl0ZW0pKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
Q29udmV4UG9seWdvbjoKLSAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwQ29udmV4
UG9seWdvbj4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAg
IHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0dseXBocz4oaXRlbSkpOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZToKQEAgLTEwNSw4ICsxMDMsNiBAQCBzaXplX3QgSXRlbTo6c2l6ZUlu
Qnl0ZXMoY29uc3QgSXRlbSYgaXRlbSkKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxE
cmF3TGluZUZvckRvY3VtZW50TWFya2VyPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0VsbGlwc2U6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0VsbGlwc2U+KGl0
ZW0pKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Q29udmV4UG9seWdvbjoKLSAgICAgICAgcmV0
dXJuIHNpemVvZihkb3duY2FzdDxEcmF3Q29udmV4UG9seWdvbj4oaXRlbSkpOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdQYXRoOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdQ
YXRoPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6CkBAIC0z
NDgsMjYgKzM0NCw2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBDbGlwUGF0aCYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLUNsaXBDb252
ZXhQb2x5Z29uOjpDbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtYmVyT2ZQb2ludHMsIGNvbnN0
IEZsb2F0UG9pbnQqIHBvaW50cywgYm9vbCBhbnRpYWxpYXNlZCkKLSAgICA6IEl0ZW0oSXRlbVR5
cGU6OkNsaXBDb252ZXhQb2x5Z29uKQotICAgICwgbV9hbnRpYWxpYXMoYW50aWFsaWFzZWQpCi17
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlBvaW50czsgKytpKQotICAgICAg
ICBtX3BvaW50cy5hcHBlbmQocG9pbnRzW2ldKTsKLX0KLQotdm9pZCBDbGlwQ29udmV4UG9seWdv
bjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAotewotICAgIGNvbnRleHQu
Y2xpcENvbnZleFBvbHlnb24obV9wb2ludHMuc2l6ZSgpLCBtX3BvaW50cy5kYXRhKCksIG1fYW50
aWFsaWFzKTsKLX0KLQotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IENsaXBDb252ZXhQb2x5Z29uJiBpdGVtKQotewotICAgIHRzLmR1bXBQcm9wZXJ0
eSgicG9pbnRzIiwgaXRlbS5wb2ludHMoKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJhbnRpYWxp
YXMiLCBpdGVtLmFudGlhbGlhcygpKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0KIERyYXdHbHlwaHM6
OkRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5
cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBjb3VudCwg
Y29uc3QgRmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2NhbEFu
Y2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKICAgICA6IERyYXdpbmdJdGVt
KEl0ZW1UeXBlOjpEcmF3R2x5cGhzKQogICAgICwgbV9mb250KGNvbnN0X2Nhc3Q8Rm9udCY+KGZv
bnQpKQpAQCAtNjgyLDQ3ICs2NTgsNiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd0VsbGlwc2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwog
fQogCi0vLyBGSVhNRTogU2hhcmUgdGhpcyBjb2RlLgotdm9pZCBhZGRDb252ZXhQb2x5Z29uVG9Q
YXRoKFBhdGgmIHBhdGgsIHNpemVfdCBudW1iZXJPZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCog
cG9pbnRzKQotewotICAgIEFTU0VSVChudW1iZXJPZlBvaW50cyA+IDApOwotCi0gICAgcGF0aC5t
b3ZlVG8ocG9pbnRzWzBdKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG51bWJlck9mUG9p
bnRzOyArK2kpCi0gICAgICAgIHBhdGguYWRkTGluZVRvKHBvaW50c1tpXSk7Ci0gICAgcGF0aC5j
bG9zZVN1YnBhdGgoKTsKLX0KLQotRHJhd0NvbnZleFBvbHlnb246OkRyYXdDb252ZXhQb2x5Z29u
KHNpemVfdCBudW1iZXJPZlBvaW50cywgY29uc3QgRmxvYXRQb2ludCogcG9pbnRzLCBib29sIGFu
dGlhbGlhc2VkKQotICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdDb252ZXhQb2x5Z29u
KQotICAgICwgbV9hbnRpYWxpYXNlZChhbnRpYWxpYXNlZCkKLXsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bWJlck9mUG9pbnRzOyArK2kpCi0gICAgICAgIG1fcG9pbnRzLmFwcGVuZChw
b2ludHNbaV0pOwotfQotCi1PcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdDb252ZXhQb2x5Z29uOjps
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdAotewotICAgIEZsb2F0UmVj
dCByZXN1bHQ7Ci0gICAgZm9yIChhdXRvJiBwb2ludCA6IG1fcG9pbnRzKQotICAgICAgICByZXN1
bHQuZXh0ZW5kKHBvaW50KTsKLSAgICByZXN1bHQuaW5mbGF0ZShtX2FudGlhbGlhc2VkID8gMSA6
IDApOyAvLyBBY2NvdW50IGZvciBhbnRpYWxpYXNpbmcKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci12b2lkIERyYXdDb252ZXhQb2x5Z29uOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0Ci17Ci0gICAgY29udGV4dC5kcmF3Q29udmV4UG9seWdvbihtX3BvaW50cy5zaXplKCks
IG1fcG9pbnRzLmRhdGEoKSwgbV9hbnRpYWxpYXNlZCk7Ci19Ci0KLXN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3Q29udmV4UG9seWdvbiYgaXRl
bSkKLXsKLSAgICB0cyA8PCBzdGF0aWNfY2FzdDxjb25zdCBEcmF3aW5nSXRlbSY+KGl0ZW0pOwot
ICAgIHRzLmR1bXBQcm9wZXJ0eSgicG9pbnRzIiwgaXRlbS5wb2ludHMoKSk7Ci0gICAgdHMuZHVt
cFByb3BlcnR5KCJhbnRpYWxpYXNlZCIsIGl0ZW0uYW50aWFsaWFzZWQoKSk7Ci0gICAgcmV0dXJu
IHRzOwotfQotCiB2b2lkIERyYXdQYXRoOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0CiB7CiAjaWYgVVNFKENHKQpAQCAtMTAyMyw3ICs5NTgsNiBAQCBzdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbVR5cGUmIHR5cGUpCiAg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDogdHMgPDwgImNsaXAtb3V0IjsgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDogdHMgPDwgImNsaXAtb3V0LXRvLXBhdGgiOyBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDogdHMgPDwgImNsaXAtcGF0aCI7IGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBDb252ZXhQb2x5Z29uOiB0cyA8PCAiY2xpcC1j
b252ZXgtcG9seWdvbiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6IHRz
IDw8ICJkcmF3LWdseXBocyI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZTog
dHMgPDwgImRyYXctaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJ
bWFnZTogdHMgPDwgImRyYXctdGlsZWQtaW1hZ2UiOyBicmVhazsKQEAgLTEwMzcsNyArOTcxLDYg
QEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0
ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6IHRzIDw8
ICJkcmF3LWxpbmVzLWZvci10ZXh0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xp
bmVGb3JEb2N1bWVudE1hcmtlcjogdHMgPDwgImRyYXctbGluZXMtZm9yLWRvY3VtZW50LW1hcmtl
ciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOiB0cyA8PCAiZHJhdy1l
bGxpcHNlIjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0NvbnZleFBvbHlnb246IHRz
IDw8ICJkcmF3LWNvbnZleC1wb2xnb24iOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0aDogdHMgPDwgImRyYXctcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdG
b2N1c1JpbmdQYXRoOiB0cyA8PCAiZHJhdy1mb2N1cy1yaW5nLXBhdGgiOyBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6IHRzIDw8ICJkcmF3LWZvY3VzLXJpbmct
cmVjdHMiOyBicmVhazsKQEAgLTExMTQsOSArMTA0Nyw2IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcFBhdGg6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PENsaXBQYXRoPihpdGVtKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcENvbnZleFBvbHlnb246Ci0gICAgICAg
IHRzIDw8IGRvd25jYXN0PENsaXBDb252ZXhQb2x5Z29uPihpdGVtKTsKLSAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8
RHJhd0dseXBocz4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTE1Miw5ICsxMDgyLDYgQEAg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8
RHJhd0VsbGlwc2U+KGl0ZW0pOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3Q29udmV4UG9seWdvbjoKLSAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd0NvbnZleFBvbHln
b24+KGl0ZW0pOwotICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoK
ICAgICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd1BhdGg+KGl0ZW0pOwogICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDA3ZDJkNWYyZGNiYWY0MzU4ZTQx
MjNmOWM0YmZkOGU4M2I3YzI1ZWEuLjUwNjVmMzgyOTcxNmExNWQ2ZWMyYTMzZWY1NzYwYjQ5NDQ3
NjZjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtNjQsNyArNjQsNiBA
QCBlbnVtIGNsYXNzIEl0ZW1UeXBlIHsKICAgICBDbGlwT3V0LAogICAgIENsaXBPdXRUb1BhdGgs
CiAgICAgQ2xpcFBhdGgsCi0gICAgQ2xpcENvbnZleFBvbHlnb24sCiAgICAgRHJhd0dseXBocywK
ICAgICBEcmF3SW1hZ2UsCiAgICAgRHJhd1RpbGVkSW1hZ2UsCkBAIC03OCw3ICs3Nyw2IEBAIGVu
dW0gY2xhc3MgSXRlbVR5cGUgewogICAgIERyYXdMaW5lc0ZvclRleHQsCiAgICAgRHJhd0xpbmVG
b3JEb2N1bWVudE1hcmtlciwKICAgICBEcmF3RWxsaXBzZSwKLSAgICBEcmF3Q29udmV4UG9seWdv
biwKICAgICBEcmF3UGF0aCwKICAgICBEcmF3Rm9jdXNSaW5nUGF0aCwKICAgICBEcmF3Rm9jdXNS
aW5nUmVjdHMsCkBAIC01MjIsMjUgKzUyMCw2IEBAIHByaXZhdGU6CiAgICAgV2luZFJ1bGUgbV93
aW5kUnVsZTsKIH07CiAKLWNsYXNzIENsaXBDb252ZXhQb2x5Z29uIDogcHVibGljIEl0ZW0gewot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8Q2xpcENvbnZleFBvbHlnb24+IGNyZWF0ZShzaXplX3Qg
bnVtYmVyT2ZQb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqIHBvaW50cywgYm9vbCBhbnRpYWxpYXNl
ZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENsaXBDb252ZXhQb2x5Z29u
KG51bWJlck9mUG9pbnRzLCBwb2ludHMsIGFudGlhbGlhc2VkKSk7Ci0gICAgfQotCi0gICAgY29u
c3QgVmVjdG9yPEZsb2F0UG9pbnQ+JiBwb2ludHMoKSBjb25zdCB7IHJldHVybiBtX3BvaW50czsg
fQotICAgIGJvb2wgYW50aWFsaWFzKCkgY29uc3QgeyByZXR1cm4gbV9hbnRpYWxpYXM7IH0KLQot
cHJpdmF0ZToKLSAgICBDbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtYmVyT2ZQb2ludHMsIGNv
bnN0IEZsb2F0UG9pbnQqLCBib29sIGFudGlhbGlhc2VkKTsKLQotICAgIHZpcnR1YWwgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLQotICAgIFZlY3RvcjxGbG9h
dFBvaW50PiBtX3BvaW50czsKLSAgICBib29sIG1fYW50aWFsaWFzOwotfTsKLQogY2xhc3MgRHJh
d0dseXBocyA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxE
cmF3R2x5cGhzPiBjcmVhdGUoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBj
b3VudCwgY29uc3QgRmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBs
b2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKQEAgLTg5NywyNiAr
ODc2LDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogfTsKIAotY2xhc3MgRHJh
d0NvbnZleFBvbHlnb24gOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewotcHVibGljOgotICAgIHN0YXRp
YyBSZWY8RHJhd0NvbnZleFBvbHlnb24+IGNyZWF0ZShzaXplX3QgbnVtYmVyT2ZQb2ludHMsIGNv
bnN0IEZsb2F0UG9pbnQqIHBvaW50cywgYm9vbCBhbnRpYWxpYXNlZCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdDb252ZXhQb2x5Z29uKG51bWJlck9mUG9pbnRzLCBw
b2ludHMsIGFudGlhbGlhc2VkKSk7Ci0gICAgfQotCi0gICAgY29uc3QgVmVjdG9yPEZsb2F0UG9p
bnQ+JiBwb2ludHMoKSBjb25zdCB7IHJldHVybiBtX3BvaW50czsgfQotICAgIGJvb2wgYW50aWFs
aWFzZWQoKSBjb25zdCB7IHJldHVybiBtX2FudGlhbGlhc2VkOyB9Ci0KLXByaXZhdGU6Ci0gICAg
RHJhd0NvbnZleFBvbHlnb24oc2l6ZV90IG51bWJlck9mUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50
KiwgYm9vbCBhbnRpYWxpYXNlZCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwotCi0g
ICAgVmVjdG9yPEZsb2F0UG9pbnQ+IG1fcG9pbnRzOwotICAgIGJvb2wgbV9hbnRpYWxpYXNlZDsK
LX07Ci0KIGNsYXNzIERyYXdQYXRoIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPERyYXdQYXRoPiBjcmVhdGUoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTEzNTUs
OSArMTMxNCw2IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9zY2FsZUZhY3RvcjsKIH07CiAKLS8v
IEZJWE1FOiB0aGlzIG5lZWRzIHRvIG1vdmUuCi12b2lkIGFkZENvbnZleFBvbHlnb25Ub1BhdGgo
UGF0aCYsIHNpemVfdCBudW1Qb2ludHMsIGNvbnN0IEZsb2F0UG9pbnQqKTsKLQogVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgSXRlbSYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdApAQCAtMTM5MSw3ICsxMzQ3LDYgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19ESVNQTEFZTElTVF9JVEVNKENsaXApCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlM
SVNUX0lURU0oQ2xpcE91dCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRF
TShDbGlwT3V0VG9QYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KENsaXBQYXRoKQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKENsaXBD
b252ZXhQb2x5Z29uKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERy
YXdHbHlwaHMpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd0lt
YWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdUaWxlZElt
YWdlKQpAQCAtMTQwNSw3ICsxMzYwLDYgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZ
TElTVF9JVEVNKERyYXdMaW5lKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9J
VEVNKERyYXdMaW5lc0ZvclRleHQpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oRHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RElTUExBWUxJU1RfSVRFTShEcmF3RWxsaXBzZSkKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElT
UExBWUxJU1RfSVRFTShEcmF3Q29udmV4UG9seWdvbikKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RElTUExBWUxJU1RfSVRFTShEcmF3UGF0aCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExB
WUxJU1RfSVRFTShEcmF3Rm9jdXNSaW5nUGF0aCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElT
UExBWUxJU1RfSVRFTShEcmF3Rm9jdXNSaW5nUmVjdHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNzg5YTg0NmY4ZDkyNjg4OTU2Nzg4NzFhM2VlODA5MTZm
NjU1MTQyYS4uMzY2Y2ZmNzg2ZDIxZDhjNDU5OTFmNjM1YzU2ZTI5ZWMyM2JjNDcxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMjM3LDEyICsyMzcsNiBA
QCB2b2lkIFJlY29yZGVyOjpkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAg
dXBkYXRlSXRlbUV4dGVudChuZXdJdGVtKTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZHJhd0NvbnZl
eFBvbHlnb24oc2l6ZV90IG51bWJlck9mUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50KiBwb2ludHMs
IGJvb2wgYW50aWFsaWFzZWQpCi17Ci0gICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2Fz
dDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3Q29udmV4UG9seWdvbjo6Y3JlYXRlKG51bWJl
ck9mUG9pbnRzLCBwb2ludHMsIGFudGlhbGlhc2VkKSkpOwotICAgIHVwZGF0ZUl0ZW1FeHRlbnQo
bmV3SXRlbSk7Ci19Ci0KIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiB7CiAgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBw
ZW5kSXRlbShEcmF3UGF0aDo6Y3JlYXRlKHBhdGgpKSk7CkBAIC0zNjcsMTUgKzM2MSw2IEBAIHZv
aWQgUmVjb3JkZXI6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHdpbmRSdWxl
KQogICAgIGFwcGVuZEl0ZW0oQ2xpcFBhdGg6OmNyZWF0ZShwYXRoLCB3aW5kUnVsZSkpOwogfQog
Ci12b2lkIFJlY29yZGVyOjpjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25z
dCBGbG9hdFBvaW50KiBwb2ludHMsIGJvb2wgYW50aWFsaWFzKQotewotICAgIFBhdGggcG9seWdv
blBhdGg7Ci0gICAgYWRkQ29udmV4UG9seWdvblRvUGF0aChwb2x5Z29uUGF0aCwgbnVtUG9pbnRz
LCBwb2ludHMpOwotICAgIGN1cnJlbnRTdGF0ZSgpLmNsaXBCb3VuZHMuaW50ZXJzZWN0KHBvbHln
b25QYXRoLmZhc3RCb3VuZGluZ1JlY3QoKSk7Ci0KLSAgICBhcHBlbmRJdGVtKENsaXBDb252ZXhQ
b2x5Z29uOjpjcmVhdGUobnVtUG9pbnRzLCBwb2ludHMsIGFudGlhbGlhcykpOwotfQotCiB2b2lk
IFJlY29yZGVyOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
KQogewogICAgIC8vIEZJWE1FOiB0aGlzIGNoYW5nZXMgdGhlIGJhc2VDVE0sIHdoaWNoIHdpbGwg
aW52YWxpZGF0ZSBhbGwgb2Ygb3VyIGNhY2hlZCBleHRlbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKaW5kZXggMmYzNmEzZjgwMzVlZGE2ZDhjZDhjNjhiYWM0OTRlZmQ5
OTA4NDc1OS4uNTJlMzlhYzVmZWJkNDg1N2U3ZTIxOTVmMjg4NWExNzIzZjhhM2RhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC05NSw3ICs5NSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IERh
c2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzLCBmbG9hdCBz
dHJva2VUaGlja25lc3MpOwogICAgIHZvaWQgZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihjb25z
dCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIEdyYXBoaWNzQ29udGV4dDo6RG9jdW1lbnRNYXJr
ZXJMaW5lU3R5bGUpOwogICAgIHZvaWQgZHJhd0VsbGlwc2UoY29uc3QgRmxvYXRSZWN0Jik7Ci0g
ICAgdm9pZCBkcmF3Q29udmV4UG9seWdvbihzaXplX3QgbnVtYmVyT2ZQb2ludHMsIGNvbnN0IEZs
b2F0UG9pbnQqLCBib29sIGFudGlhbGlhc2VkKTsKICAgICB2b2lkIGRyYXdQYXRoKGNvbnN0IFBh
dGgmKTsKIAogICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgaW50IHdpZHRoLCBp
bnQgb2Zmc2V0LCBjb25zdCBDb2xvciYpOwpAQCAtMTE2LDcgKzExNSw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsaXBPdXQoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBjbGlwT3V0KGNvbnN0
IFBhdGgmKTsKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSk7Ci0gICAg
dm9pZCBjbGlwQ29udmV4UG9seWdvbihzaXplX3QgbnVtUG9pbnRzLCBjb25zdCBGbG9hdFBvaW50
KiwgYm9vbCBhbnRpYWxpYXMpOwogICAgIAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCmluZGV4IDBhZmJkZjg0MmYzZmJkYmJlNjE3Yjk2YjJkMjQxMGM1NWEyZDk2
MjkuLjdjMWQwYTcyMTNlYjQwYzY1ZDkxZjAwNDRlMmFkNzMyNjg4ZDRmM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMTkw
NSw4ICsxOTA1LDYgQEAgc3RhdGljIHZvaWQgZmluZElubmVyVmVydGV4KGNvbnN0IEZsb2F0UG9p
bnQmIG91dGVyQ29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm4KIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVj
dCYgaW5uZXJCb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQm94U2lkZSBzaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJvb2wgc2Vjb25k
RWRnZU1hdGNoZXMpCiB7Ci0gICAgRmxvYXRQb2ludCBxdWFkWzRdOwotCiAgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgY29u
c3QgRmxvYXRSZWN0JiBvdXRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKG91dGVyQm9y
ZGVyLnJlY3QoKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGNvbnN0IEZsb2F0UmVjdCYgaW5u
ZXJSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhpbm5lckJvcmRlci5yZWN0KCksIGRldmlj
ZVNjYWxlRmFjdG9yKTsKQEAgLTE5MjcsMTIgKzE5MjUsMTQgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3ND
b250ZXgKICAgICAvLyAgICAgICAzICAvICAgICAgICAgICAgICBcICAzICAgCiAgICAgLy8gICAg
ICAgICAwLS0tLS0tLS0tLS0tLS0tLTMKICAgICAvLworICAgIFZlY3RvcjxGbG9hdFBvaW50PiBx
dWFkOworICAgIHF1YWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg0KTsKICAgICBzd2l0Y2ggKHNp
ZGUpIHsKICAgICBjYXNlIEJTVG9wOgotICAgICAgICBxdWFkWzBdID0gb3V0ZXJSZWN0Lm1pblhN
aW5ZQ29ybmVyKCk7Ci0gICAgICAgIHF1YWRbMV0gPSBpbm5lclJlY3QubWluWE1pbllDb3JuZXIo
KTsKLSAgICAgICAgcXVhZFsyXSA9IGlubmVyUmVjdC5tYXhYTWluWUNvcm5lcigpOwotICAgICAg
ICBxdWFkWzNdID0gb3V0ZXJSZWN0Lm1heFhNaW5ZQ29ybmVyKCk7CisgICAgICAgIHF1YWQudW5j
aGVja2VkQXBwZW5kKG91dGVyUmVjdC5taW5YTWluWUNvcm5lcigpKTsKKyAgICAgICAgcXVhZC51
bmNoZWNrZWRBcHBlbmQoaW5uZXJSZWN0Lm1pblhNaW5ZQ29ybmVyKCkpOworICAgICAgICBxdWFk
LnVuY2hlY2tlZEFwcGVuZChpbm5lclJlY3QubWF4WE1pbllDb3JuZXIoKSk7CisgICAgICAgIHF1
YWQudW5jaGVja2VkQXBwZW5kKG91dGVyUmVjdC5tYXhYTWluWUNvcm5lcigpKTsKIAogICAgICAg
ICBpZiAoIWlubmVyQm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLmlzWmVybygpKQogICAgICAgICAg
ICAgZmluZElubmVyVmVydGV4KG91dGVyUmVjdC5taW5YTWluWUNvcm5lcigpLCBpbm5lclJlY3Qu
bWluWE1pbllDb3JuZXIoKSwgY2VudGVyUG9pbnQsIHF1YWRbMV0pOwpAQCAtMTk0MiwxMCArMTk0
MiwxMCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24o
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleAogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgQlNMZWZ0OgotICAgICAgICBxdWFkWzBdID0gb3V0ZXJSZWN0Lm1pblhNaW5ZQ29ybmVyKCk7
Ci0gICAgICAgIHF1YWRbMV0gPSBpbm5lclJlY3QubWluWE1pbllDb3JuZXIoKTsKLSAgICAgICAg
cXVhZFsyXSA9IGlubmVyUmVjdC5taW5YTWF4WUNvcm5lcigpOwotICAgICAgICBxdWFkWzNdID0g
b3V0ZXJSZWN0Lm1pblhNYXhZQ29ybmVyKCk7CisgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5k
KG91dGVyUmVjdC5taW5YTWluWUNvcm5lcigpKTsKKyAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBl
bmQoaW5uZXJSZWN0Lm1pblhNaW5ZQ29ybmVyKCkpOworICAgICAgICBxdWFkLnVuY2hlY2tlZEFw
cGVuZChpbm5lclJlY3QubWluWE1heFlDb3JuZXIoKSk7CisgICAgICAgIHF1YWQudW5jaGVja2Vk
QXBwZW5kKG91dGVyUmVjdC5taW5YTWF4WUNvcm5lcigpKTsKIAogICAgICAgICBpZiAoIWlubmVy
Qm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLmlzWmVybygpKQogICAgICAgICAgICAgZmluZElubmVy
VmVydGV4KG91dGVyUmVjdC5taW5YTWluWUNvcm5lcigpLCBpbm5lclJlY3QubWluWE1pbllDb3Ju
ZXIoKSwgY2VudGVyUG9pbnQsIHF1YWRbMV0pOwpAQCAtMTk1NSwxMCArMTk1NSwxMCBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQlNCb3R0b206
Ci0gICAgICAgIHF1YWRbMF0gPSBvdXRlclJlY3QubWluWE1heFlDb3JuZXIoKTsKLSAgICAgICAg
cXVhZFsxXSA9IGlubmVyUmVjdC5taW5YTWF4WUNvcm5lcigpOwotICAgICAgICBxdWFkWzJdID0g
aW5uZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCk7Ci0gICAgICAgIHF1YWRbM10gPSBvdXRlclJlY3Qu
bWF4WE1heFlDb3JuZXIoKTsKKyAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQob3V0ZXJSZWN0
Lm1pblhNYXhZQ29ybmVyKCkpOworICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZChpbm5lclJl
Y3QubWluWE1heFlDb3JuZXIoKSk7CisgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKGlubmVy
UmVjdC5tYXhYTWF4WUNvcm5lcigpKTsKKyAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQob3V0
ZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCkpOwogCiAgICAgICAgIGlmICghaW5uZXJCb3JkZXIucmFk
aWkoKS5ib3R0b21MZWZ0KCkuaXNaZXJvKCkpCiAgICAgICAgICAgICBmaW5kSW5uZXJWZXJ0ZXgo
b3V0ZXJSZWN0Lm1pblhNYXhZQ29ybmVyKCksIGlubmVyUmVjdC5taW5YTWF4WUNvcm5lcigpLCBj
ZW50ZXJQb2ludCwgcXVhZFsxXSk7CkBAIC0xOTY4LDEwICsxOTY4LDEwIEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBCU1JpZ2h0OgotICAgICAg
ICBxdWFkWzBdID0gb3V0ZXJSZWN0Lm1heFhNaW5ZQ29ybmVyKCk7Ci0gICAgICAgIHF1YWRbMV0g
PSBpbm5lclJlY3QubWF4WE1pbllDb3JuZXIoKTsKLSAgICAgICAgcXVhZFsyXSA9IGlubmVyUmVj
dC5tYXhYTWF4WUNvcm5lcigpOwotICAgICAgICBxdWFkWzNdID0gb3V0ZXJSZWN0Lm1heFhNYXhZ
Q29ybmVyKCk7CisgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKG91dGVyUmVjdC5tYXhYTWlu
WUNvcm5lcigpKTsKKyAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQoaW5uZXJSZWN0Lm1heFhN
aW5ZQ29ybmVyKCkpOworICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZChpbm5lclJlY3QubWF4
WE1heFlDb3JuZXIoKSk7CisgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKG91dGVyUmVjdC5t
YXhYTWF4WUNvcm5lcigpKTsKIAogICAgICAgICBpZiAoIWlubmVyQm9yZGVyLnJhZGlpKCkudG9w
UmlnaHQoKS5pc1plcm8oKSkKICAgICAgICAgICAgIGZpbmRJbm5lclZlcnRleChvdXRlclJlY3Qu
bWF4WE1pbllDb3JuZXIoKSwgaW5uZXJSZWN0Lm1heFhNaW5ZQ29ybmVyKCksIGNlbnRlclBvaW50
LCBxdWFkWzFdKTsKQEAgLTE5ODQsMjUgKzE5ODQsMzUgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXgKICAgICAvLyBJZiB0aGUgYm9yZGVyIG1hdGNoZXMgYm90aCBvZiBpdHMgYWRqYWNlbnQgc2lk
ZXMsIGRvbid0IGFudGktYWxpYXMgdGhlIGNsaXAsIGFuZAogICAgIC8vIGlmIG5laXRoZXIgc2lk
ZSBtYXRjaGVzLCBhbnRpLWFsaWFzIHRoZSBjbGlwLgogICAgIGlmIChmaXJzdEVkZ2VNYXRjaGVz
ID09IHNlY29uZEVkZ2VNYXRjaGVzKSB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwQ29u
dmV4UG9seWdvbig0LCBxdWFkLCAhZmlyc3RFZGdlTWF0Y2hlcyk7CisgICAgICAgIGJvb2wgd2Fz
QW50aWFsaWFzZWQgPSBncmFwaGljc0NvbnRleHQuc2hvdWxkQW50aWFsaWFzKCk7CisgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoIWZpcnN0RWRnZU1hdGNoZXMpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuY2xpcFBhdGgoUGF0aDo6cG9seWdvblBhdGhGcm9tUG9p
bnRzKHF1YWQpLCBSVUxFX05PTlpFUk8pOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hv
dWxkQW50aWFsaWFzKHdhc0FudGlhbGlhc2VkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIC8vIFNxdWFyZSBvZmYgdGhlIGVuZCB3aGljaCBzaG91bGRuJ3QgYmUgYWZmZWN0ZWQgYnkg
YW50aWFsaWFzaW5nLCBhbmQgY2xpcC4KLSAgICBGbG9hdFBvaW50IGZpcnN0UXVhZFs0XTsKLSAg
ICBmaXJzdFF1YWRbMF0gPSBxdWFkWzBdOwotICAgIGZpcnN0UXVhZFsxXSA9IHF1YWRbMV07Ci0g
ICAgZmlyc3RRdWFkWzJdID0gc2lkZSA9PSBCU1RvcCB8fCBzaWRlID09IEJTQm90dG9tID8gRmxv
YXRQb2ludChxdWFkWzNdLngoKSwgcXVhZFsyXS55KCkpIDogRmxvYXRQb2ludChxdWFkWzJdLngo
KSwgcXVhZFszXS55KCkpOwotICAgIGZpcnN0UXVhZFszXSA9IHF1YWRbM107Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LmNsaXBDb252ZXhQb2x5Z29uKDQsIGZpcnN0UXVhZCwgIWZpcnN0RWRnZU1hdGNo
ZXMpOwotCi0gICAgRmxvYXRQb2ludCBzZWNvbmRRdWFkWzRdOwotICAgIHNlY29uZFF1YWRbMF0g
PSBxdWFkWzBdOwotICAgIHNlY29uZFF1YWRbMV0gPSBzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0g
QlNCb3R0b20gPyBGbG9hdFBvaW50KHF1YWRbMF0ueCgpLCBxdWFkWzFdLnkoKSkgOiBGbG9hdFBv
aW50KHF1YWRbMV0ueCgpLCBxdWFkWzBdLnkoKSk7Ci0gICAgc2Vjb25kUXVhZFsyXSA9IHF1YWRb
Ml07Ci0gICAgc2Vjb25kUXVhZFszXSA9IHF1YWRbM107CisgICAgVmVjdG9yPEZsb2F0UG9pbnQ+
IGZpcnN0UXVhZCA9IHsKKyAgICAgICAgcXVhZFswXSwKKyAgICAgICAgcXVhZFsxXSwKKyAgICAg
ICAgc2lkZSA9PSBCU1RvcCB8fCBzaWRlID09IEJTQm90dG9tID8gRmxvYXRQb2ludChxdWFkWzNd
LngoKSwgcXVhZFsyXS55KCkpIDogRmxvYXRQb2ludChxdWFkWzJdLngoKSwgcXVhZFszXS55KCkp
LAorICAgICAgICBxdWFkWzNdCisgICAgfTsKKyAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3Jh
cGhpY3NDb250ZXh0LnNob3VsZEFudGlhbGlhcygpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRT
aG91bGRBbnRpYWxpYXMoIWZpcnN0RWRnZU1hdGNoZXMpOworICAgIGdyYXBoaWNzQ29udGV4dC5j
bGlwUGF0aChQYXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoZmlyc3RRdWFkKSwgUlVMRV9OT05a
RVJPKTsKKworICAgIFZlY3RvcjxGbG9hdFBvaW50PiBzZWNvbmRRdWFkID0geworICAgICAgICBx
dWFkWzBdLAorICAgICAgICBzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0gQlNCb3R0b20gPyBGbG9h
dFBvaW50KHF1YWRbMF0ueCgpLCBxdWFkWzFdLnkoKSkgOiBGbG9hdFBvaW50KHF1YWRbMV0ueCgp
LCBxdWFkWzBdLnkoKSksCisgICAgICAgIHF1YWRbMl0sCisgICAgICAgIHF1YWRbM10KKyAgICB9
OwogICAgIC8vIEFudGlhbGlhc2luZyBhZmZlY3RzIHRoZSBzZWNvbmQgc2lkZS4KLSAgICBncmFw
aGljc0NvbnRleHQuY2xpcENvbnZleFBvbHlnb24oNCwgc2Vjb25kUXVhZCwgIXNlY29uZEVkZ2VN
YXRjaGVzKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKCFzZWNvbmRF
ZGdlTWF0Y2hlcyk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBQYXRoKFBhdGg6OnBvbHlnb25Q
YXRoRnJvbVBvaW50cyhzZWNvbmRRdWFkKSwgUlVMRV9OT05aRVJPKTsKKworICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMod2FzQW50aWFsaWFzZWQpOwogfQogCiBzdGF0aWMg
TGF5b3V0UmVjdCBjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKGNvbnN0IFJvdW5kZWRS
ZWN0JiBvdXRlckJvcmRlciwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBCb3hTaWRlIHNpZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYTJjYzcx
ZWIzOGU5Yjg4MmI4MDcxZTA5YjkzYmQ3ZDJjMTc0N2UzMy4uNjNkMzhjODc2Mjk5MjAyMTkyZjIx
MjA1MDNkZjRjMDE4NTFjMDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcApAQCAtMjAzNyw4ICsyMDM3LDYgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpkcmF3
TGluZUZvckJveFNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEYK
ICAgICAgICAgQVNTRVJUKHgyID49IHgxKTsKICAgICAgICAgQVNTRVJUKHkyID49IHkxKTsKICAg
ICAgICAgaWYgKCFhZGphY2VudFdpZHRoMSAmJiAhYWRqYWNlbnRXaWR0aDIpIHsKLSAgICAgICAg
ICAgIC8vIFR1cm4gb2ZmIGFudGlhbGlhc2luZyB0byBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgZHJh
d0NvbnZleFBvbHlnb24oKTsKLSAgICAgICAgICAgIC8vIHRoaXMgbWF0dGVycyBmb3IgcmVjdHMg
aW4gdHJhbnNmb3JtZWQgY29udGV4dHMuCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0
U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxDb2xvcihjb2xvcik7CiAgICAgICAgICAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3JhcGhp
Y3NDb250ZXh0LnNob3VsZEFudGlhbGlhcygpOwpAQCAtMjA1NSwzNyArMjA1Myw0MiBAQCB2b2lk
IFJlbmRlckVsZW1lbnQ6OmRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgRgogICAgICAgICB4MiA9IHJvdW5kVG9EZXZpY2VQaXhlbCh4Miwg
ZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICB5MiA9IHJvdW5kVG9EZXZpY2VQaXhlbCh5Miwg
ZGV2aWNlU2NhbGVGYWN0b3IpOwogCi0gICAgICAgIEZsb2F0UG9pbnQgcXVhZFs0XTsKKyAgICAg
ICAgVmVjdG9yPEZsb2F0UG9pbnQ+IHF1YWQ7CisgICAgICAgIHF1YWQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSg0KTsKICAgICAgICAgc3dpdGNoIChzaWRlKSB7CiAgICAgICAgIGNhc2UgQlNUb3A6
Ci0gICAgICAgICAgICBxdWFkWzBdID0gRmxvYXRQb2ludCh4MSArIHN0ZDo6bWF4PGZsb2F0Pigt
YWRqYWNlbnRXaWR0aDEsIDApLCB5MSk7Ci0gICAgICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2lu
dCh4MSArIHN0ZDo6bWF4PGZsb2F0PihhZGphY2VudFdpZHRoMSwgMCksIHkyKTsKLSAgICAgICAg
ICAgIHF1YWRbMl0gPSBGbG9hdFBvaW50KHgyIC0gc3RkOjptYXg8ZmxvYXQ+KGFkamFjZW50V2lk
dGgyLCAwKSwgeTIpOwotICAgICAgICAgICAgcXVhZFszXSA9IEZsb2F0UG9pbnQoeDIgLSBzdGQ6
Om1heDxmbG9hdD4oLWFkamFjZW50V2lkdGgyLCAwKSwgeTEpOworICAgICAgICAgICAgcXVhZC51
bmNoZWNrZWRBcHBlbmQoeyB4MSArIHN0ZDo6bWF4PGZsb2F0PigtYWRqYWNlbnRXaWR0aDEsIDAp
LCB5MSB9KTsKKyAgICAgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDEgKyBzdGQ6Om1h
eDxmbG9hdD4oIGFkamFjZW50V2lkdGgxLCAwKSwgeTIgfSk7CisgICAgICAgICAgICBxdWFkLnVu
Y2hlY2tlZEFwcGVuZCh7IHgyIC0gc3RkOjptYXg8ZmxvYXQ+KCBhZGphY2VudFdpZHRoMiwgMCks
IHkyIH0pOworICAgICAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQoeyB4MiAtIHN0ZDo6bWF4
PGZsb2F0PigtYWRqYWNlbnRXaWR0aDIsIDApLCB5MSB9KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEJTQm90dG9tOgotICAgICAgICAgICAgcXVhZFswXSA9IEZsb2F0UG9pbnQo
eDEgKyBzdGQ6Om1heDxmbG9hdD4oYWRqYWNlbnRXaWR0aDEsIDApLCB5MSk7Ci0gICAgICAgICAg
ICBxdWFkWzFdID0gRmxvYXRQb2ludCh4MSArIHN0ZDo6bWF4PGZsb2F0PigtYWRqYWNlbnRXaWR0
aDEsIDApLCB5Mik7Ci0gICAgICAgICAgICBxdWFkWzJdID0gRmxvYXRQb2ludCh4MiAtIHN0ZDo6
bWF4PGZsb2F0PigtYWRqYWNlbnRXaWR0aDIsIDApLCB5Mik7Ci0gICAgICAgICAgICBxdWFkWzNd
ID0gRmxvYXRQb2ludCh4MiAtIHN0ZDo6bWF4PGZsb2F0PihhZGphY2VudFdpZHRoMiwgMCksIHkx
KTsKKyAgICAgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDEgKyBzdGQ6Om1heDxmbG9h
dD4oIGFkamFjZW50V2lkdGgxLCAwKSwgeTEgfSk7CisgICAgICAgICAgICBxdWFkLnVuY2hlY2tl
ZEFwcGVuZCh7IHgxICsgc3RkOjptYXg8ZmxvYXQ+KC1hZGphY2VudFdpZHRoMSwgMCksIHkyIH0p
OworICAgICAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQoeyB4MiAtIHN0ZDo6bWF4PGZsb2F0
PigtYWRqYWNlbnRXaWR0aDIsIDApLCB5MiB9KTsKKyAgICAgICAgICAgIHF1YWQudW5jaGVja2Vk
QXBwZW5kKHsgeDIgLSBzdGQ6Om1heDxmbG9hdD4oIGFkamFjZW50V2lkdGgyLCAwKSwgeTEgfSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCU0xlZnQ6Ci0gICAgICAgICAgICBx
dWFkWzBdID0gRmxvYXRQb2ludCh4MSwgeTEgKyBzdGQ6Om1heDxmbG9hdD4oLWFkamFjZW50V2lk
dGgxLCAwKSk7Ci0gICAgICAgICAgICBxdWFkWzFdID0gRmxvYXRQb2ludCh4MSwgeTIgLSBzdGQ6
Om1heDxmbG9hdD4oLWFkamFjZW50V2lkdGgyLCAwKSk7Ci0gICAgICAgICAgICBxdWFkWzJdID0g
RmxvYXRQb2ludCh4MiwgeTIgLSBzdGQ6Om1heDxmbG9hdD4oYWRqYWNlbnRXaWR0aDIsIDApKTsK
LSAgICAgICAgICAgIHF1YWRbM10gPSBGbG9hdFBvaW50KHgyLCB5MSArIHN0ZDo6bWF4PGZsb2F0
PihhZGphY2VudFdpZHRoMSwgMCkpOworICAgICAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQo
eyB4MSwgeTEgKyBzdGQ6Om1heDxmbG9hdD4oLWFkamFjZW50V2lkdGgxLCAwKSB9KTsKKyAgICAg
ICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDEsIHkyIC0gc3RkOjptYXg8ZmxvYXQ+KC1h
ZGphY2VudFdpZHRoMiwgMCkgfSk7CisgICAgICAgICAgICBxdWFkLnVuY2hlY2tlZEFwcGVuZCh7
IHgyLCB5MiAtIHN0ZDo6bWF4PGZsb2F0PiggYWRqYWNlbnRXaWR0aDIsIDApIH0pOworICAgICAg
ICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQoeyB4MiwgeTEgKyBzdGQ6Om1heDxmbG9hdD4oIGFk
amFjZW50V2lkdGgxLCAwKSB9KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJT
UmlnaHQ6Ci0gICAgICAgICAgICBxdWFkWzBdID0gRmxvYXRQb2ludCh4MSwgeTEgKyBzdGQ6Om1h
eDxmbG9hdD4oYWRqYWNlbnRXaWR0aDEsIDApKTsKLSAgICAgICAgICAgIHF1YWRbMV0gPSBGbG9h
dFBvaW50KHgxLCB5MiAtIHN0ZDo6bWF4PGZsb2F0PihhZGphY2VudFdpZHRoMiwgMCkpOwotICAg
ICAgICAgICAgcXVhZFsyXSA9IEZsb2F0UG9pbnQoeDIsIHkyIC0gc3RkOjptYXg8ZmxvYXQ+KC1h
ZGphY2VudFdpZHRoMiwgMCkpOwotICAgICAgICAgICAgcXVhZFszXSA9IEZsb2F0UG9pbnQoeDIs
IHkxICsgc3RkOjptYXg8ZmxvYXQ+KC1hZGphY2VudFdpZHRoMSwgMCkpOworICAgICAgICAgICAg
cXVhZC51bmNoZWNrZWRBcHBlbmQoeyB4MSwgeTEgKyBzdGQ6Om1heDxmbG9hdD4oIGFkamFjZW50
V2lkdGgxLCAwKSB9KTsKKyAgICAgICAgICAgIHF1YWQudW5jaGVja2VkQXBwZW5kKHsgeDEsIHky
IC0gc3RkOjptYXg8ZmxvYXQ+KCBhZGphY2VudFdpZHRoMiwgMCkgfSk7CisgICAgICAgICAgICBx
dWFkLnVuY2hlY2tlZEFwcGVuZCh7IHgyLCB5MiAtIHN0ZDo6bWF4PGZsb2F0PigtYWRqYWNlbnRX
aWR0aDIsIDApIH0pOworICAgICAgICAgICAgcXVhZC51bmNoZWNrZWRBcHBlbmQoeyB4MiwgeTEg
KyBzdGQ6Om1heDxmbG9hdD4oLWFkamFjZW50V2lkdGgxLCAwKSB9KTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVN0eWxl
KE5vU3Ryb2tlKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7
Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3Q29udmV4UG9seWdvbig0LCBxdWFkLCBhbnRp
YWxpYXMpOworICAgICAgICBib29sIHdhc0FudGlhbGlhc2VkID0gZ3JhcGhpY3NDb250ZXh0LnNo
b3VsZEFudGlhbGlhcygpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkQW50aWFs
aWFzKGFudGlhbGlhcyk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChQYXRoOjpw
b2x5Z29uUGF0aEZyb21Qb2ludHMocXVhZCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0
U2hvdWxkQW50aWFsaWFzKHdhc0FudGlhbGlhc2VkKTsKKwogICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0U3Ryb2tlU3R5bGUob2xkU3Ryb2tlU3R5bGUpOwogICAgICAgICBicmVhazsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggZmYwOWIx
NGEwMDE4YTc1MjUyNTQ0NWEwN2YxOTMzOTM5YzE4MzRiMy4uOWYyZGY1MTQwNmRmOTFiN2EwNGE4
ODY0MTBlYzcwNGY5YzUzMGFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbQpAQCAtNjgzLDI1ICs2ODMsMjYgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFp
bnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAog
ICAgICAgICBmbG9hdCBjZW50ZXJYID0gZmxvb3JmKGJ1dHRvbkNsaXAueCgpICsgYnV0dG9uQ2xp
cC53aWR0aCgpIC8gMi4wKSAtIDAuNTsKICAgICAgICAgZmxvYXQgY2VudGVyWSA9IGZsb29yZihi
dXR0b25DbGlwLnkoKSArIGJ1dHRvbkNsaXAuaGVpZ2h0KCkgKiAzLjAgLyA4LjApOwogCi0gICAg
ICAgIEZsb2F0UG9pbnQgYXJyb3dbM107Ci0gICAgICAgIEZsb2F0UG9pbnQgc2hhZG93WzNdOwot
Ci0gICAgICAgIGFycm93WzBdID0gRmxvYXRQb2ludChjZW50ZXJYIC0gTWVudUxpc3RBcnJvd1dp
ZHRoIC8gMi4wLCBjZW50ZXJZKTsKLSAgICAgICAgYXJyb3dbMV0gPSBGbG9hdFBvaW50KGNlbnRl
clggKyBNZW51TGlzdEFycm93V2lkdGggLyAyLjAsIGNlbnRlclkpOwotICAgICAgICBhcnJvd1sy
XSA9IEZsb2F0UG9pbnQoY2VudGVyWCwgY2VudGVyWSArIE1lbnVMaXN0QXJyb3dIZWlnaHQpOwor
ICAgICAgICBWZWN0b3I8RmxvYXRQb2ludD4gYXJyb3cgPSB7CisgICAgICAgICAgICB7IGNlbnRl
clggLSBNZW51TGlzdEFycm93V2lkdGggLyAyLCBjZW50ZXJZIH0sCisgICAgICAgICAgICB7IGNl
bnRlclggKyBNZW51TGlzdEFycm93V2lkdGggLyAyLCBjZW50ZXJZIH0sCisgICAgICAgICAgICB7
IGNlbnRlclgsIGNlbnRlclkgKyBNZW51TGlzdEFycm93SGVpZ2h0IH0KKyAgICAgICAgfTsKIAot
ICAgICAgICBzaGFkb3dbMF0gPSBGbG9hdFBvaW50KGFycm93WzBdLngoKSwgYXJyb3dbMF0ueSgp
ICsgMS4wZik7Ci0gICAgICAgIHNoYWRvd1sxXSA9IEZsb2F0UG9pbnQoYXJyb3dbMV0ueCgpLCBh
cnJvd1sxXS55KCkgKyAxLjBmKTsKLSAgICAgICAgc2hhZG93WzJdID0gRmxvYXRQb2ludChhcnJv
d1syXS54KCksIGFycm93WzJdLnkoKSArIDEuMGYpOworICAgICAgICBWZWN0b3I8RmxvYXRQb2lu
dD4gc2hhZG93ID0geworICAgICAgICAgICAgeyBhcnJvd1swXS54KCksIGFycm93WzBdLnkoKSAr
IDEgfSwKKyAgICAgICAgICAgIHsgYXJyb3dbMV0ueCgpLCBhcnJvd1sxXS55KCkgKyAxIH0sCisg
ICAgICAgICAgICB7IGFycm93WzJdLngoKSwgYXJyb3dbMl0ueSgpICsgMSB9CisgICAgICAgIH07
CiAKICAgICAgICAgZmxvYXQgb3BhY2l0eSA9IGlzUmVhZE9ubHlDb250cm9sKGJveCkgPyAwLjIg
OiAwLjU7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3Io
MC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSk7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgc2hhZG93LCB0cnVlKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UGF0aChQYXRoOjpwb2x5Z29uUGF0aEZy
b21Qb2ludHMoc2hhZG93KSk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJv
a2VDb2xvcihDb2xvcjo6d2hpdGUpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZp
bGxDb2xvcihDb2xvcjo6d2hpdGUpOwotICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdD
b252ZXhQb2x5Z29uKDMsIGFycm93LCB0cnVlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5kcmF3UGF0aChQYXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMoYXJyb3cpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KaW5kZXggYWQxMGYyNzdhNjUxZjYwNGIzYmI0ZjZiZjFmYWU0NjM2OTZmNzUwYi4uYWM0
MDA0OTU3NDQ2N2NlYTFlZGU1NjdmZDNlNTY0YzVmOTY1MWY3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTI3OCwyMSArMTI3OCwyMSBAQCBib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVu
ZGVyQm94JiByZW5kZXJlciwgYwogICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9y
KHJlbmRlcmVyLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3Ip
KTsKICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKIAot
ICAgIEZsb2F0UG9pbnQgYXJyb3cxWzNdOwotICAgIGFycm93MVswXSA9IEZsb2F0UG9pbnQobGVm
dEVkZ2UsIGNlbnRlclkgLSBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmKTsKLSAgICBhcnJvdzFb
MV0gPSBGbG9hdFBvaW50KGxlZnRFZGdlICsgYXJyb3dXaWR0aCwgY2VudGVyWSAtIHNwYWNlQmV0
d2VlbkFycm93cyAvIDIuMGYpOwotICAgIGFycm93MVsyXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2Ug
KyBhcnJvd1dpZHRoIC8gMi4wZiwgY2VudGVyWSAtIHNwYWNlQmV0d2VlbkFycm93cyAvIDIuMGYg
LSBhcnJvd0hlaWdodCk7Ci0KICAgICAvLyBEcmF3IHRoZSB0b3AgYXJyb3cKLSAgICBwYWludElu
Zm8uY29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29uKDMsIGFycm93MSwgdHJ1ZSk7Ci0KLSAgICBG
bG9hdFBvaW50IGFycm93MlszXTsKLSAgICBhcnJvdzJbMF0gPSBGbG9hdFBvaW50KGxlZnRFZGdl
LCBjZW50ZXJZICsgc3BhY2VCZXR3ZWVuQXJyb3dzIC8gMi4wZik7Ci0gICAgYXJyb3cyWzFdID0g
RmxvYXRQb2ludChsZWZ0RWRnZSArIGFycm93V2lkdGgsIGNlbnRlclkgKyBzcGFjZUJldHdlZW5B
cnJvd3MgLyAyLjBmKTsKLSAgICBhcnJvdzJbMl0gPSBGbG9hdFBvaW50KGxlZnRFZGdlICsgYXJy
b3dXaWR0aCAvIDIuMGYsIGNlbnRlclkgKyBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmICsgYXJy
b3dIZWlnaHQpOworICAgIFZlY3RvcjxGbG9hdFBvaW50PiBhcnJvdzEgPSB7CisgICAgICAgIHsg
bGVmdEVkZ2UsIGNlbnRlclkgLSBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmIH0sCisgICAgICAg
IHsgbGVmdEVkZ2UgKyBhcnJvd1dpZHRoLCBjZW50ZXJZIC0gc3BhY2VCZXR3ZWVuQXJyb3dzIC8g
Mi4wZiB9LAorICAgICAgICB7IGxlZnRFZGdlICsgYXJyb3dXaWR0aCAvIDIuMGYsIGNlbnRlclkg
LSBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmIC0gYXJyb3dIZWlnaHQgfQorICAgIH07CisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUGF0aChQYXRoOjpwb2x5Z29uUGF0aEZyb21Qb2ludHMo
YXJyb3cxKSk7CiAKICAgICAvLyBEcmF3IHRoZSBib3R0b20gYXJyb3cKLSAgICBwYWludEluZm8u
Y29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29uKDMsIGFycm93MiwgdHJ1ZSk7CisgICAgVmVjdG9y
PEZsb2F0UG9pbnQ+IGFycm93MiA9IHsKKyAgICAgICAgeyBsZWZ0RWRnZSwgY2VudGVyWSArIHNw
YWNlQmV0d2VlbkFycm93cyAvIDIuMGYgfSwKKyAgICAgICAgeyBsZWZ0RWRnZSArIGFycm93V2lk
dGgsIGNlbnRlclkgKyBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmIH0sCisgICAgICAgIHsgbGVm
dEVkZ2UgKyBhcnJvd1dpZHRoIC8gMi4wZiwgY2VudGVyWSArIHNwYWNlQmV0d2VlbkFycm93cyAv
IDIuMGYgKyBhcnJvd0hlaWdodCB9CisgICAgfTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmZp
bGxQYXRoKFBhdGg6OnBvbHlnb25QYXRoRnJvbVBvaW50cyhhcnJvdzIpKTsKIAogICAgIENvbG9y
IGxlZnRTZXBhcmF0b3JDb2xvcigwLCAwLCAwLCA0MCk7CiAgICAgQ29sb3IgcmlnaHRTZXBhcmF0
b3JDb2xvcigyNTUsIDI1NSwgMjU1LCA0MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4IDFjZDk3NTQ5ZDIxM2Y4M2IzYmExMjI3OTU0
ZjI4ZDViNDA2ZThhZGIuLjgwODM5NmE2NzU0NjhhNTYxODI2YzM2ZWFlMjU4ZTkwOWIwZTBiOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3Bw
CkBAIC0xNDYsMTcgKzE0NiwxNSBAQCB2b2lkIEhVRFNsaWRlcjo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiAgICAgfQogCiAgICAgLy8gRHJhdyBhIGRpYW1vbmQKLSAgICBGbG9hdFBv
aW50IHBvaW50c1s0XTsKICAgICBmbG9hdCBoYWxmID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYnV0
dG9uU2l6ZSkgLyAyOwotICAgIHBvaW50c1swXS5zZXRYKG1fcmVjdC5sb2NhdGlvbigpLngoKSAr
IG1fYnV0dG9uUG9zaXRpb24gKyBoYWxmKTsKLSAgICBwb2ludHNbMF0uc2V0WShtX3JlY3QubG9j
YXRpb24oKS55KCkpOwotICAgIHBvaW50c1sxXS5zZXRYKG1fcmVjdC5sb2NhdGlvbigpLngoKSAr
IG1fYnV0dG9uUG9zaXRpb24gKyBtX2J1dHRvblNpemUpOwotICAgIHBvaW50c1sxXS5zZXRZKG1f
cmVjdC5sb2NhdGlvbigpLnkoKSArIGhhbGYpOwotICAgIHBvaW50c1syXS5zZXRYKG1fcmVjdC5s
b2NhdGlvbigpLngoKSArIG1fYnV0dG9uUG9zaXRpb24gKyBoYWxmKTsKLSAgICBwb2ludHNbMl0u
c2V0WShtX3JlY3QubG9jYXRpb24oKS55KCkgKyBtX2J1dHRvblNpemUpOwotICAgIHBvaW50c1sz
XS5zZXRYKG1fcmVjdC5sb2NhdGlvbigpLngoKSArIG1fYnV0dG9uUG9zaXRpb24pOwotICAgIHBv
aW50c1szXS5zZXRZKG1fcmVjdC5sb2NhdGlvbigpLnkoKSArIGhhbGYpOwotICAgIGNvbnRleHQu
ZHJhd0NvbnZleFBvbHlnb24oNCwgcG9pbnRzLCB0cnVlKTsKKworICAgIFZlY3RvcjxGbG9hdFBv
aW50PiBwb2ludHMgPSB7CisgICAgICAgIEZsb2F0UG9pbnQobV9yZWN0LmxvY2F0aW9uKCkueCgp
ICsgbV9idXR0b25Qb3NpdGlvbiArIGhhbGYsIG1fcmVjdC5sb2NhdGlvbigpLnkoKSksCisgICAg
ICAgIEZsb2F0UG9pbnQobV9yZWN0LmxvY2F0aW9uKCkueCgpICsgbV9idXR0b25Qb3NpdGlvbiAr
IG1fYnV0dG9uU2l6ZSwgbV9yZWN0LmxvY2F0aW9uKCkueSgpICsgaGFsZiksCisgICAgICAgIEZs
b2F0UG9pbnQobV9yZWN0LmxvY2F0aW9uKCkueCgpICsgbV9idXR0b25Qb3NpdGlvbiArIGhhbGYs
IG1fcmVjdC5sb2NhdGlvbigpLnkoKSArIG1fYnV0dG9uU2l6ZSksCisgICAgICAgIEZsb2F0UG9p
bnQobV9yZWN0LmxvY2F0aW9uKCkueCgpICsgbV9idXR0b25Qb3NpdGlvbiwgbV9yZWN0LmxvY2F0
aW9uKCkueSgpICsgaGFsZikKKyAgICB9OworICAgIGNvbnRleHQuZHJhd1BhdGgoUGF0aDo6cG9s
eWdvblBhdGhGcm9tUG9pbnRzKHBvaW50cykpOwogfQogCiB2b2lkIEhVRFNsaWRlcjo6ZHJhZyhj
b25zdCBJbnRQb2ludCYgcG9pbnQsIGJvb2wgc3RhcnQpCg==
</data>
<flag name="review"
          id="294103"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>