<?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>12053</bug_id>
          
          <creation_ts>2006-12-31 19:47:21 -0800</creation_ts>
          <short_desc>SVGPathSeg*(Abs|Rel) classses should be combined to reduce code size</short_desc>
          <delta_ts>2008-05-25 10:36:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>EasyFix</keywords>
          <priority>P4</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>38646</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-12-31 19:47:21 -0800</bug_when>
    <thetext>SVGPathSeg*(Abs|Rel) classses should be combined to reduce code size

It&apos;s silly to have copy/paste copies of each Rel/Abs SVGPathSeg subclass.  These could be cleaned up to use templates, or even just a simple shared base class to reduce the amount of copy/paste code (and thus help prevent errors when changing these files).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80849</commentid>
    <comment_count>1</comment_count>
      <attachid>21221</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-05-18 09:50:39 -0700</bug_when>
    <thetext>Created attachment 21221
First attempt

Simple cleanup patch. 
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81025</commentid>
    <comment_count>2</comment_count>
      <attachid>21221</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-05-20 14:03:17 -0700</bug_when>
    <thetext>Comment on attachment 21221
First attempt

+        virtual String toString() const { return pathSegTypeAsLetter() + String::format(&quot; %.6lg %.6lg&quot;, m_x, m_y); }

Might be more efficient if you passed the char as part of the format.  Not sure it matters though.

Generally we encourage each of these to get their own line:
 36         : m_x(x), m_y(y), m_r1(r1), m_r2(r2), m_angle(angle), m_largeArcFlag(largeArcFlag), m_sweepFlag(sweepFlag) {}


In general looks great!  I love all the minus lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81249</commentid>
    <comment_count>3</comment_count>
      <attachid>21303</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-05-22 14:00:14 -0700</bug_when>
    <thetext>Created attachment 21303
Improved patch

So I noticed that the template approach added some bloat, I think we are better
without it. Also I missed two files, now they are part of the patch.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81253</commentid>
    <comment_count>4</comment_count>
      <attachid>21303</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-05-22 14:11:39 -0700</bug_when>
    <thetext>Comment on attachment 21303
Improved patch

Looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81456</commentid>
    <comment_count>5</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2008-05-25 10:36:59 -0700</bug_when>
    <thetext>Landed in r34117.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21221</attachid>
            <date>2008-05-18 09:50:39 -0700</date>
            <delta_ts>2008-05-22 14:00:35 -0700</delta_ts>
            <desc>First attempt</desc>
            <filename>12053.diff</filename>
            <type>text/plain</type>
            <size>49310</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMzU2MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIxIEBACisyMDA4LTA1LTE4ICBSb2IgQnVpcyAgPGJ1aXNAa2RlLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTMKKyAgICAgICAgU1ZHUGF0aFNlZyoo
QWJzfFJlbCkgY2xhc3NzZXMgc2hvdWxkIGJlIGNvbWJpbmVkIHRvIHJlZHVjZSBjb2RlIHNpemUK
KworICAgICAgICBSZWR1Y2UgY29kZSBzaXplIHRocm91Z2ggc2hhcmVkIGJhc2UgY2xhc3Nlcy4K
KworICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
U2VnU2luZ2xlQ29vcmQ6OlNWR1BhdGhTZWdTaW5nbGVDb29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoU2VnU2luZ2xlQ29vcmQ6OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1Np
bmdsZUNvb3JkOjp4KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdTaW5nbGVDb29yZDo6
c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQ6OnkpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1NpbmdsZUNvb3JkOjp0b1N0cmluZyk6CisgICAgICAg
ICogc3ZnL1NWR1BhdGhTZWdBcmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0Fy
Y0Ficzo6U1ZHUGF0aFNlZ0FyY0Ficyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQXJj
UmVsOjpTVkdQYXRoU2VnQXJjUmVsKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0FyYy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0FyYzo6U1ZHUGF0aFNlZ0FyYyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnQXJjOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aFNlZ0FyYzo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0FyYzo6
c2V0WCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQXJjOjp4KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTZWdBcmM6OnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNl
Z0FyYzo6eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQXJjOjpzZXRSMSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQXJjOjpyMSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoU2VnQXJjOjpzZXRSMik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQXJjOjpyMik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQXJjOjpzZXRBbmdsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXRoU2VnQXJjOjphbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
U2VnQXJjOjpzZXRMYXJnZUFyY0ZsYWcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0Fy
Yzo6bGFyZ2VBcmNGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdBcmM6OnNldFN3
ZWVwRmxhZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQXJjOjpzd2VlcEZsYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0FyY0Ficzo6cGF0aFNlZ1R5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0FyY0Ficzo6cGF0aFNlZ1R5cGVBc0xldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQXJjUmVsOjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw6OlNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNSZWwpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljOjpTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljOjp0b1N0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljOjpzZXRYKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OngpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpYzo6c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoU2VnQ3VydmV0b0N1YmljOjp5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWM6OnNldFgxKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRv
Q3ViaWM6OngxKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OnNl
dFkxKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OnkxKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OnNldFgyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OngyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OnNldFkyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhTZWdDdXJ2ZXRvQ3ViaWM6OnkyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNBYnM6OnBhdGhTZWdUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNBYnM6OnBhdGhTZWdUeXBlQXNMZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbDo6cGF0aFNlZ1R5cGVBc0xldHRlcik6CisgICAgICAg
ICogc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFiczo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJp
Y1Ntb290aEFicyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21v
b3RoUmVsOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsKToKKyAgICAgICAgKiBzdmcv
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY1Ntb290aDo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aDo6dG9TdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aDo6c2V0WCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoOjp4KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGg6OnNldFkpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aDo6eSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoOjpzZXRYMik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoOjp4Mik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoOjpzZXRZMik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoOjp5Mik6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzOjpwYXRoU2VnVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzOjpwYXRoU2VnVHlw
ZUFzTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9v
dGhSZWw6OnBhdGhTZWdUeXBlQXNMZXR0ZXIpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpY0Ficzo6U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWw6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVh
ZHJhdGljUmVsKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljOjpTVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpYzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVh
ZHJhdGljOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpYzo6c2V0WCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b1F1YWRy
YXRpYzo6eCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYzo6
c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYzo6eSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYzo6c2V0WDEpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWM6OngxKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljOjpzZXRZMSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYzo6eTEpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnM6OnBhdGhTZWdUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzOjpwYXRoU2VnVHlwZUFz
TGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVs
OjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNTbW9vdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNTbW9vdGhBYnM6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsOjpT
VkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCk6CisgICAgICAgICogc3ZnL1NWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
U2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFiczo6cGF0aFNlZ1R5cGVBc0xldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbDo6cGF0aFNl
Z1R5cGVBc0xldHRlcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaW5ldG8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpbmV0b0Ficzo6U1ZHUGF0aFNlZ0xpbmV0b0Ficyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGluZXRvUmVsOjpTVkdQYXRoU2VnTGluZXRv
UmVsKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpbmV0by5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aFNlZ0xpbmV0b0Ficzo6cGF0aFNlZ1R5cGVBc0xldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXRoU2VnTGluZXRvUmVsOjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aFNlZ01vdmV0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
U2VnTW92ZXRvQWJzOjpTVkdQYXRoU2VnTW92ZXRvQWJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWdNb3ZldG9SZWw6OlNWR1BhdGhTZWdNb3ZldG9SZWwpOgorICAgICAgICAqIHN2Zy9T
VkdQYXRoU2VnTW92ZXRvLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTW92ZXRvQWJz
OjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdNb3Zl
dG9SZWw6OnBhdGhTZWdUeXBlQXNMZXR0ZXIpOgorCiAyMDA4LTA1LTE3ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWcuaAkocmV2aXNpb24gMzM1NTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgU1ZHUGF0aFNlZygpIHsgfQogICAgIH07CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPgorICAg
IGNsYXNzIFNWR1BhdGhTZWdTaW5nbGVDb29yZCA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCisgICAg
cHVibGljOgorICAgICAgICBTVkdQYXRoU2VnU2luZ2xlQ29vcmQoZmxvYXQgeCwgZmxvYXQgeSkK
KyAgICAgICAgOiBTVkdQYXRoU2VnKCkgLCBtX3goeCkgLCBtX3koeSkge30KKworICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IFQoeCwgeSkpOyB9CisgICAgICAgIHZvaWQgc2V0WChmbG9hdCB4KSB7IG1feCA9
IHg7IH0KKyAgICAgICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQorCisgICAgICAg
IHZvaWQgc2V0WShmbG9hdCB5KSB7IG1feSA9IHk7IH0KKyAgICAgICAgZmxvYXQgeSgpIGNvbnN0
IHsgcmV0dXJuIG1feTsgfQorCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gcGF0aFNlZ1R5cGVBc0xldHRlcigpICsgU3RyaW5nOjpmb3JtYXQoIiAlLjZs
ZyAlLjZsZyIsIG1feCwgbV95KTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgZmxvYXQgbV94
OworICAgICAgICBmbG9hdCBtX3k7CisgICAgfTsKKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0Fy
Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0FyYy5jcHAJKHJldmlz
aW9uIDMzNTUyKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0FyYy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAog
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0yNSwxODIgKzI1
LDE2IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYXRoU2VnQXJjLmgiCiAKLSNp
bmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZH
UGF0aFNlZ0FyY0Ficzo6U1ZHUGF0aFNlZ0FyY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBy
MSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZs
YWcpCi0gICAgOiBTVkdQYXRoU2VnKCkKLSAgICAsIG1feCh4KQotICAgICwgbV95KHkpCi0gICAg
LCBtX3IxKHIxKQotICAgICwgbV9yMihyMikKLSAgICAsIG1fYW5nbGUoYW5nbGUpCi0gICAgLCBt
X2xhcmdlQXJjRmxhZyhsYXJnZUFyY0ZsYWcpCi0gICAgLCBtX3N3ZWVwRmxhZyhzd2VlcEZsYWcp
Ci17Ci19Ci0KLVNWR1BhdGhTZWdBcmNBYnM6On5TVkdQYXRoU2VnQXJjQWJzKCkKLXsKLX0KLQot
dm9pZCBTVkdQYXRoU2VnQXJjQWJzOjpzZXRYKGZsb2F0IHgpCi17Ci0gICAgbV94ID0geDsKLX0K
LQotZmxvYXQgU1ZHUGF0aFNlZ0FyY0Ficzo6eCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feDsK
LX0KLQotdm9pZCBTVkdQYXRoU2VnQXJjQWJzOjpzZXRZKGZsb2F0IHkpCi17Ci0gICAgbV95ID0g
eTsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0FyY0Ficzo6eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1feTsKLX0KLQotdm9pZCBTVkdQYXRoU2VnQXJjQWJzOjpzZXRSMShmbG9hdCByMSkKLXsKLSAg
ICBtX3IxID0gcjE7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdBcmNBYnM6OnIxKCkgY29uc3QKKyAg
ICA6IFNWR1BhdGhTZWdBcmM8U1ZHUGF0aFNlZ0FyY0Ficz4oeCwgeSwgcjEsIHIyLCBhbmdsZSwg
bGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcpCiB7Ci0gICAgcmV0dXJuIG1fcjE7CiB9CiAKLXZvaWQg
U1ZHUGF0aFNlZ0FyY0Ficzo6c2V0UjIoZmxvYXQgcjIpCi17Ci0gICAgbV9yMiA9IHIyOwotfQot
Ci1mbG9hdCBTVkdQYXRoU2VnQXJjQWJzOjpyMigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcjI7
Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0FyY0Ficzo6c2V0QW5nbGUoZmxvYXQgYW5nbGUpCi17Ci0g
ICAgbV9hbmdsZSA9IGFuZ2xlOwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQXJjQWJzOjphbmdsZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYW5nbGU7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0FyY0Fi
czo6c2V0TGFyZ2VBcmNGbGFnKGJvb2wgbGFyZ2VBcmNGbGFnKQotewotICAgIG1fbGFyZ2VBcmNG
bGFnID0gbGFyZ2VBcmNGbGFnOwotfQotCi1ib29sIFNWR1BhdGhTZWdBcmNBYnM6OmxhcmdlQXJj
RmxhZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGFyZ2VBcmNGbGFnOwotfQotCi12b2lkIFNW
R1BhdGhTZWdBcmNBYnM6OnNldFN3ZWVwRmxhZyhib29sIHN3ZWVwRmxhZykKLXsKLSAgICBtX3N3
ZWVwRmxhZyA9IHN3ZWVwRmxhZzsKLX0KLQotYm9vbCBTVkdQYXRoU2VnQXJjQWJzOjpzd2VlcEZs
YWcoKSBjb25zdAotewotICAgIHJldHVybiBtX3N3ZWVwRmxhZzsKLX0KLQotCi0KIFNWR1BhdGhT
ZWdBcmNSZWw6OlNWR1BhdGhTZWdBcmNSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEsIGZs
b2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnKQot
ICAgIDogU1ZHUGF0aFNlZygpCi0gICAgLCBtX3goeCkKLSAgICAsIG1feSh5KQotICAgICwgbV9y
MShyMSkKLSAgICAsIG1fcjIocjIpCi0gICAgLCBtX2FuZ2xlKGFuZ2xlKQotICAgICwgbV9sYXJn
ZUFyY0ZsYWcobGFyZ2VBcmNGbGFnKQotICAgICwgbV9zd2VlcEZsYWcoc3dlZXBGbGFnKQotewot
fQotCi1TVkdQYXRoU2VnQXJjUmVsOjp+U1ZHUGF0aFNlZ0FyY1JlbCgpCi17Ci19Ci0KLXZvaWQg
U1ZHUGF0aFNlZ0FyY1JlbDo6c2V0WChmbG9hdCB4KQotewotICAgIG1feCA9IHg7Ci19Ci0KLWZs
b2F0IFNWR1BhdGhTZWdBcmNSZWw6OngoKSBjb25zdAotewotICAgIHJldHVybiBtX3g7Ci19Ci0K
LXZvaWQgU1ZHUGF0aFNlZ0FyY1JlbDo6c2V0WShmbG9hdCB5KQotewotICAgIG1feSA9IHk7Ci19
Ci0KLWZsb2F0IFNWR1BhdGhTZWdBcmNSZWw6OnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3k7
Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0FyY1JlbDo6c2V0UjEoZmxvYXQgcjEpCi17Ci0gICAgbV9y
MSA9IHIxOwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQXJjUmVsOjpyMSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fcjE7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0FyY1JlbDo6c2V0UjIoZmxvYXQgcjIp
Ci17Ci0gICAgbV9yMiA9IHIyOwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQXJjUmVsOjpyMigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fcjI7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0FyY1JlbDo6c2V0
QW5nbGUoZmxvYXQgYW5nbGUpCi17Ci0gICAgbV9hbmdsZSA9IGFuZ2xlOwotfQotCi1mbG9hdCBT
VkdQYXRoU2VnQXJjUmVsOjphbmdsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYW5nbGU7Ci19
Ci0KLXZvaWQgU1ZHUGF0aFNlZ0FyY1JlbDo6c2V0TGFyZ2VBcmNGbGFnKGJvb2wgbGFyZ2VBcmNG
bGFnKQotewotICAgIG1fbGFyZ2VBcmNGbGFnID0gbGFyZ2VBcmNGbGFnOwotfQotCi1ib29sIFNW
R1BhdGhTZWdBcmNSZWw6OmxhcmdlQXJjRmxhZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGFy
Z2VBcmNGbGFnOwotfQotCi12b2lkIFNWR1BhdGhTZWdBcmNSZWw6OnNldFN3ZWVwRmxhZyhib29s
IHN3ZWVwRmxhZykKLXsKLSAgICBtX3N3ZWVwRmxhZyA9IHN3ZWVwRmxhZzsKLX0KLQotYm9vbCBT
VkdQYXRoU2VnQXJjUmVsOjpzd2VlcEZsYWcoKSBjb25zdAorICAgIDogU1ZHUGF0aFNlZ0FyYzxT
VkdQYXRoU2VnQXJjUmVsPih4LCB5LCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVw
RmxhZykKIHsKLSAgICByZXR1cm4gbV9zd2VlcEZsYWc7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BhdGhTZWdBcmMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
QXJjLmgJKHJldmlzaW9uIDMzNTUyKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0FyYy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gICAg
ICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Cisg
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAt
MjksNDMgKzI5LDQxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNWR1Bh
dGhTZWdBcmNBYnMgOiBwdWJsaWMgU1ZHUGF0aFNlZyB7CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4K
KyAgICBjbGFzcyBTVkdQYXRoU2VnQXJjIDogcHVibGljIFNWR1BhdGhTZWcgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0FyY0Ficz4gY3JlYXRlKGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFy
Z2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZykKKyAgICAgICAgU1ZHUGF0aFNlZ0FyYyhmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJj
RmxhZywgYm9vbCBzd2VlcEZsYWcpCisgICAgICAgIDogbV94KHgpLCBtX3koeSksIG1fcjEocjEp
LCBtX3IyKHIyKSwgbV9hbmdsZShhbmdsZSksIG1fbGFyZ2VBcmNGbGFnKGxhcmdlQXJjRmxhZyks
IG1fc3dlZXBGbGFnKHN3ZWVwRmxhZykge30KKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxU
PiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmds
ZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdBcmNBYnMoeCwgeSwgcjEsIHIyLCBh
bmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVCh4LCB5LCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZykp
OwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIH5TVkdQYXRoU2VnQXJjQWJz
KCk7CiAKLSAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIFBBVEhTRUdfQVJDX0FCUzsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRo
U2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gIkEiOyB9Ci0gICAgICAgIHZpcnR1YWwg
U3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIkEgJS42bGcg
JS42bGcgJS42bGcgJWQgJWQgJS42bGcgJS42bGciLCBtX3IxLCBtX3IyLCBtX2FuZ2xlLCBtX2xh
cmdlQXJjRmxhZywgbV9zd2VlcEZsYWcsIG1feCwgbV95KTsgfQorICAgICAgICB2aXJ0dWFsIFN0
cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSArIFN0
cmluZzo6Zm9ybWF0KCIgJS42bGcgJS42bGcgJS42bGcgJWQgJWQgJS42bGcgJS42bGciLCBtX3Ix
LCBtX3IyLCBtX2FuZ2xlLCBtX2xhcmdlQXJjRmxhZywgbV9zd2VlcEZsYWcsIG1feCwgbV95KTsg
fQogCi0gICAgICAgIHZvaWQgc2V0WChmbG9hdCB4KTsKLSAgICAgICAgZmxvYXQgeCgpIGNvbnN0
OworICAgICAgICB2b2lkIHNldFgoZmxvYXQgeCkgeyBtX3ggPSB4OyB9CisgICAgICAgIGZsb2F0
IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KIAotICAgICAgICB2b2lkIHNldFkoZmxvYXQgeSk7
Ci0gICAgICAgIGZsb2F0IHkoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRZKGZsb2F0IHkpIHsg
bV95ID0geTsgfQorICAgICAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CiAKLSAg
ICAgICAgdm9pZCBzZXRSMShmbG9hdCByMSk7Ci0gICAgICAgIGZsb2F0IHIxKCkgY29uc3Q7Cisg
ICAgICAgIHZvaWQgc2V0UjEoZmxvYXQgcjEpIHsgbV9yMSA9IHIxOyB9CisgICAgICAgIGZsb2F0
IHIxKCkgY29uc3QgeyByZXR1cm4gbV9yMTsgfQogCi0gICAgICAgIHZvaWQgc2V0UjIoZmxvYXQg
cjIpOwotICAgICAgICBmbG9hdCByMigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFIyKGZsb2F0
IHIyKSB7IG1fcjIgPSByMjsgfQorICAgICAgICBmbG9hdCByMigpIGNvbnN0IHsgcmV0dXJuIG1f
cjI7IH0KIAotICAgICAgICB2b2lkIHNldEFuZ2xlKGZsb2F0IGFuZ2xlKTsKLSAgICAgICAgZmxv
YXQgYW5nbGUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRBbmdsZShmbG9hdCBhbmdsZSkgeyBt
X2FuZ2xlID0gYW5nbGU7IH0KKyAgICAgICAgZmxvYXQgYW5nbGUoKSBjb25zdCB7IHJldHVybiBt
X2FuZ2xlOyB9CiAKLSAgICAgICAgdm9pZCBzZXRMYXJnZUFyY0ZsYWcoYm9vbCBsYXJnZUFyY0Zs
YWcpOwotICAgICAgICBib29sIGxhcmdlQXJjRmxhZygpIGNvbnN0OworICAgICAgICB2b2lkIHNl
dExhcmdlQXJjRmxhZyhib29sIGxhcmdlQXJjRmxhZykgeyBtX2xhcmdlQXJjRmxhZyA9IGxhcmdl
QXJjRmxhZzsgfQorICAgICAgICBib29sIGxhcmdlQXJjRmxhZygpIGNvbnN0IHsgcmV0dXJuIG1f
bGFyZ2VBcmNGbGFnOyB9CiAKLSAgICAgICAgdm9pZCBzZXRTd2VlcEZsYWcoYm9vbCBzd2VlcEZs
YWcpOwotICAgICAgICBib29sIHN3ZWVwRmxhZygpIGNvbnN0OworICAgICAgICB2b2lkIHNldFN3
ZWVwRmxhZyhib29sIHN3ZWVwRmxhZykgeyBtX3N3ZWVwRmxhZyA9IHN3ZWVwRmxhZzsgfQorICAg
ICAgICBib29sIHN3ZWVwRmxhZygpIGNvbnN0IHsgcmV0dXJuIG1fc3dlZXBGbGFnOyB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBTVkdQYXRoU2VnQXJjQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3
ZWVwRmxhZyk7Ci0KICAgICAgICAgZmxvYXQgbV94OwogICAgICAgICBmbG9hdCBtX3k7CiAgICAg
ICAgIGZsb2F0IG1fcjE7CkBAIC03Niw1MCArNzQsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBib29sIG1fc3dlZXBGbGFnIDogMTsKICAgICB9OwogCi0gICAgY2xhc3MgU1ZHUGF0
aFNlZ0FyY1JlbCA6IHB1YmxpYyBTVkdQYXRoU2VnIHsKKyAgICBjbGFzcyBTVkdQYXRoU2VnQXJj
QWJzIDogcHVibGljIFNWR1BhdGhTZWdBcmM8U1ZHUGF0aFNlZ0FyY0Ficz4gewogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0FyY1JlbD4gY3JlYXRlKGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFy
Z2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnQXJjUmVsKHgsIHksIHIxLCByMiwgYW5nbGUsIGxhcmdl
QXJjRmxhZywgc3dlZXBGbGFnKSk7Ci0gICAgICAgIH0KLSAgICAgICAgdmlydHVhbCB+U1ZHUGF0
aFNlZ0FyY1JlbCgpOworICAgICAgICBTVkdQYXRoU2VnQXJjQWJzKGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29s
IHN3ZWVwRmxhZyk7CisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUo
KSBjb25zdCB7IHJldHVybiBQQVRIU0VHX0FSQ19BQlM7IH0KKyAgICAgICAgdmlydHVhbCBTdHJp
bmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJBIjsgfQorICAgIH07CiAK
KyAgICBjbGFzcyBTVkdQYXRoU2VnQXJjUmVsIDogcHVibGljIFNWR1BhdGhTZWdBcmM8U1ZHUGF0
aFNlZ0FyY1JlbD4geworICAgIHB1YmxpYzoKKyAgICAgICAgU1ZHUGF0aFNlZ0FyY1JlbChmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdl
QXJjRmxhZywgYm9vbCBzd2VlcEZsYWcpOwogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0
IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19BUkNfUkVMOyB9CiAgICAgICAg
IHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAiYSI7
IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJp
bmc6OmZvcm1hdCgiYSAlLjZsZyAlLjZsZyAlLjZsZyAlZCAlZCAlLjZsZyAlLjZsZyIsIG1fcjEs
IG1fcjIsIG1fYW5nbGUsIG1fbGFyZ2VBcmNGbGFnLCBtX3N3ZWVwRmxhZywgbV94LCBtX3kpOyB9
Ci0KLSAgICAgICAgdm9pZCBzZXRYKGZsb2F0IHgpOwotICAgICAgICBmbG9hdCB4KCkgY29uc3Q7
Ci0KLSAgICAgICAgdm9pZCBzZXRZKGZsb2F0IHkpOwotICAgICAgICBmbG9hdCB5KCkgY29uc3Q7
Ci0KLSAgICAgICAgdm9pZCBzZXRSMShmbG9hdCByMSk7Ci0gICAgICAgIGZsb2F0IHIxKCkgY29u
c3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRSMihmbG9hdCByMik7Ci0gICAgICAgIGZsb2F0IHIyKCkg
Y29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRBbmdsZShmbG9hdCBhbmdsZSk7Ci0gICAgICAgIGZs
b2F0IGFuZ2xlKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRMYXJnZUFyY0ZsYWcoYm9vbCBs
YXJnZUFyY0ZsYWcpOwotICAgICAgICBib29sIGxhcmdlQXJjRmxhZygpIGNvbnN0OwotCi0gICAg
ICAgIHZvaWQgc2V0U3dlZXBGbGFnKGJvb2wgc3dlZXBGbGFnKTsKLSAgICAgICAgYm9vbCBzd2Vl
cEZsYWcoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR1BhdGhTZWdBcmNSZWwo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBs
YXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnKTsKLQotICAgICAgICBmbG9hdCBtX3g7Ci0gICAg
ICAgIGZsb2F0IG1feTsKLSAgICAgICAgZmxvYXQgbV9yMTsKLSAgICAgICAgZmxvYXQgbV9yMjsK
LSAgICAgICAgZmxvYXQgbV9hbmdsZTsKLQotICAgICAgICBib29sIG1fbGFyZ2VBcmNGbGFnIDog
MTsKLSAgICAgICAgYm9vbCBtX3N3ZWVwRmxhZyA6IDE7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5jcHAJKHJl
dmlzaW9uIDMzNTUyKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAg
ICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
KyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBA
IC0yNSwxNjEgKzI1LDE2IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljLmgiCiAKLSNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficzo6U1ZHUGF0aFNlZ0N1
cnZldG9DdWJpY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0
IHgyLCBmbG9hdCB5MikKLSAgICA6IFNWR1BhdGhTZWcoKQotICAgICwgbV94KHgpCi0gICAgLCBt
X3koeSkKLSAgICAsIG1feDEoeDEpCi0gICAgLCBtX3kxKHkxKQotICAgICwgbV94Mih4MikKLSAg
ICAsIG1feTIoeTIpCi17Ci19Ci0KLVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnM6On5TVkdQYXRo
U2VnQ3VydmV0b0N1YmljQWJzKCkKKyAgICA6IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM8U1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY0Ficz4oeCwgeSwgeDEsIHkxLCB4MiwgeTIpCiB7CiB9CiAKLXZvaWQg
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficzo6c2V0WChmbG9hdCB4KQotewotICAgIG1feCA9IHg7
Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnM6OngoKSBjb25zdAotewotICAg
IHJldHVybiBtX3g7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficzo6c2V0WShm
bG9hdCB5KQotewotICAgIG1feSA9IHk7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNBYnM6OnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3k7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNl
Z0N1cnZldG9DdWJpY0Ficzo6c2V0WDEoZmxvYXQgeDEpCi17Ci0gICAgbV94MSA9IHgxOwotfQot
Ci1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzOjp4MSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1feDE7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficzo6c2V0WTEoZmxv
YXQgeTEpCi17Ci0gICAgbV95MSA9IHkxOwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b0N1
YmljQWJzOjp5MSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feTE7Ci19Ci0KLXZvaWQgU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY0Ficzo6c2V0WDIoZmxvYXQgeDIpCi17Ci0gICAgbV94MiA9IHgyOwot
fQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzOjp4MigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1feDI7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficzo6c2V0WTIo
ZmxvYXQgeTIpCi17Ci0gICAgbV95MiA9IHkyOwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0
b0N1YmljQWJzOjp5MigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feTI7Ci19Ci0KLQotCi0KIFNW
R1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwoZmxvYXQg
eCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQgeTIpCi0gICAg
OiBTVkdQYXRoU2VnKCkKLSAgICAsIG1feCh4KQotICAgICwgbV95KHkpCi0gICAgLCBtX3gxKHgx
KQotICAgICwgbV95MSh5MSkKLSAgICAsIG1feDIoeDIpCi0gICAgLCBtX3kyKHkyKQotewotfQot
Ci1TVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsOjp+U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbCgp
Ci17Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbDo6c2V0WChmbG9hdCB4KQot
ewotICAgIG1feCA9IHg7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw6Ongo
KSBjb25zdAotewotICAgIHJldHVybiBtX3g7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY1JlbDo6c2V0WShmbG9hdCB5KQotewotICAgIG1feSA9IHk7Ci19Ci0KLWZsb2F0IFNWR1Bh
dGhTZWdDdXJ2ZXRvQ3ViaWNSZWw6OnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3k7Ci19Ci0K
LXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbDo6c2V0WDEoZmxvYXQgeDEpCi17Ci0gICAg
bV94MSA9IHgxOwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsOjp4MSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1feDE7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJp
Y1JlbDo6c2V0WTEoZmxvYXQgeTEpCi17Ci0gICAgbV95MSA9IHkxOwotfQotCi1mbG9hdCBTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljUmVsOjp5MSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feTE7Ci19
Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbDo6c2V0WDIoZmxvYXQgeDIpCi17Ci0g
ICAgbV94MiA9IHgyOwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsOjp4Migp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feDI7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY1JlbDo6c2V0WTIoZmxvYXQgeTIpCi17Ci0gICAgbV95MiA9IHkyOwotfQotCi1mbG9hdCBT
VkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsOjp5MigpIGNvbnN0CisgICAgOiBTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw+KHgsIHksIHgxLCB5MSwgeDIsIHky
KQogewotICAgIHJldHVybiBtX3kyOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnQ3VydmV0b0N1YmljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1
cnZldG9DdWJpYy5oCShyZXZpc2lvbiAzMzU1MikKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0CiAKQEAgLTI4LDQwICsyOCwzOCBAQAogI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNB
YnMgOiBwdWJsaWMgU1ZHUGF0aFNlZyB7IAorCisgICAgdGVtcGxhdGU8Y2xhc3MgVD4KKyAgICBj
bGFzcyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljIDogcHVibGljIFNWR1BhdGhTZWcgeyAKICAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNB
YnM+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgy
LCBmbG9hdCB5MikKKyAgICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYyhmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9hdCB5MikgOiBTVkdQYXRoU2Vn
KCkgLCBtX3goeCkgLCBtX3koeSkgLCBtX3gxKHgxKSAsIG1feTEoeTEpICwgbV94Mih4MikgLCBt
X3kyKHkyKSB7fQorCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFQ+IGNyZWF0ZShmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9hdCB5MikKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnQ3VydmV0b0N1
YmljQWJzKHgsIHksIHgxLCB5MSwgeDIsIHkyKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFQoeCwgeSwgeDEsIHkxLCB4MiwgeTIpKTsKICAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicygpOwogCi0gICAgICAgIHZp
cnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VH
X0NVUlZFVE9fQ1VCSUNfQUJTOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBl
QXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAiQyI7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmc6OmZvcm1hdCgiQyAlLjZsZyAlLjZsZyAl
LjZsZyAlLjZsZyAlLjZsZyAlLjZsZyIsIG1feDEsIG1feTEsIG1feDIsIG1feTIsIG1feCwgbV95
KTsgfQorICAgICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIHBh
dGhTZWdUeXBlQXNMZXR0ZXIoKSArIFN0cmluZzo6Zm9ybWF0KCIgJS42bGcgJS42bGcgJS42bGcg
JS42bGcgJS42bGcgJS42bGciLCBtX3gxLCBtX3kxLCBtX3gyLCBtX3kyLCBtX3gsIG1feSk7IH0K
IAotICAgICAgICB2b2lkIHNldFgoZmxvYXQpOwotICAgICAgICBmbG9hdCB4KCkgY29uc3Q7Cisg
ICAgICAgIHZvaWQgc2V0WChmbG9hdCB4KSB7IG1feCA9IHg7IH0KKyAgICAgICAgZmxvYXQgeCgp
IGNvbnN0IHsgcmV0dXJuIG1feDsgfQogCi0gICAgICAgIHZvaWQgc2V0WShmbG9hdCk7Ci0gICAg
ICAgIGZsb2F0IHkoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRZKGZsb2F0IHkpIHsgbV95ID0g
eTsgfQorICAgICAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CiAKLSAgICAgICAg
dm9pZCBzZXRYMShmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHgxKCkgY29uc3Q7CisgICAgICAgIHZv
aWQgc2V0WDEoZmxvYXQgeDEpIHsgbV94MSA9IHgxOyB9CisgICAgICAgIGZsb2F0IHgxKCkgY29u
c3QgeyByZXR1cm4gbV94MTsgfQogCi0gICAgICAgIHZvaWQgc2V0WTEoZmxvYXQpOwotICAgICAg
ICBmbG9hdCB5MSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFkxKGZsb2F0IHkxKSB7IG1feTEg
PSB5MTsgfQorICAgICAgICBmbG9hdCB5MSgpIGNvbnN0IHsgcmV0dXJuIG1feTE7IH0KIAotICAg
ICAgICB2b2lkIHNldFgyKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeDIoKSBjb25zdDsKKyAgICAg
ICAgdm9pZCBzZXRYMihmbG9hdCB4MikgeyBtX3gyID0geDI7IH0KKyAgICAgICAgZmxvYXQgeDIo
KSBjb25zdCB7IHJldHVybiBtX3gyOyB9CiAKLSAgICAgICAgdm9pZCBzZXRZMihmbG9hdCk7Ci0g
ICAgICAgIGZsb2F0IHkyKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0WTIoZmxvYXQgeTIpIHsg
bV95MiA9IHkyOyB9CisgICAgICAgIGZsb2F0IHkyKCkgY29uc3QgeyByZXR1cm4gbV95MjsgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicyhmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9hdCB5Mik7Ci0KICAg
ICAgICAgZmxvYXQgbV94OwogICAgICAgICBmbG9hdCBtX3k7CiAgICAgICAgIGZsb2F0IG1feDE7
CkBAIC03MCw0NSArNjgsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBt
X3kyOwogICAgIH07CiAKLSAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsIDogcHVi
bGljIFNWR1BhdGhTZWcgeyAKKyAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzIDog
cHVibGljIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficz4g
eyAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNSZWw+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEs
IGZsb2F0IHgyLCBmbG9hdCB5MikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKHgsIHksIHgxLCB5MSwgeDIsIHkyKSk7
Ci0gICAgICAgIH0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIH5TVkdQYXRoU2VnQ3VydmV0b0N1
YmljUmVsKCk7CisgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4MiwgZmxvYXQgeTIpOworICAgICAgICB2
aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNF
R19DVVJWRVRPX0NVQklDX0FCUzsgfQorICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlw
ZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gIkMiOyB9CisgICAgfTsKIAorICAgIGNsYXNzIFNW
R1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgOiBwdWJsaWMgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYzxT
VkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsPiB7IAorICAgIHB1YmxpYzoKKyAgICAgICAgU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY1JlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEs
IGZsb2F0IHgyLCBmbG9hdCB5Mik7CiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0
aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMOyB9CiAg
ICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVy
biAiYyI7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVy
biBTdHJpbmc6OmZvcm1hdCgiYyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyIs
IG1feDEsIG1feTEsIG1feDIsIG1feTIsIG1feCwgbV95KTsgfQotCi0gICAgICAgIHZvaWQgc2V0
WChmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHgoKSBjb25zdDsKLQotICAgICAgICB2b2lkIHNldFko
ZmxvYXQpOwotICAgICAgICBmbG9hdCB5KCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRYMShm
bG9hdCk7Ci0gICAgICAgIGZsb2F0IHgxKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRZMShm
bG9hdCk7Ci0gICAgICAgIGZsb2F0IHkxKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRYMihm
bG9hdCk7Ci0gICAgICAgIGZsb2F0IHgyKCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRZMihm
bG9hdCk7Ci0gICAgICAgIGZsb2F0IHkyKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAg
ICBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBm
bG9hdCB5MSwgZmxvYXQgeDIsIGZsb2F0IHkyKTsKLQotICAgICAgICBmbG9hdCBtX3g7Ci0gICAg
ICAgIGZsb2F0IG1feTsKLSAgICAgICAgZmxvYXQgbV94MTsKLSAgICAgICAgZmxvYXQgbV95MTsK
LSAgICAgICAgZmxvYXQgbV94MjsKLSAgICAgICAgZmxvYXQgbV95MjsKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1
YmljU21vb3RoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0
b0N1YmljU21vb3RoLmNwcAkocmV2aXNpb24gMzM1NTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAw
NiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI0LDExNiArMjQsMTYgQEAKICNpZiBFTkFCTEUo
U1ZHKQogI2luY2x1ZGUgIlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGguaCIKIAotI2luY2x1
ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoQWJzOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJz
KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgyLCBmbG9hdCB5MikKLSAgICA6IFNWR1BhdGhTZWco
KQotICAgICwgbV94KHgpCi0gICAgLCBtX3koeSkKLSAgICAsIG1feDIoeDIpCi0gICAgLCBtX3ky
KHkyKQotewotfQotCi1TVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzOjp+U1ZHUGF0aFNl
Z0N1cnZldG9DdWJpY1Ntb290aEFicygpCisgICAgOiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21v
b3RoPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnM+KHgsIHksIHgyLCB5MikKIHsKIH0K
IAotdm9pZCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzOjpzZXRYKGZsb2F0IHgpCi17
Ci0gICAgbV94ID0geDsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFi
czo6eCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feDsKLX0KLQotdm9pZCBTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljU21vb3RoQWJzOjpzZXRZKGZsb2F0IHkpCi17Ci0gICAgbV95ID0geTsKLX0KLQot
ZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFiczo6eSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1feTsKLX0KLQotdm9pZCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzOjpz
ZXRYMihmbG9hdCB4MikKLXsKLSAgICBtX3gyID0geDI7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNTbW9vdGhBYnM6OngyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV94MjsKLX0K
LQotdm9pZCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzOjpzZXRZMihmbG9hdCB5MikK
LXsKLSAgICBtX3kyID0geTI7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9v
dGhBYnM6OnkyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV95MjsKLX0KLQotCi0KIFNWR1BhdGhT
ZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyKQotICAgIDogU1ZHUGF0aFNlZygp
Ci0gICAgLCBtX3goeCkKLSAgICAsIG1feSh5KQotICAgICwgbV94Mih4MikKLSAgICAsIG1feTIo
eTIpCi17Ci19Ci0KLVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw6On5TVkdQYXRoU2Vn
Q3VydmV0b0N1YmljU21vb3RoUmVsKCkKLXsKLX0KLQotdm9pZCBTVkdQYXRoU2VnQ3VydmV0b0N1
YmljU21vb3RoUmVsOjpzZXRYKGZsb2F0IHgpCi17Ci0gICAgbV94ID0geDsKLX0KLQotZmxvYXQg
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbDo6eCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1feDsKLX0KLQotdm9pZCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsOjpzZXRZKGZs
b2F0IHkpCi17Ci0gICAgbV95ID0geTsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJp
Y1Ntb290aFJlbDo6eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feTsKLX0KLQotdm9pZCBTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsOjpzZXRYMihmbG9hdCB4MikKLXsKLSAgICBtX3gy
ID0geDI7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw6OngyKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV94MjsKLX0KLQotdm9pZCBTVkdQYXRoU2VnQ3VydmV0b0N1
YmljU21vb3RoUmVsOjpzZXRZMihmbG9hdCB5MikKLXsKLSAgICBtX3kyID0geTI7Ci19Ci0KLWZs
b2F0IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw6OnkyKCkgY29uc3QKKyAgICA6IFNW
R1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGg8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJl
bD4oeCwgeSwgeDIsIHkyKQogewotICAgIHJldHVybiBtX3kyOwogfQogCiB9CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aC5oCShyZXZpc2lvbiAzMzU1MikK
KysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGguaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAg
ICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
CiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI5LDY0ICsy
OSw0NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljU21vb3RoQWJzIDogcHVibGljIFNWR1BhdGhTZWcgeworICAgIHRlbXBsYXRlIDxj
bGFzcyBUPgorICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggOiBwdWJsaWMg
U1ZHUGF0aFNlZyB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeDIsIGZsb2F0IHkyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY1Ntb290aEFicyh4LCB5LCB4MiwgeTIpKTsgfQotICAgICAgICB2aXJ0dWFsIH5TVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKCk7CisgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNTbW9vdGgoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyKQorICAgICAgICA6
IFNWR1BhdGhTZWcoKSwgbV94KHgpLCBtX3koeSksIG1feDIoeDIpLCBtX3kyKHkpIHt9CiAKLSAg
ICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTOyB9Ci0gICAgICAgIHZpcnR1YWwgU3Ry
aW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAiUyI7IH0KLSAgICAgICAg
dmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmc6OmZvcm1hdCgi
UyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyIsIG1feDIsIG1feTIsIG1feCwgbV95KTsgfQorICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eDIsIGZsb2F0IHkyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVCh4LCB5LCB4MiwgeTIpKTsgfQor
CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gcGF0aFNl
Z1R5cGVBc0xldHRlcigpICsgU3RyaW5nOjpmb3JtYXQoIiAlLjZsZyAlLjZsZyAlLjZsZyAlLjZs
ZyIsIG1feDIsIG1feTIsIG1feCwgbV95KTsgfQogCi0gICAgICAgIHZvaWQgc2V0WChmbG9hdCk7
Ci0gICAgICAgIGZsb2F0IHgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRYKGZsb2F0IHgpIHsg
bV94ID0geDsgfQorICAgICAgICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9CiAKLSAg
ICAgICAgdm9pZCBzZXRZKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeSgpIGNvbnN0OworICAgICAg
ICB2b2lkIHNldFkoZmxvYXQgeSkgeyBtX3kgPSB5OyB9CisgICAgICAgIGZsb2F0IHkoKSBjb25z
dCB7IHJldHVybiBtX3k7IH0KIAotICAgICAgICB2b2lkIHNldFgyKGZsb2F0KTsKLSAgICAgICAg
ZmxvYXQgeDIoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRYMihmbG9hdCB4MikgeyBtX3gyID0g
eDI7IH0KKyAgICAgICAgZmxvYXQgeDIoKSBjb25zdCB7IHJldHVybiBtX3gyOyB9CiAKLSAgICAg
ICAgdm9pZCBzZXRZMihmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHkyKCkgY29uc3Q7CisgICAgICAg
IHZvaWQgc2V0WTIoZmxvYXQgeTIpIHsgbV95MiA9IHkyOyB9CisgICAgICAgIGZsb2F0IHkyKCkg
Y29uc3QgeyByZXR1cm4gbV95MjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU1ZHUGF0aFNl
Z0N1cnZldG9DdWJpY1Ntb290aEFicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MiwgZmxvYXQg
eTIpOwotICAgICAgICAKICAgICAgICAgZmxvYXQgbV94OwogICAgICAgICBmbG9hdCBtX3k7CiAg
ICAgICAgIGZsb2F0IG1feDI7CiAgICAgICAgIGZsb2F0IG1feTI7CiAgICAgfTsKIAotICAgIGNs
YXNzIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwgOiBwdWJsaWMgU1ZHUGF0aFNlZyB7
IAorICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMgOiBwdWJsaWMgU1ZH
UGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aDxTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJz
PiB7IAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1
cnZldG9DdWJpY1Ntb290aFJlbD4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgyLCBm
bG9hdCB5MikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9v
dGhSZWwoeCwgeSwgeDIsIHkyKSk7IH0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIH5TVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoUmVsKCk7CisgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNTbW9vdGhBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyKTsKKyAgICAg
ICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBB
VEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfQUJTOyB9CisgICAgICAgIHZpcnR1YWwgU3RyaW5n
IHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAiUyI7IH0KKyAgICB9OwogCisg
ICAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCA6IHB1YmxpYyBTVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw+IHsg
CisgICAgcHVibGljOgorICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsKGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHgyLCBmbG9hdCB5Mik7CiAgICAgICAgIHZpcnR1YWwgdW5z
aWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9f
Q1VCSUNfU01PT1RIX1JFTDsgfQogICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFz
TGV0dGVyKCkgY29uc3QgeyByZXR1cm4gInMiOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHRv
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nOjpmb3JtYXQoInMgJS42bGcgJS42bGcgJS42
bGcgJS42bGciLCBtX3gyLCBtX3kyLCBtX3gsIG1feSk7IH0KLQotICAgICAgICB2b2lkIHNldFgo
ZmxvYXQpOwotICAgICAgICBmbG9hdCB4KCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRZKGZs
b2F0KTsKLSAgICAgICAgZmxvYXQgeSgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0WDIoZmxv
YXQpOwotICAgICAgICBmbG9hdCB4MigpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0WTIoZmxv
YXQpOwotICAgICAgICBmbG9hdCB5MigpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4
MiwgZmxvYXQgeTIpOwotCi0gICAgICAgIGZsb2F0IG1feDsKLSAgICAgICAgZmxvYXQgbV95Owot
ICAgICAgICBmbG9hdCBtX3gyOwotICAgICAgICBmbG9hdCBtX3kyOwogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvUXVh
ZHJhdGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpYy5jcHAJKHJldmlzaW9uIDMzNTUyKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1
cnZldG9RdWFkcmF0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgS0RFIHByb2plY3QKIApAQCAtMjUsMTE3ICsyNSwxNiBAQAogI2lmIEVOQUJMRShTVkcpCiAj
aW5jbHVkZSAiU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMuaCIKIAotI2luY2x1ZGUgIlNWR1N0
eWxlZEVsZW1lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdQYXRoU2VnQ3VydmV0
b1F1YWRyYXRpY0Ficzo6U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxKQotICAgIDogU1ZHUGF0aFNlZygpCi0gICAgLCBtX3go
eCkKLSAgICAsIG1feSh5KQotICAgICwgbV94MSh4MSkKLSAgICAsIG1feTEoeTEpCi17Ci19Ci0K
LVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzOjp+U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0
aWNBYnMoKQorICAgIDogU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWM8U1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNBYnM+KHgsIHksIHgxLCB5MSkKIHsKIH0KIAotdm9pZCBTVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY0Ficzo6c2V0WChmbG9hdCB4KQotewotICAgIG1feCA9IHg7Ci19Ci0KLWZs
b2F0IFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzOjp4KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV94OwotfQotCi12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzOjpzZXRZKGZs
b2F0IHkpCi17Ci0gICAgbV95ID0geTsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9RdWFk
cmF0aWNBYnM6OnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3k7Ci19Ci0KLXZvaWQgU1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnM6OnNldFgxKGZsb2F0IHgxKQotewotICAgIG1feDEgPSB4
MTsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnM6OngxKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV94MTsKLX0KLQotdm9pZCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRp
Y0Ficzo6c2V0WTEoZmxvYXQgeTEpCi17Ci0gICAgbV95MSA9IHkxOwotfQotCi1mbG9hdCBTVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficzo6eTEoKSBjb25zdAotewotICAgIHJldHVybiBtX3kx
OwotfQotCi0KLQotCiBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbDo6U1ZHUGF0aFNlZ0N1
cnZldG9RdWFkcmF0aWNSZWwoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxKQot
ICAgIDogU1ZHUGF0aFNlZygpCi0gICAgLCBtX3goeCkKLSAgICAsIG1feSh5KQotICAgICwgbV94
MSh4MSkKLSAgICAsIG1feTEoeTEpCi17Ci19Ci0KLVNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
UmVsOjp+U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwoKQotewotfQotCi12b2lkIFNWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsOjpzZXRYKGZsb2F0IHgpCi17Ci0gICAgbV94ID0geDsK
LX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWw6OngoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3g7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWw6
OnNldFkoZmxvYXQgeSkKLXsKLSAgICBtX3kgPSB5OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY1JlbDo6eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feTsKLX0KLQotdm9p
ZCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbDo6c2V0WDEoZmxvYXQgeDEpCi17Ci0gICAg
bV94MSA9IHgxOwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbDo6eDEo
KSBjb25zdAotewotICAgIHJldHVybiBtX3gxOwotfQotCi12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljUmVsOjpzZXRZMShmbG9hdCB5MSkKLXsKLSAgICBtX3kxID0geTE7Ci19Ci0KLWZs
b2F0IFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsOjp5MSgpIGNvbnN0CisgICAgOiBTVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpYzxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbD4oeCwg
eSwgeDEsIHkxKQogewotICAgIHJldHVybiBtX3kxOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljLmgJKHJldmlzaW9uIDMzNTUyKQorKysgV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI5LDY0ICsyOSw0NyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRp
Y0FicyA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCisgICAgdGVtcGxhdGU8Y2xhc3MgVD4KKyAgICBj
bGFzcyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCiAg
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpY0Ficz4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzKHgsIHks
IHgxLCB5MSkpOyB9Ci0gICAgICAgIHZpcnR1YWwgflNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
QWJzKCk7CisgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljKGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHgxLCBmbG9hdCB5MSkKKyAgICAgICAgOiBTVkdQYXRoU2VnKCksIG1feCh4KSwg
bV95KHkpLCBtX3gxKHgxKSwgbV95MSh5MSkge30KIAotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVk
IHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19DVVJWRVRPX1FVQURS
QVRJQ19BQlM7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigp
IGNvbnN0IHsgcmV0dXJuICJRIjsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0IHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJRICUuNmxnICUuNmxnICUuNmxnICUuNmxn
IiwgbV94MSwgbV95MSwgbV94LCBtX3kpOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFQ+
IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBUKHgsIHksIHgxLCB5MSkpOyB9CisKKyAgICAgICAgdmlydHVhbCBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgKyBTdHJpbmc6
OmZvcm1hdCgiICUuNmxnICUuNmxnICUuNmxnICUuNmxnIiwgbV94MSwgbV95MSwgbV94LCBtX3kp
OyB9CiAKLSAgICAgICAgdm9pZCBzZXRYKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeCgpIGNvbnN0
OworICAgICAgICB2b2lkIHNldFgoZmxvYXQgeCkgeyBtX3ggPSB4OyB9CisgICAgICAgIGZsb2F0
IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KIAotICAgICAgICB2b2lkIHNldFkoZmxvYXQpOwot
ICAgICAgICBmbG9hdCB5KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0WShmbG9hdCB5KSB7IG1f
eSA9IHk7IH0KKyAgICAgICAgZmxvYXQgeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQogCi0gICAg
ICAgIHZvaWQgc2V0WDEoZmxvYXQpOwotICAgICAgICBmbG9hdCB4MSgpIGNvbnN0OworICAgICAg
ICB2b2lkIHNldFgxKGZsb2F0IHgxKSB7IG1feDEgPSB4MTsgfQorICAgICAgICBmbG9hdCB4MSgp
IGNvbnN0IHsgcmV0dXJuIG1feDE7IH0KIAotICAgICAgICB2b2lkIHNldFkxKGZsb2F0KTsKLSAg
ICAgICAgZmxvYXQgeTEoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRZMShmbG9hdCB5MSkgeyBt
X3kxID0geTE7IH0KKyAgICAgICAgZmxvYXQgeTEoKSBjb25zdCB7IHJldHVybiBtX3kxOyB9CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyhmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEpOwotICAgICAgICAKICAgICAgICAgZmxv
YXQgbV94OwogICAgICAgICBmbG9hdCBtX3k7CiAgICAgICAgIGZsb2F0IG1feDE7CiAgICAgICAg
IGZsb2F0IG1feTE7CiAgICAgfTsKIAotICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljUmVsIDogcHVibGljIFNWR1BhdGhTZWcgeworICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljQWJzIDogcHVibGljIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljPFNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljQWJzPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbD4gY3JlYXRlKGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKHgsIHksIHgxLCB5MSkpOyB9Ci0gICAgICAgIHZpcnR1YWwg
flNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKCk7CisgICAgICAgIFNWR1BhdGhTZWdDdXJ2
ZXRvUXVhZHJhdGljQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSk7Cisg
ICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVy
biBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCUzsgfQorICAgICAgICB2aXJ0dWFsIFN0cmlu
ZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gIlEiOyB9CisgICAgfTsKIAor
ICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsIDogcHVibGljIFNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsPiB7CisgICAg
cHVibGljOgorICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbChmbG9hdCB4LCBm
bG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEpOwogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNo
b3J0IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJ
Q19SRUw7IH0KICAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNv
bnN0IHsgcmV0dXJuICJxIjsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNv
bnN0IHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJxICUuNmxnICUuNmxnICUuNmxnICUuNmxnIiwg
bV94MSwgbV95MSwgbV94LCBtX3kpOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRYKGZsb2F0KTsKLSAg
ICAgICAgZmxvYXQgeCgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0WShmbG9hdCk7Ci0gICAg
ICAgIGZsb2F0IHkoKSBjb25zdDsKLQotICAgICAgICB2b2lkIHNldFgxKGZsb2F0KTsKLSAgICAg
ICAgZmxvYXQgeDEoKSBjb25zdDsKLQotICAgICAgICB2b2lkIHNldFkxKGZsb2F0KTsKLSAgICAg
ICAgZmxvYXQgeTEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSk7
Ci0KLSAgICAgICAgZmxvYXQgbV94OwotICAgICAgICBmbG9hdCBtX3k7Ci0gICAgICAgIGZsb2F0
IG1feDE7Ci0gICAgICAgIGZsb2F0IG1feTE7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
U21vb3RoLmNwcAkocmV2aXNpb24gMzM1NTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY1Ntb290aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAv
KgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0yNSw3MiArMjUsMTYgQEAKICNpZiBFTkFCTEUoU1ZH
KQogI2luY2x1ZGUgIlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoLmgiCiAKLSNpbmNs
dWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnM6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
U21vb3RoQWJzKGZsb2F0IHgsIGZsb2F0IHkpCi0gICAgOiBTVkdQYXRoU2VnKCkKLSAgICAsIG1f
eCh4KQotICAgICwgbV95KHkpCisgICAgOiBTVkdQYXRoU2VnU2luZ2xlQ29vcmQ8U1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnM+KHgsIHkpCiB7CiB9CiAKLVNWR1BhdGhTZWdDdXJ2
ZXRvUXVhZHJhdGljU21vb3RoQWJzOjp+U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhB
YnMoKQotewotfQotCi12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzOjpz
ZXRYKGZsb2F0IHgpCi17Ci0gICAgbV94ID0geDsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNTbW9vdGhBYnM6OngoKSBjb25zdAotewotICAgIHJldHVybiBtX3g7Ci19Ci0K
LXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnM6OnNldFkoZmxvYXQgeSkK
LXsKLSAgICBtX3kgPSB5OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Nt
b290aEFiczo6eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feTsKLX0KLQotCi0KIFNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsOjpTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Nt
b290aFJlbChmbG9hdCB4LCBmbG9hdCB5KQotICAgIDogU1ZHUGF0aFNlZygpCi0gICAgLCBtX3go
eCkKLSAgICAsIG1feSh5KQotewotfQotCi1TVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290
aFJlbDo6flNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsKCkKLXsKLX0KLQotdm9p
ZCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbDo6c2V0WChmbG9hdCB4KQotewot
ICAgIG1feCA9IHg7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3Ro
UmVsOjp4KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV94OwotfQotCi12b2lkIFNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsOjpzZXRZKGZsb2F0IHkpCi17Ci0gICAgbV95ID0geTsK
LX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWw6OnkoKSBjb25z
dAorICAgIDogU1ZHUGF0aFNlZ1NpbmdsZUNvb3JkPFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
U21vb3RoUmVsPih4LCB5KQogewotICAgIHJldHVybiBtX3k7CiB9CiAKIH0KSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGguaAkocmV2aXNpb24g
MzM1NTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0g
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApA
QCAtMjksNDggKzI5LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzIDogcHVibGljIFNWR1BhdGhTZWcgewor
ICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzIDogcHVibGljIFNW
R1BhdGhTZWdTaW5nbGVDb29yZDxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicz4g
ewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNTbW9vdGhBYnM+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5KSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMoeCwgeSkpOyB9
Ci0gICAgICAgIHZpcnR1YWwgflNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKCk7
Ci0KKyAgICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMoZmxvYXQgeCwg
ZmxvYXQgeSk7CiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBj
b25zdCB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NNT09USF9BQlM7IH0KICAg
ICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJu
ICJUIjsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZzo6Zm9ybWF0KCJUICUuNmxnICUuNmxnIiwgbV94LCBtX3kpOyB9Ci0KLSAgICAgICAg
dm9pZCBzZXRYKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeCgpIGNvbnN0OwotCi0gICAgICAgIHZv
aWQgc2V0WShmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHkoKSBjb25zdDsKLQotICAgIHByaXZhdGU6
Ci0gICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKGZsb2F0IHgsIGZs
b2F0IHkpOwotCi0gICAgICAgIGZsb2F0IG1feDsKLSAgICAgICAgZmxvYXQgbV95OwogICAgIH07
CiAKLSAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCA6IHB1Ymxp
YyBTVkdQYXRoU2VnIHsKKyAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290
aFJlbCA6IHB1YmxpYyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQ8U1ZHUGF0aFNlZ0N1cnZldG9RdWFk
cmF0aWNTbW9vdGhSZWw+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsPiBjcmVhdGUoZmxvYXQgeCwgZmxv
YXQgeSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21v
b3RoUmVsKHgsIHkpKTsgfQotICAgICAgICB2aXJ0dWFsIH5TVkdQYXRoU2VnQ3VydmV0b1F1YWRy
YXRpY1Ntb290aFJlbCgpOwotCisgICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21v
b3RoUmVsKGZsb2F0IHgsIGZsb2F0IHkpOwogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0
IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19T
TU9PVEhfUkVMOyB9CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIo
KSBjb25zdCB7IHJldHVybiAidCI7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmco
KSBjb25zdCB7IHJldHVybiBTdHJpbmc6OmZvcm1hdCgidCAlLjZsZyAlLjZsZyIsIG1feCwgbV95
KTsgfQotCi0gICAgICAgIHZvaWQgc2V0WChmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHgoKSBjb25z
dDsKLQotICAgICAgICB2b2lkIHNldFkoZmxvYXQpOwotICAgICAgICBmbG9hdCB5KCkgY29uc3Q7
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290
aFJlbChmbG9hdCB4LCBmbG9hdCB5KTsKLQotICAgICAgICBmbG9hdCBtX3g7Ci0gICAgICAgIGZs
b2F0IG1feTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdQYXRoU2VnTGluZXRvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU2VnTGluZXRvLmNwcAkocmV2aXNpb24gMzM1NTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGluZXRvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwOCBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAK
QEAgLTI1LDcwICsyNSwxNiBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHUGF0aFNl
Z0xpbmV0by5oIgogCi0jaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNWR1BhdGhTZWdMaW5ldG9BYnM6OlNWR1BhdGhTZWdMaW5ldG9BYnMoZmxv
YXQgeCwgZmxvYXQgeSkKLSAgICA6IFNWR1BhdGhTZWcoKQotICAgICwgbV94KHgpCi0gICAgLCBt
X3koeSkKLXsKLX0KLQotU1ZHUGF0aFNlZ0xpbmV0b0Ficzo6flNWR1BhdGhTZWdMaW5ldG9BYnMo
KQotewotfQotCi12b2lkIFNWR1BhdGhTZWdMaW5ldG9BYnM6OnNldFgoZmxvYXQgeCkKLXsKLSAg
ICBtX3ggPSB4OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnTGluZXRvQWJzOjp4KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV94OwotfQotCi12b2lkIFNWR1BhdGhTZWdMaW5ldG9BYnM6OnNldFkoZmxv
YXQgeSkKLXsKLSAgICBtX3kgPSB5OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnTGluZXRvQWJzOjp5
KCkgY29uc3QKKyAgICA6IFNWR1BhdGhTZWdTaW5nbGVDb29yZDxTVkdQYXRoU2VnTGluZXRvQWJz
Pih4LCB5KQogewotICAgIHJldHVybiBtX3k7CiB9CiAKIFNWR1BhdGhTZWdMaW5ldG9SZWw6OlNW
R1BhdGhTZWdMaW5ldG9SZWwoZmxvYXQgeCwgZmxvYXQgeSkKLSAgICA6IFNWR1BhdGhTZWcoKQot
ICAgICwgbV94KHgpCi0gICAgLCBtX3koeSkKLXsKLX0KLQotU1ZHUGF0aFNlZ0xpbmV0b1JlbDo6
flNWR1BhdGhTZWdMaW5ldG9SZWwoKQotewotfQotCi12b2lkIFNWR1BhdGhTZWdMaW5ldG9SZWw6
OnNldFgoZmxvYXQgeCkKLXsKLSAgICBtX3ggPSB4OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnTGlu
ZXRvUmVsOjp4KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV94OwotfQotCi12b2lkIFNWR1BhdGhT
ZWdMaW5ldG9SZWw6OnNldFkoZmxvYXQgeSkKLXsKLSAgICBtX3kgPSB5OwotfQotCi1mbG9hdCBT
VkdQYXRoU2VnTGluZXRvUmVsOjp5KCkgY29uc3QKKyAgICA6IFNWR1BhdGhTZWdTaW5nbGVDb29y
ZDxTVkdQYXRoU2VnTGluZXRvUmVsPih4LCB5KQogewotICAgIHJldHVybiBtX3k7CiB9CiAKIH0K
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaW5ldG8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvLmgJKHJldmlzaW9uIDMzNTUyKQorKysgV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ0xpbmV0by5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgS0RFIHByb2plY3QKIApAQCAtMjgsNDggKzI4LDE4IEBACiAjaW5jbHVkZSAiU1ZHUGF0
aFNlZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0
b0FicyA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCisgICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0b0Fi
cyA6IHB1YmxpYyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQ8U1ZHUGF0aFNlZ0xpbmV0b0Ficz4geyAK
ICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9B
YnM+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0
aFNlZ0xpbmV0b0Ficyh4LCB5KSk7IH0KLSAgICAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZ0xpbmV0
b0FicygpOwotCisgICAgICAgIFNWR1BhdGhTZWdMaW5ldG9BYnMoZmxvYXQgeCwgZmxvYXQgeSk7
CiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJl
dHVybiBQQVRIU0VHX0xJTkVUT19BQlM7IH0KICAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNl
Z1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJMIjsgfQotICAgICAgICB2aXJ0dWFsIFN0
cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJMICUuNmxnICUu
NmxnIiwgbV94LCBtX3kpOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRYKGZsb2F0KTsKLSAgICAgICAg
ZmxvYXQgeCgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0WShmbG9hdCk7Ci0gICAgICAgIGZs
b2F0IHkoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR1BhdGhTZWdMaW5ldG9B
YnMoZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAgICAgIAotICAgICAgICBmbG9hdCBtX3g7Ci0gICAg
ICAgIGZsb2F0IG1feTsKICAgICB9OwogCi0gICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6
IHB1YmxpYyBTVkdQYXRoU2VnIHsgCisgICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0b1JlbCA6IHB1
YmxpYyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQ8U1ZHUGF0aFNlZ0xpbmV0b1JlbD4geyAKICAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9SZWw+IGNy
ZWF0ZShmbG9hdCB4LCBmbG9hdCB5KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0xp
bmV0b1JlbCh4LCB5KSk7IH0KLSAgICAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZ0xpbmV0b1JlbCgp
OwotCisgICAgICAgIFNWR1BhdGhTZWdMaW5ldG9SZWwoZmxvYXQgeCwgZmxvYXQgeSk7CiAgICAg
ICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQ
QVRIU0VHX0xJTkVUT19SRUw7IH0KICAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVB
c0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJsIjsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyB0
b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJsICUuNmxnICUuNmxnIiwg
bV94LCBtX3kpOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRYKGZsb2F0KTsKLSAgICAgICAgZmxvYXQg
eCgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0WShmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHko
KSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR1BhdGhTZWdMaW5ldG9SZWwoZmxv
YXQgeCwgZmxvYXQgeSk7Ci0KLSAgICAgICAgZmxvYXQgbV94OwotICAgICAgICBmbG9hdCBtX3k7
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
UGF0aFNlZ01vdmV0by5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ01v
dmV0by5jcHAJKHJldmlzaW9uIDMzNTUyKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ01vdmV0
by5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVj
dAogCkBAIC0yNSw3NSArMjUsMTcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1Bh
dGhTZWdNb3ZldG8uaCIKIAotI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTVkdQYXRoU2VnTW92ZXRvQWJzOjpTVkdQYXRoU2VnTW92ZXRvQWJz
KGZsb2F0IHgsIGZsb2F0IHkpCi0gICAgOiBTVkdQYXRoU2VnKCkKLSAgICAsIG1feCh4KQotICAg
ICwgbV95KHkpCi17Ci19Ci0KLVNWR1BhdGhTZWdNb3ZldG9BYnM6On5TVkdQYXRoU2VnTW92ZXRv
QWJzKCkKLXsKLX0KLQotdm9pZCBTVkdQYXRoU2VnTW92ZXRvQWJzOjpzZXRYKGZsb2F0IHgpCi17
Ci0gICAgbV94ID0geDsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ01vdmV0b0Ficzo6eCgpIGNvbnN0
CisgICAgOiBTVkdQYXRoU2VnU2luZ2xlQ29vcmQ8U1ZHUGF0aFNlZ01vdmV0b0Ficz4oeCwgeSkK
IHsKLSAgICByZXR1cm4gbV94OwogfQogCi12b2lkIFNWR1BhdGhTZWdNb3ZldG9BYnM6OnNldFko
ZmxvYXQgeSkKLXsKLSAgICBtX3kgPSB5OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnTW92ZXRvQWJz
Ojp5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV95OwotfQotCi0KLQotCiBTVkdQYXRoU2VnTW92
ZXRvUmVsOjpTVkdQYXRoU2VnTW92ZXRvUmVsKGZsb2F0IHgsIGZsb2F0IHkpCi0gICAgOiBTVkdQ
YXRoU2VnKCkKLSAgICAsIG1feCh4KQotICAgICwgbV95KHkpCisgICAgOiBTVkdQYXRoU2VnU2lu
Z2xlQ29vcmQ8U1ZHUGF0aFNlZ01vdmV0b1JlbD4oeCwgeSkKIHsKIH0KLQotU1ZHUGF0aFNlZ01v
dmV0b1JlbDo6flNWR1BhdGhTZWdNb3ZldG9SZWwoKQotewotfQotCi12b2lkIFNWR1BhdGhTZWdN
b3ZldG9SZWw6OnNldFgoZmxvYXQgeCkKLXsKLSAgICBtX3ggPSB4OwotfQotCi1mbG9hdCBTVkdQ
YXRoU2VnTW92ZXRvUmVsOjp4KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV94OwotfQotCi12b2lk
IFNWR1BhdGhTZWdNb3ZldG9SZWw6OnNldFkoZmxvYXQgeSkKLXsKLSAgICBtX3kgPSB5OwotfQot
Ci1mbG9hdCBTVkdQYXRoU2VnTW92ZXRvUmVsOjp5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV95
OwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
UGF0aFNlZ01vdmV0by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdNb3Zl
dG8uaAkocmV2aXNpb24gMzM1NTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTW92ZXRvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAg
ICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
KyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBA
IC0yOCw0OCArMjgsMTggQEAKICNpbmNsdWRlICJTVkdQYXRoU2VnLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLSAgICBjbGFzcyBTVkdQYXRoU2VnTW92ZXRvQWJzIDogcHVibGljIFNWR1BhdGhT
ZWcgeyAKKyAgICBjbGFzcyBTVkdQYXRoU2VnTW92ZXRvQWJzIDogcHVibGljIFNWR1BhdGhTZWdT
aW5nbGVDb29yZDxTVkdQYXRoU2VnTW92ZXRvQWJzPiB7IAogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ01vdmV0b0Ficz4gY3JlYXRlKGZsb2F0IHgsIGZs
b2F0IHkpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnTW92ZXRvQWJzKHgsIHkpKTsg
fQotICAgICAgICB2aXJ0dWFsIH5TVkdQYXRoU2VnTW92ZXRvQWJzKCk7Ci0KKyAgICAgICAgU1ZH
UGF0aFNlZ01vdmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5KTsKICAgICAgICAgdmlydHVhbCB1bnNp
Z25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfTU9WRVRPX0FC
UzsgfQogICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Qg
eyByZXR1cm4gIk0iOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIk0gJS42bGcgJS42bGciLCBtX3gsIG1feSk7IH0KLQot
ICAgICAgICB2b2lkIHNldFgoZmxvYXQpOwotICAgICAgICBmbG9hdCB4KCkgY29uc3Q7Ci0KLSAg
ICAgICAgdm9pZCBzZXRZKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeSgpIGNvbnN0OwotCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgU1ZHUGF0aFNlZ01vdmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5KTsK
LQotICAgICAgICBmbG9hdCBtX3g7Ci0gICAgICAgIGZsb2F0IG1feTsKICAgICB9OwogCi0gICAg
Y2xhc3MgU1ZHUGF0aFNlZ01vdmV0b1JlbCA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCisgICAgY2xh
c3MgU1ZHUGF0aFNlZ01vdmV0b1JlbCA6IHB1YmxpYyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQ8U1ZH
UGF0aFNlZ01vdmV0b1JlbD4geyAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR1BhdGhTZWdNb3ZldG9SZWw+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5KSB7IHJldHVy
biBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ01vdmV0b1JlbCh4LCB5KSk7IH0KLSAgICAgICAgdmly
dHVhbCB+U1ZHUGF0aFNlZ01vdmV0b1JlbCgpOwotCisgICAgICAgIFNWR1BhdGhTZWdNb3ZldG9S
ZWwoZmxvYXQgeCwgZmxvYXQgeSk7CiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0
aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VHX01PVkVUT19SRUw7IH0KICAgICAgICAg
dmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJtIjsg
fQotICAgICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
Zzo6Zm9ybWF0KCJtICUuNmxnICUuNmxnIiwgbV94LCBtX3kpOyB9Ci0KLSAgICAgICAgdm9pZCBz
ZXRYKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeCgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0
WShmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHkoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIFNWR1BhdGhTZWdNb3ZldG9SZWwoZmxvYXQgeCwgZmxvYXQgeSk7Ci0KLSAgICAgICAgZmxv
YXQgbV94OwotICAgICAgICBmbG9hdCBtX3k7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQo=
</data>
<flag name="review"
          id="9274"
          type_id="1"
          status="-"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21303</attachid>
            <date>2008-05-22 14:00:14 -0700</date>
            <delta_ts>2008-05-22 14:11:39 -0700</delta_ts>
            <desc>Improved patch</desc>
            <filename>12053-2.diff</filename>
            <type>text/plain</type>
            <size>58811</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDAzMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTU1IEBACisyMDA4LTA1LTIyICBSb2IgQnVpcyAgPGJ1aXNAa2RlLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNTMKKyAgICAgICAgU1ZHUGF0aFNlZyoo
QWJzfFJlbCkgY2xhc3NzZXMgc2hvdWxkIGJlIGNvbWJpbmVkIHRvIHJlZHVjZSBjb2RlIHNpemUK
KworICAgICAgICBSZWR1Y2UgY29kZSBzaXplIHRocm91Z2ggc2hhcmVkIGJhc2UgY2xhc3Nlcy4K
KworICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
U2VnU2luZ2xlQ29vcmQ6OlNWR1BhdGhTZWdTaW5nbGVDb29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQ6OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFNlZ1NpbmdsZUNvb3JkOjp4KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdTaW5nbGVD
b29yZDo6c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnU2luZ2xlQ29vcmQ6Onkp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ1NpbmdsZUNvb3JkOjp0b1N0cmluZyk6Cisg
ICAgICAgICogc3ZnL1NWR1BhdGhTZWdBcmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFNlZ0FyY0Ficzo6U1ZHUGF0aFNlZ0FyY0Ficyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
U2VnQXJjUmVsOjpTVkdQYXRoU2VnQXJjUmVsKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0Fy
Yy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0FyYzo6U1ZHUGF0aFNlZ0FyYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQXJjOjp0b1N0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXRoU2VnQXJjOjpzZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdB
cmM6OngpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0FyYzo6c2V0WSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnQXJjOjp5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhT
ZWdBcmM6OnNldFIxKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdBcmM6OnIxKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdBcmM6OnNldFIyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhTZWdBcmM6OnIyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdBcmM6OnNl
dEFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdBcmM6OmFuZ2xlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdBcmM6OnNldExhcmdlQXJjRmxhZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXRoU2VnQXJjOjpsYXJnZUFyY0ZsYWcpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFNlZ0FyYzo6c2V0U3dlZXBGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhT
ZWdBcmM6OnN3ZWVwRmxhZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQXJjQWJzOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0FyY0Ficzo6cGF0aFNlZ1R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0FyY0Ficzo6cGF0aFNlZ1R5cGVBc0xldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQXJjUmVsOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0FyY1JlbDo6cGF0aFNlZ1R5cGVBc0xldHRlcik6CisgICAg
ICAgICogc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficzo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsOjpTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljUmVsKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpYzo6U1ZHUGF0aFNlZ0N1cnZl
dG9DdWJpYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljOjp0b1N0
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljOjpzZXRYKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OngpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpYzo6c2V0WSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljOjp5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhT
ZWdDdXJ2ZXRvQ3ViaWM6OnNldFgxKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWM6OngxKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6
OnNldFkxKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OnkxKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OnNldFgyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OngyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OnNldFkyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWdDdXJ2ZXRvQ3ViaWM6OnkyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNBYnM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljQWJzOjpwYXRoU2VnVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljQWJzOjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsOjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAgICAg
KiBzdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzOjpTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
U21vb3RoQWJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9v
dGhSZWw6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwpOgorICAgICAgICAqIHN2Zy9T
VkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGg6OnRvU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGg6OnNldFgpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aDo6eCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoOjpzZXRZKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGg6OnkpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aDo6c2V0WDIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aDo6eDIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aDo6c2V0WTIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aDo6eTIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFiczo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnM6OnBhdGhTZWdUeXBlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnM6OnBhdGhTZWdU
eXBlQXNMZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Nt
b290aFJlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNTbW9vdGhSZWw6OnBhdGhTZWdUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNTbW9vdGhSZWw6OnBhdGhTZWdUeXBlQXNMZXR0ZXIpOgorICAgICAgICAqIHN2
Zy9TVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficzo6U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWw6OlNWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljOjpTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpYzo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aFNlZ0N1cnZldG9RdWFkcmF0aWM6OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWM6OngpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1
cnZldG9RdWFkcmF0aWM6OnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWM6OnkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9RdWFk
cmF0aWM6OnNldFgxKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljOjp4MSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYzo6
c2V0WTEpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWM6Onkx
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnM6OnBh
dGhTZWdUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
QWJzOjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljUmVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNSZWw6OnBhdGhTZWdUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsOjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnM6OlNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsOjpTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290
aFJlbCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFiczo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21v
b3RoQWJzOjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWw6OnBhdGhTZWdUeXBlQXNMZXR0ZXIp
OgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGluZXRvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhTZWdMaW5ldG9BYnM6OlNWR1BhdGhTZWdMaW5ldG9BYnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFNlZ0xpbmV0b1JlbDo6U1ZHUGF0aFNlZ0xpbmV0b1JlbCk6CisgICAgICAg
ICogc3ZnL1NWR1BhdGhTZWdMaW5ldG8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdM
aW5ldG9BYnM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGluZXRvQWJz
OjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaW5l
dG9SZWw6OnBhdGhTZWdUeXBlQXNMZXR0ZXIpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlu
ZXRvSG9yaXpvbnRhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGluZXRvSG9y
aXpvbnRhbEFiczo6U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWw6OlNWR1BhdGhTZWdMaW5ldG9Ib3Jp
em9udGFsUmVsKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsOjpTVkdQYXRoU2Vn
TGluZXRvSG9yaXpvbnRhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGluZXRvSG9y
aXpvbnRhbDo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpbmV0b0hv
cml6b250YWw6OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpbmV0b0hvcml6
b250YWw6OngpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxB
YnM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRh
bEFiczo6cGF0aFNlZ1R5cGVBc0xldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2Vn
TGluZXRvSG9yaXpvbnRhbFJlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhT
ZWdMaW5ldG9Ib3Jpem9udGFsUmVsOjpwYXRoU2VnVHlwZUFzTGV0dGVyKToKKyAgICAgICAgKiBz
dmcvU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dGhTZWdMaW5ldG9WZXJ0aWNhbEFiczo6U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbDo6U1ZHUGF0aFNlZ0xp
bmV0b1ZlcnRpY2FsUmVsKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2Fs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGluZXRvVmVydGljYWw6OlNWR1BhdGhT
ZWdMaW5ldG9WZXJ0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGluZXRvVmVy
dGljYWw6OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaW5ldG9WZXJ0
aWNhbDo6c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTGluZXRvVmVydGljYWw6
OnkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzOjpwYXRo
U2VnVHlwZUFzTGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaW5ldG9WZXJ0
aWNhbFJlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaW5ldG9WZXJ0
aWNhbFJlbDo6cGF0aFNlZ1R5cGVBc0xldHRlcik6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdN
b3ZldG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ01vdmV0b0Ficzo6U1ZHUGF0
aFNlZ01vdmV0b0Ficyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU2VnTW92ZXRvUmVsOjpT
VkdQYXRoU2VnTW92ZXRvUmVsKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ01vdmV0by5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ01vdmV0b0Ficzo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhTZWdNb3ZldG9BYnM6OnBhdGhTZWdUeXBlQXNMZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ01vdmV0b1JlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhTZWdNb3ZldG9SZWw6OnBhdGhTZWdUeXBlQXNMZXR0ZXIpOgorCiAyMDA4
LTA1LTIyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTk1NjQwMz4gVXBkYXRlIHRoZSBEZXZlbG9wIG1lbnUgdG8gbWF0Y2gg
dGhlIG5ldyBJbnNwZWN0b3IgaXRlbXMKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnLmgJKHJldmlzaW9uIDM0MDMwKQor
KysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAtNzAsNiArNzAsMjUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBTVkdQYXRoU2VnKCkgeyB9CiAgICAgfTsKIAorICAgIGNs
YXNzIFNWR1BhdGhTZWdTaW5nbGVDb29yZCA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCisgICAgcHVi
bGljOgorICAgICAgICBTVkdQYXRoU2VnU2luZ2xlQ29vcmQoZmxvYXQgeCwgZmxvYXQgeSkKKyAg
ICAgICAgOiBTVkdQYXRoU2VnKCkgLCBtX3goeCkgLCBtX3koeSkge30KKworICAgICAgICB2b2lk
IHNldFgoZmxvYXQgeCkgeyBtX3ggPSB4OyB9CisgICAgICAgIGZsb2F0IHgoKSBjb25zdCB7IHJl
dHVybiBtX3g7IH0KKworICAgICAgICB2b2lkIHNldFkoZmxvYXQgeSkgeyBtX3kgPSB5OyB9Cisg
ICAgICAgIGZsb2F0IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KKworICAgICAgICB2aXJ0dWFs
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSAr
IFN0cmluZzo6Zm9ybWF0KCIgJS42bGcgJS42bGciLCBtX3gsIG1feSk7IH0KKworICAgIHByaXZh
dGU6CisgICAgICAgIGZsb2F0IG1feDsKKyAgICAgICAgZmxvYXQgbV95OworICAgIH07CisKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR1BhdGhTZWdBcmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdBcmMuY3BwCShyZXZpc2lvbiAzNDAzMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWdBcmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKIApAQCAtMjUsMTgyICsyNSwxNiBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAi
U1ZHUGF0aFNlZ0FyYy5oIgogCi0jaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFNWR1BhdGhTZWdBcmNBYnM6OlNWR1BhdGhTZWdBcmNBYnMoZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwgYm9vbCBsYXJn
ZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnKQotICAgIDogU1ZHUGF0aFNlZygpCi0gICAgLCBtX3go
eCkKLSAgICAsIG1feSh5KQotICAgICwgbV9yMShyMSkKLSAgICAsIG1fcjIocjIpCi0gICAgLCBt
X2FuZ2xlKGFuZ2xlKQotICAgICwgbV9sYXJnZUFyY0ZsYWcobGFyZ2VBcmNGbGFnKQotICAgICwg
bV9zd2VlcEZsYWcoc3dlZXBGbGFnKQotewotfQotCi1TVkdQYXRoU2VnQXJjQWJzOjp+U1ZHUGF0
aFNlZ0FyY0FicygpCi17Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0FyY0Ficzo6c2V0WChmbG9hdCB4
KQotewotICAgIG1feCA9IHg7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdBcmNBYnM6OngoKSBjb25z
dAotewotICAgIHJldHVybiBtX3g7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0FyY0Ficzo6c2V0WShm
bG9hdCB5KQotewotICAgIG1feSA9IHk7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdBcmNBYnM6Onko
KSBjb25zdAotewotICAgIHJldHVybiBtX3k7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0FyY0Ficzo6
c2V0UjEoZmxvYXQgcjEpCi17Ci0gICAgbV9yMSA9IHIxOwotfQotCi1mbG9hdCBTVkdQYXRoU2Vn
QXJjQWJzOjpyMSgpIGNvbnN0CisgICAgOiBTVkdQYXRoU2VnQXJjKHgsIHksIHIxLCByMiwgYW5n
bGUsIGxhcmdlQXJjRmxhZywgc3dlZXBGbGFnKQogewotICAgIHJldHVybiBtX3IxOwogfQogCi12
b2lkIFNWR1BhdGhTZWdBcmNBYnM6OnNldFIyKGZsb2F0IHIyKQotewotICAgIG1fcjIgPSByMjsK
LX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0FyY0Ficzo6cjIoKSBjb25zdAotewotICAgIHJldHVybiBt
X3IyOwotfQotCi12b2lkIFNWR1BhdGhTZWdBcmNBYnM6OnNldEFuZ2xlKGZsb2F0IGFuZ2xlKQot
ewotICAgIG1fYW5nbGUgPSBhbmdsZTsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0FyY0Ficzo6YW5n
bGUoKSBjb25zdAotewotICAgIHJldHVybiBtX2FuZ2xlOwotfQotCi12b2lkIFNWR1BhdGhTZWdB
cmNBYnM6OnNldExhcmdlQXJjRmxhZyhib29sIGxhcmdlQXJjRmxhZykKLXsKLSAgICBtX2xhcmdl
QXJjRmxhZyA9IGxhcmdlQXJjRmxhZzsKLX0KLQotYm9vbCBTVkdQYXRoU2VnQXJjQWJzOjpsYXJn
ZUFyY0ZsYWcoKSBjb25zdAotewotICAgIHJldHVybiBtX2xhcmdlQXJjRmxhZzsKLX0KLQotdm9p
ZCBTVkdQYXRoU2VnQXJjQWJzOjpzZXRTd2VlcEZsYWcoYm9vbCBzd2VlcEZsYWcpCi17Ci0gICAg
bV9zd2VlcEZsYWcgPSBzd2VlcEZsYWc7Ci19Ci0KLWJvb2wgU1ZHUGF0aFNlZ0FyY0Ficzo6c3dl
ZXBGbGFnKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zd2VlcEZsYWc7Ci19Ci0KLQotCiBTVkdQ
YXRoU2VnQXJjUmVsOjpTVkdQYXRoU2VnQXJjUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHIx
LCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxh
ZykKLSAgICA6IFNWR1BhdGhTZWcoKQotICAgICwgbV94KHgpCi0gICAgLCBtX3koeSkKLSAgICAs
IG1fcjEocjEpCi0gICAgLCBtX3IyKHIyKQotICAgICwgbV9hbmdsZShhbmdsZSkKLSAgICAsIG1f
bGFyZ2VBcmNGbGFnKGxhcmdlQXJjRmxhZykKLSAgICAsIG1fc3dlZXBGbGFnKHN3ZWVwRmxhZykK
LXsKLX0KLQotU1ZHUGF0aFNlZ0FyY1JlbDo6flNWR1BhdGhTZWdBcmNSZWwoKQotewotfQotCi12
b2lkIFNWR1BhdGhTZWdBcmNSZWw6OnNldFgoZmxvYXQgeCkKLXsKLSAgICBtX3ggPSB4OwotfQot
Ci1mbG9hdCBTVkdQYXRoU2VnQXJjUmVsOjp4KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV94Owot
fQotCi12b2lkIFNWR1BhdGhTZWdBcmNSZWw6OnNldFkoZmxvYXQgeSkKLXsKLSAgICBtX3kgPSB5
OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQXJjUmVsOjp5KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV95OwotfQotCi12b2lkIFNWR1BhdGhTZWdBcmNSZWw6OnNldFIxKGZsb2F0IHIxKQotewotICAg
IG1fcjEgPSByMTsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0FyY1JlbDo6cjEoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3IxOwotfQotCi12b2lkIFNWR1BhdGhTZWdBcmNSZWw6OnNldFIyKGZsb2F0
IHIyKQotewotICAgIG1fcjIgPSByMjsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0FyY1JlbDo6cjIo
KSBjb25zdAotewotICAgIHJldHVybiBtX3IyOwotfQotCi12b2lkIFNWR1BhdGhTZWdBcmNSZWw6
OnNldEFuZ2xlKGZsb2F0IGFuZ2xlKQotewotICAgIG1fYW5nbGUgPSBhbmdsZTsKLX0KLQotZmxv
YXQgU1ZHUGF0aFNlZ0FyY1JlbDo6YW5nbGUoKSBjb25zdAotewotICAgIHJldHVybiBtX2FuZ2xl
OwotfQotCi12b2lkIFNWR1BhdGhTZWdBcmNSZWw6OnNldExhcmdlQXJjRmxhZyhib29sIGxhcmdl
QXJjRmxhZykKLXsKLSAgICBtX2xhcmdlQXJjRmxhZyA9IGxhcmdlQXJjRmxhZzsKLX0KLQotYm9v
bCBTVkdQYXRoU2VnQXJjUmVsOjpsYXJnZUFyY0ZsYWcoKSBjb25zdAotewotICAgIHJldHVybiBt
X2xhcmdlQXJjRmxhZzsKLX0KLQotdm9pZCBTVkdQYXRoU2VnQXJjUmVsOjpzZXRTd2VlcEZsYWco
Ym9vbCBzd2VlcEZsYWcpCi17Ci0gICAgbV9zd2VlcEZsYWcgPSBzd2VlcEZsYWc7Ci19Ci0KLWJv
b2wgU1ZHUGF0aFNlZ0FyY1JlbDo6c3dlZXBGbGFnKCkgY29uc3QKKyAgICA6IFNWR1BhdGhTZWdB
cmMoeCwgeSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcpCiB7Ci0gICAg
cmV0dXJuIG1fc3dlZXBGbGFnOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
QXJjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0FyYy5oCShyZXZpc2lv
biAzNDAzMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdBcmMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI5LDQzICsyOSwzNSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdQYXRoU2VnQXJjQWJzIDog
cHVibGljIFNWR1BhdGhTZWcgeworICAgIGNsYXNzIFNWR1BhdGhTZWdBcmMgOiBwdWJsaWMgU1ZH
UGF0aFNlZyB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRo
U2VnQXJjQWJzPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBm
bG9hdCBhbmdsZSwgYm9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdBcmNBYnMoeCwgeSwg
cjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcpKTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZ0FyY0FicygpOworICAgICAgICBTVkdQ
YXRoU2VnQXJjKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5n
bGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZykKKyAgICAgICAgOiBtX3goeCks
IG1feSh5KSwgbV9yMShyMSksIG1fcjIocjIpLCBtX2FuZ2xlKGFuZ2xlKSwgbV9sYXJnZUFyY0Zs
YWcobGFyZ2VBcmNGbGFnKSwgbV9zd2VlcEZsYWcoc3dlZXBGbGFnKSB7fQogCi0gICAgICAgIHZp
cnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VH
X0FSQ19BQlM7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigp
IGNvbnN0IHsgcmV0dXJuICJBIjsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0IHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJBICUuNmxnICUuNmxnICUuNmxnICVkICVk
ICUuNmxnICUuNmxnIiwgbV9yMSwgbV9yMiwgbV9hbmdsZSwgbV9sYXJnZUFyY0ZsYWcsIG1fc3dl
ZXBGbGFnLCBtX3gsIG1feSk7IH0KKyAgICAgICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBj
b25zdCB7IHJldHVybiBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgKyBTdHJpbmc6OmZvcm1hdCgiICUu
NmxnICUuNmxnICUuNmxnICVkICVkICUuNmxnICUuNmxnIiwgbV9yMSwgbV9yMiwgbV9hbmdsZSwg
bV9sYXJnZUFyY0ZsYWcsIG1fc3dlZXBGbGFnLCBtX3gsIG1feSk7IH0KIAotICAgICAgICB2b2lk
IHNldFgoZmxvYXQgeCk7Ci0gICAgICAgIGZsb2F0IHgoKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRYKGZsb2F0IHgpIHsgbV94ID0geDsgfQorICAgICAgICBmbG9hdCB4KCkgY29uc3QgeyByZXR1
cm4gbV94OyB9CiAKLSAgICAgICAgdm9pZCBzZXRZKGZsb2F0IHkpOwotICAgICAgICBmbG9hdCB5
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0WShmbG9hdCB5KSB7IG1feSA9IHk7IH0KKyAgICAg
ICAgZmxvYXQgeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQogCi0gICAgICAgIHZvaWQgc2V0UjEo
ZmxvYXQgcjEpOwotICAgICAgICBmbG9hdCByMSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFIx
KGZsb2F0IHIxKSB7IG1fcjEgPSByMTsgfQorICAgICAgICBmbG9hdCByMSgpIGNvbnN0IHsgcmV0
dXJuIG1fcjE7IH0KIAotICAgICAgICB2b2lkIHNldFIyKGZsb2F0IHIyKTsKLSAgICAgICAgZmxv
YXQgcjIoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRSMihmbG9hdCByMikgeyBtX3IyID0gcjI7
IH0KKyAgICAgICAgZmxvYXQgcjIoKSBjb25zdCB7IHJldHVybiBtX3IyOyB9CiAKLSAgICAgICAg
dm9pZCBzZXRBbmdsZShmbG9hdCBhbmdsZSk7Ci0gICAgICAgIGZsb2F0IGFuZ2xlKCkgY29uc3Q7
CisgICAgICAgIHZvaWQgc2V0QW5nbGUoZmxvYXQgYW5nbGUpIHsgbV9hbmdsZSA9IGFuZ2xlOyB9
CisgICAgICAgIGZsb2F0IGFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9hbmdsZTsgfQogCi0gICAg
ICAgIHZvaWQgc2V0TGFyZ2VBcmNGbGFnKGJvb2wgbGFyZ2VBcmNGbGFnKTsKLSAgICAgICAgYm9v
bCBsYXJnZUFyY0ZsYWcoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRMYXJnZUFyY0ZsYWcoYm9v
bCBsYXJnZUFyY0ZsYWcpIHsgbV9sYXJnZUFyY0ZsYWcgPSBsYXJnZUFyY0ZsYWc7IH0KKyAgICAg
ICAgYm9vbCBsYXJnZUFyY0ZsYWcoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQXJjRmxhZzsgfQog
Ci0gICAgICAgIHZvaWQgc2V0U3dlZXBGbGFnKGJvb2wgc3dlZXBGbGFnKTsKLSAgICAgICAgYm9v
bCBzd2VlcEZsYWcoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRTd2VlcEZsYWcoYm9vbCBzd2Vl
cEZsYWcpIHsgbV9zd2VlcEZsYWcgPSBzd2VlcEZsYWc7IH0KKyAgICAgICAgYm9vbCBzd2VlcEZs
YWcoKSBjb25zdCB7IHJldHVybiBtX3N3ZWVwRmxhZzsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgU1ZHUGF0aFNlZ0FyY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByMSwgZmxvYXQgcjIs
IGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcpOwotCiAgICAg
ICAgIGZsb2F0IG1feDsKICAgICAgICAgZmxvYXQgbV95OwogICAgICAgICBmbG9hdCBtX3IxOwpA
QCAtNzYsNTAgKzY4LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3N3
ZWVwRmxhZyA6IDE7CiAgICAgfTsKIAotICAgIGNsYXNzIFNWR1BhdGhTZWdBcmNSZWwgOiBwdWJs
aWMgU1ZHUGF0aFNlZyB7CisgICAgY2xhc3MgU1ZHUGF0aFNlZ0FyY0FicyA6IHB1YmxpYyBTVkdQ
YXRoU2VnQXJjIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1Bh
dGhTZWdBcmNBYnM+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCByMSwgZmxvYXQgcjIs
IGZsb2F0IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0FyY0Ficyh4LCB5
LCByMSwgcjIsIGFuZ2xlLCBsYXJnZUFyY0ZsYWcsIHN3ZWVwRmxhZykpOworICAgICAgICB9CisK
KyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIFBBVEhTRUdfQVJDX0FCUzsgfQorICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlw
ZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gIkEiOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBTVkdQYXRoU2VnQXJjQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHIxLCBmbG9hdCByMiwg
ZmxvYXQgYW5nbGUsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZyk7CisgICAgfTsK
KworICAgIGNsYXNzIFNWR1BhdGhTZWdBcmNSZWwgOiBwdWJsaWMgU1ZHUGF0aFNlZ0FyYyB7CiAg
ICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQXJjUmVsPiBj
cmVhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgcjEsIGZsb2F0IHIyLCBmbG9hdCBhbmdsZSwg
Ym9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdBcmNSZWwoeCwgeSwgcjEsIHIyLCBhbmds
ZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcpKTsKICAgICAgICAgfQotICAgICAgICB2aXJ0dWFs
IH5TVkdQYXRoU2VnQXJjUmVsKCk7CiAKICAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBw
YXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfQVJDX1JFTDsgfQogICAgICAgICB2
aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gImEiOyB9
Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoImEgJS42bGcgJS42bGcgJS42bGcgJWQgJWQgJS42bGcgJS42bGciLCBtX3IxLCBt
X3IyLCBtX2FuZ2xlLCBtX2xhcmdlQXJjRmxhZywgbV9zd2VlcEZsYWcsIG1feCwgbV95KTsgfQot
Ci0gICAgICAgIHZvaWQgc2V0WChmbG9hdCB4KTsKLSAgICAgICAgZmxvYXQgeCgpIGNvbnN0Owot
Ci0gICAgICAgIHZvaWQgc2V0WShmbG9hdCB5KTsKLSAgICAgICAgZmxvYXQgeSgpIGNvbnN0Owot
Ci0gICAgICAgIHZvaWQgc2V0UjEoZmxvYXQgcjEpOwotICAgICAgICBmbG9hdCByMSgpIGNvbnN0
OwotCi0gICAgICAgIHZvaWQgc2V0UjIoZmxvYXQgcjIpOwotICAgICAgICBmbG9hdCByMigpIGNv
bnN0OwotCi0gICAgICAgIHZvaWQgc2V0QW5nbGUoZmxvYXQgYW5nbGUpOwotICAgICAgICBmbG9h
dCBhbmdsZSgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0TGFyZ2VBcmNGbGFnKGJvb2wgbGFy
Z2VBcmNGbGFnKTsKLSAgICAgICAgYm9vbCBsYXJnZUFyY0ZsYWcoKSBjb25zdDsKLQotICAgICAg
ICB2b2lkIHNldFN3ZWVwRmxhZyhib29sIHN3ZWVwRmxhZyk7Ci0gICAgICAgIGJvb2wgc3dlZXBG
bGFnKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTVkdQYXRoU2VnQXJjUmVsKGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHIxLCBmbG9hdCByMiwgZmxvYXQgYW5nbGUsIGJvb2wgbGFy
Z2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZyk7Ci0KLSAgICAgICAgZmxvYXQgbV94OwotICAgICAg
ICBmbG9hdCBtX3k7Ci0gICAgICAgIGZsb2F0IG1fcjE7Ci0gICAgICAgIGZsb2F0IG1fcjI7Ci0g
ICAgICAgIGZsb2F0IG1fYW5nbGU7Ci0KLSAgICAgICAgYm9vbCBtX2xhcmdlQXJjRmxhZyA6IDE7
Ci0gICAgICAgIGJvb2wgbV9zd2VlcEZsYWcgOiAxOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuY3BwCShyZXZp
c2lvbiAzNDAzMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gICAg
ICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Cisg
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAt
MjUsMTYxICsyNSwxNiBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0N1
cnZldG9DdWJpYy5oIgogCi0jaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnM6OlNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBmbG9hdCB4
MiwgZmxvYXQgeTIpCi0gICAgOiBTVkdQYXRoU2VnKCkKLSAgICAsIG1feCh4KQotICAgICwgbV95
KHkpCi0gICAgLCBtX3gxKHgxKQotICAgICwgbV95MSh5MSkKLSAgICAsIG1feDIoeDIpCi0gICAg
LCBtX3kyKHkyKQotewotfQotCi1TVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzOjp+U1ZHUGF0aFNl
Z0N1cnZldG9DdWJpY0FicygpCisgICAgOiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljKHgsIHksIHgx
LCB5MSwgeDIsIHkyKQogewogfQogCi12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnM6OnNl
dFgoZmxvYXQgeCkKLXsKLSAgICBtX3ggPSB4OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0
b0N1YmljQWJzOjp4KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV94OwotfQotCi12b2lkIFNWR1Bh
dGhTZWdDdXJ2ZXRvQ3ViaWNBYnM6OnNldFkoZmxvYXQgeSkKLXsKLSAgICBtX3kgPSB5OwotfQot
Ci1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzOjp5KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV95OwotfQotCi12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnM6OnNldFgxKGZsb2F0
IHgxKQotewotICAgIG1feDEgPSB4MTsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJp
Y0Ficzo6eDEoKSBjb25zdAotewotICAgIHJldHVybiBtX3gxOwotfQotCi12b2lkIFNWR1BhdGhT
ZWdDdXJ2ZXRvQ3ViaWNBYnM6OnNldFkxKGZsb2F0IHkxKQotewotICAgIG1feTEgPSB5MTsKLX0K
LQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficzo6eTEoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3kxOwotfQotCi12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnM6OnNldFgyKGZs
b2F0IHgyKQotewotICAgIG1feDIgPSB4MjsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY0Ficzo6eDIoKSBjb25zdAotewotICAgIHJldHVybiBtX3gyOwotfQotCi12b2lkIFNWR1Bh
dGhTZWdDdXJ2ZXRvQ3ViaWNBYnM6OnNldFkyKGZsb2F0IHkyKQotewotICAgIG1feTIgPSB5MjsK
LX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficzo6eTIoKSBjb25zdAotewotICAg
IHJldHVybiBtX3kyOwotfQotCi0KLQotCiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsOjpTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5
MSwgZmxvYXQgeDIsIGZsb2F0IHkyKQotICAgIDogU1ZHUGF0aFNlZygpCi0gICAgLCBtX3goeCkK
LSAgICAsIG1feSh5KQotICAgICwgbV94MSh4MSkKLSAgICAsIG1feTEoeTEpCi0gICAgLCBtX3gy
KHgyKQotICAgICwgbV95Mih5MikKLXsKLX0KLQotU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbDo6
flNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwoKQotewotfQotCi12b2lkIFNWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNSZWw6OnNldFgoZmxvYXQgeCkKLXsKLSAgICBtX3ggPSB4OwotfQotCi1mbG9hdCBT
VkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsOjp4KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV94Owot
fQotCi12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw6OnNldFkoZmxvYXQgeSkKLXsKLSAg
ICBtX3kgPSB5OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsOjp5KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV95OwotfQotCi12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNS
ZWw6OnNldFgxKGZsb2F0IHgxKQotewotICAgIG1feDEgPSB4MTsKLX0KLQotZmxvYXQgU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY1JlbDo6eDEoKSBjb25zdAotewotICAgIHJldHVybiBtX3gxOwotfQot
Ci12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw6OnNldFkxKGZsb2F0IHkxKQotewotICAg
IG1feTEgPSB5MTsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbDo6eTEoKSBj
b25zdAotewotICAgIHJldHVybiBtX3kxOwotfQotCi12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNSZWw6OnNldFgyKGZsb2F0IHgyKQotewotICAgIG1feDIgPSB4MjsKLX0KLQotZmxvYXQgU1ZH
UGF0aFNlZ0N1cnZldG9DdWJpY1JlbDo6eDIoKSBjb25zdAotewotICAgIHJldHVybiBtX3gyOwot
fQotCi12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw6OnNldFkyKGZsb2F0IHkyKQotewot
ICAgIG1feTIgPSB5MjsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbDo6eTIo
KSBjb25zdAorICAgIDogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpYyh4LCB5LCB4MSwgeTEsIHgyLCB5
MikKIHsKLSAgICByZXR1cm4gbV95MjsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWMuaAkocmV2aXNpb24gMzQwMzApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
Q3VydmV0b0N1YmljLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBL
REUgcHJvamVjdAogCkBAIC0yOCw0MCArMjgsMzIgQEAKICNpbmNsdWRlICJTVkdQYXRoU2VnLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
QWJzIDogcHVibGljIFNWR1BhdGhTZWcgeyAKKworICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRv
Q3ViaWMgOiBwdWJsaWMgU1ZHUGF0aFNlZyB7IAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficz4gY3JlYXRlKGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeDIsIGZsb2F0IHkyKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNB
YnMoeCwgeSwgeDEsIHkxLCB4MiwgeTIpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
dmlydHVhbCB+U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicygpOworICAgICAgICBTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQg
eDIsIGZsb2F0IHkyKSA6IFNWR1BhdGhTZWcoKSAsIG1feCh4KSAsIG1feSh5KSAsIG1feDEoeDEp
ICwgbV95MSh5MSkgLCBtX3gyKHgyKSAsIG1feTIoeTIpIHt9CiAKLSAgICAgICAgdmlydHVhbCB1
bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfQ1VSVkVU
T19DVUJJQ19BQlM7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRl
cigpIGNvbnN0IHsgcmV0dXJuICJDIjsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJDICUuNmxnICUuNmxnICUuNmxnICUu
NmxnICUuNmxnICUuNmxnIiwgbV94MSwgbV95MSwgbV94MiwgbV95MiwgbV94LCBtX3kpOyB9Cisg
ICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gcGF0aFNlZ1R5
cGVBc0xldHRlcigpICsgU3RyaW5nOjpmb3JtYXQoIiAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAl
LjZsZyAlLjZsZyIsIG1feDEsIG1feTEsIG1feDIsIG1feTIsIG1feCwgbV95KTsgfQogCi0gICAg
ICAgIHZvaWQgc2V0WChmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHgoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRYKGZsb2F0IHgpIHsgbV94ID0geDsgfQorICAgICAgICBmbG9hdCB4KCkgY29uc3Qg
eyByZXR1cm4gbV94OyB9CiAKLSAgICAgICAgdm9pZCBzZXRZKGZsb2F0KTsKLSAgICAgICAgZmxv
YXQgeSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFkoZmxvYXQgeSkgeyBtX3kgPSB5OyB9Cisg
ICAgICAgIGZsb2F0IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KIAotICAgICAgICB2b2lkIHNl
dFgxKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeDEoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRY
MShmbG9hdCB4MSkgeyBtX3gxID0geDE7IH0KKyAgICAgICAgZmxvYXQgeDEoKSBjb25zdCB7IHJl
dHVybiBtX3gxOyB9CiAKLSAgICAgICAgdm9pZCBzZXRZMShmbG9hdCk7Ci0gICAgICAgIGZsb2F0
IHkxKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0WTEoZmxvYXQgeTEpIHsgbV95MSA9IHkxOyB9
CisgICAgICAgIGZsb2F0IHkxKCkgY29uc3QgeyByZXR1cm4gbV95MTsgfQogCi0gICAgICAgIHZv
aWQgc2V0WDIoZmxvYXQpOwotICAgICAgICBmbG9hdCB4MigpIGNvbnN0OworICAgICAgICB2b2lk
IHNldFgyKGZsb2F0IHgyKSB7IG1feDIgPSB4MjsgfQorICAgICAgICBmbG9hdCB4MigpIGNvbnN0
IHsgcmV0dXJuIG1feDI7IH0KIAotICAgICAgICB2b2lkIHNldFkyKGZsb2F0KTsKLSAgICAgICAg
ZmxvYXQgeTIoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRZMihmbG9hdCB5MikgeyBtX3kyID0g
eTI7IH0KKyAgICAgICAgZmxvYXQgeTIoKSBjb25zdCB7IHJldHVybiBtX3kyOyB9CiAKICAgICBw
cml2YXRlOgotICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzKGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeDIsIGZsb2F0IHkyKTsKLQogICAgICAgICBm
bG9hdCBtX3g7CiAgICAgICAgIGZsb2F0IG1feTsKICAgICAgICAgZmxvYXQgbV94MTsKQEAgLTcw
LDQ1ICs2MiwzMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IG1feTI7CiAg
ICAgfTsKIAotICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwgOiBwdWJsaWMgU1ZH
UGF0aFNlZyB7IAorICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgOiBwdWJsaWMg
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpYyB7IAorICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0Ficz4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0
IHksIGZsb2F0IHgxLCBmbG9hdCB5MSwgZmxvYXQgeDIsIGZsb2F0IHkyKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMo
eCwgeSwgeDEsIHkxLCB4MiwgeTIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdW5z
aWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9f
Q1VCSUNfQUJTOyB9CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIo
KSBjb25zdCB7IHJldHVybiAiQyI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFNWR1BhdGhT
ZWdDdXJ2ZXRvQ3ViaWNBYnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxLCBm
bG9hdCB4MiwgZmxvYXQgeTIpOworICAgIH07CisKKyAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0
b0N1YmljUmVsIDogcHVibGljIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWMgeyAKICAgICBwdWJsaWM6
CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWw+IGNy
ZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHgyLCBmbG9h
dCB5MikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRo
U2VnQ3VydmV0b0N1YmljUmVsKHgsIHksIHgxLCB5MSwgeDIsIHkyKSk7Ci0gICAgICAgIH0gICAg
ICAgIAotICAgICAgICB2aXJ0dWFsIH5TVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsKCk7CisgICAg
ICAgIH0KIAogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29u
c3QgeyByZXR1cm4gUEFUSFNFR19DVVJWRVRPX0NVQklDX1JFTDsgfQogICAgICAgICB2aXJ0dWFs
IFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gImMiOyB9Ci0gICAg
ICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nOjpmb3Jt
YXQoImMgJS42bGcgJS42bGcgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBtX3gxLCBtX3kxLCBt
X3gyLCBtX3kyLCBtX3gsIG1feSk7IH0KLQotICAgICAgICB2b2lkIHNldFgoZmxvYXQpOwotICAg
ICAgICBmbG9hdCB4KCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRZKGZsb2F0KTsKLSAgICAg
ICAgZmxvYXQgeSgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0WDEoZmxvYXQpOwotICAgICAg
ICBmbG9hdCB4MSgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0WTEoZmxvYXQpOwotICAgICAg
ICBmbG9hdCB5MSgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0WDIoZmxvYXQpOwotICAgICAg
ICBmbG9hdCB4MigpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0WTIoZmxvYXQpOwotICAgICAg
ICBmbG9hdCB5MigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHUGF0aFNlZ0N1
cnZldG9DdWJpY1JlbChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0
IHgyLCBmbG9hdCB5Mik7Ci0KLSAgICAgICAgZmxvYXQgbV94OwotICAgICAgICBmbG9hdCBtX3k7
Ci0gICAgICAgIGZsb2F0IG1feDE7Ci0gICAgICAgIGZsb2F0IG1feTE7Ci0gICAgICAgIGZsb2F0
IG1feDI7Ci0gICAgICAgIGZsb2F0IG1feTI7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aC5j
cHAJKHJldmlzaW9uIDM0MDMwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJp
Y1Ntb290aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
cHJvamVjdAogCkBAIC0yNCwxMTYgKzI0LDE2IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRl
ICJTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmgiCiAKLSNpbmNsdWRlICJTVkdTdHlsZWRF
bGVtZW50LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHUGF0aFNlZ0N1cnZldG9DdWJp
Y1Ntb290aEFiczo6U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyhmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB4MiwgZmxvYXQgeTIpCi0gICAgOiBTVkdQYXRoU2VnKCkKLSAgICAsIG1feCh4
KQotICAgICwgbV95KHkpCi0gICAgLCBtX3gyKHgyKQotICAgICwgbV95Mih5MikKLXsKLX0KLQot
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFiczo6flNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNT
bW9vdGhBYnMoKQorICAgIDogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCh4LCB5LCB4Miwg
eTIpCiB7CiB9CiAKLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFiczo6c2V0WChm
bG9hdCB4KQotewotICAgIG1feCA9IHg7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNTbW9vdGhBYnM6OngoKSBjb25zdAotewotICAgIHJldHVybiBtX3g7Ci19Ci0KLXZvaWQgU1ZH
UGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFiczo6c2V0WShmbG9hdCB5KQotewotICAgIG1feSA9
IHk7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnM6OnkoKSBjb25z
dAotewotICAgIHJldHVybiBtX3k7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Nt
b290aEFiczo6c2V0WDIoZmxvYXQgeDIpCi17Ci0gICAgbV94MiA9IHgyOwotfQotCi1mbG9hdCBT
VkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzOjp4MigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1feDI7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFiczo6c2V0WTIo
ZmxvYXQgeTIpCi17Ci0gICAgbV95MiA9IHkyOwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0
b0N1YmljU21vb3RoQWJzOjp5MigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feTI7Ci19Ci0KLQot
CiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsOjpTVkdQYXRoU2VnQ3VydmV0b0N1Ymlj
U21vb3RoUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgyLCBmbG9hdCB5MikKLSAgICA6IFNW
R1BhdGhTZWcoKQotICAgICwgbV94KHgpCi0gICAgLCBtX3koeSkKLSAgICAsIG1feDIoeDIpCi0g
ICAgLCBtX3kyKHkyKQotewotfQotCi1TVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsOjp+
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCgpCi17Ci19Ci0KLXZvaWQgU1ZHUGF0aFNl
Z0N1cnZldG9DdWJpY1Ntb290aFJlbDo6c2V0WChmbG9hdCB4KQotewotICAgIG1feCA9IHg7Ci19
Ci0KLWZsb2F0IFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw6OngoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3g7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJl
bDo6c2V0WShmbG9hdCB5KQotewotICAgIG1feSA9IHk7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdD
dXJ2ZXRvQ3ViaWNTbW9vdGhSZWw6OnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3k7Ci19Ci0K
LXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbDo6c2V0WDIoZmxvYXQgeDIpCi17
Ci0gICAgbV94MiA9IHgyOwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3Ro
UmVsOjp4MigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feDI7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNl
Z0N1cnZldG9DdWJpY1Ntb290aFJlbDo6c2V0WTIoZmxvYXQgeTIpCi17Ci0gICAgbV95MiA9IHky
OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsOjp5MigpIGNvbnN0
CisgICAgOiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoKHgsIHksIHgyLCB5MikKIHsKLSAg
ICByZXR1cm4gbV95MjsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZl
dG9DdWJpY1Ntb290aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNTbW9vdGguaAkocmV2aXNpb24gMzQwMzApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAv
KgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0yOSw2NCArMjksNTIgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0gICAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyA6IHB1
YmxpYyBTVkdQYXRoU2VnIHsKKyAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3Ro
IDogcHVibGljIFNWR1BhdGhTZWcgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicz4gY3JlYXRlKGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHgyLCBmbG9hdCB5MikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhT
ZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhBYnMoeCwgeSwgeDIsIHkyKSk7IH0KLSAgICAgICAgdmlydHVh
bCB+U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicygpOworICAgICAgICBTVkdQYXRoU2Vn
Q3VydmV0b0N1YmljU21vb3RoKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgyLCBmbG9hdCB5MikK
KyAgICAgICAgOiBTVkdQYXRoU2VnKCksIG1feCh4KSwgbV95KHkpLCBtX3gyKHgyKSwgbV95Mih5
KSB7fQogCi0gICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25z
dCB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCUzsgfQotICAgICAgICB2
aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gIlMiOyB9
Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIlMgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBtX3gyLCBtX3kyLCBtX3gsIG1f
eSk7IH0KKyAgICAgICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBw
YXRoU2VnVHlwZUFzTGV0dGVyKCkgKyBTdHJpbmc6OmZvcm1hdCgiICUuNmxnICUuNmxnICUuNmxn
ICUuNmxnIiwgbV94MiwgbV95MiwgbV94LCBtX3kpOyB9CiAKLSAgICAgICAgdm9pZCBzZXRYKGZs
b2F0KTsKLSAgICAgICAgZmxvYXQgeCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFgoZmxvYXQg
eCkgeyBtX3ggPSB4OyB9CisgICAgICAgIGZsb2F0IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0K
IAotICAgICAgICB2b2lkIHNldFkoZmxvYXQpOwotICAgICAgICBmbG9hdCB5KCkgY29uc3Q7Cisg
ICAgICAgIHZvaWQgc2V0WShmbG9hdCB5KSB7IG1feSA9IHk7IH0KKyAgICAgICAgZmxvYXQgeSgp
IGNvbnN0IHsgcmV0dXJuIG1feTsgfQogCi0gICAgICAgIHZvaWQgc2V0WDIoZmxvYXQpOwotICAg
ICAgICBmbG9hdCB4MigpIGNvbnN0OworICAgICAgICB2b2lkIHNldFgyKGZsb2F0IHgyKSB7IG1f
eDIgPSB4MjsgfQorICAgICAgICBmbG9hdCB4MigpIGNvbnN0IHsgcmV0dXJuIG1feDI7IH0KIAot
ICAgICAgICB2b2lkIHNldFkyKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeTIoKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXRZMihmbG9hdCB5MikgeyBtX3kyID0geTI7IH0KKyAgICAgICAgZmxvYXQg
eTIoKSBjb25zdCB7IHJldHVybiBtX3kyOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgyLCBm
bG9hdCB5Mik7Ci0gICAgICAgIAogICAgICAgICBmbG9hdCBtX3g7CiAgICAgICAgIGZsb2F0IG1f
eTsKICAgICAgICAgZmxvYXQgbV94MjsKICAgICAgICAgZmxvYXQgbV95MjsKICAgICB9OwogCi0g
ICAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCA6IHB1YmxpYyBTVkdQYXRo
U2VnIHsgCisgICAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyA6IHB1Ymxp
YyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoIHsgCiAgICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsPiBjcmVhdGUo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDIsIGZsb2F0IHkyKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCh4LCB5LCB4MiwgeTIpKTsgfSAgICAg
ICAgCi0gICAgICAgIHZpcnR1YWwgflNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwoKTsK
LQotICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUw7IH0KLSAgICAgICAgdmlydHVh
bCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJzIjsgfQotICAg
ICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZzo6Zm9y
bWF0KCJzICUuNmxnICUuNmxnICUuNmxnICUuNmxnIiwgbV94MiwgbV95MiwgbV94LCBtX3kpOyB9
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhB
YnM+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MiwgZmxvYXQgeTIpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKHgsIHksIHgyLCB5
MikpOyB9CiAKLSAgICAgICAgdm9pZCBzZXRYKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeCgpIGNv
bnN0OworICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3Qg
eyByZXR1cm4gUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlM7IH0KKyAgICAgICAgdmly
dHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJTIjsgfQog
Ci0gICAgICAgIHZvaWQgc2V0WShmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHkoKSBjb25zdDsKKyAg
ICBwcml2YXRlOgorICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzKGZsb2F0
IHgsIGZsb2F0IHksIGZsb2F0IHgyLCBmbG9hdCB5Mik7CisgICAgfTsKIAotICAgICAgICB2b2lk
IHNldFgyKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeDIoKSBjb25zdDsKKyAgICBjbGFzcyBTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsIDogcHVibGljIFNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNTbW9vdGggeyAKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1Bh
dGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWw+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9h
dCB4MiwgZmxvYXQgeTIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnQ3VydmV0b0N1
YmljU21vb3RoUmVsKHgsIHksIHgyLCB5MikpOyB9CiAKLSAgICAgICAgdm9pZCBzZXRZMihmbG9h
dCk7Ci0gICAgICAgIGZsb2F0IHkyKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdW5zaWduZWQg
c2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNf
U01PT1RIX1JFTDsgfQorICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVy
KCkgY29uc3QgeyByZXR1cm4gInMiOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBTVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgyLCBmbG9h
dCB5Mik7Ci0KLSAgICAgICAgZmxvYXQgbV94OwotICAgICAgICBmbG9hdCBtX3k7Ci0gICAgICAg
IGZsb2F0IG1feDI7Ci0gICAgICAgIGZsb2F0IG1feTI7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
LmNwcAkocmV2aXNpb24gMzQwMzApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
cHJvamVjdAogCkBAIC0yNSwxMTcgKzI1LDE2IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRl
ICJTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYy5oIgogCi0jaW5jbHVkZSAiU1ZHU3R5bGVkRWxl
bWVudC5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljQWJzOjpTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyhmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB4MSwgZmxvYXQgeTEpCi0gICAgOiBTVkdQYXRoU2VnKCkKLSAgICAsIG1feCh4KQotICAg
ICwgbV95KHkpCi0gICAgLCBtX3gxKHgxKQotICAgICwgbV95MSh5MSkKLXsKLX0KLQotU1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnM6On5TVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficygp
CisgICAgOiBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyh4LCB5LCB4MSwgeTEpCiB7CiB9CiAK
LXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnM6OnNldFgoZmxvYXQgeCkKLXsKLSAg
ICBtX3ggPSB4OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficzo6eCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feDsKLX0KLQotdm9pZCBTVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpY0Ficzo6c2V0WShmbG9hdCB5KQotewotICAgIG1feSA9IHk7Ci19Ci0KLWZsb2F0IFNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzOjp5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV95
OwotfQotCi12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzOjpzZXRYMShmbG9hdCB4
MSkKLXsKLSAgICBtX3gxID0geDE7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljQWJzOjp4MSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1feDE7Ci19Ci0KLXZvaWQgU1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnM6OnNldFkxKGZsb2F0IHkxKQotewotICAgIG1feTEgPSB5
MTsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnM6OnkxKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV95MTsKLX0KLQotCi0KLQogU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0
aWNSZWw6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHgxLCBmbG9hdCB5MSkKLSAgICA6IFNWR1BhdGhTZWcoKQotICAgICwgbV94KHgpCi0gICAg
LCBtX3koeSkKLSAgICAsIG1feDEoeDEpCi0gICAgLCBtX3kxKHkxKQotewotfQotCi1TVkdQYXRo
U2VnQ3VydmV0b1F1YWRyYXRpY1JlbDo6flNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsKCkK
LXsKLX0KLQotdm9pZCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbDo6c2V0WChmbG9hdCB4
KQotewotICAgIG1feCA9IHg7Ci19Ci0KLWZsb2F0IFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
UmVsOjp4KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV94OwotfQotCi12b2lkIFNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljUmVsOjpzZXRZKGZsb2F0IHkpCi17Ci0gICAgbV95ID0geTsKLX0KLQot
ZmxvYXQgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWw6OnkoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3k7Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWw6OnNldFgx
KGZsb2F0IHgxKQotewotICAgIG1feDEgPSB4MTsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNSZWw6OngxKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV94MTsKLX0KLQotdm9p
ZCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbDo6c2V0WTEoZmxvYXQgeTEpCi17Ci0gICAg
bV95MSA9IHkxOwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbDo6eTEo
KSBjb25zdAorICAgIDogU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMoeCwgeSwgeDEsIHkxKQog
ewotICAgIHJldHVybiBtX3kxOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljLmgJKHJldmlzaW9uIDM0MDMwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI5LDY0ICsyOSw1MiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicyA6IHB1Ymxp
YyBTVkdQYXRoU2VnIHsgCisgICAgY2xhc3MgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWMgOiBw
dWJsaWMgU1ZHUGF0aFNlZyB7IAogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnM+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB4MSwgZmxvYXQgeTEpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY0Ficyh4LCB5LCB4MSwgeTEpKTsgfQotICAgICAgICB2aXJ0dWFsIH5TVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpY0FicygpOworICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpYyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxvYXQgeTEpCisgICAgICAgIDog
U1ZHUGF0aFNlZygpLCBtX3goeCksIG1feSh5KSwgbV94MSh4MSksIG1feTEoeTEpIHt9CiAKLSAg
ICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5n
IHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAiUSI7IH0KLSAgICAgICAgdmly
dHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmc6OmZvcm1hdCgiUSAl
LjZsZyAlLjZsZyAlLjZsZyAlLjZsZyIsIG1feDEsIG1feTEsIG1feCwgbV95KTsgfQorICAgICAg
ICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIHBhdGhTZWdUeXBlQXNM
ZXR0ZXIoKSArIFN0cmluZzo6Zm9ybWF0KCIgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBtX3gx
LCBtX3kxLCBtX3gsIG1feSk7IH0KIAotICAgICAgICB2b2lkIHNldFgoZmxvYXQpOwotICAgICAg
ICBmbG9hdCB4KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0WChmbG9hdCB4KSB7IG1feCA9IHg7
IH0KKyAgICAgICAgZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQogCi0gICAgICAgIHZv
aWQgc2V0WShmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHkoKSBjb25zdDsKKyAgICAgICAgdm9pZCBz
ZXRZKGZsb2F0IHkpIHsgbV95ID0geTsgfQorICAgICAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1
cm4gbV95OyB9CiAKLSAgICAgICAgdm9pZCBzZXRYMShmbG9hdCk7Ci0gICAgICAgIGZsb2F0IHgx
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0WDEoZmxvYXQgeDEpIHsgbV94MSA9IHgxOyB9Cisg
ICAgICAgIGZsb2F0IHgxKCkgY29uc3QgeyByZXR1cm4gbV94MTsgfQogCi0gICAgICAgIHZvaWQg
c2V0WTEoZmxvYXQpOwotICAgICAgICBmbG9hdCB5MSgpIGNvbnN0OworICAgICAgICB2b2lkIHNl
dFkxKGZsb2F0IHkxKSB7IG1feTEgPSB5MTsgfQorICAgICAgICBmbG9hdCB5MSgpIGNvbnN0IHsg
cmV0dXJuIG1feTE7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR1BhdGhTZWdDdXJ2ZXRv
UXVhZHJhdGljQWJzKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSk7Ci0gICAg
ICAgIAogICAgICAgICBmbG9hdCBtX3g7CiAgICAgICAgIGZsb2F0IG1feTsKICAgICAgICAgZmxv
YXQgbV94MTsKICAgICAgICAgZmxvYXQgbV95MTsKICAgICB9OwogCi0gICAgY2xhc3MgU1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgOiBwdWJsaWMgU1ZHUGF0aFNlZyB7CisgICAgY2xhc3Mg
U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgOiBwdWJsaWMgU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWMgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWw+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4
MSwgZmxvYXQgeTEpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRy
YXRpY1JlbCh4LCB5LCB4MSwgeTEpKTsgfQotICAgICAgICB2aXJ0dWFsIH5TVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY1JlbCgpOwotCi0gICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0
aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTDsg
fQotICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyBy
ZXR1cm4gInEiOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gU3RyaW5nOjpmb3JtYXQoInEgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBtX3gxLCBt
X3kxLCBtX3gsIG1feSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1
cnZldG9RdWFkcmF0aWNBYnM+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB4MSwgZmxv
YXQgeTEpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Fi
cyh4LCB5LCB4MSwgeTEpKTsgfQogCi0gICAgICAgIHZvaWQgc2V0WChmbG9hdCk7Ci0gICAgICAg
IGZsb2F0IHgoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2Vn
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfQUJTOyB9Cisg
ICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVy
biAiUSI7IH0KIAotICAgICAgICB2b2lkIHNldFkoZmxvYXQpOwotICAgICAgICBmbG9hdCB5KCkg
Y29uc3Q7CisgICAgcHJpdmF0ZToKKyAgICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNB
YnMoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeDEsIGZsb2F0IHkxKTsKKyAgICB9OwogCi0gICAg
ICAgIHZvaWQgc2V0WDEoZmxvYXQpOwotICAgICAgICBmbG9hdCB4MSgpIGNvbnN0OworICAgIGNs
YXNzIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsIDogcHVibGljIFNWR1BhdGhTZWdDdXJ2
ZXRvUXVhZHJhdGljIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsPiBjcmVhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeDEsIGZsb2F0IHkxKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNSZWwoeCwgeSwgeDEsIHkxKSk7IH0KIAotICAgICAgICB2b2lkIHNldFkxKGZsb2F0
KTsKLSAgICAgICAgZmxvYXQgeTEoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBz
aG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFU
SUNfUkVMOyB9CisgICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBj
b25zdCB7IHJldHVybiAicSI7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljUmVsKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHgxLCBmbG9hdCB5MSk7
Ci0KLSAgICAgICAgZmxvYXQgbV94OwotICAgICAgICBmbG9hdCBtX3k7Ci0gICAgICAgIGZsb2F0
IG1feDE7Ci0gICAgICAgIGZsb2F0IG1feTE7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
U21vb3RoLmNwcAkocmV2aXNpb24gMzQwMzApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY1Ntb290aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAv
KgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0yNSw3MiArMjUsMTYgQEAKICNpZiBFTkFCTEUoU1ZH
KQogI2luY2x1ZGUgIlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoLmgiCiAKLSNpbmNs
dWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnM6OlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
U21vb3RoQWJzKGZsb2F0IHgsIGZsb2F0IHkpCi0gICAgOiBTVkdQYXRoU2VnKCkKLSAgICAsIG1f
eCh4KQotICAgICwgbV95KHkpCisgICAgOiBTVkdQYXRoU2VnU2luZ2xlQ29vcmQoeCwgeSkKIHsK
IH0KIAotU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnM6On5TVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY1Ntb290aEFicygpCi17Ci19Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNTbW9vdGhBYnM6OnNldFgoZmxvYXQgeCkKLXsKLSAgICBtX3ggPSB4OwotfQotCi1m
bG9hdCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFiczo6eCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1feDsKLX0KLQotdm9pZCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290
aEFiczo6c2V0WShmbG9hdCB5KQotewotICAgIG1feSA9IHk7Ci19Ci0KLWZsb2F0IFNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzOjp5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV95
OwotfQotCi0KLQogU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWw6OlNWR1BhdGhT
ZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsKGZsb2F0IHgsIGZsb2F0IHkpCi0gICAgOiBTVkdQ
YXRoU2VnKCkKLSAgICAsIG1feCh4KQotICAgICwgbV95KHkpCi17Ci19Ci0KLVNWR1BhdGhTZWdD
dXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsOjp+U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9v
dGhSZWwoKQotewotfQotCi12b2lkIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVs
OjpzZXRYKGZsb2F0IHgpCi17Ci0gICAgbV94ID0geDsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ0N1
cnZldG9RdWFkcmF0aWNTbW9vdGhSZWw6OngoKSBjb25zdAotewotICAgIHJldHVybiBtX3g7Ci19
Ci0KLXZvaWQgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWw6OnNldFkoZmxvYXQg
eSkKLXsKLSAgICBtX3kgPSB5OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRp
Y1Ntb290aFJlbDo6eSgpIGNvbnN0CisgICAgOiBTVkdQYXRoU2VnU2luZ2xlQ29vcmQoeCwgeSkK
IHsKLSAgICByZXR1cm4gbV95OwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpY1Ntb290aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoLmgJKHJldmlzaW9uIDM0MDMwKQorKysgV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGguaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI5LDQ4ICsyOSwyNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdQYXRoU2VnQ3VydmV0b1F1
YWRyYXRpY1Ntb290aEFicyA6IHB1YmxpYyBTVkdQYXRoU2VnIHsKKyAgICBjbGFzcyBTVkdQYXRo
U2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyA6IHB1YmxpYyBTVkdQYXRoU2VnU2luZ2xlQ29v
cmQgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0N1
cnZldG9RdWFkcmF0aWNTbW9vdGhBYnM+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5KSB7IHJldHVy
biBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMoeCwgeSkp
OyB9Ci0gICAgICAgIHZpcnR1YWwgflNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJz
KCk7CiAKICAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCUzsgfQogICAgICAg
ICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gIlQi
OyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoIlQgJS42bGcgJS42bGciLCBtX3gsIG1feSk7IH0KLQotICAgICAgICB2b2lk
IHNldFgoZmxvYXQpOwotICAgICAgICBmbG9hdCB4KCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBz
ZXRZKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeSgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMoZmxvYXQgeCwgZmxvYXQg
eSk7Ci0KLSAgICAgICAgZmxvYXQgbV94OwotICAgICAgICBmbG9hdCBtX3k7CiAgICAgfTsKIAot
ICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsIDogcHVibGljIFNW
R1BhdGhTZWcgeworICAgIGNsYXNzIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVs
IDogcHVibGljIFNWR1BhdGhTZWdTaW5nbGVDb29yZCB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbD4gY3Jl
YXRlKGZsb2F0IHgsIGZsb2F0IHkpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY1Ntb290aFJlbCh4LCB5KSk7IH0KLSAgICAgICAgdmlydHVhbCB+U1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwoKTsKIAogICAgICAgICB2aXJ0dWFsIHVuc2ln
bmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19DVVJWRVRPX1FV
QURSQVRJQ19TTU9PVEhfUkVMOyB9CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBl
QXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAidCI7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmc6OmZvcm1hdCgidCAlLjZsZyAlLjZsZyIs
IG1feCwgbV95KTsgfQotCi0gICAgICAgIHZvaWQgc2V0WChmbG9hdCk7Ci0gICAgICAgIGZsb2F0
IHgoKSBjb25zdDsKLQotICAgICAgICB2b2lkIHNldFkoZmxvYXQpOwotICAgICAgICBmbG9hdCB5
KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTVkdQYXRoU2VnQ3VydmV0b1F1YWRy
YXRpY1Ntb290aFJlbChmbG9hdCB4LCBmbG9hdCB5KTsKLQotICAgICAgICBmbG9hdCBtX3g7Ci0g
ICAgICAgIGZsb2F0IG1feTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdQYXRoU2VnTGluZXRvLmNwcAkocmV2aXNpb24gMzQwMzApCisrKyBXZWJDb3JlL3N2
Zy9TVkdQYXRoU2VnTGluZXRvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwOCBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0CiAKQEAgLTI1LDcwICsyNSwxNiBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAi
U1ZHUGF0aFNlZ0xpbmV0by5oIgogCi0jaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR1BhdGhTZWdMaW5ldG9BYnM6OlNWR1BhdGhTZWdMaW5l
dG9BYnMoZmxvYXQgeCwgZmxvYXQgeSkKLSAgICA6IFNWR1BhdGhTZWcoKQotICAgICwgbV94KHgp
Ci0gICAgLCBtX3koeSkKLXsKLX0KLQotU1ZHUGF0aFNlZ0xpbmV0b0Ficzo6flNWR1BhdGhTZWdM
aW5ldG9BYnMoKQotewotfQotCi12b2lkIFNWR1BhdGhTZWdMaW5ldG9BYnM6OnNldFgoZmxvYXQg
eCkKLXsKLSAgICBtX3ggPSB4OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnTGluZXRvQWJzOjp4KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV94OwotfQotCi12b2lkIFNWR1BhdGhTZWdMaW5ldG9BYnM6
OnNldFkoZmxvYXQgeSkKLXsKLSAgICBtX3kgPSB5OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnTGlu
ZXRvQWJzOjp5KCkgY29uc3QKKyAgICA6IFNWR1BhdGhTZWdTaW5nbGVDb29yZCh4LCB5KQogewot
ICAgIHJldHVybiBtX3k7CiB9CiAKIFNWR1BhdGhTZWdMaW5ldG9SZWw6OlNWR1BhdGhTZWdMaW5l
dG9SZWwoZmxvYXQgeCwgZmxvYXQgeSkKLSAgICA6IFNWR1BhdGhTZWcoKQotICAgICwgbV94KHgp
Ci0gICAgLCBtX3koeSkKLXsKLX0KLQotU1ZHUGF0aFNlZ0xpbmV0b1JlbDo6flNWR1BhdGhTZWdM
aW5ldG9SZWwoKQotewotfQotCi12b2lkIFNWR1BhdGhTZWdMaW5ldG9SZWw6OnNldFgoZmxvYXQg
eCkKLXsKLSAgICBtX3ggPSB4OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnTGluZXRvUmVsOjp4KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV94OwotfQotCi12b2lkIFNWR1BhdGhTZWdMaW5ldG9SZWw6
OnNldFkoZmxvYXQgeSkKLXsKLSAgICBtX3kgPSB5OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnTGlu
ZXRvUmVsOjp5KCkgY29uc3QKKyAgICA6IFNWR1BhdGhTZWdTaW5nbGVDb29yZCh4LCB5KQogewot
ICAgIHJldHVybiBtX3k7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaW5l
dG8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvLmgJKHJldmlz
aW9uIDM0MDMwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0by5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAg
ICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAK
ICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAtMjgsNDggKzI4
LDI3IEBACiAjaW5jbHVkZSAiU1ZHUGF0aFNlZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0g
ICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0b0FicyA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCisgICAg
Y2xhc3MgU1ZHUGF0aFNlZ0xpbmV0b0FicyA6IHB1YmxpYyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQg
eyAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5l
dG9BYnM+IGNyZWF0ZShmbG9hdCB4LCBmbG9hdCB5KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZH
UGF0aFNlZ0xpbmV0b0Ficyh4LCB5KSk7IH0KLSAgICAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZ0xp
bmV0b0FicygpOwogCiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUo
KSBjb25zdCB7IHJldHVybiBQQVRIU0VHX0xJTkVUT19BQlM7IH0KICAgICAgICAgdmlydHVhbCBT
dHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJMIjsgfQotICAgICAg
ICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0
KCJMICUuNmxnICUuNmxnIiwgbV94LCBtX3kpOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRYKGZsb2F0
KTsKLSAgICAgICAgZmxvYXQgeCgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0WShmbG9hdCk7
Ci0gICAgICAgIGZsb2F0IHkoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR1Bh
dGhTZWdMaW5ldG9BYnMoZmxvYXQgeCwgZmxvYXQgeSk7Ci0gICAgICAgIAotICAgICAgICBmbG9h
dCBtX3g7Ci0gICAgICAgIGZsb2F0IG1feTsKICAgICB9OwogCi0gICAgY2xhc3MgU1ZHUGF0aFNl
Z0xpbmV0b1JlbCA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCisgICAgY2xhc3MgU1ZHUGF0aFNlZ0xp
bmV0b1JlbCA6IHB1YmxpYyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQgeyAKICAgICBwdWJsaWM6CiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9SZWw+IGNyZWF0ZShmbG9h
dCB4LCBmbG9hdCB5KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0xpbmV0b1JlbCh4
LCB5KSk7IH0KLSAgICAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZ0xpbmV0b1JlbCgpOworCiAKICAg
ICAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IFBBVEhTRUdfTElORVRPX1JFTDsgfQogICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlw
ZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1cm4gImwiOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5n
IHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nOjpmb3JtYXQoImwgJS42bGcgJS42bGci
LCBtX3gsIG1feSk7IH0KLQotICAgICAgICB2b2lkIHNldFgoZmxvYXQpOwotICAgICAgICBmbG9h
dCB4KCkgY29uc3Q7Ci0KLSAgICAgICAgdm9pZCBzZXRZKGZsb2F0KTsKLSAgICAgICAgZmxvYXQg
eSgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b1JlbChm
bG9hdCB4LCBmbG9hdCB5KTsKLQotICAgICAgICBmbG9hdCBtX3g7Ci0gICAgICAgIGZsb2F0IG1f
eTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwuY3BwCShyZXZpc2lvbiAzNDAzMCkKKysrIFdlYkNv
cmUvc3ZnL1NWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAw
NCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI1LDUwICsyNSwxNiBAQAogI2lmIEVOQUJMRShT
VkcpCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwuaCIKIAotI2luY2x1ZGUg
IlNWR1N0eWxlZEVsZW1lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdQYXRoU2Vn
TGluZXRvSG9yaXpvbnRhbEFiczo6U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMoZmxvYXQg
eCkKLSAgICA6IFNWR1BhdGhTZWcoKQotICAgICwgbV94KHgpCi17Ci19Ci0KLVNWR1BhdGhTZWdM
aW5ldG9Ib3Jpem9udGFsQWJzOjp+U1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMoKQorICAg
IDogU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwoeCkKIHsKIH0KIAotdm9pZCBTVkdQYXRoU2Vn
TGluZXRvSG9yaXpvbnRhbEFiczo6c2V0WChmbG9hdCB4KQotewotICAgIG1feCA9IHg7Ci19Ci0K
LWZsb2F0IFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzOjp4KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV94OwotfQotCi0KLQogU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWw6OlNWR1Bh
dGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsKGZsb2F0IHgpCi0gICAgOiBTVkdQYXRoU2VnKCkKLSAg
ICAsIG1feCh4KQotewotfQotCi1TVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbDo6flNWR1Bh
dGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsKCkKLXsKLX0KLQotdm9pZCBTVkdQYXRoU2VnTGluZXRv
SG9yaXpvbnRhbFJlbDo6c2V0WChmbG9hdCB4KQotewotICAgIG1feCA9IHg7Ci19Ci0KLWZsb2F0
IFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsOjp4KCkgY29uc3QKKyAgICA6IFNWR1BhdGhT
ZWdMaW5ldG9Ib3Jpem9udGFsKHgpCiB7Ci0gICAgcmV0dXJuIG1feDsKIH0KIAogfQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbC5oCShyZXZpc2lvbiAzNDAzMCkK
KysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAog
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0yOSwzOSArMjks
MzkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0
b0hvcml6b250YWxBYnMgOiBwdWJsaWMgU1ZHUGF0aFNlZyB7CisgICAgY2xhc3MgU1ZHUGF0aFNl
Z0xpbmV0b0hvcml6b250YWwgOiBwdWJsaWMgU1ZHUGF0aFNlZyB7CisgICAgcHVibGljOgorICAg
ICAgICBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbChmbG9hdCB4KSA6IFNWR1BhdGhTZWcoKSwg
bV94KHgpIHt9CisKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgKyBTdHJpbmc6OmZvcm1hdCgiICUuNmxnIiwgbV94
KTsgfQorCisgICAgICAgIHZvaWQgc2V0WChmbG9hdCB4KSB7IG1feCA9IHg7IH0KKyAgICAgICAg
ZmxvYXQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
ZmxvYXQgbV94OworICAgIH07CisKKyAgICBjbGFzcyBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRh
bEFicyA6IHB1YmxpYyBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbCB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFicz4g
Y3JlYXRlKGZsb2F0IHgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnTGluZXRvSG9y
aXpvbnRhbEFicyh4KSk7IH0KLSAgICAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZ0xpbmV0b0hvcml6
b250YWxBYnMoKTsKIAogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBl
KCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlM7IH0KICAgICAg
ICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJI
IjsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZzo6Zm9ybWF0KCJIICUuNmxnIiwgbV94KTsgfQotCi0gICAgICAgIHZvaWQgc2V0WChmbG9h
dCk7Ci0gICAgICAgIGZsb2F0IHgoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFNW
R1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzKGZsb2F0IHgpOwotICAgICAgICBmbG9hdCBtX3g7
CiAgICAgfTsKIAotICAgIGNsYXNzIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsIDogcHVi
bGljIFNWR1BhdGhTZWcgeworICAgIGNsYXNzIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVs
IDogcHVibGljIFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsPiBjcmVh
dGUoZmxvYXQgeCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9u
dGFsUmVsKHgpKTsgfSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgflNWR1BhdGhTZWdMaW5ldG9I
b3Jpem9udGFsUmVsKCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5l
dG9Ib3Jpem9udGFsUmVsPiBjcmVhdGUoZmxvYXQgeCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNW
R1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsUmVsKHgpKTsgfQogCiAgICAgICAgIHZpcnR1YWwgdW5z
aWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRIU0VHX0xJTkVUT19I
T1JJWk9OVEFMX1JFTDsgfQogICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0
dGVyKCkgY29uc3QgeyByZXR1cm4gImgiOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nOjpmb3JtYXQoImggJS42bGciLCBtX3gpOyB9Ci0K
LSAgICAgICAgdm9pZCBzZXRYKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeCgpIGNvbnN0OwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxSZWwoZmxvYXQg
eCk7Ci0KLSAgICAgICAgZmxvYXQgbV94OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmNwcAkocmV2aXNp
b24gMzQwMzApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvVmVydGljYWwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gICAg
ICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Cisg
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAt
MjUsNTMgKzI1LDE3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlu
ZXRvVmVydGljYWwuaCIKIAotI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnM6OlNWR1BhdGhTZWdM
aW5ldG9WZXJ0aWNhbEFicyhmbG9hdCB5KQotICAgIDogU1ZHUGF0aFNlZygpCi0gICAgLCBtX3ko
eSkKLXsKLX0KLQotU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzOjp+U1ZHUGF0aFNlZ0xpbmV0
b1ZlcnRpY2FsQWJzKCkKLXsKLX0KLQotdm9pZCBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnM6
OnNldFkoZmxvYXQgeSkKLXsKLSAgICBtX3kgPSB5OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnTGlu
ZXRvVmVydGljYWxBYnM6OnkoKSBjb25zdAorICAgIDogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2Fs
KHkpCiB7Ci0gICAgcmV0dXJuIG1feTsKIH0KIAotCi0KLQogU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRp
Y2FsUmVsOjpTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwoZmxvYXQgeSkKLSAgICA6IFNWR1Bh
dGhTZWcoKQotICAgICwgbV95KHkpCi17Ci19Ci0KLVNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJl
bDo6flNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbCgpCisgICAgOiBTVkdQYXRoU2VnTGluZXRv
VmVydGljYWwoeSkKIHsKIH0KLQotdm9pZCBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWw6OnNl
dFkoZmxvYXQgeSkKLXsKLSAgICBtX3kgPSB5OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnTGluZXRv
VmVydGljYWxSZWw6OnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3k7Ci19Ci0KIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvVmVy
dGljYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvVmVydGlj
YWwuaAkocmV2aXNpb24gMzQwMzApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvVmVy
dGljYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9q
ZWN0CiAKQEAgLTI5LDQwICsyOSwzOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBj
bGFzcyBTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMgOiBwdWJsaWMgU1ZHUGF0aFNlZyB7Cisg
ICAgY2xhc3MgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIDogcHVibGljIFNWR1BhdGhTZWcgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsKGZsb2F0IHkpIDog
U1ZHUGF0aFNlZygpLCBtX3koeSkge30KKworICAgICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSArIFN0cmluZzo6Zm9ybWF0
KCIgJS42bGciLCBtX3kpOyB9CisKKyAgICAgICAgdm9pZCBzZXRZKGZsb2F0IHkpIHsgbV95ID0g
eTsgfQorICAgICAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBmbG9hdCBtX3k7CisgICAgfTsKKworICAgIGNsYXNzIFNWR1BhdGhTZWdM
aW5ldG9WZXJ0aWNhbEFicyA6IHB1YmxpYyBTVkdQYXRoU2VnTGluZXRvVmVydGljYWwgewogICAg
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpbmV0b1ZlcnRp
Y2FsQWJzPiBjcmVhdGUoZmxvYXQgeSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhdGhTZWdM
aW5ldG9WZXJ0aWNhbEFicyh5KSk7IH0KLSAgICAgICAgdmlydHVhbH5TVkdQYXRoU2VnTGluZXRv
VmVydGljYWxBYnMoKTsKIAogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdU
eXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19MSU5FVE9fVkVSVElDQUxfQUJTOyB9CiAgICAg
ICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAi
ViI7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBT
dHJpbmc6OmZvcm1hdCgiViAlLjZsZyIsIG1feSk7IH0KLQotICAgICAgICB2b2lkIHNldFkoZmxv
YXQpOwotICAgICAgICBmbG9hdCB5KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBT
VkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMoZmxvYXQgeSk7Ci0gICAgICAgIAotICAgICAgICBm
bG9hdCBtX3k7CiAgICAgfTsKIAotICAgIGNsYXNzIFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJl
bCA6IHB1YmxpYyBTVkdQYXRoU2VnIHsKKyAgICBjbGFzcyBTVkdQYXRoU2VnTGluZXRvVmVydGlj
YWxSZWwgOiBwdWJsaWMgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbD4gY3Jl
YXRlKGZsb2F0IHkpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnTGluZXRvVmVydGlj
YWxSZWwoeSkpOyB9Ci0gICAgICAgIHZpcnR1YWwgflNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJl
bCgpOwogCiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25z
dCB7IHJldHVybiBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUw7IH0KICAgICAgICAgdmlydHVh
bCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJ2IjsgfQotICAg
ICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZzo6Zm9y
bWF0KCJ2ICUuNmxnIiwgbV95KTsgfQotCi0gICAgICAgIHZvaWQgc2V0WShmbG9hdCk7Ci0gICAg
ICAgIGZsb2F0IHkoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR1BhdGhTZWdM
aW5ldG9WZXJ0aWNhbFJlbChmbG9hdCB5KTsKLQotICAgICAgICBmbG9hdCBtX3k7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ01v
dmV0by5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ01vdmV0by5jcHAJ
KHJldmlzaW9uIDM0MDMwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ01vdmV0by5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAg
ICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0y
NSw3NSArMjUsMTcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1BhdGhTZWdNb3Zl
dG8uaCIKIAotI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBTVkdQYXRoU2VnTW92ZXRvQWJzOjpTVkdQYXRoU2VnTW92ZXRvQWJzKGZsb2F0IHgs
IGZsb2F0IHkpCi0gICAgOiBTVkdQYXRoU2VnKCkKLSAgICAsIG1feCh4KQotICAgICwgbV95KHkp
Ci17Ci19Ci0KLVNWR1BhdGhTZWdNb3ZldG9BYnM6On5TVkdQYXRoU2VnTW92ZXRvQWJzKCkKLXsK
LX0KLQotdm9pZCBTVkdQYXRoU2VnTW92ZXRvQWJzOjpzZXRYKGZsb2F0IHgpCi17Ci0gICAgbV94
ID0geDsKLX0KLQotZmxvYXQgU1ZHUGF0aFNlZ01vdmV0b0Ficzo6eCgpIGNvbnN0CisgICAgOiBT
VkdQYXRoU2VnU2luZ2xlQ29vcmQoeCwgeSkKIHsKLSAgICByZXR1cm4gbV94OwogfQogCi12b2lk
IFNWR1BhdGhTZWdNb3ZldG9BYnM6OnNldFkoZmxvYXQgeSkKLXsKLSAgICBtX3kgPSB5OwotfQot
Ci1mbG9hdCBTVkdQYXRoU2VnTW92ZXRvQWJzOjp5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV95
OwotfQotCi0KLQotCiBTVkdQYXRoU2VnTW92ZXRvUmVsOjpTVkdQYXRoU2VnTW92ZXRvUmVsKGZs
b2F0IHgsIGZsb2F0IHkpCi0gICAgOiBTVkdQYXRoU2VnKCkKLSAgICAsIG1feCh4KQotICAgICwg
bV95KHkpCisgICAgOiBTVkdQYXRoU2VnU2luZ2xlQ29vcmQoeCwgeSkKIHsKIH0KLQotU1ZHUGF0
aFNlZ01vdmV0b1JlbDo6flNWR1BhdGhTZWdNb3ZldG9SZWwoKQotewotfQotCi12b2lkIFNWR1Bh
dGhTZWdNb3ZldG9SZWw6OnNldFgoZmxvYXQgeCkKLXsKLSAgICBtX3ggPSB4OwotfQotCi1mbG9h
dCBTVkdQYXRoU2VnTW92ZXRvUmVsOjp4KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV94OwotfQot
Ci12b2lkIFNWR1BhdGhTZWdNb3ZldG9SZWw6OnNldFkoZmxvYXQgeSkKLXsKLSAgICBtX3kgPSB5
OwotfQotCi1mbG9hdCBTVkdQYXRoU2VnTW92ZXRvUmVsOjp5KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV95OwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ01vdmV0by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWdNb3ZldG8uaAkocmV2aXNpb24gMzQwMzApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTW92
ZXRvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVj
dAogCkBAIC0yOCw0OCArMjgsMjYgQEAKICNpbmNsdWRlICJTVkdQYXRoU2VnLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTVkdQYXRoU2VnTW92ZXRvQWJzIDogcHVibGljIFNW
R1BhdGhTZWcgeyAKKyAgICBjbGFzcyBTVkdQYXRoU2VnTW92ZXRvQWJzIDogcHVibGljIFNWR1Bh
dGhTZWdTaW5nbGVDb29yZCB7IAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U1ZHUGF0aFNlZ01vdmV0b0Ficz4gY3JlYXRlKGZsb2F0IHgsIGZsb2F0IHkpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnTW92ZXRvQWJzKHgsIHkpKTsgfQotICAgICAgICB2aXJ0
dWFsIH5TVkdQYXRoU2VnTW92ZXRvQWJzKCk7CiAKICAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBz
aG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBBVEhTRUdfTU9WRVRPX0FCUzsgfQog
ICAgICAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3QgeyByZXR1
cm4gIk0iOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nOjpmb3JtYXQoIk0gJS42bGcgJS42bGciLCBtX3gsIG1feSk7IH0KLQotICAgICAg
ICB2b2lkIHNldFgoZmxvYXQpOwotICAgICAgICBmbG9hdCB4KCkgY29uc3Q7Ci0KLSAgICAgICAg
dm9pZCBzZXRZKGZsb2F0KTsKLSAgICAgICAgZmxvYXQgeSgpIGNvbnN0OwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgU1ZHUGF0aFNlZ01vdmV0b0FicyhmbG9hdCB4LCBmbG9hdCB5KTsKLQotICAg
ICAgICBmbG9hdCBtX3g7Ci0gICAgICAgIGZsb2F0IG1feTsKICAgICB9OwogCi0gICAgY2xhc3Mg
U1ZHUGF0aFNlZ01vdmV0b1JlbCA6IHB1YmxpYyBTVkdQYXRoU2VnIHsgCisgICAgY2xhc3MgU1ZH
UGF0aFNlZ01vdmV0b1JlbCA6IHB1YmxpYyBTVkdQYXRoU2VnU2luZ2xlQ29vcmQgeyAKICAgICBw
dWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1BhdGhTZWdNb3ZldG9SZWw+IGNy
ZWF0ZShmbG9hdCB4LCBmbG9hdCB5KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ01v
dmV0b1JlbCh4LCB5KSk7IH0KLSAgICAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZ01vdmV0b1JlbCgp
OwogCiAgICAgICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7
IHJldHVybiBQQVRIU0VHX01PVkVUT19SRUw7IH0KICAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0
aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IHsgcmV0dXJuICJtIjsgfQotICAgICAgICB2aXJ0dWFs
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJtICUuNmxn
ICUuNmxnIiwgbV94LCBtX3kpOyB9Ci0KLSAgICAgICAgdm9pZCBzZXRYKGZsb2F0KTsKLSAgICAg
ICAgZmxvYXQgeCgpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgc2V0WShmbG9hdCk7Ci0gICAgICAg
IGZsb2F0IHkoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR1BhdGhTZWdNb3Zl
dG9SZWwoZmxvYXQgeCwgZmxvYXQgeSk7Ci0KLSAgICAgICAgZmxvYXQgbV94OwotICAgICAgICBm
bG9hdCBtX3k7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="9310"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>